diff options
author | nobody <> | 2004-01-26 12:52:12 +0000 |
---|---|---|
committer | nobody <> | 2004-01-26 12:52:12 +0000 |
commit | aa0e88e3d758559942e192f3075a3edc0b2f222d (patch) | |
tree | 71afb6fbfb9d80e4b7b8ee31e758ebc905cf6c48 /gdb | |
parent | 5f2fbaa631ada809193f3619152ecdcd956cc63d (diff) | |
download | binutils-gdb-aa0e88e3d758559942e192f3075a3edc0b2f222d.tar.gz |
This commit was manufactured by cvs2svn to create branch
'carlton_dictionary-branch'.
Cherrypick from master 2004-01-26 12:52:10 UTC DJ Delorie <dj@redhat.com> 'merge from gcc':
bfd/ChangeLog-0203
bfd/doc/ChangeLog-9103
gdb/ChangeLog-2003
gdb/config/sparc/linux64.mh
gdb/config/sparc/linux64.mt
gdb/config/sparc/nm-sol2.h
gdb/config/sparc/obsd.mt
gdb/config/sparc/obsd64.mt
gdb/config/sparc/sol2-64.mt
gdb/config/sparc/sol2.mh
gdb/config/sparc/sol2.mt
gdb/config/sparc/sparc.mt
gdb/config/sparc/sparc64.mt
gdb/config/sparc/tm-sol2.h
gdb/config/sparc/tm-vxworks.h
gdb/config/sparc/vxworks.mt
gdb/mi/ChangeLog-1999-2003
gdb/sparc-linux-tdep.c
gdb/sparc-nat.h
gdb/sparc-sol2-nat.c
gdb/sparc-sol2-tdep.c
gdb/sparc64-linux-nat.c
gdb/sparc64-linux-tdep.c
gdb/sparc64-nat.c
gdb/sparc64-sol2-tdep.c
gdb/sparc64nbsd-tdep.c
gdb/sparc64obsd-tdep.c
gdb/sparcobsd-tdep.c
gdb/testsuite/gdb.base/gdb1476.c
gdb/testsuite/gdb.base/gdb1476.exp
gdb/testsuite/gdb.base/sepdebug.c
gdb/testsuite/gdb.base/sepdebug.exp
gdb/testsuite/gdb.cp/bs15503.cc
gdb/testsuite/gdb.cp/bs15503.exp
gdb/testsuite/gdb.cp/exception.cc
gdb/testsuite/gdb.cp/exception.exp
gdb/testsuite/gdb.mi/ChangeLog-1999-2003
gdb/tui/ChangeLog-1998-2003
gdb/tui/tui-command.c
gdb/tui/tui-command.h
gdb/tui/tui-data.c
gdb/tui/tui-data.h
gdb/tui/tui-disasm.c
gdb/tui/tui-disasm.h
gdb/tui/tui-io.c
gdb/tui/tui-io.h
gdb/tui/tui-layout.c
gdb/tui/tui-layout.h
gdb/tui/tui-regs.c
gdb/tui/tui-regs.h
gdb/tui/tui-source.c
gdb/tui/tui-source.h
gdb/tui/tui-stack.c
gdb/tui/tui-stack.h
gdb/tui/tui-win.c
gdb/tui/tui-win.h
gdb/tui/tui-windata.c
gdb/tui/tui-windata.h
gdb/tui/tui-wingeneral.c
gdb/tui/tui-wingeneral.h
gdb/tui/tui-winsource.c
gdb/tui/tui-winsource.h
include/ChangeLog-9103
include/coff/ChangeLog-9103
include/elf/ChangeLog-9103
include/opcode/ChangeLog-9103
libiberty/configure.ac
libiberty/cp-demangle.h
libiberty/cp-demint.c
opcodes/ChangeLog-0001
opcodes/ChangeLog-0203
sim/m32r/syscall.h
sim/m32r/traps-linux.c
Diffstat (limited to 'gdb')
60 files changed, 32274 insertions, 0 deletions
diff --git a/gdb/ChangeLog-2003 b/gdb/ChangeLog-2003 new file mode 100644 index 00000000000..b396264760a --- /dev/null +++ b/gdb/ChangeLog-2003 @@ -0,0 +1,15447 @@ +2003-12-30 Eli Zaretskii <eliz@elta.co.il> + + * configure.in: Check for st_blocks member in struct stat and + define HAVE_STRUCT_STAT_ST_BLOCKS accordingly. + + * acconfig.h (HAVE_STRUCT_STAT_ST_BLOCKS): New undef. + + * configure, config.in: Regenerated. + + * remote-fileio.c (remote_fileio_to_fio_stat) + (remote_fileio_func_fstat) [HAVE_STRUCT_STAT_ST_BLOCKS]: Support + systems that don't have `st_blocks' member in `struct stat'. + +2003-12-29 Eli Zaretskii <eliz@elta.co.il> + + * go32-nat.c (go32_sldt, go32_sgdt, go32_sidt, go32_pte): Fix + mismatches between format string and arguments (avoids compiler + warnings). + + * configure.in: Set ac_cv_search_tgetent to "none required" for + "*djgpp*" targets as well (DJGPP doesn't have termcap and doesn't + need one). + + * config/djgpp/config.sed: Tweak to adapt to the changes in + configury. + + * config/djgpp/djconfig.sh: Fix the test of unpacked + distribution, since there's no gdb.cxx directory anymore. + +2003-12-28 Mark Kettenis <kettenis@gnu.org> + + * i386-sol2-tdep.c (i386_sol2_mcontext_addr): New function. + (i386_sol2_init_abi): Initialize TDEP->sigcontext_addr, + TDEP->sc_reg_offset and TDEP->sc_num_regs. + + * i386-tdep.h (i386_regnum): Add I386_CS_REGNUM and + I386_SS_REGNUM. + +2003-12-27 Mark Kettenis <kettenis@gnu.org> + + * dwarf2-frame.c (dwarf2_reg_rule): Add REG_RA and REG_CFA. + (dwarf2_frame_cache): Initialize PC_REGNUM with REG_RA and + SP_REGNUM with REG_CFA. Don't overwrite the initialized register + rule for registers left unspecified by the CFI. Remove the + special handling of PC_REGNUM. Add code to eleminate any REG_RA + rules. + (dwarf2_frame_prev_register): Remove the special handling of + SP_REGNUM. Add support for the REG_CFA rule. + +2003-12-26 Mark Kettenis <kettenis@gnu.org> + + * i386obsd-tdep.c: Include "regset.h", "gdb_assert.h" and + "gdb_string.h". + (i386obsd_r_reg_offset): New variable. + (i386obsd_aout_supply_regset) + (i386obsd_aout_regset_from_core_section): New functions. + (i386obsd_supply_reg, fetch_core_registers): Remove functions. + (i286obsd_core_fns): Remove variable. + (i386obsd_init_abi): Initialize TDEP->gregset_reg_offset, + TDEP->gregset_num_regs and TDEP->sizeof_gregset. Set + regset_from_core_section. Use ARRAY_SIZE to initialize + TDEP->sc_num_regs. + (_initialize_i386obsd_tdep): Don't call add_core_fns. + + * i386bsd-tdep.c (i386bsd_core_osabi_sniffer): New function. + (_initialize_i386bsd_tdep): Register i386bsd_core_osabi_sniffer. + + * i386-linux-nat.c: Add comment. + +2003-12-26 Christopher Faylor <cgf@redhat.com> + + * win32-nat.c: Add some comments about below change. + +2003-12-25 Christopher Faylor <cgf@redhat.com> + + Fix for PR threads/1048 + * win32-nat.c (thread_info_struct): Add reload_context flag. + (thread_rec): Don't reload thread context here. Just set a flag. + (do_child_fetch_inferior_registers): Reload thread context here if + appropriate. Avoid doing anything if current_thread is NULL thanks to + strange Windows behavior. + (child_fetch_inferior_registers): Avoid doing anything if + current_thread is NULL. + (do_child_store_inferior_registers): Ditto. + (child_store_inferior_registers): Ditto. + (child_kill_inferior): Ditto. + (fake_create_process): Pretend to create a process for pathological + windows attach situation. + (get_child_debug_event): Call fake_create_process when the first event + noticed is thread creation rather than process creation. + (child_attach): Always set attach_flag when attaching. + (child_create_inferior): Set attach_flag to zero since we're not + attaching. + +2003-12-25 Christopher Faylor <cgf@redhat.com> + + * win32-nat.c (get_child_debug_event): Keep main thread id around even + after thread exits since Windows insists on continuing to report events + against it. + +2003-12-22 Mark Kettenis <kettenis@gnu.org> + + * dwarf2-frame.c (dwarf2_frame_cache): Don't skip the return + address column. + +2003-12-21 Jim Blandy <jimb@redhat.com> + + * breakpoint.c (bpstat_do_actions): To ensure that + clear_proceed_status doesn't free the command tree we're + evaluating out from under us, zero the bpstat's pointer to it, and + take care of freeing it ourselves. + * cli/cli-script.c (make_cleanup_free_command_lines): Make this + function externally visible. + * cli/cli-script.h (make_cleanup_free_command_lines): New + declaration. + +2003-12-20 Mark Kettenis <kettenis@gnu.org> + + * x86-64-tdep.c (x86_64_dwarf_regmap): Map the Return Address to + RIP. + +2003-12-18 Michael Chastain <mec.gnu@mindspring.com> + + * hppa-tdep.c (hppa_gdbarch_init): Set long double floating + point type to floatformat_ia64_quad_big. + +2003-12-18 Kevin Buettner <kevinb@redhat.com> + + * frv-tdep.c (skip_prologue_using_sal): New function. Taken verbatim + from mips-tdep.c. + (frv_analyze_prologue): Rework to account for intermixed prologue / + body instructions. + +2003-12-18 Michael Chastain <mec.gnu@mindspring.com> + + * hppa-tdep.c (hppa_gdbarch_init): Set sizeof(long_double) to 128. + Document type sizes for hppa*-*-hpux* compilers available to me. + +2003-12-18 Michael Chastain <mec.gnu@mindspring.com> + + * hppam3-nat.c: Delete obsolete file. + * hppab-nat.c: Delete obsolete file. + * Makefile.in: Remove references. + +2003-12-17 Jeff Johnston <jjohnstn@redhat.com> + + * symtab.c (decode_line_spec): Change call to decode_line_1. + +2003-12-17 Jeff Johnston <jjohnstn@redhat.com> + + * linespec.h (decode_line_1): Add new not_found_ptr parameter. + * linespec.c (decode_line_1): Add new parameter. Pass on + new parameter to decode_variable and symtab_from_filename + functions. + (decode_variable): Add new not_found_ptr parameter. Throw exception + rather than failing if the not_found_ptr is non-null and the + function is not found. + (symtab_from_filename): Add new not_found_ptr parametr. Throw + exception rather than failing if the not_found_ptr is non-null and + the source file is not found. + * breakpoint.c: Change all callers of decode_line_1 to add default + extra parameter for decode_line_1 calls. + * tracepoint.c: Ditto. + * cli/cli-cmds.c: Ditto. + +2003-12-16 J. Brobecker <brobecker@gnat.com> + + * irix5-nat.c: Include mips-tdep.h. + +2003-12-16 Mark Kettenis <kettenis@gnu.org> + + * solib.h (SOLIB_CREATE_CATCH_LOAD_HOOK) + (SOLIB_CREATE_CATCH_UNLOAD_HOOK, SOLIB_LOADED_LIBRARY_PATHNAME) + (SOLIB_UNLOADED_LIBRARY_PATHNAME, SOLIB_HAVE_LOAD_EVENT) + (SOLIB_HAVE_UNLOAD_EVENT): Remove defines. + + * blockframe.c (inside_main_func): Don't treat a zero PC specially. + Needed to fix PR backtrace/1476. + +2003-12-16 David Carlton <carlton@kealia.com> + + * cp-support.c (class_name_from_physname): Add DMGL_PARAMS. + (method_name_from_physname): Ditto. + +2003-12-15 Mark Kettenis <kettenis@gnu.org> + + * i386-sol2-tdep.c (i386_sol2_gregset_reg_offset): New variable. + (i386_sol2_init_abi): Initialize TDEP->gregset_reg_offset, + TDEP->gregset_num_regs, TDEP->sizeof_gregset and + TDEP->sizeof_fpregset. + * config/i386/i386sol2.mh (XM_FILE): Set to xm-i386.h. + (XM_CLIBS): Remove. + (NATDEPFILES): Remove core-regset.o and corelow.o. + * config/i386/i386sol2.mt (TDEPFILES): Add corelow.o. + +2003-12-14 Mark Kettenis <kettenis@gnu.org> + + * proc-api.c (procfs_note): Add format string to fprintf call. + + * i386-tdep.c (i386_analyze_frame_setup): Add missing encodings + for `subl' and `xorl' instructions. + +2003-12-13 Jim Blandy <jimb@redhat.com> + + * dwarf2read.c (dwarf2_add_member_fn, read_structure_scope): + Replace uses of DEPRECATED_STREQ and DEPRECATED_STREQN with calls + to strcmp and strncmp. + + * osabi.c (gdbarch_init_osabi): Reformat error message with better + line breaks. + +2003-12-13 Mark Kettenis <kettenis@gnu.org> + + * blockframe.c (inside_main_func): Reformat. Introduce new local + variables to prevent long lines. Update comments to reflect + reality. + +2003-12-12 Kevin Buettner <kevinb@redhat.com> + + From David Mosberger <davidm@hpl.hp.com>: + * libunwind-frame.c (unw_find_dyn_list_p): Replace most arguments + with a single unw_dyn_info_t pointer. + (libunwind_find_dyn_list): Likewise. + * libunwind-frame.h: Likewise. + * ia64-tdep.c (ia64_find_unwind_table): Switch to using + UNW_INFO_FORMAT_REMOTE_TABLE so we can avoid having to read in the + entire unwind-table at once. Support for this table format has + been added to libunwind v0.95. + (ia64_find_proc_info_x): Adjust for remote-unwind-table changes. + (ia64_get_dyn_info_list): Adjust for interface change for + libunwind_find_dyn_list(). + +2003-12-12 Jeff Johnston <jjohnstn@redhat.com> + + * breakpoint.c (breakpoint_enabled): New function to test whether + breakpoint is active and enabled. + (insert_bp_location, insert_breakpoints): Call new function to test + for enabled breakpoint. + (remove_breakpoint, breakpoint_here_p, breakpoint_thread_match) + (bpstat_should_step, bpstat_have_active_hw_watchpoints) + (disable_breakpoints_in_shlibs, hw_watchpoint_used_count) + (disable_watchpoints_before_interactive_call_start) + (breakpoint_re_set_one): Ditto. + (bpstat_stop_status): Use new function and simplify test. + +2003-12-11 Mark Kettenis <kettenis@gnu.org> + + * observer.c (observer_test_first_observer) + (observer_test_second_observer, observer_test_third_observer): + Don't define as `static'. + (observer_test_first_notification_function) + (observer_test_second_notification_function) + (observer_test_third_notification_function): Likewise. + +2003-12-10 Mark Kettenis <kettenis@gnu.org> + + * solib.h (SOLIB_UNLOADED_LIBRARY_PATHNAME): Define as "" instead + of (0). + +2003-12-11 Dhananjay Deshpande <dhananjayd@kpitcummins.com> + + * MAINTAINERS (write after approval): Add myself. + +2003-12-11 Dhananjay Deshpande <dhananjayd@kpitcummins.com> + + * config/h8300/tm-h8300.h (h8300hmode): Remove. + (h8300hmode): Likewise. + (h8300smode): Likewise. + (h8300sxmode): Likewise. + (h8300_normal_mode): Likewise. + (GDB_TARGET_IS_H8300): Likewise. + (NUM_REALREGS): Use TARGET_ARCHITECTURE->mach instead of global. + * h8300-tdep.c (is_h8300hmode): New function. + (is_h8300smode): New function. + (is_h8300sxmode): New function. + (is_h8300_normal_mode): New function. + (BINWORD): Use new functions. + (h8300_examine_prologue): Likewise. + (h8300_print_register): Likewise. + (h8300_print_registers_info): Likewise. + (h8300_register_type): Likewise. + (h8300_gdbarch_init): Remove use of globals like h8300hmode. + * remote-e7000.c (e7000_open): Remove use of GDB_TARGET_IS_H8300. + (e7000_fetch_registers): Use TARGET_ARCHITECTURE->mach instead. + (e7000_wait): Use TARGET_ARCHITECTURE->mach instead of global. + +2003-12-10 J. Brobecker <brobecker@gnat.com> + + * frame.c (select_frame): Get the current frame PC using + get_frame_address_in_block() instead of get_frame_pc(). + * stack.c (get_frame_language): Likewise. + +2003-12-08 Kevin Buettner <kevinb@redhat.com> + + * remote.c (remote_open_1, remote_cisco_open): Avoid closing + remote_desc more than once. + +2003-12-07 Andrew Cagney <cagney@redhat.com> + + * defs.h (DEPRECATED_STREQN, DEPRECATED_STREQ): Simplify by + directly calling strcmp equivalents. Add disclaimer. + +2003-12-06 Andrew Cagney <cagney@redhat.com> + + * remote.c (remote_fetch_registers): For short packets, explicitly + supply a zero value. Use regcache_raw_supply. Fix suggested by + Jonathan Larmour. + +2003-12-05 Jeff Johnston <jjohnstn@redhat.com> + + * ia64-tdep.c (ia64_gdbarch_init): Set up the gdbarch long double + format to be the i387 extended float format which is used for + long doubles stored in memory. + +2003-12-05 Mark Kettenis <kettenis@gnu.org> + + From Ulrich Weigand <weigand@informatik.uni-erlangen.de>: + * dwarf2-frame.c (dwarf2_frame_cache): Use the untranslated RA + column instead of translating it. + +2003-12-04 Michael Chastain <mec.gnu@mindspring.com> + + Partial fix for PR c++/1465. + Fix for PR c++/1377. + * cp-support.h (cp_lookup_rtti_type): New function. + * cp-support.c (cp_lookup_rtti_type): New function. + * gnu-v2-abi.c: Update copyright years. + (gnuv2_rtti_type): Call cp_lookup_rtti_type. + * gnu-v3-abi.c: Update copyright years. + (gnuv3_rtti_type): Call cp_lookup_rtti_type. + +2003-12-04 J. Brobecker <brobecker@gnat.com> + + * stabsread.c (read_type): Save a reference to types that are defined + as cross references to other types. + +2003-12-02 Roland McGrath <roland@redhat.com> + + * thread-db.c (enable_thread_event): Change return type to + td_err_e. Return TD_OK or error code. + (enable_thread_event_reporting): Update callers. + +2003-12-03 Ian Lance Taylor <ian@wasabisystems.com> + + * NEWS: Mention new C++ demangler code. + +2003-12-03 Andrew Cagney <cagney@redhat.com> + + * ppc-linux-nat.c (store_register, fetch_register): Convert + between ptrace and regcache's wordsize. + (ppc_register_u_addr): Use the ptrace wordsize. + +2003-12-02 Kevin Buettner <kevinb@redhat.com> + + * frv-tdep.c (frv_gdbarch_init): Add case for fr550. + +2003-12-02 Daniel Jacobowitz <drow@mvista.com> + + * dwarf2read.c (dwarf_info_offset, dwarf_abbrev_offset) + (dwarf_line_offset, dwarf_pubnames_offset, dwarf_aranges_offset) + (dwarf_loc_offset, dwarf_macinfo_offset, dwarf_str_offset) + (dwarf_ranges_offset, dwarf_frame_offset, dwarf_eh_frame_offset): + Delete. + (dwarf2_read_section): Remove offset and size arguments. Use + bfd_get_section_size_before_reloc and sectp->filepos. + (dwarf2_has_info): Clear section variables instead of offsets. + (dwarf2_locate_sections): Don't initialize the deleted variables. + (dwarf2_build_psymtabs): Update calls to dwarf2_read_section. + (dwarf2_build_psymtabs_easy): Likewise. + * dwarf2-frame.c (dwarf_frame_offset, dwarf_frame_size) + (dwarf_eh_frame_offset, dwarf_eh_frame_size): Remove extern + declarations. + (dwarf2_read_section): Update prototype. + (dwarf2_build_frame_info): Update calls to dwarf2_read_section. + Use bfd_get_section_size_before_reloc instead of global size + variables. + +2003-12-01 Michael Chastain <mec.gnu@mindspring.com> + + * dwarfread.c: Update documentation on the state of dwarf-1. + +2003-12-01 Andrew Cagney <cagney@redhat.com> + + Obsolete old MIPS SVr3 and SVr4 systems. + * NEWS: Mention obsoleted systems. + * configure.tgt: Mark mips*-*-sysv4* as obsolete. + * configure.host: Mark mips-dec-*, mips-little-*, mips-sony-*, + mips-*-sysv4*, mips-*-sysv*, mips-*-riscos* and mips-*-mach3* as + obsolete. + * config/mips/decstation.mh: Mark as obsolete. + * config/mips/littlemips.mh: Mark as obsolete. + * config/mips/nm-mips.h: Mark as obsolete. + * config/mips/xm-mips.h: Mark as obsolete. + * config/mips/news-mips.mh: Mark as obsolete. + * config/mips/nm-news-mips.h: Mark as obsolete. + * config/mips/riscos.mh: Mark as obsolete. + * config/mips/nm-riscos.h: Mark as obsolete. + * config/mips/xm-riscos.h: Mark as obsolete. + * config/mips/mipsv4.mt: Mark as obsolete. + * config/mips/tm-mipsv4.h: Mark as obsolete. + * config/mips/xm-mipsv4.h: Mark as obsolete. + + Obsolete old m68k systems. + * configure.host: Mark m68*-sun-*, m68*-sun-sunos4*, + m68*-sun-sunos3*, m68*-motorola-*, m68*-*-sysv4*, m68*-*-lynxos*, + m68*-bull*-sysv*, m68*-att-*, m680[01]0-sun-sunos4*, and + m680[01]0-sun-sunos3* as obsolete. + * configure.tgt: Mark m68*-*-lynxos*, m68*-*-sunos3*, + m68*-*-sunos4*, m68*-*-sysv4*, m68000-*-sunos3*, m68000-*-sunos4*, + m68*-bull-sysv*, m68*-att-*, and m68*-motorola-*, as obsolete. + * config/m68k/sun3os4.mh: Mark file obsolete. + * config/m68k/xm-sun3os4.h: Mark file obsolete. + * config/m68k/sun3os3.mh: Mark file obsolete. + * config/m68k/nm-sun3.h: Mark file obsolete. + * config/m68k/xm-sun3.h: Mark file obsolete. + * config/m68k/sun2os4.mh: Mark file obsolete. + * config/m68k/sun2os3.mh: Mark file obsolete. + * config/m68k/nm-sun2.h: Mark file obsolete. + * config/m68k/xm-sun2.h: Mark file obsolete. + * config/m68k/m68kv4.mh: Mark file obsolete. + * config/m68k/nm-sysv4.h: Mark file obsolete. + * config/m68k/xm-m68kv4.h: Mark file obsolete. + * config/m68k/m68klynx.mh: Mark file obsolete. + * config/m68k/nm-m68klynx.h: Mark file obsolete. + * config/m68k/dpx2.mh: Mark file obsolete. + * config/m68k/xm-dpx2.h: Mark file obsolete. + * config/m68k/nm-dpx2.h: Mark file obsolete. + * config/m68k/delta68.mh: Mark file obsolete. + * config/m68k/xm-delta68.h: Mark file obsolete. + * config/m68k/nm-delta68.h: Mark file obsolete. + * config/m68k/3b1.mh: Mark file obsolete. + * config/m68k/xm-3b1.h: Mark file obsolete. + * config/m68k/sun3os4.mt: Mark file obsolete. + * config/m68k/tm-sun3os4.h: Mark file obsolete. + * config/m68k/sun3os3.mt: Mark file obsolete. + * config/m68k/tm-sun3.h: Mark file obsolete. + * config/m68k/sun2os4.mt: Mark file obsolete. + * config/m68k/tm-sun2os4.h: Mark file obsolete. + * config/m68k/sun2os3.mt: Mark file obsolete. + * config/m68k/tm-sun2.h: Mark file obsolete. + * config/m68k/m68kv4.mt: Mark file obsolete. + * config/m68k/tm-m68kv4.h: Mark file obsolete. + * config/m68k/m68klynx.mt: Mark file obsolete. + * config/m68k/tm-m68klynx.h: Mark file obsolete. + * config/m68k/dpx2.mt: Mark file obsolete. + * config/m68k/tm-dpx2.h: Mark file obsolete. + * config/m68k/delta68.mt: Mark file obsolete. + * config/m68k/tm-delta68.h: Mark file obsolete. + * config/m68k/3b1.mt: Mark file obsolete. + * config/m68k/tm-3b1.h: Mark file obsolete. + +2003-11-29 Mark Kettenis <kettenis@gnu.org> + + * x86-64-tdep.c (MAX_CLASSES): Remove macro. + (x86_64_reg_class): Remove enum. + (merge_classes, classify_argument, examine_argument): Remove + functions. + (INT_REGS, SSE_REGS): Remove macros. + (x86_64_push_arguments): Remove function. + (amd64_push_arguments): New function. + (x86_64_push_dummy_call): Call amd64_push_arguments instead of + x86_64_push_arguments. + +2003-11-28 Mark Kettenis <kettenis@gnu.org> + + * x86-64-tdep.c (x86_64_frame_cache): Don't bail out if %rbp is + zero. Reorganize code a bit. + +2003-11-27 Mark Kettenis <kettenis@gnu.org> + + * dwarf2-frame.c: Fix another comment. + + * x86-64-tdep.c (RET_INT_REGS, RET_SSE_REGS): Remove defines. + (x86_64_use_struct_convention, x86_64_extract_return_value, + x86_64_store_return_value): Remove. + (amd64_reg_class): New enum. + (amd64_merge_classes, amd64_classify_aggregate, amd64_classify, + amd64_return_value): New functions. + (x86_64_init_abi): Don't set extract_return_value, + store_return_value and use_struct_convention. Set return_value to + amd64_return_value. + * i387-tdep.h (i387_return_value): New prototype. + * i387-tdep.c (i387_return_value): New function. + + * dwarf2-frame.c: Fix some comments and whitespace problems. + + * i386nbsd-tdep.c: Don't include "gdbtypes.h". Include + "gdb_assert.h" and "gdb_string.h". + (i386nbsd_r_reg_offset): Rename from regmap. + (SIZEOF_STRUCT_REG): Remove. + (i386nbsd_supply_reg, fetch_core_registers, + fetch_elfcore_registers, i386nbsd_core_fns, i386nbsd_elfcore_fns): + Remove. + (i386nbsd_aout_supply_regset, + i386nbsd_aout_regset_from_core_section): New functions. + (i386nbsd_sc_reg_offset): Don't explicitly specify size of array. + (i386nbsd_init_abi): Initialize TDEP->gregset_reg_offset, + TDEP->gregset_num_regs amd sizeof_gregset. Use ARRAY_SIZE to + initialize TDEP->sc_num_regs. + (i386nbsdaout_init_abi): New function. + (i386nbsdelf_init_abi): Remove initialization of + TDEP->num_xmm_regs. Don't set num_regs here. + (_initialize_i386nbsd_tdep): Don't call add_core_fns. Use + i386nbsd_aout_init to register NetBSD a.out OS/ABI. + + * osabi.c (generic_elf_osabi_sniff_abi_tag_sections): Use + .note.netbsdcore.procinfo section to recognize NetBSD core files. + +2003-11-26 Michael Chastain <mec.gnu@mindspring.com> + + * cp-abi.c: Update copyright years. + +2003-11-25 Andrew Cagney <cagney@redhat.com> + + * thread-db.c (enable_thread_event): New function. Ensure that BP + is a code address. + (enable_thread_event_reporting): Use enable_thread_event. + +2003-11-25 Michael Snyder <msnyder@redhat.com> + + * mips-tdep.c (mips_o64_extract_return_value): Correct for + NUM_REGS (see changes 2003-06-21). + (mips_eabi_extract_return_value): Ditto. + +2003-11-25 Andrew Cagney <cagney@redhat.com> + + * infrun.c: Don't include "exec.h". + (handle_inferior_event): Pass current_target, instead of exec_ops, + to SOLIB_ADD. Add comments. + * Makefile.in (infrun.o): Update dependencies. + +2003-11-24 Daniel Jacobowitz <drow@mvista.com> + + * NEWS: Mention improved location expression support. + +2003-11-23 Andrew Cagney <cagney@redhat.com> + + * Makefile.in (infrun.o): Update dependencies. + * infrun.c: Include "exec.h". + (handle_inferior_event): Pass exec_ops to SOLIB_ADD. + +2003-11-23 Andrew Cagney <cagney@redhat.com> + + * frame.c (frame_unwind_signed_register): Delete function. + * frame.h (frame_unwind_register_signed): Delete declaration. + * mips-tdep.c (mips_frame_saved_pc): Use frame_unwind_register_signed. + + * arch-utils.h (generic_cannot_extract_struct_value_address): + Delete declaration. + + * defs.h (DEPRECATED_STREQN): Rename STREQN. + (DEPRECATED_STREQ): Rename STREQ. + * ada-exp.y, ada-lang.c, ada-lex.l, coffread.c: Update. + * config/mips/tm-irix5.h, config/mips/tm-irix6.h: Update. + * config/mips/tm-mipsv4.h, config/sparc/tm-sun4sol2.h: Update. + * dbxread.c, dwarf2read.c, dwarfread.c, environ.c: Update. + * eval.c, exec.c, f-lang.c, hppa-tdep.c, hpread.c: Update. + * jv-exp.y, language.c, m2-exp.y, mcore-rom.c: Update. + * mdebugread.c, mipsread.c, objc-exp.y, objfiles.c: Update. + * p-exp.y, p-typeprint.c, p-valprint.c, rs6000-nat.c: Update. + * source.c, sparc-tdep.c, stack.c, target.c: Update. + + * symfile.c (symbol_file_command): Replace STREQ with strcmp. + * elfread.c (elf_symtab_read): Delete STREQ from comment. + +2003-11-22 Andrew Cagney <cagney@redhat.com> + + * frame.c (deprecated_frame_xmalloc): Delete function. + (deprecated_set_frame_extra_info_hack): Delete function. + (deprecated_set_frame_saved_regs_hack): Delete function. + * frame.h (deprecated_frame_xmalloc): Delete declaration. + (deprecated_set_frame_extra_info_hack): Delete declaration. + (deprecated_set_frame_saved_regs_hack): Delete declaration. + * mcore-tdep.c (analyze_dummy_frame): Instead of + deprecated_frame_xmalloc, deprecated_set_frame_saved_regs_hack, + and deprecated_set_frame_extra_info_hack use + deprecated_frame_xmalloc_with_cleanup. + * mn10300-tdep.c (analyze_dummy_frame): Ditto. + * mips-tdep.c (mips_init_extra_frame_info): Delete call to + deprecated_set_frame_saved_regs_hack. + + * mips-tdep.c (mips_frame_chain): Delete call to + deprecated_inside_entry_file. + + * frame.h (deprecated_set_frame_next_hack): Delete declaration. + (deprecated_set_frame_prev_hack): Delete declaration. + * frame.c (deprecated_set_frame_next_hack): Delete function. + (deprecated_set_frame_prev_hack): Delete function. + * mcore-tdep.c (analyze_dummy_frame): Delete calls to + "deprecated_set_frame_next_hack" and + "deprecated_set_frame_prev_hack". + * mn10300-tdep.c (analyze_dummy_frame): Ditto. + + * mips-tdep.c (mips_register_convertible): Delete function. + (mips_register_convert_to_virtual): Delete function. + (mips_register_convert_to_raw): Delete function. + (mips_gdbarch_init): Do not set "deprecated_register_convertible", + "deprecated_register_convert_to_virtual", or + "deprecated_register_convert_to_raw". + (mips_pseudo_register_write, mips_pseudo_register_read): Handle + 32/64 cooked to raw register conversions. + + * frame.c (deprecated_get_frame_context): Delete function. + (deprecated_set_frame_context): Delete function. + (struct frame_info): Delete member "context". + * frame.h (deprecated_get_frame_context): Delete declaration. + (deprecated_set_frame_context): Delete declaration. + + * procfs.c (procfs_wait): Delete FAULTED_USE_SIGINFO comment. + * config/sparc/tm-sun4sol2.h (FAULTED_USE_SIGINFO): Delete macro. + * config/i386/tm-i386sol2.h (FAULTED_USE_SIGINFO): Delete macro. + * config/alpha/nm-osf2.h (FAULTED_USE_SIGINFO): Delete macro. + + * mips-tdep.c (SIGFRAME_REG_SIZE): Delete macro. + (mips_find_saved_regs): Replace SIGFRAME_REG_SIZE with + mips_regsize. + (mips_dump_tdep): Do not print SIGFRAME_REG_SIZE. + * config/mips/tm-irix6.h (SIGFRAME_REG_SIZE): Delete macro. + * config/mips/tm-irix5.h: Update copyright. + (SIGFRAME_REG_SIZE): Delete macro. + + * hppa-tdep.c (hppa_value_returned_from_stack): Delete function. + * config/pa/tm-hppa.h (hppa_value_returned_from_stack): Delete + declaration. + (DEPRECATED_VALUE_RETURNED_FROM_STACK): Delete macro. + * infcall.c (call_function_by_hand): Delete #ifdef + DEPRECATED_VALUE_RETURNED_FROM_STACK code. + * infcmd.c (print_return_value): Ditto. + + * mips-tdep.c (skip_prologue_using_sal): New function. + (mips32_skip_prologue, mips16_skip_prologue): Use + skip_prologue_using_sal to get an upper bound on the search. + + * config/powerpc/tm-linux.h (PROLOGUE_FIRSTLINE_OVERLAP): Delete + #if 0'ed macro. + * infrun.c (step_into_function): Delete #ifdef + PROLOGUE_FIRSTLINE_OVERLAP code. + * symtab.c (find_function_start_sal): Ditto. + + * remote-rdp.c: Update copyright. + (rdp_init): #if 0 references to "target_byte_order". + + * mips-tdep.c (mips_o32_store_return_value): Delete function. + (mips_o32_return_value): Replace mips_o32_xfer_return_value. + (mips_o32_extract_return_value): Delete function. + (mips_n32n64_return_value): Replace mips_n32n64_xfer_return_value. + (mips_n32n64_extract_return_value): Delete function. + (mips_n32n64_store_return_value): Delete function. + (mips_gdbarch_init): For o32 and n32n64, set "return_value" + instead of "store_return_value", "extract_return_value", and + "use_struct_convention". + (mips_n32n64_use_struct_convention): Delete function. + +2003-11-21 Kevin Buettner <kevinb@redhat.com> + + * frv-tdep.c (frv_frame_this_id): Eliminate call to + inside_entry_func(). + +2003-11-20 Mark Kettenis <kettenis@gnu.org> + + * i386-tdep.c (i386_extract_return_value, + i386_store_return_value): Add gdbarch argument. Use it instead of + determining it from REGCACHE. Remove recursive call for + structures with a single member. + (i386_use_struct_convention): Remove. + (i386_reg_struct_return_p): New function. + (i386_return_value): New function. + (i386_gdbarch_init): Set return_value, don't set + extract_return_value, store_return_value and + use_struct_convention. + * x86-64-tdep.c (x86_64_init_abi): Set return_value to NULL. + +2003-11-20 Jim Blandy <jimb@redhat.com> + + * osabi.c (_initialize_gdb_osabi): Don't return before registering + the 'set osabi' and 'show osabi' commands. + +2003-11-19 Mark Kettenis <kettenis@gnu.org> + + * frame.c (get_prev_frame): Use result from + get_frame_address_in_block instead of get_frame_pc as argument to + inside_main_func. Fixes PR backtrace/1435. + +2003-11-19 Andrew Cagney <cagney@redhat.com> + + * stack.c (return_command): Handle "void", "legacy" and "unknown + location" return values separatly. + * values.c (using_struct_return): Return 0 for a "void" return + type. Mention "register_value_being_returned". + (register_value_being_returned): Mention "using_struct_return". + +2003-11-19 Daniel Jacobowitz <drow@mvista.com> + + * dwarf2read.c (offreg, basereg, isderef, frame_base_reg) + (frame_base_offset): Delete. + (read_func_scope): Delete call to decode_locdesc. + (decode_locdesc): Update comments. Don't set the removed variables. + Complain for DW_OP_reg* not at the end. Remove DW_OP_breg* and + DW_OP_fbreg support. + +2003-11-18 Daniel Jacobowitz <drow@mvista.com> + + * dwarf2read.c (optimized_out, islocal): Remove. + (decode_locdesc): Update comments. Don't set optimized_out + or islocal. + +2003-11-17 Jeff Johnston <jjohnstn@redhat.com> + David Mosberger <davidm@hpl.hp.com> + + * ia64-tdep.c: Include elf.h. + [HAVE_LIBUNWIND_IA64_H]: Include libunwind-frame.h and + libunwind-ia64.h. + (ia64_rse_slot_num, ia64_rse_skip_regs): New for libunwind support. + (ia64_gdb2uw_regnum, ia64_uw2gdb_regnum): Ditto. + (ia64_is_fpreg, ia64_access_reg): Ditto. + (ia64_access_fpreg, ia64_access_mem): Ditto. + (get_kernel_table): Ditto. + (ia64_find_unwind_table): Ditto. + (ia64_find_proc_info_x, ia64_put_unwind_info): Ditto. + (ia64_get_dyn_info_list, ia64_libunwind_frame_this_id): Ditto. + (ia64_libunwind_frame_prev_register): Ditto. + (ia64_libunwind_frame_sniffer): Ditto. + (ia64_gdbarch_init)[HAVE_LIBUNWIND_IA64_H]: Add libunwind frame + sniffer. Register libunwind functions needed by generic + libunwind frame code using libunwind_frame_set_descr(). + +2003-11-16 Daniel Jacobowitz <drow@mvista.com> + + * breakpoint.c (re_enable_breakpoints_in_shlibs): Only re-enable a + bp_shlib_disabled breakpoint if there is a shared library mapped + at its expected address. + +2003-11-16 Andrew Cagney <cagney@redhat.com> + + * configure.tgt: Delete mips*tx39*-elf*. + * config/mips/tm-tx39.h: Delete file. + * config/mips/tx39.mt: Delete file. + * config/mips/tx39.mt: Delete file. + + * mips-tdep.h (deprecated_mips_set_processor_regs_hack): Declare. + * remote-mips.c (common_open): Instead of + "mips_read_register_type" and "mips_set_processor_type_command" + call "deprecated_mips_set_processor_regs_hack". + * config/mips/tm-mips.h (mips_read_processor_type): Delete + declaration. + (mips_set_processor_type_command): Delete declaration. + * mips-tdep.c (mips_gdbarch_init): Update comment. + (mips_dump_tdep): Do not print MIPS_REGISTER_NAMES. + (mips_set_processor_type): Delete function. + (NUM_MIPS_PROCESSOR_REGS): Define. + (mips_show_processor_type_command): Delete function. + (mips_set_processor_type_command): Delete function. + (tmp_mips_processor_type): Delete. + (mips_processor_type): Delete. + (mips_processor_type_table): Delete. + (mips_r3051_reg_names): Delete. + (mips_r3081_reg_names): Delete. + (mips_lsi33k_reg_names): Delete. + (mips_processor_reg_names): Delete. + (mips_read_processor_type): Delete function. + (deprecated_mips_set_processor_regs_hack): New function. + (struct gdbarch_tdep): Add member "mips_processor_reg_names". + (mips_register_name): Get the processor names from the tdep. + (mips_tx39_reg_names): New array. + (mips_generic_reg_names): Wire to a standard set of names. + (mips_gdbarch_init): Set "mips_processor_reg_names". + * config/mips/tm-irix5.h (MIPS_REGISTER_NAMES): Delete macro. + * config/mips/tm-mips.h (MIPS_REGISTER_NAMES): Delete macro. + * config/mips/tm-tx39.h (MIPS_REGISTER_NAMES): Delete macro. + +2003-11-16 Andrew Cagney <cagney@redhat.com> + + * mips-tdep.c (struct gdbarch_tdep): Add field "regnum". + (mips_fpa0_regnum, mips_regnum): New function. + (mips_gdbarch_init): Fill in the "regnum" fields. + * mips-tdep.h (struct mips_regnum): Define. + (mips_regnum): Declare. + * config/mips/tm-mips.h (BADVADDR_REGNUM): Delete macro. + (LO_REGNUM, HI_REGNUM, BADVADDR_REGNUM): Ditto. + (CAUSE_REGNUM, PC_REGNUM, FP0_REGNUM): Ditto. + (FCRCS_REGNUM, FCRIR_REGNUM, FPA0_REGNUM): Ditto. + * config/mips/tm-irix6.h (FP0_REGNUM): Delete macro. + (PC_REGNUM, CAUSE_REGNUM, BADVADDR_REGNUM): Ditto. + (HI_REGNUM, LO_REGNUM, FCRCS_REGNUM, FCRIR_REGNUM): Ditto. + * config/mips/tm-irix5.h (FP0_REGNUM): Delete macro. + (PC_REGNUM, CAUSE_REGNUM, BADVADDR_REGNUM): Ditto. + (HI_REGNUM, LO_REGNUM, FCRCS_REGNUM, FCRIR_REGNUM): Ditto. + * remote-mips.c: Include "mips-tdep.h". Update. + * mipsnbsd-tdep.c: Update. + * mipsv4-nat.c: Update. + * mips-tdep.c: Update. + * mips-nat.c: Update. + * mips-linux-tdep.c: Update. + * mips-linux-nat.c: Update. + * irix5-nat.c: Update. + * dve3900-rom.c: Include "mips-tdep.h". Update. + (ignore_packet): Supress GCC warning. + * config/mips/nm-riscos.h: Update. + +2003-11-16 Andrew Cagney <cagney@redhat.com> + + * mips-tdep.c: Replace DEPRECATED_REGISTER_RAW_SIZE with + register_size. + (mips_register_raw_size): Delete function. + (mips_register_type): Handle "mips64_transfers_32bit_regs_p". + (mips_gdbarch_init): Do not set "deprecated_register_raw_size". + Check and set "mips64_transfers_32bit_regs_p". + (struct gdbarch_tdep): Add "mips64_transfers_32bit_regs_p". + (mips_register_convertible): Check the architecture's + "mips64_transfers_32bit_regs_p". + (set_mips64_transfers_32bit_regs): New function. + (_initialize_mips_tdep): Use "add_setshow_cmd" when adding the + "set remote-mips64-transfers-32bit-regs" command. Specify + set_mips64_transfers_32bit_regs as the set function. + * Makefile.in (dve3900-rom.o, remote-mips.o): Update dependencies. + +2003-11-16 Mark Kettenis <kettenis@gnu.org> + + * i386-tdep.h (i386_supply_gregset): Provide prototype. + * i386-tdep.c (i386_supply_gregset): Make public. + +2003-11-16 Andrew Cagney <cagney@redhat.com> + + * mips-tdep.c (mips_register_byte): Delete function. + (mips_gdbarch_init): Do not set "deprecated_register_byte". + * config/mips/tm-mips.h (MIPS_REGISTER_BYTE): Delete macro. + * config/mips/tm-irix6.h (MIPS_REGISTER_BYTE): Delete macro. + * config/mips/tm-irix5.h (MIPS_REGISTER_BYTE): Delete macro. + +2003-11-16 Mark Kettenis <kettenis@gnu.org> + + * i386-tdep.c (i386_extract_return_value): Don't use bfd_byte. + +2003-11-16 Andrew Cagney <cagney@redhat.com> + + * config/mips/linux64.mt: Delete file. + * config/mips/tm-linux64.h: Delete file. + * config/mips/tm-mips64.h: Delete file. + * config/mips/embed64.mt: Delete file. + * config/djgpp/fnchange.lst: Update. + * configure.tgt: Delete explicit patterns for mipsisa64*-*-linux*, + mips64*-*-linux*, mips64*-*-*, and mipsisa64*-*-*. + * config/mips/tm-irix6.h: Update copyright. Include + "mips/tm-mips.h" instead of "mips/tm-mips64.h". + * mips-tdep.c (mips_dump_tdep): Do not print "OP_LDFPR" or + "OP_LDGPR". + +2003-11-15 Andrew Cagney <cagney@redhat.com> + + * mips-tdep.c (mips_register_type): Simplify. Eliminate reference + to MIPS_REGISTER_TYPE. Make integer registers signed. Make IRIX + n32 registers 64 bit. + (mips_register_raw_size, mips_register_byte): For pseudo + registers, use the register's pseudo size and not the + corresponding raw register's size. + * config/mips/tm-mips64.h (MIPS_REGISTER_TYPE): Delete macro. + * config/mips/tm-mips.h (MIPS_REGISTER_TYPE): Delete macro. + * config/mips/tm-irix6.h: Don't #undef MIPS_REGISTER_TYPE. + * config/mips/tm-irix5.h (MIPS_REGISTER_TYPE): Delete macro. + +2003-11-15 Andrew Cagney <cagney@redhat.com> + + * mips-tdep.c (struct gdbarch_tdep): Delete member + gdb_target_is_mips64. + (GDB_TARGET_IS_MIPS64): Delete macro. + (mips_gdbarch_init): Do not set tdep's gdb_target_is_mips64. + (mips_dump_tdep): Do not print GDB_TARGET_IS_MIPS64. + (mips_addr_bits_remove): Simplify. + + * mips-tdep.c: Replace DEPRECATED_REGISTER_VIRTUAL_SIZE with + register_size. + + Replace MIPS_REGSIZE with mips_regsize. + * mips-tdep.c (mips_regsize): New function. + * mips-tdep.h (mips_regsize): Declare. + * mipsnbsd-tdep.h (SIZEOF_STRUCT_FPREG): Update. + (SIZEOF_STRUCT_REG): Update. + * mipsnbsd-tdep.c (mipsnbsd_supply_reg): Update. + (mipsnbsd_fill_reg): Update. + (mipsnbsd_supply_fpreg): Update. + (mipsnbsd_fill_fpreg): Update. + (NBSD_MIPS_JB_ELEMENT_SIZE): Update. + * mips-tdep.c (mips_register_raw_size): Update. + (mips_register_type): Update. + (SIGFRAME_BASE): Update. + (SIGFRAME_PC_OFF): Update. + (SIGFRAME_REGSAVE_OFF): Update. + (SIGFRAME_FPREGSAVE_OFF): Update. + (SIGFRAME_REG_SIZE): Update. + (mips32_heuristic_proc_desc): Update. + (print_gp_register_row): Update. + (mips_dump_tdep): Do not print MIPS_REGSIZE. + * irix5-nat.c (supply_gregset): Update. + (fetch_core_registers): Update. + * config/mips/tm-mips64.h (MIPS_REGSIZE): Delete macro. + * config/mips/tm-irix6.h (MIPS_REGISTER_BYTE): Update. + * config/mips/tm-mips.h (MIPS_REGSIZE): Delete macro. + (MIPS_REGISTER_BYTE): Update. + * config/mips/tm-irix5.h (MIPS_REGISTER_BYTE): Update. + +2003-11-15 Andrew Cagney <cagney@redhat.com> + + * config/sparc/tm-sparc.h (DEPRECATE_USE_REGISTER_NOT_ARG): Rename + USE_REGISTER_NOT_ARG. + * stabsread.c (define_symbol): Update. + +2003-11-15 Andrew Cagney <cagney@redhat.com> + + * bcache.h (deprecated_bcache): Declare. + (bcache): Make returned buffer constant. + * bcache.c (deprecated_bcache): New function. + (bcache_data): New function. + (bcache): Call bcache data. + * symfile.c (add_psymbol_to_list): Use deprecated_bcache. + (add_psymbol_with_dem_name_to_list): Ditto. + +2003-11-15 Mark Kettenis <kettenis@gnu.org> + + * glibc-tdep.h (struct gdbarch): Declare opaque. + (glibc_skip_solib_resolver): Adjust prototype. + * glibc-tdep.c (glibc_skip_solib_resolver): Adjust. + * arm-linux-tdep.c (arm_linux_skip_solib_resolver): Remove. + (arm_linux_init_abi): Set skip_solib_resolver. + * i386-linux-tdep.c (i386_linux_skip_solib_resolver): Remove. + (i386_linux_init_abi): Set skip_solib_resolver. + * config/arm/tm-linux.h (SKIP_SOLIB_RESOLVER): Remove. + (arm_linux_skip_solib_resolver): Remove prototype. + * config/i386/tm-linux.h (SKIP_SOLIB_RESOLVER): Remove. + (i386_linux_skip_solib_resolver): Remove prototype. + +2003-11-14 Mark Kettenis <kettenis@gnu.org> + + * gdbarch.sh (skip_solib_resolver): Change into a multi-arch + function. + * gdbarch.c, gdbarch.h: Regenerate. + * infrun.c (handle_inferior_event): Call + gdbarch_skip_solib_resolver instead of SKIP_SOLIB_RESOLVER. + * arch-utils.c (generic_in_solib_call_trampoline): Adjust function + definition. + * arch-utils.h (generic_in_solib_call_trampoline): Adjust function + prototype. + +2003-11-14 Jeff Johnston <jjohnstn@redhat.com> + + * libunwind-frame.c: New file. + * libunwind-frame.h: New file. + * acconfig.h (HAVE_LIBUNWIND): #undef reference added. + * configure.in: Add --with-libunwind option support. Define + HAVE_LIBUNWIND if libunwind support selected / defaulted. + Also check for libunwind.h and libunwind-ia64.h headers. + * configure: Regenerated. + * Makefile.in: Add support for libunwind-frame.o. + * config.in: Regenerated. + +2003-11-14 Jeff Johnston <jjohnstn@redhat.com> + + * config/ia64/nm-linux.h (NATIVE_XFER_UNWIND_TABLE): New macro to + set up the ia64 linux native target method for getting the kernel + unwind table. + * ia64-linux-nat.c (ia64_linux_xfer_unwind_table): New function. + * inftarg.c (child_xfer_partial): Enable section of code to + handle TARGET_OBJECT_UNWIND_TABLE. + * target.h (target_object): Add new TARGET_OBJECT_UNWIND_TABLE macro. + +2003-11-14 Ian Lance Taylor <ian@wasabisystems.com> + + * config/arm/nbsd.mt (TM_FILE): Define. + * config/arm/tm-nbsd.h: New file. + +2003-11-14 Andrew Cagney <cagney@redhat.com> + + * Makefile.in (ppc-sysv-tdep.o): Update dependencies. + * ppc-sysv-tdep.c: Include "objfiles.h". + (ppc64_sysv_abi_push_dummy_call): Provide the + the FN's objfile when looking for the descriptor. + + * ppc-linux-tdep.c (ppc_linux_init_abi): Set PPC64's + "name_of_malloc" to ".malloc". + +2003-11-13 Mark Kettenis <kettenis@gnu.org> + + * config/i386/x86-64linux.mt (TDEPFILES): Add glibc-tdep.o. + +2003-11-13 David Carlton <carlton@kealia.com> + + * cp-namespace.c (lookup_namespace_scope): Fix typo in comment. + +2003-11-13 Andrew Cagney <cagney@redhat.com> + + * arch-utils.h (selected_architecture_name): Declare. + (selected_byte_order): Declare. + * arch-utils.c (selected_byte_order): New function. + (selected_architecture_name): New function. + (target_architecture_auto): Make static. + (set_architecture_string): Make static. + (target_byte_order): Make static. + (target_byte_order_auto): Make static. + * gdbarch.sh (TARGET_BYTE_ORDER, TARGET_ARCHITECTURE): Delete + non-multi-arch definition. + (TARGET_ARCHITECTURE_AUTO, TARGET_BYTE_ORDER_AUTO): Delete. + (target_byte_order, target_architecture): Delete declaration. + (target_byte_order_auto, target_architecture_auto): Ditto. + * gdbarch.h: Re-generate. + * remote-sim.c (gdbsim_open): Use "selected_architecture_name" and + "selected_byte_order". + +2003-11-13 Andrew Cagney <cagney@redhat.com> + + * ppc-linux-tdep.c (ppc_linux_return_value): Fix parameter order. + +2003-11-13 Jim Blandy <jimb@redhat.com> + + * cp-namespace.c: Doc fix. + +2003-11-12 Michael Snyder <msnyder@redhat.com> + + * sh64_tdep.c: Regularize some names. + (sh_sh64_register_name): Rename to sh64_register_name. + (sh_sh64_breakpoint_from_pc): Rename to sh64_breakpoint_from_pc. + (sh_sh64_register_byte): Rename to sh64_register_byte. + (sh_sh64_build_float_register_type): + Rename to sh64_build_float_register_type. + (sh_sh64_register_convert_to_virtual): + Rename to sh64_register_convert_to_virtual. + (sh_sh64_register_convert_to_raw): + Rename to sh64_register_convert_to_raw. + + * sh64-tdep.c (translate_insn_rn, is_media_pseudo, + sh64_media_reg_base_num, sh64_compact_reg_base_num, + sh64_nofp_frame_init_saved_regs, sh64_push_arguments, + sh64_extract_return_value, sh64_show_media_regs, + sh64_show_compact_regs, sh_sh64_register_byte, sh64_register_type, + sh_sh64_register_convert_to_virtual, sh_sh64_register_convert_to_raw, + sh64_pseudo_register_read, sh64_pseudo_register_write, + sh64_do_pseudo_register, sh_compact_print_registers_info): + Delete unused variable 'tdep'. + + * sh64-tdep.c: Coding standard and spelling comment fixes. + (sh64_extract_return_value): Replace deprecated_store_floating + with store_typed_floating. + (sh_sh64_register_convert_to_raw): Replace + deprecated_store_floating with store_typed_floating. + (sh_sh64_register_virtual_type): Convert to sh64_register_type. + (sh64_frame_chain, sh64_get_saved_pr, sh64_get_saved_register, + sh64_nofp_frame_init_saved_regs, sh64_push_arguments, + sh64_extract_struct_value_address, sh64_pop_frame, + sh64_extract_return_value, sh64_store_return_value, + sh_sh64_register_convert_to_virtual, sh64_pseudo_register_read, + sh_sh64_register_convert_to_raw, sh_pseudo_register_write): + Replace DEPRECATED_REGISTER_RAW_SIZE with register_size. + Replace DEPRECATED_REGISTER_VIRTUAL_TYPE with register_type. + (sh64_gdbarch_init): Don't set deprecated_register_bytes, + deprecated_register_virtual_type, deprecated_register_raw_size, + deprecated_max_register_raw_size, or + deprecated_max_register_virtual_size. Instead, just set + gdbarch_register_type. + (sh_sh64_register_raw_size): Delete. + (sh_sh64_register_virtual_size): Delete. + +2003-11-12 Daniel Jacobowitz <drow@mvista.com> + + * dwarf2read.c (struct dwarf2_cu): New type. + + (dwarf2_build_psymtabs_hard, psymtab_to_symtab_1): Create a + dwarf2_cu structure to pass down. + + (scan_partial_symbols, add_partial_symbol, add_partial_namespace) + (add_partial_enumeration, locate_pdi_sibling, process_die) + (read_file_scope, read_func_scope) + (read_lexical_block_scope, dwarf2_get_pc_bounds) + (dwarf2_add_field, dwarf2_attach_fields_to_type) + (dwarf2_add_member_fn, dwarf2_attach_fn_fields_to_type) + (read_structure_scope, read_enumeration, read_array_type) + (read_common_block, read_namespace, 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_typedef, read_base_type, read_comp_unit) + (read_die_and_children, read_die_and_siblings, dwarf2_read_section) + (dwarf2_read_abbrevs, dwarf2_lookup_abbrev, read_partial_die) + (read_full_die. read_attribute_value, read_attribute) + (read_address, dwarf_decode_line_header, dwarf_decode_lines) + (var_decode_location, new_symbol, dwarf2_const_value, die_type) + (die_containing_type, type_at_offset, tag_type_to_type) + (read_type_die, dwarf_base_type, decode_locdesc, dwarf_decode_macros) + (dwarf2_symbol_mark_computed): Accept and use a dwarf2_cu object. + +2003-11-12 Daniel Jacobowitz <drow@mvista.com> + + PR breakpoints/1450 + * breakpoint.c (insert_bp_location): Fix a logic error by returning + 0 after a catchpoint fails. + +2003-11-11 Michael Chastain <mec.gnu@mindspring.com> + + * mips-tdep.c (msymbol_size): Delete. + +2003-11-07 Michael Chastain <mec@shout.net> + + * symtab.h (struct minimal_symbol): Add size. + * dbxread.c: Use it. + * elfread.c: (record_minimal_symbol_and_info): Do not use info. + Rename to record_minimal_symbol. + (elf_symtab_read): Set MSYMBOL_SIZE explicitly. + * minsyms.c (prim_record_minimal_symbol_and_info): Initialize MSYMBOL_SIZE. + (install_minimal_symbols): Ditto. + * objfiles.c (terminate_minimal_symbol_table): Ditto. + * arm-tdep.c: Delete unused MSYMBOL_SIZE. + * m68hc11-tdep.c: Ditto. + * mips-tdep.c: Ditto. + * sh64-tdep.c: Ditto. + +2003-11-10 Michael Chastain <mec.gnu@mindspring.com> + + * MAINTAINERS: Change my e-mail address. + +2003-11-10 Andrew Cagney <cagney@redhat.com> + + * gdbarch.sh (return_value): Replace "inval" and "outval" with + "readbuf" and "writebuf". + * ppcnbsd-tdep.c (ppcnbsd_return_value): Ditto. + * d10v-tdep.c (d10v_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. + * ppc-sysv-tdep.c (do_ppc_sysv_return_value): Ditto. + (ppc_sysv_abi_return_value): Ditto. + (ppc_sysv_abi_broken_return_value): Ditto. + (ppc64_sysv_abi_return_value): Ditto. + * values.c (register_value_being_returned): Update call. + * stack.c (return_command): Update call. + * gdbarch.h, gdbarch.c: Re-generate. + + * target.h (struct target_ops): Order xfer buffer parameters "read + write" not "write read". + * bfd-target.c (target_bfd_xfer_partial): Update. + * remote.c (remote_xfer_partial): Update. + * inftarg.c (child_xfer_partial): Update. + * target.c (default_xfer_partial): Update. + (target_read_partial, target_write_partial): Update. + (debug_to_xfer_partial): Update. + + * arch-utils.h, arch-utils.c: Fix typo in comment. + + * arch-utils.c (deprecated_select_gdbarch_hack): Delete function. + (gdbarch_from_bfd): Call gdbarch_find_by_info. + (set_gdbarch_from_file): Call + "deprecated_current_gdbarch_select_hack". + +2003-11-09 Andrew Cagney <cagney@redhat.com> + + * arch-utils.c (gdbarch_update_p): New function. + * gdbarch.sh (gdbarch_update_p): Delete function. + (find_arch_by_info, gdbarch_find_by_info): New functions. + (deprecated_current_gdbarch_select_hack): New function. + * gdbarch.c: Re-generate. + + * gdbarch.sh (clear_gdbarch_swap): Delete function. + (swapout_gdbarch_swap): Delete function. + (swapin_gdbarch_swap): Delete function. + (init_gdbarch_swap): Delete function. + (initialize_non_multiarch): Delete function. + (current_gdbarch_swap_in_hack): New function. + (current_gdbarch_swap_out_hack): New function. + (current_gdbarch_swap_init_hack): New function. + * gdbarch.c: Re-generate. + + * gdbarch.sh (verify_gdbarch, gdbarch_dump): Rename "gdbarch" + parameter to "current_gdbarch". Add comment explaining why. + (TARGET_FLOAT_FORMAT: Pass "current_gdbarch" to default_double_format. + (TARGET_DOUBLE_FORMAT,TARGET_LONG_DOUBLE_FORMAT): Ditto. + * gdbarch.c: Re-generate. + + * config/s390/s390.mh (XM_FILE, XM_CLIBS): Delete macros. + * config/s390/nm-linux.h (KERNEL_U_ADDR): Define. + * config/s390/xm-linux.h: Delete file. + * config/m88k/xm-delta88v4.h: Delete stray. + + * Makefile.in (arch-utils.o): Update dependencies. + * arch-utils.c: Include "osabi.h". + (gdbarch_info_fill): New function. + * arch-utils.h (gdbarch_info_fill): Declare. + * gdbarch.sh (gdbarch_update_p): Call "gdbarch_info_fill". + * gdbarch.c: Re-generate. + +2003-11-09 Mark Kettenis <kettenis@gnu.org> + David S. Miller <davem@redhat.com> + + * glibc-tdep.c, glibc-tdep.h: New files. + * config/arm/linux.mt (TDEPFILES): Add glibc-tdep.o + * config/i386/linux.mt (TDEPFILES): Likewise. + * i386-linux-tdep.c (glibc-tdep.h): Include. + (find_minsym_and_objfile, skip_hurd_resolver): Delete. + (i386_linux_skip_solib_resolver): Call glibc_skip_solib_resolver. + * arm-linux-tdep.c (glibc-tdep.h): Include. + (find_minsym_and_objfile, skip_hurd_resolver): Delete. + (arm_linux_skip_solib_resolver): Call glibc_skip_solib_resolver. + * Makefile.in (ALLDEPFILES): Add glibc-tdep.c + (glibc_tdep_h): Define. + (glibc-tdep.o): Add dependencies. + (arm-linux-tdep.o): Update dependencies. + (i386-linux-tdep.o): Likewise. + +2003-11-09 Andrew Cagney <cagney@redhat.com> + + * config/mips/irix6.mh (NAT_FILE): Set to "nm-irix5.h". + * config/mips/nm-irix6.h: Delete file. + * config/mips/nm-linux.h: Update copyright. + (MIPS_GNULINUX_TARGET): Delete macro. + * config/mips/irix6.mh (XM_FILE): Set to "xm-irix5.h". + * config/mips/xm-irix6.h: Delete file. + * config/mips/linux.mh (XM_FILE): Delete definition. + * config/mips/xm-linux.h: Delete file. + +2003-11-09 Andrew Cagney <cagney@redhat.com> + + * d10v-tdep.c (d10v_return_value): New function. + (d10v_use_struct_convention): Delete function. + (d10v_store_return_value): Delete function. + (d10v_extract_struct_value_address): Delete function. + (d10v_gdbarch_init): Set "return_value" instead of + "extract_return_value", "store_return_value", + "extract_struct_value_address", and "use_struct_convention". + (RET1_REGNUM): Delete const. + +2003-11-09 Mark Kettenis <kettenis@gnu.org> + + From David S. Miller <davem@redhat.com>: + * gdbarch.sh (SKIP_SOLIB_RESOLVER): New method. + * gdbarch.c, gdbarch.h: Regenerated. + * arch-utils.c (generic_skip_solib_resolver): New function. + * arch-utils.h (generic_skip_solib_resolver): New prototype. + * infrun.c (SKIP_SOLIB_RESOLVER): Don't define. + +2003-11-07 Andrew Cagney <cagney@redhat.com> + + * top.c (print_gdb_version): Replace STREQ with strcmp. + * valops.c (value_struct_elt_for_reference): Ditto. + (value_struct_elt_for_reference): Ditto. + * symtab.c (gdb_mangle_name): Ditto. + (find_line_symtab): Ditto. + * symmisc.c (maintenance_print_symbols): Ditto. + * symfile.c (symbol_file_command): Ditto. + * stabsread.c (define_symbol, read_type): Ditto. + (cleanup_undefined_types, scan_file_globals): Ditto. + * solib.c (solib_map_sections): Ditto. + * solib-svr4.c (bfd_lookup_symbol): Ditto. + * rs6000-tdep.c (skip_prologue): Ditto. + * p-valprint.c (pascal_value_print): Ditto. + (pascal_object_is_vtbl_ptr_type): Ditto. + * objfiles.c (in_plt_section): Ditto. + * minsyms.c (lookup_minimal_symbol): Ditto. + (compact_minimal_symbols): Ditto. + (find_solib_trampoline_target): Ditto. + * mdebugread.c (parse_type): Ditto. + * language.c (set_language_command): Ditto. + (set_type_command, set_range_command): Ditto. + * f-lang.c (add_common_block): Ditto. + (add_common_block): Ditto. + (find_first_common_named): Ditto. + (patch_all_commons_by_name): Ditto. + * elfread.c (elf_locate_sections): Ditto. + (elf_locate_sections): Ditto. + (elfstab_offset_sections): Ditto. + * dwarf2read.c (dwarf2_locate_sections): Ditto. + * dbxread.c (add_old_header_file): Ditto. + (find_corresponding_bincl_psymtab): Ditto. + (read_dbx_symtab, process_one_symbol): Ditto. + * coffread.c (patch_opaque_types): Ditto. + * cli/cli-decode.c (delete_cmd): Ditto. + * cli/cli-cmds.c (pwd_command, list_command): Ditto. + * c-typeprint.c (c_type_print_base): Ditto. + * breakpoint.c (bpstat_stop_status): Ditto. + (clear_command, breakpoint_re_set_one): Ditto. + +2003-11-07 Andrew Cagney <cagney@redhat.com> + + * bcache.h: Update copyright. Add comments on bcache VS hashtab. + * bcache.c (struct bstring): Make "length" an unsigned short, add + "half_hash". + (struct bcache): Add "half_hash_error_count". + (bcache): Compute and save the "half_hash". Compare the + "half_hash" before comparing the length. Update + half_hash_error_count. + +2003-11-07 Andrew Cagney <cagney@redhat.com> + + * inftarg.c (child_xfer_partial): New function + (init_child_ops): Set "to_xfer_partial". + +2003-11-07 Andrew Cagney <cagney@redhat.com> + + * ppc-linux-tdep.c (ppc_linux_init_abi): When 32-bit GNU/Linux, + set "return_value" instead of "use_struct_convention". + (ppc_linux_use_struct_convention): Delete function. + (ppc_linux_return_value): New function. + * ppc-sysv-tdep.c (ppc_sysv_abi_return_value): New function. + (ppc_sysv_abi_broken_return_value): New function. + (do_ppc_sysv_return_value): Add "gdbarch" parameter. + (ppc64_sysv_abi_push_dummy_call): Add "gdbarch" parameter, drop + static. + (ppc_sysv_abi_extract_return_value): Delete function. + (ppc_sysv_abi_broken_extract_return_value): Delete function. + (ppc_sysv_abi_store_return_value): Delete function. + (ppc_sysv_abi_broken_store_return_value): Delete function. + (ppc_sysv_abi_use_struct_convention): Delete function. + (ppc64_sysv_abi_use_struct_convention): Delete function. + (ppc64_sysv_abi_extract_return_value): Delete function. + (ppc64_sysv_abi_store_return_value): Delete function. + * ppcnbsd-tdep.c (ppcnbsd_return_value): New function. + (ppcnbsd_init_abi): Set "return_value", instead of + "use_struct_convention", "extract_return_value", and + "store_return_value". + (ppcnbsd_use_struct_convention): Delete function. + * ppc-tdep.h (ppc64_sysv_abi_return_value): Declare. + (ppc_sysv_abi_return_value): Declare. + (ppc_sysv_abi_broken_return_value): Declare. + (ppc_sysv_abi_use_struct_convention): Delete. + (ppc_sysv_abi_store_return_value): Delete. + (ppc_sysv_abi_extract_return_value): Delete. + (ppc_sysv_abi_broken_store_return_value): Delete. + (ppc_sysv_abi_broken_extract_return_value): Delete. + (ppc64_sysv_abi_use_struct_convention): Delete. + (ppc64_sysv_abi_extract_return_value): Delete. + (ppc64_sysv_abi_store_return_value): Delete. + * rs6000-tdep.c (rs6000_gdbarch_init): For 32-bit and 64-bit SYSV, + set "return_value" instead of "extract_return_value", + "store_return_value", and "use_struct_convention". + +2003-11-07 Mark Kettenis <kettenis@gnu.org> + + * dwarf2-frame.c (dwarf2_build_frame_info): Wrap comment. + + * fbsd-proc.c (read_mapping): Use sscanf and fgets instead of + fscanf. + +2003-11-07 Mark Kettenis <kettenis@gnu.org> + + * fbsd-proc.c: Fix formatting. + +2003-11-06 Kevin Buettner <kevinb@redhat.com> + + * frv-tdep.c (first_pseudo_regnum, iacc0_regnum, frv_num_pseudo_regs): + Define. + (new_variant): Set name for iacc0_regnum. + (frv_register_name): Accommodate pseudo-registers. + (frv_register_type): Add case for iacc0_regnum. + (frv_pseudo_register_read, frv_pseudo_register_write): New functions. + (frv_gdbarch_init): Set number of pseudo registers. Establish + pseudo-register read/write methods. + +2003-11-06 Andrew Cagney <cagney@redhat.com> + + * valops.c (destructor_name_p): Replace STREQN with strncmp. + * top.c (command_line_input): Ditto. + * objc-exp.y (yylex): Ditto. + * minsyms.c (prim_record_minimal_symbol_and_info): Ditto. + * jv-exp.y (yylex): Ditto. + * f-exp.y (yylex): Ditto. + * event-top.c (command_line_handler): Ditto. + * environ.c (get_in_environ): Ditto. + (set_in_environ): Ditto. + * dwarfread.c (handle_producer): Ditto. + * dbxread.c (process_one_symbol): Ditto. + * c-typeprint.c (c_type_print_base): Ditto. + * c-exp.y (yylex): Ditto. + +2003-11-06 Andrew Cagney <cagney@redhat.com> + Jeff Johnston <jjohnstn@redhat.com> + + * target.c (add_target): Only set "to_xfer_partial" when NULL. + (init_dummy_target): Set "to_xfer_partial". + +2003-11-06 Andrew Cagney <cagney@redhat.com> + + * stack.c (return_command): Warn when STRUCT_CONVENTION, and not + REGISTER_CONVENTION. + +2003-11-06 Daniel Jacobowitz <drow@mvista.com> + + * breakpoint.c (insert_bp_location, allocate_bp_location): Make + static. + +2003-11-06 Daniel Jacobowitz <drow@mvista.com> + + * breakpoint.c (remove_breakpoint): Take an bp_location + instead of a breakpoint argument. Check the bp_location's type. + Fix a reversed condition for hardware breakpoints. + + (insert_bp_location): Update call to remove_breakpoint. + (remove_breakpoints): Likewise. Use ALL_BP_LOCATIONS. + (remove_hw_watchpoints): Likewise. + (reattach_breakpoints): Likewise. + (detach_breakpoints): Likewise. + (delete_breakpoint): Likewise. + +2003-11-06 Daniel Jacobowitz <drow@mvista.com> + + * breakpoint.c (mark_breakpoints_out): Use ALL_BP_LOCATIONS. + (beakpoint_init_inferior): Likewise. + (breakpoint_here_p): Likewise. Only check addresses for software + or hardware breakpoints. + (breakpoint_inserted_here_p): Likewise. + (breakpoint_thread_match): Likewise. Correct comment. + (bpstat_have_active_hw_watchpoints): Likewise. + (check_duplicates): Likewise. + +2003-11-06 Daniel Jacobowitz <drow@mvista.com> + + * breakpoints.c (insert_bp_location): New function, broken out + from insert_breakpoints. Work on an bp_location instead of a + breakpoint. + (insert_breakpoints): Use it. + +2003-11-06 Daniel Jacobowitz <drow@mvista.com> + + * breakpoint.h (struct bp_location): Add section. + (struct breakpoint): Remove section. + * breakpoint.c (insert_breakpoints, remove_breakpoint) + (breakpoint_here_p, breakpoint_inserted_here_p) + (breakpoint_thread_match, bpstat_stop_status, print_one_breakpoint) + (describe_other_breakpoints, check_duplicates, set_raw_breakpoint) + (clear_command, delete_breakpoint, breakpoint_re_set_one): Access + section through loc. + +2003-11-06 Daniel Jacobowitz <drow@mvista.com> + + * breakpoint.c (read_memory_nobpt): Use ALL_BP_LOCATIONS + instead of ALL_BREAKPOINTS. Check for software breakpoints only. + +2003-11-06 Daniel Jacobowitz <drow@mvista.com> + + * breakpoint.c (allocate_bp_location): Take bpt and bp_type + arguments. Initialize owner and type for the new breakpoint + location item. + (set_raw_breakpoint): Update call to allocate_bp_location. + +2003-11-06 Daniel Jacobowitz <drow@mvista.com> + + * breakpoint.h (struct bp_location): Add a chain pointer. + * breakpoint.c (ALL_BP_LOCATIONS, ALL_BP_LOCATIONS_SAFE): New + macros. + (bp_location_chain): New variable. + (allocate_bp_location): New function. + (set_raw_breakpoint): Use it. + (delete_breakpoint): Remove ->loc from the bp_location_chain. + +2003-11-06 Daniel Jacobowitz <drow@mvista.com> + + * breakpoint.h (enum bp_loc_type, struct bp_location): New. + (struct breakpoint): Remove address, shadow_contents, inserted, + requested_address, and duplicate. Add a struct bp_location. + * breakpoint.c (condition_command, read_memory_nobpt) + (insert_breakpoints, remove_breakpoints, remove_hw_watchpoints) + (reattach_breakpoints, update_breakpoints_after_exec) + (detach_breakpoints, remove_breakpoint, mark_breakpoints_out) + (breakpoint_init_inferior, breakpoint_here_p) + (breakpoint_inserted_here_p, deprecated_frame_in_dummy) + (breakpoint_thread_match, bpstat_stop_status) + (bpstat_have_active_hw_watchpoints, print_one_breakpoint) + (describe_other_breakpoints, check_duplicates) + (make_breakpoint_permanent, create_thread_event_breakpoint) + (disable_breakpoints_in_shlibs, re_enable_berakpoints_in_shlibs) + (set_longjmp_resume_breakpoint, mention, create_breakpoints) + (watch_command_1, print_one_exception_catchpoint) + (clear_command, breakpoint_re_set_one): Adjust member accesses to + use the breakpoint's ->loc. + (set_raw_breakpoint): Likewise. Initialize ->loc. + (delete_breakpoint): Likewise. Free ->loc. + +2003-11-05 Andrew Cagney <cagney@redhat.com> + + * config/sparc/tm-sparc.h (FRAME_STRUCT_ARGS_ADDRESS): Delete + macro. + * config/m68k/tm-sun3.h (SIG_PC_FP_OFFSET): Delete macro. + * config/i386/tm-cygwin.h + (LINKER_SYMBOLS_HAVE_WIN32_STDCALL_ARG_SIZES): Delete macro. + * config/powerpc/tm-linux.h + (AT_SUBROUTINE_CALL_INSTRUCTION_TARGET): Delete macro. + (at_subroutine_call_instruction_target): Delete declaration. + * config/sparc/tm-sp64linux.h (GDB_PTRACE_REGS64): Delete macro. + * config/m68k/tm-sun3.h (SIG_SP_FP_OFFSET): Delete macro. + * config/ns32k/tm-ns32k.h (NUM_GENERAL_REGS): Delete macro. + + * xcoffread.c (find_linenos): Replace "sec_ptr" and "bfd" with + "struct bfd_section" and "struct bfd". + * target.h (struct section_table): Ditto. + * rs6000-nat.c (xcoff_relocate_core): Ditto. + * solib-svr4.c (elf_locate_base): Ditto. + * pa64solib.c (dld_cache_t): Ditto. + * objfiles.h (struct obj_section): Ditto. + * objfiles.c (add_to_objfile_sections): Ditto. + * exec.c (bfdsec_to_vmap): Ditto. + (add_to_section_table): Ditto. + (build_section_table): Ditto. + * corelow.c (get_core_register_section): Ditto. + * coffread.c (find_linenos): Ditto. + * elfread.c (elf_interpreter): Delete #if0'd function. + + * mips-tdep.c (mips_dump_tdep): Delete code prinint VX_NUM_REGS. + * config/sparc/tm-vxsparc.h (VX_NUM_REGS): Delete macro. + * config/mips/tm-vxmips.h (VX_NUM_REGS): Delete macro. + * config/m68k/tm-vx68.h (VX_NUM_REGS): Delete macro. + + * arch-utils.h (generic_cannot_extract_struct_value_address): + Delete declaration. + * wince.c (_initialize_wince): Fix multi-line string. + * ia64-tdep.c (floatformat_valid): Convert to ISO C. + +2003-11-05 Elena Zannoni <ezannoni@redhat.com> + + * top.c (execute_command): Fix broken logic for command execution + while inferior is running in async mode. + +2003-11-06 Mark Kettenis <kettenis@gnu.org> + + * dwarf2-frame.c (execute_cfa_program): Mark register as + REG_SAVED_REG for DW_CFA_register opcode. + +2003-11-05 Mark Kettenis <kettenis@gnu.org> + + * amd64fbsd-tdep.c (amd64fbsd_sc_reg_offset): Adjust offset of + %rsp, %rip and %eflags to match ABI-change. + +2003-11-05 Jeff Johnston <jjohnstn@redhat.com> + + * ia64-tdep.c (struct gdbarch_tdep): Remove os_ident field. + (ia64_gdbarch_init): Don't bother calculating the os. + Instead use the gdbarch_info struct and look at the osabi field. + Also use gdbarch_list_lookup_by_info() to look for a + candidate gdbarch. + +2003-11-05 Kevin Buettner <kevinb@redhat.com> + + * frv-tdep.c (frv_register_byte): Delete. + (frv_extract_return_value, frv_store_return_value) + (frv_extract_struct_value_address): Don't call frv_register_byte(). + Convert to non-deprecated form. + (frv_gdbarch_init): Don't call set_gdbarch_deprecated_register_byte(). + Convert calls to set_gdbarch_deprecated_extract_return_value(), + set_gdbarch_deprecated_store_return_value(), and + set_gdbarch_deprecated_extract_struct_value_address() into + non-deprecated forms. + +2003-11-05 Andrew Cagney <cagney@redhat.com> + + * mips-tdep.c (mips_dump_tdep): Do not print + PRINT_EXTRA_FRAME_INFO. + * config/sparc/tm-sparc.h (DEPRECATED_PRINT_EXTRA_FRAME_INFO): + Rename PRINT_EXTRA_FRAME_INFO. + * mips-tdep.c (mips_print_extra_frame_info): Delete function. + * config/mips/tm-mips.h (PRINT_EXTRA_FRAME_INFO): Delete macro. + (mips_print_extra_frame_info): Delete declaration. + * stack.c (frame_info): Use DEPRECATED_PRINT_EXTRA_FRAME_INFO. + +2003-11-05 Elena Zannoni <ezannoni@redhat.com> + + * coffread.c (coff_symtab_read): Remove passing of info parameter + to prim_record_minimal_symbol_and_info. + +2003-11-05 Elena Zannoni <ezannoni@redhat.com> + + * coffread.c (process_coff_symbol): Delete CXUX_TARGET macro use. + (decode_base_type): Delete ifdeffed out code. + +2003-11-04 Andrew Cagney <cagney@redhat.com> + + * symtab.c (find_active_alias): Delete function. + (lookup_block_symbol): Delete alias code. + * stabsread.c (resolve_live_range): Delete function. + (add_live_range): Delete function. + (resolve_symbol_reference): Delete function. + (define_symbol): Delete live range and alias code. + (scan_file_globals): Delete alias code. + * symtab.h (SYMBOL_RANGES): Delete macro. + (struct range_list): Delete structure. + (struct symbol): Delete field "ranges". + (SYMBOL_ALIASES): Delete macro. + (struct alias_list): Delete structure. + (struct symbol): Delete field "aliases". + +2003-11-04 Michael Snyder <msnyder@redhat.com> + + * MAINTAINERS: Remove myself as owner of breakpoints and + of sparc/solaris. + +2003-11-03 Corinna Vinschen <vinschen@redhat.com> + + * sh-tdep.c (sh_sh4_nofpu_register_name): New function. + (sh_sh4al_dsp_register_name): Ditto. + (sh4_nofpu_show_regs): Ditto. + (sh_gdbarch_init): Add cases for bfd_mach_sh4al_dsp, bfd_mach_sh4a, + bfd_mach_sh4_nofpu and bfd_mach_sh4a_nofpu. + +2003-11-03 Andrew Cagney <cagney@redhat.com> + + * bcache.c: Include "gdb_assert.h". + (struct bcache): Add fields "expand_count" and + "expand_hash_count". + (expand_hash_table): Update the expand counts. + (print_bcache_statistics): Use XCALLOC, not alloca. Print stats + on object sizes and hashes. + * Makefile.in (bcache.o): Update dependencies. + +2003-11-03 Andrew Cagney <cagney@redhat.com> + + * exec.c (xfer_memory): Eliminate xfer_fn. + +2003-10-31 Kevin Buettner <kevinb@redhat.com> + + * frv-tdep.c (gdb_assert.h, sim-regno.h, gdb/sim-frv.h) + (opcodes/frv-desc.h): Include. + (iacc0h_regnum, iacc0l_regnum): Define. + (last_spr_regnum, frv_num_regs): Update. + (new_variant): Don't supply default names for holes in the SPRs. + Supply names for iacc0h_regnum and iacc0l_regnum. + (frv_register_type): Use symbolic constants first_fpr_regnum and + last_fpr_regnum instead of hardcoded constants 64 and 127. Use + builtin_type_int instead of builtin_type_int32. + (frv_register_sim_regno): New function. + (frv_gdbarch_init): Call set_gdbarch_register_sim_regno(). + * Makefile.in (gdb_sim_frv_h): Define. + (frv-tdep.o): Update dependencies. + +2003-10-31 Andrew Cagney <cagney@redhat.com> + + * avr-tdep.c (avr_frame_this_id): Do not call + deprecated_inside_entry_file. + * m68hc11-tdep.c (m68hc11_frame_this_id): Ditto. + * m32r-tdep.c (m32r_frame_this_id): Ditto. + * d10v-tdep.c (d10v_frame_this_id): Ditto. + * arm-tdep.c (arm_prologue_this_id): Ditto. + * alpha-tdep.c (alpha_heuristic_frame_this_id): Ditto. + +2003-10-31 Jim Blandy <jimb@redhat.com> + + * elfread.c (elf_symtab_read): Allocate correct number of tail + elements to sectinfo structure. (Fix from Woody LaRue.) + +2003-10-31 Andrew Cagney <cagney@redhat.com> + + * stack.c (return_command): Use get_frame_type, instead of + CALL_DUMMY_HAS_COMPLETED. + * inferior.h (CALL_DUMMY_HAS_COMPLETED): Delete definition. + * config/pa/tm-hppa.h (CALL_DUMMY_HAS_COMPLETED): Delete macro. + +2003-10-31 Mark Kettenis <kettenis@gnu.org> + + * x86-64-linux-tdep.c (x86_64_linux_sc_reg_offset): Don't + explicitly specify size of array. + (x86_64_linux_init_abi): Use ARRAY_SIZE to initialize + TDEP->sc_num_regs. + +2003-10-31 Andrew Cagney <cagney@redhat.com> + + * s390-tdep.c (s390_cannot_extract_struct_value_address): New + function. + (s390_gdbarch_init): Set extract_struct_value_address. + * arch-utils.c (generic_cannot_extract_struct_value_address): + Delete function. + * arch-utils.h (generic_cannot_extract_struct_value_address): + Delete definition. + +2003-10-31 Mark Kettenis <kettenis@gnu.org> + + * i386-linux-nat.c (fetch_core_registers): Remove. + (linux_elf_core_fns): Remove. + (_initialize_i386_linux_nat): Remove. + +2003-10-31 Andrew Cagney <cagney@redhat.com> + + * solib-svr4.c: Update copyright. Include "bfd-target.h" and + "exec.h". + (exec_entry_point): New function. + (enable_break): Create a "tmp_bfd_target", use that and + entry_point_address when computing the relocation offset. + (svr4_relocate_main_executable): Ditto with exec_bfd and exec_ops. + * Makefile.in (solib-svr4.o): Update dependencies. + +2003-10-31 Andrew Cagney <cagney@redhat.com> + + * defs.h (XZALLOC): Define. + * target.h (struct target_ops): Add "to_data"; + * bfd-target.h, bfd-target.c: New files. + * Makefile.in (SFILES): Add "bfd-target.c". + (COMMON_OBS): Add "bfd-target.o". + (bfd-target.o): Specify dependencies. + (bfd_target_h): Define. + * defs.h (XZALLOC): Define. + +2003-10-31 Andrew Cagney <cagney@redhat.com> + + * rs6000-tdep.c (rs6000_gdbarch_init): For 64-bit ABI, set + adjust_breakpoint_address. + * Makefile.in (ppc-sysv-tdep.o): Add $(target_h). + * ppc-tdep.h (ppc64_sysv_abi_adjust_breakpoint_address): Declare. + * ppc-sysv-tdep.c: Include "target.h". Update copyright. + (ppc64_sysv_abi_adjust_breakpoint_address): New function. + +2003-10-31 Andrew Cagney <cagney@redhat.com> + + * target.h (struct target_ops): Replace "to_read_partial" and + "to_write_partial" with "to_xfer_partial". Update comments. + * target.c (debug_to_write_partial): Delete function. + (debug_to_xfer_partial): Replace debug_to_read_partial. + (add_target, update_current_target, setup_target_debug): Set + "to_xfer_partial" instead of "to_read_partial" and + "to_write_partial". + (default_xfer_partial): Replace "default_write_partial". + (default_read_partial): Delete. + (target_read_partial, target_write_partial): Call + "to_xfer_partial". + * remote.c (init_remote_ops): Set "to_xfer_partial". + (init_remote_async_ops): Ditto. + (remote_xfer_partial): Replace "remote_read_partial". + +2003-10-31 Mark Kettenis <kettenis@gnu.org> + + * i386-tdep.c (i386_supply_fpregset): Support floating-point + registers in `fxsave' format. + (i386_regset_from_core_section): Deal with ".reg-xfp" sections. + +2003-10-30 Mark Kettenis <kettenis@gnu.org> + + * i386-linux-tdep.c (i386_linux_gregset_reg_offset): New variable. + (i386_linux_init_abi): Initialize TDEP->gregset_reg_offset, + TDEP->gregset_num_regs and tdep->sizeof_gregset. + + * i386-linux-tdep.c (i386_linux_sc_reg_offset): Don't explicitly + specify size of array. + (i386_linux_init_abi): Remove initialization of + TDEP->num_xmm_regs. Use I386_LINUX_NUM_REGS for number of + registers. Use ARRAY_SIZE to initialize TDEP->sc_num_regs. + + * config/i386/fbsd64.mt (TDEPFILES): Add corelow.o. + * config/i386/fbsd64.mh (NATDEPFILES): Remove corelow.o and + core-regset.o. + + * fbsd-proc.c (fbsd_make_corefile_notes): Put a "FreeBSD" label in + the ELF header. + +2003-10-29 Mark Kettenis <kettenis@gnu.org> + + * config/i386/fbsd.mt (TDEPFILES): Add corelow.o. + * config/i386/fbsd.mh (NATDEPFILES): Remove corelow.o and + core-regset.o. + + * fbsd-proc.c (fbsd_make_corefile_notes): Remove unecessary casts. + + * corelow.c: Include "arch-utils.h", "regset.h" and + "gdb_assert.h". + (core_gdbarch): New variable. + (sniff_core_bfd): Don't sniff if we have support for register sets + in CORE_GDBARCH. + (core_close): Reset CORE_GDBARCH. + (core_open): Initialize CORE_GDBARCH. + (get_core_register_section): Use register sets if they are + supported by CORE_GDBARCH. + (get_core_registers): Don't print error message if we have support + for register sets in CORE_GDBARCH. + +2003-10-29 Andrew Cagney <cagney@redhat.com> + + * ppc-linux-tdep.c (_initialize_ppc_linux_tdep): Instead of the + default PPC machine, register 32-bit and 64-bit PPC, and rs6k. + +2003-10-29 Mark Kettenis <kettenis@gnu.org> + + * objfiles.h (clear_objfile_data): New prototype. + * objfiles.c (clear_objfile_data): New function. + * symfile.c (reread_symbols): Clear per-objfile data. + +2003-10-28 Jeff Johnston <jjohnstn@redhat.com> + + * symfile.c (symbol_file_add_with_addrs_or_offsets): Switch to use + printf_unfiltered instead of printf_filtered for output messages. + (add_symbol_file_command): Ditto. + (reread_symbols): Ditto. + (overlay_auto_command): Ditto. + (overlay_manual_command): Ditto. + (overlay_off_command): Ditto. + +2003-10-27 Mark Kettenis <kettenis@gnu.org> + + * arch-utils.c (deprecated_select_gdbarch_hack): New function. + (gdbarch_from_bfd): New function. + (set_gdbarch_from_file): Re-implement using gdbarch_from_bfd and + deprecated_select_gdbarch_hack. + * arch-utils.h (gdbarch_from_bfd): New prototype. + +2003-10-27 Andrew Cagney <cagney@redhat.com> + + * osabi.c (gdbarch_init_osabi): Use info.bfd_arch_info instead of + arch_info. Use warning instead of fprintf_filtered. Do not use + deprecated bfd_printable_arch_mach. + +2003-10-26 Kevin Buettner <kevinb@redhat.com> + + * frv-tdep.c (frv_register_raw_size, frv_register_virtual_size): + Delete. + (frv_register_type): Rename from frv_register_virtual_type. Add + ``struct gdbarch *'' parameter. + (frv_gdbarch_init): Delete calls to the following functions: + set_gdbarch_deprecated_size(), + set_gdbarch_deprecated_register_bytes(), + set_gdbarch_deprecated_register_raw_size(), + set_gdbarch_deprecated_max_register_raw_size(), + set_gdbarch_deprecated_register_virtual_size(), + set_gdbarch_deprecated_max_register_virtual_size(), + set_gdbarch_deprecated_register_virtual_size(), + set_gdbarch_deprecated_register_virtual_type(). + Add call to function set_gdbarch_register_type(). + +2003-10-26 Mark Kettenis <kettenis@gnu.org> + + * i386-tdep.h (FCS_REGNUM, FCOFF_REGNUM, FDS_REGNUM, + FDOFF_REGNUM): Remove defines. + * win32-nat.c (do_child_fetch_inferior_registers): Include + "i387-tdep.h". + (do_child_fetch_inferior_registers): Use I387_FISEG_REGNUM and + I387_FOP_REGNUM instead of FCS_REGNUM and FOP_REGNUM. Define and + undefine I387_ST0_REGNUM. + + * i386-tdep.h (FPU_REG_RAW_SIZE): Remove define. + * x86-64-tdep.c (x86_64_store_return_value): Use + I386_MAX_REGISTER_SIZE instead of FPU_REG_RAW_SIZE. + + Change register numbers to enumartion values. + * i386-tdep.h (enum i386_regnum): New. + (I386_EAX_REGNUM, I386_EDX_REGNUM, I386_ESP_REGNUM, + I386_EBP_REGNUM, I386_IP_REGNUM, I386_EFLAGS_REGNUM, + I386_ST0_REGNUM): Remove defines. + * i386-tdep.c (I386_EBX_REGNUM, I386_ECX_REGNUM, I386_ESI_REGNUM, + I386_EDI_REGNUM): Remove defines. + +2003-10-24 Andrew Cagney <cagney@redhat.com> + + * target.c: Include "gdbcore.h". + (get_target_memory, get_target_memory_unsigned): New functions. + * target.h (get_target_memory, get_target_memory_unsigned): Declare. + * ppc-linux-tdep.c (ppc64_linux_convert_from_func_ptr_addr): + Use get_target_memory_unsigned. + * Makefile.in (target.o): Update dependencies. + +2003-10-24 Andrew Cagney <cagney@redhat.com> + + * osabi.c (gdbarch_init_osabi): Fix typos, and "fortunatly"[sic]. + * PROBLEMS, arch-utils.c, cli-out.c, command.h: Ditto. + * complaints.c, cris-tdep.c, disasm.c, dwarf2-frame.c: Ditto. + * frame.c, frame.h, infcall.c, infcmd.c, infrun.c: Ditto. + * kod.c, mips-tdep.c, regcache.c, regcache.h, remote.c: Ditto. + + * osabi.c (gdbarch_init_osabi): Add comment on 32-bit vs 64-bit. + (can_run_code_for): Use the OO term "singleton". + +2003-10-23 Andrew Cagney <cagney@redhat.com> + + * Makefile.in (stack.o): Add $(regcache_h). + * stack.c: Include "regcache.h" + (return_command): Rewrite. Use get_frame_id and + get_selected_frame. Eliminate "deprecated_selected_frame". Warn + about unhandled return-values. + * value.h (set_return_value): Delete declaration. + * values.c (set_return_value): Delete function. + +2003-10-23 Jeff Johnston <jjohnstn@redhat.com> + + * ia64-tdep.c: (ia64_frame_cache): Add new prev_cfm field. + (pseudo_regs): Add comment regarding register stack registers. + (ia64_alloc_frame_cache): Initialize new prev_cfm field to 0. + (floatformat_valid): New static routine. + (floatformat_ia64_ext): Add name field and set up is_valid routine + to floatformat_valid(). + (examine_prologue): For the previous cfm, use + frame_unwind_register() + if the cfm is not stored in a register-stack register. Save the + previous cfm value in the prev_cfm field. Add debug output. + (ia64_frame_this_id): Use frame_id_build_special() to also register + the bsp. Add debug output. + (ia64_sigtramp_frame_this_id): Ditto. + (ia64_frame_prev_register): Look at cache saved_regs for a few more + registers and also add some checks for framelessness before accepting + current register values for fields such as return address. For cfm, + use the cached prev_cfm field if available. Add comment to explain + PSR logic. Add debug output. + (ia64_sigtramp_frame_init_saved_regs): Save the bsp and sp addresses + as part of initialization. + (ia64_sigtramp_frame_cache): Hard-code stack size as it can't be + calculated. Cache the bsp and cfm values. + (ia64_sigtramp_frame_prev_register): Add logic to this routine out + instead of using ia64_frame_prev_register() which doesn't expect most + registers to be saved. The saved values for bsp and sp + can be taken from the cache. Add debug output. + (ia64_push_dummy_call): Use frame_id_build_special() to also register + the bsp. + +2003-10-23 Jim Blandy <jimb@redhat.com> + + * osabi.c (gdbarch_init_osabi): A handler is okay if it's for an + architecture the current arch can run code for --- but not if it's + a superset. + (can_run_code_for): New function. + +2003-10-22 James E Wilson <wilson@specifixinc.com> + + * MAINTAINERS: Move myself from paper trail section back to write + after approval section. + +2003-10-22 Andrew Cagney <cagney@redhat.com> + + * exec.h: New file. + * win32-nat.c: Include "exec.h". + * solib.c: Include "exec.h". + * target.h (build_section_table): Delete declaration. + * somsolib.c: Include "exec.h". + (exec_ops): Delete extern declaration. + * rs6000-nat.c: Update copyright. Include "exec.h". + (exec_ops): Delete extern declaration. + * pa64solib.c: Update copyright. Include "exec.h". + (exec_ops): Delete extern declaration. + * exec.c: Update copyright. Include "exec.h". + * corelow.c: Update dependencies. Include "exec.h". + * Makefile.in (exec_h): Define. + (exec.o, somsolib.o): Update dependencies. + (pa64solib.o, corelow.o): Update dependencies. + +2003-10-22 Andrew Cagney <cagney@redhat.com> + + * target.c: Include "gdb_assert.h" (target_read): Call + "target_read_partial", not "target_write_partial". + (default_read_partial, default_write_partial): New function. + (target_read_partial, target_write_partial): Simplify, assume that + there is always a read/write method. + (update_current_target, add_target): Always set "to_read_partial" + and "to_write_partial". + (target_write, target_read): Fail on a zero byte transfer. + * Makefile.in (target.o): Update dependencies. + * target.h: Update copyright date. + (target_object): Fix typo. + +2003-10-22 Andrew Cagney <cagney@redhat.com> + + * gdbarch.sh (convert_from_func_ptr_addr): Convert to a pure + multi-arch method, add "targ" parameter. + (struct target_ops): Declare. + * gdbarch.h, gdbarch.c: Re-generate. + * Makefile.in (c-valprint.o): Update dependencies. + * arch-utils.h: Update copyright. + (convert_from_func_ptr_addr_identity): Declare. + * arch-utils.c (convert_from_func_ptr_addr_identity): New function. + * ia64-tdep.c (ia64_convert_from_func_ptr_addr): Update. + * rs6000-tdep.c (rs6000_convert_from_func_ptr_addr): Upate. + * ppc-linux-tdep.c (ppc64_linux_convert_from_func_ptr_addr): Update. + * infcall.c (find_function_addr, call_function_by_hand): Update. + * c-valprint.c: Include "target.h". + (print_function_pointer_address): Update. + +2003-10-22 Andrew Cagney <cagney@redhat.com> + + * target.c (target_close): New function. + (debug_to_close): Use "target_close". + (push_target): Use "target_close". + (unpush_target): Use "target_close". + (pop_target): Use "target_close". + * target.h (struct target_ops): Add "to_xclose". + (target_open): Delete macro. Move comment to "to_open". + (target_close): Replace macro with function that takes a target. + * top.c (quit_target): Pass "current_target" to "target_close". + +2003-10-21 Elena Zannoni <ezannoni@redhat.com> + + * minsyms.c (lookup_minimal_symbol_text): Remove unused parameter. + Remove SOFUN_ADDRESS_MAYBE_MISSING ifdeffed code. + * symtab.h (lookup_minimal_symbol_text): Update. + * breakpoint.c (create_overlay_event_breakpoint, + create_longjmp_breakpoint): Update callers. + * ppc-linux-tdep.c (ppc_linux_skip_trampoline_code): Update caller. + * symtab.c (find_pc_sect_line): Ditto. + +2003-10-21 Andrew Cagney <cagney@redhat.com> + + * target.c (errno): Delete extern declaration. + +2003-10-20 Jeff Johnston <jjohnstn@redhat.com> + + * ia64-tdep.c: Change all occurrences of + DEPRECATED_REGISTER_RAW_SIZE to use register_size() instead. + (ia64_frame_prev_register): Minor whitespace change. + +2003-10-20 Michael Chastain <mec@shout.net> + + * config/djgpp/fnchange.lst: Add lines for: + sim/testsuite/sim/frv/interrupts/Ipipe-fr400.cgs, + sim/testsuite/sim/frv/interrupts/Ipipe-fr500.cgs, + sim/testsuite/sim/frv/interrupts/badalign-fr550.cgs, + sim/testsuite/sim/frv/interrupts/compound-fr550.cgs, + sim/testsuite/sim/frv/interrupts/data_store_error-fr550.cgs, + sim/testsuite/sim/frv/interrupts/fp_exception-fr550.cgs, + sim/testsuite/sim/frv/interrupts/insn_access_error-fr550.cgs. + +2003-10-20 Andrew Cagney <cagney@redhat.com> + + * values.c (register_value_being_returned): Update comments. Use + "gdbarch_return_value" when available. + (using_struct_return): Ditto. + (set_return_value): Ditto. Use "gdbarch_return_value" when + available.. Print a warning, and not an error, when an unhandled + return type is encountered. + * infcmd.c: Include "gdb_assert.h". + (print_return_value): When gdbarch_return_value_p, and using + struct return, assume that the value is not available. + * defs.h (return_value_convention): Define. + * gdbarch.sh (gdbarch_return_value): New predicate method. + * gdbarch.h, gdbarch.c: Re-generate + * ppc-sysv-tdep.c (return_value_convention): Delete definition. + +2003-10-20 Andrew Cagney <cagney@redhat.com> + + * symtab.c: Replace "struct sec" with "struct bfd_section". + * objfiles.c, linespec.c, blockframe.c, block.c: Ditto. + +2003-10-19 Michael Chastain <mec@shout.net> + + * config/djgpp/fnchange.lst: Add lines for: + gdb/amd64nbsd-nat.c, gdb/amd64nbsd-tdep.c, + gdb/i386fbsd-nat.c, gdb/i386fbsd-tdep.c, + gdb/sparc64fbsd-nat.c, gdb/sparc64bsd-tdep.c. + +2003-10-19 Mark Kettenis <kettenis@gnu.org> + + * amd64fbsd-nat.c (fetch_inferior_registers, + store_inferior_registers): Remove functions. + * config/i386/fbsd64.mh (NATDEPFILES): Add amd64bsd-nat.o. + +2003-10-18 Mark Kettenis <kettenis@gnu.org> + + Add NetBSD/amd64 native configuration: + * x86-64-tdep.h (amd64nbsd_r_reg_offset): Add extern declarations. + * amd64nbsd-tdep.c: New file. + * amd64nbsd-nat.c: New file. + * amd64bsd-nat.c: New file. + * config/i386/nbsd64.mh: New file. + * config/i386/nbsd64.mt: New file. + * configure.host: Add x86_64-*-netbsd*. + * configure.tgt: Add x86_64-*-netbsd*. + * Makefile.in (amd64bsd-nat.o, amd64nbsd-nat.o, amd64nbsd-tdep.o): + New targets. + * NEWS (New native configurations): Mention NetBSD/amd64. + +2003-10-17 Michael Chastain <mec@shout.net> + + * config/djgpp/fnchange.lst: Remove dead lines for: + bfd/elf32-i386qnx.c, bfd/elf32-ppcqnx.c, bfd/elf32-shqnx.c, + bfd/elf32-sh-lin.c, bfd/elf32-sh-nbsd.c, bfd/elf32-sh64-nbsd.c, + bfd/elf64-alpha-fbsd.c, bfd/elf64-sh64-nbsd.c, + gdb/alphanbsd-nat.c, gdb/config/i386/tm-i386mk.h, + gdb/config/i386/tm-i386v42mp.h, gdb/config/i386/xm-i386mach.h, + gdb/config/i386/xm-i386mk.h, gdb/config/i386/xm-i386v32.h, + gdb/config/m68k/apollo68v.mh, gdb/config/m68k/nm-apollo68v.h, + gdb/config/m68k/xm-apollo68v.h, gdb/config/m88k/tm-delta88v4.h, + gdb/config/mips/tm-bigmips64.h, gdb/config/mips/tm-embed64.h, + gdb/config/mips/tm-embedl.h, gdb/config/mips/tm-embedl64.h, + gdb/config/mips/tm-vr4300el.h, gdb/config/mips/tm-vr4xxxel.h, + gdb/config/mips/tm-vr5000el.h, gdb/config/sparc/tm-sparclet.h, + gdb/config/sparc/tm-sparclite.h, + gdb/gdbtk/generic/ChangeLog-2001, + gdb/gdbtk/library/ChangeLog-2001, gdb/remote-adapt.c, + gdb/remote-eb.c, gdb/remote-mm.c, gdb/remote-nrom.c, + gdb/remote-udi.c, gdb/remote-vx29k.c, gdb/remote-vx960.c, + gdb/sparclet-rom.c, gdb/sparclet-stub.c, + gdb/testsuite/gdb.mi/mi0-var-block.exp, + gdb/testsuite/gdb.mi/mi0-var-child.exp, + gdb/testsuite/gdb.mi/mi0-var-cmd.exp, + gdb/testsuite/gdb.mi/mi0-var-display.exp, + itcl/iwidgets3.0.0/demos/extfileselectionbox, + itcl/iwidgets3.0.0/demos/extfileselectiondialog, + itcl/iwidgets3.0.0/demos/fileselectionbox, + itcl/iwidgets3.0.0/demos/fileselectiondialog, + itcl/iwidgets3.0.0/demos/html/buttonbox.n.html, + itcl/iwidgets3.0.0/demos/html/canvasprintbox.n.html, + itcl/iwidgets3.0.0/demos/html/canvasprintdialog.n.html, + itcl/iwidgets3.0.0/demos/html/combobox.n.html, + itcl/iwidgets3.0.0/demos/html/dialog.n.html, + itcl/iwidgets3.0.0/demos/html/dialogshell.n.html, + itcl/iwidgets3.0.0/demos/html/entryfield.n.html, + itcl/iwidgets3.0.0/demos/html/feedback.n.html, + itcl/iwidgets3.0.0/demos/html/fileselectionbox.n.html, + itcl/iwidgets3.0.0/demos/html/fileselectiondialog.n.html, + itcl/iwidgets3.0.0/demos/html/hyperhelp.n.html, + itcl/iwidgets3.0.0/demos/html/iwidgets2.2.0UserCmds.html, + itcl/iwidgets3.0.0/demos/html/labeledwidget.n.html, + itcl/iwidgets3.0.0/demos/html/menubar.n.html, + itcl/iwidgets3.0.0/demos/html/messagedialog.n.html, + itcl/iwidgets3.0.0/demos/html/notebook.n.html, + itcl/iwidgets3.0.0/demos/html/optionmenu.n.html, + itcl/iwidgets3.0.0/demos/html/panedwindow.n.html, + itcl/iwidgets3.0.0/demos/html/promptdialog.n.html, + itcl/iwidgets3.0.0/demos/html/pushbutton.n.html, + itcl/iwidgets3.0.0/demos/html/radiobox.n.html, + itcl/iwidgets3.0.0/demos/html/scrolledcanvas.n.html, + itcl/iwidgets3.0.0/demos/html/scrolledframe.n.html, + itcl/iwidgets3.0.0/demos/html/scrolledhtml.n.html, + itcl/iwidgets3.0.0/demos/html/scrolledlistbox.n.html, + itcl/iwidgets3.0.0/demos/html/scrolledtext.n.html, + itcl/iwidgets3.0.0/demos/html/selectionbox.n.html, + itcl/iwidgets3.0.0/demos/html/selectiondialog.n.html, + itcl/iwidgets3.0.0/demos/html/shell.n.html, + itcl/iwidgets3.0.0/demos/html/spindate.n.html, + itcl/iwidgets3.0.0/demos/html/spinint.n.html, + itcl/iwidgets3.0.0/demos/html/spinner.n.html, + itcl/iwidgets3.0.0/demos/html/spintime.n.html, + itcl/iwidgets3.0.0/demos/html/tabnotebook.n.html, + itcl/iwidgets3.0.0/demos/html/tabset.n.html, + itcl/iwidgets3.0.0/demos/html/toolbar.n.html, + itcl/iwidgets3.0.0/demos/scrolledcanvas, + itcl/iwidgets3.0.0/demos/scrolledframe, + itcl/iwidgets3.0.0/demos/scrolledhtml, + itcl/iwidgets3.0.0/demos/scrolledlistbox, + itcl/iwidgets3.0.0/demos/scrolledtext, + itcl/iwidgets3.0.0/demos/selectionbox, + itcl/iwidgets3.0.0/demos/selectiondialog, + itcl/iwidgets3.0.0/doc/canvasprintbox.n, + itcl/iwidgets3.0.0/doc/canvasprintdialog.n, + itcl/iwidgets3.0.0/doc/extfileselectionbox.n, + itcl/iwidgets3.0.0/doc/extfileselectiondialog.n, + itcl/iwidgets3.0.0/doc/fileselectionbox.n, + itcl/iwidgets3.0.0/doc/fileselectiondialog.n, + itcl/iwidgets3.0.0/doc/scopedobject.n.backup, + itcl/iwidgets3.0.0/doc/scrolledcanvas.n, + itcl/iwidgets3.0.0/doc/scrolledframe.n, + itcl/iwidgets3.0.0/doc/scrolledhtml.n, + itcl/iwidgets3.0.0/doc/scrolledlistbox.n, + itcl/iwidgets3.0.0/doc/scrolledtext.n, + itcl/iwidgets3.0.0/doc/selectionbox.n, + itcl/iwidgets3.0.0/doc/selectiondialog.n, + itcl/iwidgets3.0.0/generic/canvasprintbox.itk, + itcl/iwidgets3.0.0/generic/canvasprintdialog.itk, + itcl/iwidgets3.0.0/generic/extfileselectionbox.itk, + itcl/iwidgets3.0.0/generic/extfileselectiondialog.itk, + itcl/iwidgets3.0.0/generic/fileselectionbox.itk, + itcl/iwidgets3.0.0/generic/fileselectiondialog.itk, + itcl/iwidgets3.0.0/generic/scrolledcanvas.itk, + itcl/iwidgets3.0.0/generic/scrolledframe.itk, + itcl/iwidgets3.0.0/generic/scrolledhtml.itk, + itcl/iwidgets3.0.0/generic/scrolledlistbox.itk, + itcl/iwidgets3.0.0/generic/scrolledtext.itk, + itcl/iwidgets3.0.0/generic/scrolledwidget.itk, + itcl/iwidgets3.0.0/generic/selectionbox.itk, + itcl/iwidgets3.0.0/generic/selectiondialog.itk, + itcl/iwidgets3.0.0/tests/canvasprintbox.test, + itcl/iwidgets3.0.0/tests/canvasprintdialog.test, + itcl/iwidgets3.0.0/tests/extfileselectionbox.test, + itcl/iwidgets3.0.0/tests/extfileselectiondialog.test, + itcl/iwidgets3.0.0/tests/fileselectionbox.test, + itcl/iwidgets3.0.0/tests/fileselectiondialog.test, + itcl/iwidgets3.0.0/tests/scrolledcanvas.test, + itcl/iwidgets3.0.0/tests/scrolledframe.test, + itcl/iwidgets3.0.0/tests/scrolledhtml.test, + itcl/iwidgets3.0.0/tests/scrolledlistbox.test, + itcl/iwidgets3.0.0/tests/scrolledtext.test, + itcl/iwidgets3.0.0/tests/selectionbox.test, + itcl/iwidgets3.0.0/tests/selectiondialog.test, + itcl/iwidgets3.0.0/unix/iwidgets.tcl.in, + itcl/iwidgets3.0.0/unix/pkgIndex.tcl.in, + tix/docs/Release-4.1.0.html, tix/docs/Release-4.1.0.txt, + tix/docs/Release-4.1a2.html, tix/docs/Release-4.1a2.txt, + tix/docs/Release-4.1a3.html, tix/docs/Release-4.1a3.txt, + tix/docs/Release-4.1b1.html, tix/docs/Release-4.1b1.txt, + tix/docs/Release-4.1b2.html, tix/docs/Release-4.1b2.txt, + tix/tixConfig.sh.in, tix/unix/tk4.2/pkgIndex.tcl.in, + tix/unix/tk8.0/pkgIndex.tcl.in, tix/unix/tk8.0/pkgIndex.tcl.in, + tix/unix/tk8.1/pkgIndex.tcl.in, tix/win/tkConsole41.c, + tix/win/tkConsole42.c, tix/win/tkConsole80a1.c, + tix/win/tkConsole80b1.c, tix/win/tkConsole81.c, tk/doc/tk4.0.ps, + tk/mac/tkMacProjects.sit.hqx. + +2003-10-17 Andrew Cagney <cagney@redhat.com> + + * target.c (target_section_by_addr): New function. + (do_xfer_memory): Use "target_section_by_addr". + * target.h (target_section_by_addr): Declare. + + * target.h (struct target_ops): Add "to_read_partial" and + "to_write_partial", delete "to_query". + (target_read_partial, target_write_partial): Declare. + (target_read, target_write): Declare. + (target_query): Delete macro. + * target.c (target_read_partial): New function. + (target_write_partial, target_read, target_write): New function. + (update_current_target): Delete inheritance of "to_query". Add + comments about "to_read_partial" and "to_write_partial". + (debug_to_partial_read, debug_to_partial_write): New functions. + (debug_to_query): Delete function. + (setup_target_debug): Set "to_read_partial" and "to_write_partial" + instead of "to_query". + * remote.c (remote_read_partial): Replace "remote_query". + (init_remote_ops): Set "to_read_partial" instead of "to_query". + (init_remote_async_ops): Ditto. + * kod.c (gdb_kod_query): Make "bufsize" a LONGEST. Use + "target_read_partial" instead of "target_query". + * avr-tdep.c (avr_io_reg_read_command): Make "bufsize" a LONGEST. + Use "target_read_partial" instead of "target_query". + +2003-10-17 Jeff Johnston <jjohnstn@redhat.com> + + * frame.h (struct frame_id): Add new field: special_addr. + (frame_id_build_special): New prototype. + * frame.c (frame_id_build_special): New function. + (frame_id_build): Change to call frame_id_build_special(). + (frame_id_eq): Change to also test special_addr field. + (frame_id_inner): Update comment. + +2003-10-17 Andrew Cagney <cagney@redhat.com> + + * target.c (update_current_target): Perform the target cleanup. + Put the target stack beneath the squashed "current_target". + (add_target): Delete disabled call to "cleanup_target". + (cleanup_target): Delete function. + (push_target, unpush_target): Do not call "cleanup_target". + +2003-10-17 Andrew Cagney <cagney@redhat.com> + + * target.c (target_stack): Change to a static target_ops. + (update_current_target): Walk the "struct target_ops" stack. + (pop_target, do_xfer_memory, target_info): Ditto. + (find_target_beneath): Ditto. + (push_target): Rewrite to use the "struct target_ops" stack. + (unpush_target): Ditto. + * target.h (struct target_stack_item): Delete definition. + (target_stack): Delete declaration. + (struct target_ops): Add field "beneath". + +2003-10-17 Shrinivas Atre <shrinivasa@KPITCummins.com> + + * gdb/config/h8300/tm-h8300.h (h8300_normal_mode): Add external + declaration. + * gdb/h8300-tdep.c (BINWORD): Update BINWORD for h8300_normal_mode + (h8300_examine_prologue): Use h8300_normal_mode flag + (h8300_gdbarch_init): Set architecture info for normal mode + +2003-10-16 Daniel Jacobowitz <drow@mvista.com> + + * remote.c (remote_protocol_vcont): New variable. + (set_remote_protocol_vcont_packet_cmd): New function. + (show_remote_protocol_vcont_packet_cmd): New function. + (init_all_packet_configs): Handle remote_protocol_vcont. + (remote_vcont_probe): New function. + (remote_vcont_resume): New function. + (remote_resume): Use it. + (remote_async_resume): Call remote_resume. + (_initialize_remote): Add verbose-resume packet commands. + +2003-10-16 Andrew Cagney <cagney@redhat.com> + + * infrun.c (handle_inferior_event): Add comment about + "frame_id_inner" being too weak. + +2003-10-16 Elena Zannoni <ezannoni@redhat.com> + + * minsyms.c (lookup_minimal_symbol_solib_trampoline): Remove + second parameter, which is always null. Remove + SOFUN_ADDRESS_MAYBE_MISSING ifdeffed code. + * symtab.h (lookup_minimal_symbol_solib_trampoline): Update + accordingly. + * somsolib.c (som_solib_create_inferior_hook, + som_solib_desire_dynamic_linker_symbols): Update callers. + * hppa-tdep.c (hppa_fix_call_dummy): Ditto. + +2003-10-16 Kei Sakamoto <sakamoto.kei@renesas.com> + + * remote-m32r-sdi.c : New file, interface to m32r on-chip + debug interface, SDI (Scalable Debug Interface). + * NEWS: Mention m32r SDI protocol was supported. + * Makefile.in (remote-m32r-sdi.o): Add build rule. + * config/m32r/m32r.mt (TDEPFILES) : Add remote-m32r-sdi.o. + +2003-10-15 Jeff Johnston <jjohnstn@redhat.com> + + * ia64-linux-tdep.c: Include gdbcore.h. + (IA64_LINUX_SIGCONTEXT_OFFSET): Magic constant removed. + (ia64_linux_sigcontext_register_addr): Find the address of the + sigcontext area stored in the sigframe instead of using + a magic offset constant. + +2003-10-15 Andrew Cagney <cagney@redhat.com> + + * remote.c (remote_search): Delete function. + * target.h (target_search): Delete disabled macro. + (struct target_ops): Delete disabled field "to_search". + +2003-10-14 Kevin Buettner <kevinb@redhat.com> + + * frv-tdep.c (frv_frame_this_id): Call inside_entry_func() + instead of deprecated_inside_entry_file(). + +2003-10-14 Corinna Vinschen <vinschen@redhat.com> + + * sh-tdep.c: Fix copy/paste hangover in comment. + (sh_push_dummy_call_fpu): Accomodate double passing in little endian + mode. + (sh3e_sh4_extract_return_value): Ditto. + +2003-10-13 Richard Henderson <rth@redhat.com> + + * f-typeprint.c (f_type_print_base): Handle TYPE_CODE_REF. + * f-valprint.c (f_val_print): Likewise. Tweak TYPE_CODE_PTR to + match c_val_print a bit closer. + +2003-10-13 Kevin Buettner <kevinb@redhat.com> + + * frv-tdep.c (max_instrs_per_bundle, frv_instr_size): New constants. + (frv_gdbarch_adjust_breakpoint_address): New function. + (frv_gdbarch_init): Initialize ``gdbarch_adjust_breakpoint_address'' + method. + +2003-10-13 Kevin Buettner <kevinb@redhat.com> + + * breakpoint.h (struct breakpoint): Add new member + ``requested_address''. + * breakpoint.c (breakpoint_adjustment_warning) + (adjust_breakpoint_address): New static functions. + (print_it_typical): Issue warning if breakpoint's address is different + from its requested address. + (set_raw_breakpoint, set_longjmp_resume_breakpoint, watch_command_1) + (breakpoint_re_set_one): Set breakpoint's + ``requested_address'' field. Set ``address'' field to the + result of calling adjust_breakpoint_address() on the requested + address. + +2003-10-13 Kevin Buettner <kevinb@redhat.com> + + * gdbarch.sh (ADJUST_BREAKPOINT_ADDRESS): New method. + * gdbarch.h, gdbarch.c: Regenerate. + +2003-10-11 Mark Kettenis <kettenis@gnu.org> + + * i386bsd-tdep.c (i386bsd_init_abi): Use ARRAY_SIZE to initialize + TDEP->sc_num_regs. + + * i386fbsd-tdep.c: New file. + (i386fbsd_sigtramp_start, i386fbsd_sigtramp_end, + i386fbsd_sc_reg_offset, i386fbsdaout_init_abi, i386fbsd_init_abi, + i386fbsd4_sc_reg_offset, i386fbsd4_init_abi): Move here from + i386bsd-tdep.c. + (_initialize_i386fbsd_tdep): New function. + (i386fbsd_r_reg_offset, i386fbsd4_r_reg_offset): New varibles. + (i386fbsdaout_init_abi): Initialize TDEP->gregset_reg_offset, + TDEP->gregset_num_regs, TDEP->sizeof_gregset and + TDEP->sizeof_fpregset. Use ARRAY_SIZE to initialize + TDEP->sc_num_regs. + (i386fbsd4_init_abi): Initialize TDEP->gregset_reg_offset, + TDEP->gregset_num_regs and TDEP->sizeof_gregset. Use ARRAY_SIZE + to initialize TDEP->sc_num_regs. + * i386bsd-tdep.c (i386fbsd_sigtramp_start, i386fbsd_sigtramp_end, + i386fbsd_sc_reg_offset, i386fbsdaout_init_abi, i386fbsd_init_abi, + i386fbsd4_sc_reg_offset, i386fbsd4_init_abi): Remove. + (_initialize_i386bsd_tdep): Don't register FreeBSD a.out and + FreeBSD ELF OS/ABI's here. + * Makefile.in (ALLDEPFILES): Add i386fbsd-tdep.c. + (i386fbsd-tdep.o): New target. + * config/i386/fbsd.mt (TDEPFILES): Add i386fbsd-tdep.o. + * config/i386/fbsd64.mt (TDEPFILES): Add i386fbsd-tdep.o. + + * amd64fbsd-tdep.c (amd64fbsd_r_reg_offset): New variable. + (amd64fbsd_init_abi): Set TDEP->gregset_reg_offset, + TDEP->gregset_num_regs and TDEP->sizeof_gregset. Use ARRAY_SIZE + in initialization of TDEP->sc_num_regs. + + * x86-64-tdep.c (x86_64_regset_from_core_section): New function. + (x86_64_init_abi): Initialize regset_from_core_section if + appropriate. + + * i386-tdep.c (i386_regset_from_core_section): New function. + (i386_gdbarch_init): Initialize regset_from_core_section if + appropriate. + * i386-tdep.h (i386_regset_from_core_section): New declaration. + + * i386-tdep.h (struct regset): Declare opaque. + + * gdbarch.sh (regset_from_core_section): New method. + (struct regset): Declare opaque. + * gdbarch.c, gdbarch.h: Regenerated. + +2003-10-11 Alan Modra <amodra@bigpond.net.au> + + * hppa-tdep.c (hppa_in_solib_call_trampoline): Don't refer directly to + _cooked_size and vma; Use bfd_section_size and bfd_get_section_vma. + Correct test for pc within section. + +2003-10-11 Mark Kettenis <kettenis@gnu.org> + + * gdbarch.sh: Remove trailing whitepsace from comments. + +2003-10-08 Roland McGrath <roland@redhat.com> + + * gcore.c (make_mem_sec): Function removed, folded into ... + (gcore_create_callback): ... here. To omit a section, clear its + SEC_LOAD bit rather than zeroing its size. + Omit read-only sections only if they correspond to a known disk file. + (gcore_copy_callback): Ignore sections without SEC_LOAD flag set. + +2003-10-10 Michael Snyder <msnyder@redhat.com> + + * d10v-tdep.c: Fix typo in comment. + +2003-10-10 Andrew Cagney <cagney@redhat.com> + + * rs6000-tdep.c (e500_store_return_value): Delete function. + (e500_extract_return_value): Delete function. + (rs6000_gdbarch_init): When SYSV, set "extract_return_value" and + "restore_return_value" to "ppc_sysv_abi_extract_return_value" and + "ppc_sysv_abi_restore_return_value" where applicable. + * ppc-tdep.h: (ppc_sysv_abi_store_return_value): Declare. + (ppc_sysv_abi_extract_return_value): Declare. + (ppc_sysv_abi_broken_store_return_value): Declare. + (ppc_sysv_abi_broken_extract_return_value): Declare. + (ppc_sysv_abi_broken_use_struct_convention:) Delete declaration. + * ppc-sysv-tdep.c (return_value_convention): Move definition to + start of file. + (do_ppc_sysv_return_value): New function. + (ppc_sysv_abi_extract_return_value): New function. + (ppc_sysv_abi_store_return_value): New function. + (ppc_sysv_abi_broken_extract_return_value): New function. + (ppc_sysv_abi_broken_store_return_value): New function. + (ppc_sysv_abi_use_struct_convention): Call + do_ppc_sysv_return_value. + +2003-10-10 J. Brobecker <brobecker@gnat.com> + + * blockframe.c (inside_main_func): No longer use symbol_lookup() + to lookup the main function symbol. + +2003-10-10 Corinna Vinschen <vinschen@redhat.com> + + * sh-tdep.c (sh_treat_as_flt_p): New function to recognize float + types correctly. + (sh_push_dummy_call_fpu): Fix argument passing rules. + (sh3e_sh4_extract_return_value): Call sh_treat_as_flt_p to recognize + float types. + (sh3e_sh4_store_return_value): Ditto. + +2003-10-10 Elena Zannoni <ezannoni@redhat.com> + + * sh-tdep.c (sh_use_struct_convention): Clarify one case in + comment. + +2003-10-10 Corinna Vinschen <vinschen@redhat.com> + + * sh-tdep.c (sh_use_struct_convention): Clean up to have a + more readable code. Accomodate passing of bitfields. + +2003-10-10 Andrew Cagney <cagney@redhat.com> + + * Makefile.in (ppc-sysv-tdep.o): Add $(gdb_assert_h). + * rs6000-tdep.c (rs6000_gdbarch_init): When 64 bit SysV ABI, set + push_dummy_call to ppc64_sysv_abi_push_dummy_call. + * ppc-sysv-tdep.c: Include "gdb_assert.h". + (ppc64_sysv_abi_push_dummy_call): New function. + (ppc64_sysv_abi_broken_push_dummy_call): New function. + * ppc-tdep.h (ppc64_sysv_abi_push_dummy_call): Declare. + (ppc64_sysv_abi_broken_push_dummy_call): Declare. + +2003-10-10 Kei Sakamoto <sakamoto.kei@renesas.com> + + * NEWS: Replace "Hitachi" and "Mitsubishi" with "Renesas". + * README: Ditto. + * d10v-tdep.c: Ditto. + * h8300-tdep.c: Ditto. + * remote-e7000.c: Ditto. + * remote-hms.c: Ditto. + * ser-e7kpc.c: Ditto. + * sh-stub.c: Ditto. + * sh-tdep.c: Ditto. + * sh-tdep.h: Ditto. + * sh3-rom.c: Ditto. + * sh64-tdep.c: Ditto. + * top.c: Ditto. + * wince.c: Ditto. + * config/d10v/d10v.mt: Ditto. + * config/sh/embed.mt: Ditto. + * config/sh/linux.mt: Ditto. + * config/sh/tm-linux.h: Ditto. + * config/sh/tm-sh.h: Ditto. + * config/sh/wince.mt: Ditto. + +2003-10-09 Andrew Cagney <cagney@redhat.com> + + * ppc-tdep.h (struct type): Declare opaque. + * x86-64-tdep.h (struct regcache): Declare opaque. + * sh-tdep.c (sh_do_fp_register): Delete "register" attribute, fix + coding style. + +2003-10-09 Andrew Cagney <cagney@redhat.com> + + Changes from 2003-09-09 Jimi Xenidis <jimix@watson.ibm.com>: + * config/rs6000/tm-rs6000.h (SOFTWARE_SINGLE_STEP): Delete macro. + (SOFTWARE_SINGLE_STEP_P): Ditto. + * config/powerpc/tm-ppc-eabi.h (SOFTWARE_SINGLE_STEP_P): Ditto. + * config/powerpc/tm-linux.h (SOFTWARE_SINGLE_STEP): Ditto. + (SOFTWARE_SINGLE_STEP_P): Ditto. + * rs6000-tdep.c (rs6000_gdbarch_init): When AIX, set + software_single_step to rs6000_software_single_step. + +2003-10-09 Andrew Cagney <cagney@redhat.com> + + * MAINTAINERS: Mark m32r-elf as buildable with -Werror. + +2003-10-09 Michael Snyder <msnyder@redhat.com> + + * frame.h: Fix typo in comment. + * dummy-frame.c: Fix typo in comment. + * d10v-tdep.c: Random whitespace/comment tweaks. + +2003-10-09 Elena Zannoni <ezannoni@redhat.com> + + * sh-tdep.c (sh_gdbarch_init): Delete setting of push_dummy_code. + (sh_push_dummy_code): Delete function, it's only used for dummy calls + on stack. + + Based on input by Stephen Clarke (stephen.clarke@superh.com): + * sh-tdep.c (sh_use_struct_convention): Add comment explaining ABI + in detail. + +2003-10-09 Daniel Jacobowitz <drow@mvista.com> + + * remote-mips.c (mips_initialize): Remove unneeded call to + get_selected_frame. Suggested by Atsushi Nemoto <anemo@mba.ocn.ne.jp>. + +2003-10-09 Daniel Jacobowitz <drow@mvista.com> + + * dwarf2expr.c (execute_stack_op): Don't treat the frame base as + a memory pointer. + +2003-10-08 Jeff Johnston <jjohnstn@redhat.com> + + * lin-lwp.c (stop_and_resume_callback): Set the resumed flag + for any lwp we resume. + (running_callback): Add lwps that have pending status events + against them to be considered running. + +2003-10-08 Kei Sakamoto <sakamoto.kei@renesas.com> + + * m32r-tdep.c : Include "dis-asm.h". + * Makefile.in (m32r-tdep.o): Update dependencies. + +2003-10-06 J. Brobecker <brobecker@gnat.com> + + * completer.h (get_gdb_completer_word_break_characters): Delete. + * completer.c: include language.h. + (gdb_completer_word_break_characters): Delete. + (get_gdb_completer_word_break_characters): Delete. + (location_completer): Use the word break characters of the current + language. + (complete_line): Likewise. + (line_completion_function): Likewise. + (skip_quoted_chars): Likewise. + * Makefile.in (completer.o): Add dependency on language.h. + * top.c (init_main): Set the readline word break characters + to GDB's default word break characters. + +2003-10-06 J. Brobecker <brobecker@gnat.com> + + * language.h (language_defn): new field, la_word_break_characters. + * language.c (unknown_language_defn): Set new field to + default_word_break_characters. + (auto_language_defn): Likewise. + (local_language_defn): Likewise. + * ada-lang.c (ada_language_defn): Likewise. + * c-lang.c (c_language_defn): Likewise. + (cplus_language_defn): Likewise. + (asm_language_defn): Likewise. + (minimal_language_defn): Likewise. + * f-lang.c (f_language_defn): Likewise. + * jv-lang.c (java_language_defn): Likewise. + * m2-lang.c (m2_language_defn): Likewise. + * objc-lang.c (objc_language_defn): Likewise. + * p-lang.c (pascal_language_defn): Likewise. + * scm-lang.c (scm_language_defn): Likewise. + +2003-10-06 Andrew Cagney <cagney@redhat.com> + + * ppc-sysv-tdep.c: Re-indent. + +2003-10-06 J. Brobecker <brobecker@gnat.com> + + * language.h (default_word_break_characters): Add prototype. + * language.c (default_word_break_characters): New function. + +2003-10-06 Andreas Schwab <schwab@suse.de> + + * i386-tdep.c (i386_analyze_frame_setup): Also handle xorl/subl + with %eax. + +2003-10-06 Andrew Cagney <cagney@redhat.com> + + * Makefile.in (ALLDEPFILES): Remove "z8k-tdep.c" and + "h8500-tdep.c". + (z8k-tdep.o): Delete custom build rule. + +2003-10-06 Andrew Cagney <cagney@redhat.com> + + * Makefile.in: Update all dependencies. + + * MAINTAINERS: Mention that h8500, mn10200, and z8k were deleted. + No longer list PA as as obsolete candidate. List m32r as + broken instead of obsolete. + + * config/nm-m3.h, config/h8500/h8500.mt: Delete obsolete files. + * config/h8500/tm-h8500.h, config/i386/nm-ptx4.h: Ditto. + * config/i386/nm-symmetry.h, config/i386/ptx.mh: Ditto. + * config/i386/ptx.mt, config/i386/ptx4.mh: Ditto. + * config/i386/ptx4.mt, config/i386/symmetry.mh: Ditto. + * config/i386/symmetry.mt, config/i386/tm-ptx.h: Ditto. + * config/i386/tm-ptx4.h, config/i386/tm-symmetry.h: Ditto. + * config/i386/xm-ptx.h, config/i386/xm-ptx4.h: Ditto. + * config/i386/xm-symmetry.h, config/mips/mipsm3.mh: Ditto. + * config/mips/mipsm3.mt, config/mips/tm-mipsm3.h: Ditto. + * config/mips/xm-mipsm3.h, config/mn10200/mn10200.mt: Ditto. + * config/mn10200/tm-mn10200.h, config/pa/hppabsd.mh: Ditto. + * config/pa/hppabsd.mt, config/pa/hppaosf.mh: Ditto. + * config/pa/hppaosf.mt, config/pa/hppapro.mt: Ditto. + * config/pa/nm-hppab.h, config/pa/nm-hppao.h: Ditto. + * config/pa/tm-hppab.h, config/pa/tm-hppao.h: Ditto. + * config/pa/tm-pro.h, config/pa/xm-hppab.h: Ditto. + * config/pa/xm-pa.h, config/sparc/sparclet.mt: Ditto. + * config/sparc/sparclite.mt, config/sparc/tm-sparclet.h: Ditto. + * config/sparc/tm-sparclite.h, config/z8k/tm-z8k.h: Ditto. + * config/z8k/z8k.mt: Ditto. + + * NEWS: Mention that z8k-zilog-none, z8ksim, mn10200-*-*, + h8500hms, hppa*-*-bsd*, hppa*-*-osf*, hppa*-*-pro*, + mips*-*-mach3*, i[3456]86-sequent-sysv4*, i[3456]86-sequent-sysv*, + i[3456]86-sequent-bsd*, sparclet-*-*, sparclite-fujitsu-none, and + sparclite were removed. + * configure.host, configure.tgt: Remove corresponding tuples. + + * breakpoint.c, breakpoint.h: Remove obsolete code. + * buildsym.c, dbxread.c, gdbtypes.c, mdebugread.c: Ditto. + * monitor.c, sparc-tdep.c, stabsread.c: Ditto. + * stabsread.h, xcoffread.c: Ditto. + + * z8k-tdep.c, symm-tdep.c, symm-nat.c: Delete obsolete file. + * sparclet-stub.c, sparclet-rom.c: Delete obsolete file. + * sparcl-tdep.c, sparcl-stub.c, h8500-tdep.c: Delete obsolete file. + * m3-nat.c, mipsm3-nat.c, mn10200-tdep.c: Delete obsolete file. + +2003-10-06 David Lecomber <dsl@sources.redhat.com> + + * f-valprint.c: Reformatting + +2003-10-06 Mark Kettenis <kettenis@gnu.org> + + * x86-64-tdep.c: Remove duplicate comment. + + * x86-64-tdep.c (x86_64_store_return_value): Don't use + DEPRECATED_REGISTER_RAW_SIZE. Use symbolic names for register + names for return values. This fixes a bug since we looked at %rbx + instead of %rdx. + +2003-10-05 Mark Kettenis <kettenis@gnu.org> + + * x86-64-tdep.c: Include "regset.h". + + * i386-tdep.h (struct gdbarch_tdep): Add members gregset, + gregset_reg_offset, gregset_num_regs, sizeof_gregset, fpregset, + sizeof_fpregset. + * i386-tdep.c: Include "regset.h". + (i386_supply_gregset): New function. + (i386_supply_fpregset): New function. + (i386_gdbarch_init): Initialze register set-related members of + TDEP. + * x86-64-tdep.c (x86_64_supply_fpregset): New function. + (x86_64_init_abi): Initialize TDEP->sizeof_fpregset. + +2003-10-03 Andrew Cagney <cagney@redhat.com> + + * rs6000-tdep.c (rs6000_gdbarch_init): When the 64 bit SysV ABI, + set extract_return_value, store_return_value and + use_struct_convention to ppc64_sysv_abi_extract_return_value, + ppc64_sysv_abi_store_return_value and + ppc64_sysv_abi_use_struct_convention. + * ppc-tdep.h (ppc64_sysv_abi_extract_return_value): Declare. + (ppc64_sysv_abi_store_return_value): Declare. + (ppc64_sysv_abi_use_struct_convention): Declare. + * ppc-sysv-tdep.c (enum return_value_convention): Define. + (ppc64_sysv_abi_extract_return_value): New function. + (ppc64_sysv_abi_store_return_value): New function. + (ppc64_sysv_abi_use_struct_convention): New function. + (ppc64_sysv_abi_return_value): New function. + +2003-10-03 Andrew Cagney <cagney@redhat.com> + + * ppc-linux-tdep.c (ppc64_linux_convert_from_func_ptr_addr): Only + convert a descriptor to a function when it's in the ".opd" + section. + +2003-10-03 Corinna Vinschen <vinschen@redhat.com> + + * sh-tdep.c (sh_push_dummy_call_fpu): Initialize flt_argreg and + reg_size to keep GCC silent. + +2003-10-03 Corinna Vinschen <vinschen@redhat.com> + + * dwarf2-frame.c (struct comp_unit): Add tbase member to store + base for DW_EH_PE_textrel encodings. + (read_encoded_value): Add a DW_EH_PE_textrel case. + (dwarf2_build_frame_info): Set unit.tbase to beginning of text + section. + +2003-10-03 Mark Kettenis <kettenis@gnu.org> + + * dwarf2-frame.c (dwarf2_build_frame_info): Fix comment. + +2003-10-02 Andrew Cagney <cagney@redhat.com> + + * gdbarch.sh (DEPRECATED_REGISTER_RAW_SIZE): Rename + REGISTER_RAW_SIZE. + * gdbarch.h, gdbarch.c: Re-generate. + * aix-thread.c, alpha-tdep.h, arm-tdep.c, core-sol2.c: Update. + * cris-tdep.c, dve3900-rom.c, findvar.c, frame.c: Update. + * hppa-tdep.c, hppab-nat.c, hppah-nat.c, hppam3-nat.c: Update. + * hpux-thread.c, i386gnu-nat.c, ia64-aix-nat.c: Update. + * ia64-linux-nat.c, ia64-tdep.c, infcmd.c, infptrace.c: Update. + * infrun.c, irix5-nat.c, lynx-nat.c, mips-linux-tdep.c: Update. + * mips-nat.c, mips-tdep.c, mipsv4-nat.c, mn10300-tdep.c: Update. + * monitor.c, ns32k-tdep.c, ppc-linux-nat.c, regcache.c: Update. + * remote-e7000.c, remote-mips.c, remote-sim.c: Update. + * remote-vxmips.c, remote-vxsparc.c, remote.c: Update. + * rom68k-rom.c, rs6000-nat.c, rs6000-tdep.c, s390-tdep.c: Update. + * sh64-tdep.c, sparc-nat.c, sparc-tdep.c, stack.c: Update. + * target.c, tracepoint.c, v850-tdep.c, v850ice.c, valops.c: Update. + * vax-tdep.c, vax-tdep.h, x86-64-tdep.c, xstormy16-tdep.c: Update. + * config/m68k/tm-delta68.h, config/m68k/tm-vx68.h: Update. + * config/sparc/tm-sparc.h, config/sparc/tm-sparclynx.h: Update. + +2003-10-02 Jim Blandy <jimb@redhat.com> + + * dwarf2read.c (struct die_info): Doc fix. + +2003-10-02 Corinna Vinschen <vinschen@redhat.com> + + * sh-tdep.c: Running thru gdb_indent.sh. + +2003-10-02 Corinna Vinschen <vinschen@redhat.com> + + * sh-tdep.c (sh_justify_value_in_reg): New function. + (sh_stack_allocsize): Ditto. + (flt_argreg_array): New array used for floating point argument + passing. + (sh_init_flt_argreg): New function. + (sh_next_flt_argreg): Ditto. + (sh_push_dummy_call_fpu): Simplify. Rename "odd_sized_struct" to + "pass_on_stack". Use new helper functions. Accomodate Renesas ABI. + Fix argument passing strategy. + (sh_push_dummy_call_nofpu): Ditto. + +2003-10-01 Andrew Cagney <cagney@redhat.com> + + * value.h (register_value_being_returned): Declare. Replace + "value_being_returned". + * infcall.c (call_function_by_hand): Use + register_value_being_returned. + * infcmd.c (print_return_value): Call + "register_value_being_returned", handle struct return locally. + * values.c (register_value_being_returned): New function. Replace + "value_being_returned". + +2003-09-30 Elena Zannoni <ezannoni@redhat.com> + + * linux-proc.c (linux_do_registers): New function. + (linux_make_note_section): Use linux_do_registers in case of + single threaded inferior programs. + +2003-10-01 Andrew Cagney <cagney@redhat.com> + + * infcall.c (call_function_by_hand): When STRUCT_RETURN, always + use STRUCT_ADDR. When not using "struct return convention", pass + "0" to "value_being_returned". Add FIXMEs. + * infcmd.c (print_return_value): Pass an explicit 0/1 to + value_being_returned. Add comments. + * values.c (value_being_returned): Add fixme. + * hppa-tdep.c (hppa_extract_struct_value_address): Add FIXME. + (hppa_value_returned_from_stack): Add FIXME. + +2003-09-30 David Carlton <carlton@kealia.com> + + * dwarf2read.c (struct die_info): Add 'parent' field; replace + 'has_children' and 'next' by 'child' and 'sibling'. + (read_comp_unit): Rework algorithm, breaking body into + read_die_and_children and read_die_and_siblings. + (read_die_and_children, read_die_and_siblings): New. + (read_full_die): Add 'has_children' argument; set it instead of + the die's 'has_children' field. Minor formatting cleanup. + (free_die_list): Use die->child and die->sibling instead of + die->next. + (dump_die_list): Ditto. + (sibling_die): Use die->sibling. + (psymtab_to_symtab_1): Use die's 'child' field in place of its + 'has_children' and 'next' fields. + (process_die, read_file_scope, read_func_scope) + (read_lexical_block_scope, read_structure_scope) + (read_enumeration, read_array_type, read_common_block) + (read_namespace, read_subroutine_type, dump_die): Ditto. + +2003-09-30 Andrew Cagney <cagney@redhat.com> + + * rs6000-tdep.c (rs6000_gdbarch_init): Set the PowerOpen red zone + to 224, not 220. + +2003-09-30 Andrew Cagney <cagney@redhat.com> + + * gdbarch.sh (DEPRECATED_REGISTER_VIRTUAL_SIZE): Rename + REGISTER_VIRTUAL_SIZE. + * gdbarch.h, gdbarch.c: Regenerate. + * vax-tdep.h, sparc-tdep.c, regcache.h: Update. + * regcache.c, mn10300-tdep.c, mips-tdep.c: Update. + * infcmd.c, frame.c, findvar.c, cris-tdep.c: Update. + +2003-09-29 Andrew Cagney <cagney@redhat.com> + + * gdbarch.sh (DEPRECATED_REGISTER_VIRTUAL_TYPE): Rename + REGISTER_VIRTUAL_TYPE. + * gdbarch.h, gdbarch.c: Regenerate. + * arch-utils.c, hppa-tdep.c, regcache.c, regcache.h: Update. + * sh64-tdep.c, sparc-tdep.c: Update. + + * remote-vxsparc.c (vx_read_register): Replace bzero with memset. + * remote-vxmips.c (vx_read_register): Ditto. + * remote-vx68.c (vx_read_register): Ditto. + * gnu-nat.c (inf_validate_procs): Ditto. + +2003-09-29 J. Brobecker <brobecker@gnat.com> + + * infcall.c (call_function_by_hand): Fix build failure + introduced in the previous change to this file. + +2003-09-29 Andrew Cagney <cagney@redhat.com> + + * NEWS: Mention Objective-C. + +2003-09-29 Jerome Guitton <guitton@act-europe.fr> + + * arm-tdep.c (arm_make_prologue_cache): Use trad_frame_addr_p to + test if the register has been saved on the stack. + (arm_scan_prologue_cache): When analysing the instruction + "str lr, [sp, #-4]", save the address where lr has been stored. + +2003-09-28 Andrew Cagney <cagney@redhat.com> + + * frame.c (frame_read_unsigned_register): Delete function. + * frame.h (frame_read_unsigned_register): Delete declaration. + * sparc-tdep.c (sparc_init_extra_frame_info): Use + get_frame_register_unsigned. + (sparc_frame_saved_pc, sparc_pop_frame): Ditto. + * m68hc11-tdep.c (m68hc11_print_register): Ditto. + * d10v-tdep.c (d10v_print_registers_info): Ditto. + + * frame.h (frame_read_register): Delete declaration. + * frame.c (frame_read_register): Delete function. + * arch-utils.c (legacy_register_to_value): Use get_frame_register. + * sparc-tdep.c (sparc_fetch_pointer_argument): Ditto. + * rs6000-tdep.c (rs6000_fetch_pointer_argument): Ditto. + * mips-tdep.c (mips_register_to_value): Ditto. + * hppa-tdep.c (hppa_fetch_pointer_argument): Ditto. + * d10v-tdep.c (d10v_print_registers_info): Ditto. + + * frame.c (frame_read_signed_register): Delete function. + (frame_read_unsigned_register): Update comments. + * frame.h (frame_read_signed_register): Delete declaration. + * h8300-tdep.c (h8300_print_register): Use + get_frame_register_signed. + * m68hc11-tdep.c (m68hc11_print_register): Ditto. + + * config/pa/tm-hppa.h (DEPRECATED_VALUE_RETURNED_FROM_STACK): + Rename VALUE_RETURNED_FROM_STACK. + * infcmd.c (print_return_value): Update. + * infcall.c (call_function_by_hand): Update. + +2003-09-28 Mark Kettenis <kettenis@gnu.org> + + * i387-tdep.c (i387_supply_fsave, i387_supply_fxsave): Add + regcache argument and reverse the order of the other two + arguments. Remove local regcache variable. Determine + architecture from REGCACHE. Update comments. + * x86-64-tdep.c (x86_64_supply_fxsave): Add regcache argument and + reverse the order of the other two arguments. Remove local + regcache variable. Determine architecture from REGCACHE. Update + comments. + * i387-tdep.h (i387_supply_fsave, i387_supply_fxsave): Adjust + prototypes. Update comments. + * x86-64-tdep.c (x86_64_supply_fxsave): Adjust prototype. Adjust + comment. + * amd64fbsd-nat.c (supply_fpregset, fetch_inferior_registers): + Update. + * go32-nat.c (fetch_register, go32_fetch_registers): Update. + * i386-interix-nat.c (supply_fpregset): Update. + * i386-linux-nat.c (supply_fpregset, supply_fpxregset): Update. + * i386-nto-tdep.c (i386nto_supply_fpregset): Update. + * i386gnu-nat.c (fetch_fpregs, supply_fpregset): Update. + * i386bsd-nat.c (supply_fpregset, fetch_inferior_registers): Update. + * i386nbsd-tdep.c (fetch_core_registers, fetch_elfcore_registers): + Update. + * i386obsd-tdep.c (fetch_core_registers): Update. + * i386v4-nat.c (supply_fpregset): Update. + * x86-64-linux-nat.c (supply_fpregset): Update. + * x86-64-linux-tdep.c (fetch_core_registers): Update. + +2003-09-27 Mark Kettenis <kettenis@gnu.org> + + * i386-tdep.h: Put opaque declarations in alphabetical + order. Remove spurious whitespace. + (struct gdbarch_tdep): add st0_regnum and mm0_regnum members. + (i386_sse_regnum_p, i386_mxcsr_regnum_p): Remove prototypes. + * i386-tdep.c (MM0_REGNUM): Remove define. + (i386_mmx_regnum_p): Add gdbarch argument. + (i386_sse_regnum_p, i386_mxcsr_regnum_p): Add gdbarch argument. + Rewrite using new macro definitions for FPU/SSE registers. + (i386_fp_regnum_p, i386_fpc_regnum_p): Rewrite using new macro + definitions from i387-tdep.h. + (i386_register_name): Update. + (i386_stab_reg_to_regnum, i386_dwarf_reg_to_regnum): Update to use + new macro definitions for FPU/SSE registers. + (i386_extract_return_value): Determine whether floating-point + registers are present by examining REGCACHE's architecture. + (i386_store_return_value): Likewise. Use I386_MAX_REGISTER_SIZE + instead of FPU_REG_RAW_SIZE. Use new macro definitions for + FPU/SSE registers. + (i386_register_type): Update. + (i386_mmx_regnum_to_fp_regnum): Rewrite using new macro + definitions for FPU registers. Use REGCACHE's architecture to + determine the appropriate register numbers. + (i386_pseudo_register_read, i386_pseudo_register_write, + i386_register_reggroup_p): Update. + (i386_gdbarch_init): Initialize TDEP->st0_regnum and + TDEP->mm0_regnum. + * i387-tdep.h (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): New defines. + (i387_supply_fsave, i387_fill_fsave, i387_supply_fxsave, + i387_fill_fxsave): Change type of fsave/fxsave argument from `char + *' to `void *'. + * i387-tdep.c (i387_print_float_info, fsave_offset, FSAVE_ADDR, + i387_supply_fsave, i387_fill_fsave, fxsave_offset, FXSAVE_ADDR, + i387_supply_fxsave, i387_fill_fxsave): Update to use new macro + definitions for FPU/SSE registers. + (FXSAVE_MXCSR_ADDR): New define. + * x86-64-tdep.c (x86_64_init_abi): Override TDEP->st0_regnum and + TDEP->mm0_regnum. + (I387_FISEG_REGNUM, I387_FOSEG_REGNUM): Remove defines. + (I387_ST0_REGNUM): Define. + + * regcache.h (get_regcache_arch): New prototype. + * regcache.c (get_regcache_arch): New function. + + * x86-64-tdep.c (x86_64_store_return_value): Remove spurious + whitespace. + + * i386-tdep.c (i386_num_register_names, i386_num_mmx_regs): + Initialize using ARRAY_SIZE. + +2003-09-27 Andrew Cagney <cagney@redhat.com> + + * arch-utils.c (deprecated_init_frame_pc_default): Rename + "init_frame_pc_default". + * arch-utils.h (deprecated_init_frame_pc_default): Update. + * xstormy16-tdep.c (xstormy16_gdbarch_init): Update. + * vax-tdep.c (vax_gdbarch_init): Update. + * v850-tdep.c (v850_gdbarch_init): Update. + * sh64-tdep.c (sh64_gdbarch_init): Update. + * s390-tdep.c (s390_gdbarch_init): Update. + * ns32k-tdep.c (ns32k_gdbarch_init): Update. + * mcore-tdep.c (mcore_gdbarch_init): Update. + * h8300-tdep.c (h8300_gdbarch_init): Update. + * cris-tdep.c (cris_gdbarch_init): Update. + * config/pa/tm-hppa.h (DEPRECATED_INIT_FRAME_PC): Update. + +2003-09-26 Mark Kettenis <kettenis@gnu.org> + + * regset.h: New file. + * Makefile.in (regset_h): Add. + +2003-09-25 Andrew Cagney <cagney@redhat.com> + + * frame.h (deprecated_frame_saved_regs): Rename + get_frame_saved_regs. + * cris-tdep.c, frame.c, h8300-tdep.c, hppa-tdep.c: Update. + * mcore-tdep.c, mips-tdep.c, mn10300-tdep.c: Update. + * ns32k-tdep.c, ppc-linux-tdep.c, rs6000-tdep.c: Update. + * s390-tdep.c, sh64-tdep.c, stack.c: Update. + * v850-tdep.c, vax-tdep.c, xstormy16-tdep.c: Update. + +2003-09-25 Andrew Cagney <cagney@redhat.com> + + * NEWS: Mention the new backtrace mechanism, DWARF 2 CFI, hosted + file I/O, multi-arch, TLS and NPTL, DWARF 2 Location Expressions, + and Java. + * PROBLEMS: Mention that mips*-*-*, powerpc*-*-*, sparc*-*-* and + arm*-*-* do not use the new frame code. + +2003-09-25 David Carlton <carlton@kealia.com> + + * c-exp.y: Remove 'register' declarations. + * f-exp.y, jv-exp.y, m2-exp.y, objc-exp.y, p-exp.y: Ditto. + +2003-09-25 David Carlton <carlton@kealia.com> + + * c-exp.y: Include cp-support.h. Add qualified_type. + (yylex): Delete nested type hack; add comments. + * cp-namespace.c (cp_lookup_nested_type): New function. + * cp-support.h: Declare cp_lookup_nested_type. + * eval.c (evaluate_subexp_standard): Call value_aggregate_elt + instead of value_struct_elt_for_reference. + * valops.c: Include cp-support.h. + (value_aggregate_elt): New function. + (value_namespace_elt): Ditto. + (value_struct_elt_for_reference): Make static. + * value.h: Delete declaration of value_struct_elt_for_reference; + add declaration for value_aggregate_elt. + * Makefile.in (c-exp.tab.o): Depend on $(cp_support_h). + (valops.o): Ditto. + +2003-09-25 Daniel Jacobowitz <drow@mvista.com> + + * stack.c: Include "reggroups.h". + (frame_info): Only display registers in all_reggroup. + * Makefile.in (stack.o): Update dependencies. + +2003-09-25 Jerome Guitton <guitton@act-europe.fr> + + * arm-tdep.c (arm_skip_prologue): Handle "sub ip, sp #n" and + "add ip, sp #n" in the prologue. + (arm_scan_prologue): Ditto. + +2003-09-25 Jerome Guitton <guitton@act-europe.fr> + + * MAINTAINERS (write after approval): Add myself. + +2003-09-25 Andreas Schwab <schwab@suse.de> + + * m68k-tdep.c: Include "dwarf2-frame.h". + (m68k_gdbarch_init): Add the DWARF CFI frame unwinder. + * Makefile.in (m68k-tdep.o): Update dependencies. + +2003-09-25 Corinna Vinschen <vinschen@redhat.com> + + * sh-tdep.c (struct frame_extra_info): Remove. + (struct sh_frame_cache): New structure. + (GET_SOURCE_REG): New macro extracting source register of an opcode. + (GET_TARGET_REG): Ditto but target register. + (GET_PUSHED_REG): Remove. + (IS_MOV_ARG_TO_REG): New macro. + (IS_MOV_ARG_TO_IND_R14): New macro. + (IS_MOV_ARG_TO_IND_R14_WITH_DISP): New macro. + (IS_MOVW_PCREL_TO_REG): New macro. + (IS_MOVL_PCREL_TO_REG): New macro. + (IS_SUB_REG_FROM_SP): New macro. + (IS_ARG_MOV): Remove. + (IS_MOV_TO_R14): Remove. + (IS_RESTORE_FP): New macro. + (IS_RTS): New macro. + (IS_LDS): New macro. + (IS_MOV_FP_SP): New macro. + (IS_ADD_REG_TO_FP): New macro. + (IS_ADD_IMM_FP): New macro. + (sh_skip_prologue_hard_way): Remove. + (sh_saved_pc_after_call): Remove. + (sh_frame_chain): Remove. + (sh_find_callers_reg): Remove. + (sh_nofp_frame_init_saved_regs): Remove. + (sh_fp_frame_init_saved_regs): Remove. + (sh_init_extra_frame_info): Remove. + (sh_analyze_prologue): New function. + (sh_skip_prologue): Remove deprecated code. Rely on new function + sh_analyze_prologue when after_prologue fails. + (sh_frame_saved_pc): Remove. + (sh_alloc_frame_cache): New function. + (sh_frame_cache): Ditto. + (sh_frame_prev_register): Ditto. + (sh_frame_this_id): Ditto. + (sh_frame_unwind): New structure defining the heuristic frame + sniffer interface. + (sh_frame_sniffer): New function. + (sh_unwind_sp): Ditto. + (sh_unwind_pc): Ditto. + (sh_unwind_dummy_id): Ditto. + (sh_frame_base_address): Ditto. + (sh_frame_base): New structure defining new frame base code. + (sh_in_function_epilogue_p): New function. + (sh_gdbarch_init): Restructure and simplify to eliminate deprecated + code and to call all new code instead. Initialize dwarf2 and + heuristic frame sniffer. + +2003-09-24 Paul N. Hilfinger <hilfingr@nile.gnat.com> + + * parser-defs.h (struct exp_descriptor): New definition, containing + language-specific info for printing, prefixifying, dumping, and + evaluating expressions. + (exp_descriptor_standard): Declare new variable. + (print_subexp): Make global and declare here (from expprint.c). + (dump_subexp): Ditto. + (dump_subexp_body_standard): Declare. + (operator_length_standard): Declare. + (op_name_standard): Declare. + (print_subexp): Declare. + (print_subexp_standard): Declare. + + * language.h (struct language_defn): Add la_exp_desc field to hold + pointer to table for language-specific operators. + Remove evaluate_exp field, which is now in struct exp_descriptor. + + * parse.c (operator_length): Move most code to new + operator_length_standard function. Use language-specific information. + (operator_length_standard): New function taking most code from + operator_length. + (exp_descriptor_standard): New constant. + + * expression.h (enum exp_opcode): Add definitions of OP_EXTENDED0 + and OP_EXTENDED_LAST. + + * expprint.c (print_subexp): Use language-specific print_subexp. + Make global; remove static declaration. + Move most code to print_subexp_standard. + (print_subexp_standard): New function, containing code formerly in + print_subexp. + (op_name): Add expression to argument signature. + Use langauge-specific op_name. + Move most code to op_name_standard. + (op_name_standard): New function, containing code formerly in op_name. + (dump_subexp): Use new version of op_name function. + Use language-specific dump_subexp_body, and move most existing code to + dump_subexp_body_standard. + (dump_raw_expression): Use new op_name interface. + (dump_subexp_body): Move most code to dump_subexp_body_standard. + (dump_subexp_body_standard): New function, containing code formerly + in dump_subexp_body. + + * language.c (unknown_language): Add default la_exp_desc field and + remove evaluate_exp field. + (auto_language): Ditto. + (local_language): Ditto. + * f-lang.c (f_language_defn): Ditto. + * c-lang.c (c_language_defn): Ditto. + (cplus_language_defn): Ditto. + (asm_language_defn): Ditto. + (minimal_language_defn): Ditto. + * p-lang.c (pascal_language_defn): Ditto. + * m2-lang.c (m2_language_defn): Ditto. + * objc-lang.c (objc_language_defn): Ditto. + + * jv-lang.c (exp_descriptor_java): New variable, containing + Java-specific expression evaluator. + (java_language_defn): Add la_exp_desc field and remove evaluate_exp + field. + * scm-lang.c (exp_descriptor_scm): New variable, containing + Scheme-specific expression evaluator. + (scm_language_defn): Add la_exp_desc field and remove evaluate_exp + field. + * objc-lang.c (print_object_command): Take evaluate_exp from the + la_exp_desc field. + + * Makefile.in (eval.o): Add dependency on parser-defs.h. + + * eval.c: Include parser-defs.h for the full declaration of + la_exp_desc's type. + (evaluate_subexp): Get evaluate_exp out of la_exp_desc field. + +2003-09-23 Paul N. Hilfinger <hilfingr@nile.gnat.com> + + * parser-defs.h (operator_length): Declare. + + * parse.c (length_of_subexp): Use operator_length to get operator + lengths and arities for operators. + Move most code to new operator_length function. + (operator_length): New function absorbing most code from + length_of_subexp. + (prefixify_subexp): Remove large case and use operator_length instead. + (parse_exp_1): Use renamings: + dump_prefix_expression => dump_raw_expression and + dump_postfix_expression => dump_prefix_expression. + + * expression.h (dump_prefix_expression): Rename to ... + (dump_raw_expression): New name. + (dump_postfix_expression): Rename to ... + (dump_prefix_expression): New name. + + * expprint.c (dump_subexp): Make global. Add comment. + Move most existing code to dump_subexp_body. + (dump_subexp_body): New function. + (dump_prefix_expression): Rename to dump_raw_expression. + Remove attempt to print the expression via print_expression: it can't + work before the expression is prefixified. + (dump_raw_expression): Renamed from dump_prefix_expression. + (dump_postfix_expression): Rename to dump_prefix_expression, since + that's what it does. + Remove 'note' parameter, since this routine must be used on + prefixified expression. + (dump_prefix_expression): Renamed from dump_postfix_expression. + +2003-09-22 Jim Blandy <jimb@redhat.com> + + * dwarf2read.c (read_array_type): When building the type for an + array of unspecified length, make sure to choose the upper bound + so that the array's total length comes out to be zero --- that's + how we represent such arrays. + +2003-09-22 Michael Chastain <mec@shout.net> + + * MAINTAINERS: Rename gdb.c++ to gdb.cp. + +2003-09-22 Jeff Johnston <jjohnstn@redhat.com> + + * top.c (quit_force): Fix indirect call to quit_target so + a struct qt_args pointer is passed. + +2003-09-22 Andrew Cagney <cagney@redhat.com> + + * arch-utils.h (init_frame_pc_noop): Delete declaration. + * arch-utils.c (init_frame_pc_noop): Delete function. + * mn10300-tdep.c (mn10300_gdbarch_init): Do not set + "init_frame_pc". + * mips-tdep.c (mips_gdbarch_init): Ditto. + * i386-interix-tdep.c (i386_interix_init_abi): Ditto. + * config/sparc/tm-sparc.h (init_frame_pc_noop): Delete + declaration. + (DEPRECATED_INIT_FRAME_PC): Delete macro. + * config/rs6000/tm-rs6000.h (init_frame_pc_noop): Delete + declaration. + (DEPRECATED_INIT_FRAME_PC): Delete macro. + +2003-09-22 Anthony Green <green@redhat.com> + + * monitor.c (monitor_expect): Delete unused conflicting targ_ops + declaration. + +2003-09-20 Andrew Cagney <cagney@redhat.com> + + * breakpoint.c: Eliminate ARGSUSED. + * buildsym.c, cli/cli-cmds.c, cli/cli-script.c: Ditto. + * coffread.c, corelow.c, dwarf2read.c, event-top.c: Ditto. + * exec.c, gcore.c, hpux-thread.c, infcmd.c, inflow.c: Ditto. + * infrun.c, inftarg.c, maint.c, ocd.c, printcmd.c: Ditto. + * procfs.c, regcache.c, remote-rdi.c, remote-sds.c: Ditto. + * remote.c, sol-thread.c, source.c, stabsread.c: Ditto. + * stack.c, symfile.c, target.c, top.c, typeprint.c: Ditto. + * utils.c, v850ice.c, valprint.c, values.c, win32-nat.c: Ditto. + * wince.c, remote-vx.c: Ditto. + + * cli/cli-script.c: Remove "register" attributes. + * config/pa/tm-hppa.h: Ditto. + * cli/cli-decode.c: Ditto. + * cli/cli-cmds.c: Ditto. + +2003-09-19 Andrew Cagney <cagney@redhat.com> + + * sparcnbsd-nat.c (getregs_supplies): Rename NPC_REGNUM to + DEPRECATED_NPC_REGNUM. + * sparc64nbsd-nat.c (getregs_supplies): Ditto. + +2003-09-19 Christopher Faylor <cgf@redhat.com> + + * win32-nat.c (mappings): Remove HAVE_SSE conditional. + +2003-09-19 Jim Blandy <jimb@redhat.com> + + * macrotab.c (macro_include): Use the correct comparison to find + the appropriate place for this inclusion in the list. + +2003-09-19 Andrew Cagney <cagney@redhat.com> + + * config/pa/nm-hppah.h (NEED_TEXT_START_END): Delete. + (DEPRECATED_HPUX_TEXT_END): Define. + (deprecated_hpux_text_end): Declare. + (struct target_ops): Declare opaque. + * hppah-nat.c (text_end): Make static. + (deprecated_hpux_text_end): New function. + * exec.c (text_end): Delete global variable. + (NEED_TEXT_START_END): Do not define. + (exec_file_attach): Replace code computing "text_end" code with + call to DEPRECATED_HPUX_TEXT_END. + +2003-09-19 Andrew Cagney <cagney@redhat.com> + + * utils.c (align_up, align_down): New functions. + * defs.h (align_up, align_down): Declare. + * ppc-sysv-tdep.c (align_up, align_down): Delete functions. + * s390-tdep.c: Replace "round_up" and "round_down" with "align_up" + and "align_down". + (round_up, round_down): Delete functions. + * mips-tdep.c: Replace ROUND_UP and ROUND_DOWN with "align_up" and + "align_down". + (ROUND_DOWN, ROUND_UP): Delete macros. + (mips_dump_tdep): Do not print "ROUND_UP" or "ROUND_DOWN". + * h8300-tdep.c: Replace "round_up" and "round_down" with + "align_up" and "align_down". + (round_up, round_down): Delete macros. + * frv-tdep.c: Replace ROUND_UP and ROUND_DOWN with "align_up" and + "align_down". + (ROUND_UP, ROUND_DOWN): Delete macros. + +2003-09-18 J. Brobecker <brobecker@gnat.com> + + * hppa-hpux-tdep.c (_initialize_hppa_hpux_tdep): Remove a + hard-coded constant. Use the proper machine name instead. + +2003-09-17 Andrew Cagney <cagney@redhat.com> + + * sparc-tdep.c (legacy_register_name): Delete function. + * mips-tdep.c (mips_dump_tdep): Do not print REGISTER_NAME. + (mips_gdbarch_init): Refer to MIPS_REGISTER_NAME in comments. + * infcmd.c (gdb_register_name): Delete variable. + * gdbarch.sh (SDB_REG_TO_REGNUM): Delete reference to + REGISTER_NAME and "tm.h". + * gdbarch.h, gdbarch.c: Regenerate. + * dpx2-nat.c (regmap): Refer to REGISTER_NAME and not + REGISTER_NAMES in comments. + * remote-st.c (get_reg_name), i386b-nat.c (tregmap): Ditto. + * m68klinux-nat.c (regmap): Ditto. + +2003-09-17 Jim Blandy <jimb@redhat.com> + + * Makefile.in (dis_asm_h): Note that this #includes "bfd.h". + +2003-09-17 Andrew Cagney <cagney@redhat.com> + + * ppcnbsd-tdep.c (ppcnbsd_use_struct_convention): New function. + (ppcnbsd_init_abi): Set "use_struct_convention" to + "ppcnbsd_use_struct_convention". + +2003-09-17 Mark Kettenis <kettenis@gnu.org> + + * gdbarch.sh (DEPRECATED_REG_STRUCT_HAS_ADDR): Add comment. + * gdbarch.h, gdbarch.c: Regenerate. + (stabs_argument_has_addr): New architecture method. + * arch-utils.h (default_stabs_argument_has_addr): New prototype. + * arch-utils.c: Include "buildsym.h". + (default_stabs_argument_has_addr): New function. + * stabsread.c (define_symbol): Use stabs_argument_has_addr + instead of DEPRECATED_REG_STRUCT_HAS_ADDR. + +2003-09-17 Andrew Cagney <cagney@redhat.com> + + * gdbarch.sh (DEPRECATED_NPC_REGNUM): Deprecate NPC_REGNUM. + * gdbarch.h, gdbarch.c: Regenerate. + * core-sol2.c, hppa-tdep.c, lynx-nat.c, procfs.c: Update. + * regcache.c, remote-vxsparc.c, sparc-linux-nat.c: Update. + * sparc-nat.c, sparc-tdep.c, sparc64-tdep.c: Update. + * sparcnbsd-tdep.c: Update. + +2003-09-17 Andrew Cagney <cagney@redhat.com> + + * gdbarch.sh (DEPRECATED_REGISTER_BYTE): Rename REGISTER_BYTE. + * gdbarch.h, gdbarch.c: Regenerate. + * arm-linux-tdep.c, core-sol2.c, cris-tdep.c: Update. + * d10v-tdep.c, frame.c: Update. + * hppa-tdep.c, hppab-nat.c, hppah-nat.c, hppam3-nat.c: Update. + * hpux-thread.c, i386gnu-nat.c, ia64-aix-nat.c: Update. + * ia64-linux-nat.c, irix5-nat.c, lynx-nat.c, m68knbsd-nat.c: Update. + * mcore-tdep.c, mips-linux-tdep.c, mips-tdep.c: Update. + * mipsv4-nat.c, mn10300-tdep.c, ns32k-tdep.c: Update. + * ns32knbsd-nat.c, ppc-bdm.c, regcache.c, remote-sds.c: Update. + * remote-vx68.c, remote-vxmips.c, remote-vxsparc.c: Update. + * remote.c, rs6000-tdep.c, s390-tdep.c, sh64-tdep.c: Update. + * sparc-nat.c, sparc-tdep.c, sun3-nat.c, v850-tdep.c: Update. + * v850ice.c, vax-tdep.c, xstormy16-tdep.c: Update. + * config/m68k/tm-cisco.h, config/m68k/tm-delta68.h: Update. + * config/pa/nm-hppah.h: Update. + +2003-09-16 Andrew Cagney <cagney@redhat.com> + + * ppc-linux-tdep.c (ppc_linux_init_abi): Set the 32 bit + "use_struct_convention" to "ppc_linux_use_struct_convention". + (ppc_linux_use_struct_convention): New function. + * rs6000-tdep.c (rs6000_use_struct_convention): New function. + (rs6000_gdbarch_init): For AIX, set "use_struct_convention" to + "rs6000_use_struct_convention". + * ppc-tdep.h (ppc_sysv_abi_broken_use_struct_convention): Delete + declaration. + * ppc-sysv-tdep.c (ppc_sysv_abi_broken_use_struct_convention): + Delete function. + +2003-09-16 Andrew Cagney <cagney@redhat.com> + + * buildsym.c: Remove more occurances of "register". + * coffread.c, dbxread.c, dcache.c, dwarf2read.c: Ditto. + * environ.c, eval.c, f-valprint.c, findvar.c: Ditto. + * gdbtypes.c, gnu-v2-abi.c, h8300-tdep.c, hppa-tdep.c: Ditto. + * infcmd.c, mdebugread.c, minsyms.c, mips-tdep.c: Ditto. + * printcmd.c, remote-vx.c, sh-stub.c, sh-tdep.c: Ditto. + * sh64-tdep.c, source.c, stabsread.c, stack.c: Ditto. + * standalone.c, symfile.c, symmisc.c, symtab.c: Ditto. + * utils.c, valops.c, values.c, xcoffread.c: Ditto. + +2003-09-16 Corinna Vinschen <vinschen@redhat.com> + + * sh-tdep.h (struct gdbarch_tdep): Remove. Change all register + numbers to enumeration values. + * sh-tdep.c: Accomodate above change. + (SH_NUM_REGS): Rename from SH_DEFAULT_NUM_REGS. + (NUM_PSEUDO_REGS_SH_MEDIA): Remove (sh5 only). + (NUM_PSEUDO_REGS_SH_COMPACT): Remove (sh5 only). + (IS_ADD_IMM_SP): Rename from IS_ADD_SP. + (IS_FPUSH): Rename from IS_FMOV. + (sh_extract_struct_value_address): Remove useless comment. + (sh_dsp_register_sim_regno): Use register values from sh-tdep.h + instead of own local values. + (sh_dump_tdep): Remove. + (_initialize_sh_tdep): Accomodate removing sh_dump_tdep. + * sh3-rom.c (sh3_supply_register): Accomodate sh-tdep.h changes. + +2003-09-15 Andrew Cagney <cagney@redhat.com> + + * doublest.c (convert_floatformat_to_doublest): No longer need to + cast "exp_bias" to an int. Reverts 2002-12-04 change. + +2003-09-15 Daniel Jacobowitz <drow@mvista.com> + + * values.c (unpack_double): Call floatformat_is_valid. + +2003-09-15 Mark Kettenis <kettenis@gnu.org> + + * amd64fbsd-nat.c (_initialize_amd64fbsd_nat): Change type of + ps_strings into a long. + + * amd64fbsd-nat.c (_initialize_amd64fbsd_nat): Rename from + _initialize_am64fbsd_nat. + +2003-09-15 Kevin Buettner <kevinb@redhat.com> + + * dwarf2read.c (dwarf2_get_pc_bounds): Complain if offset + associated with DW_AT_ranges attribute is out of bounds. + +2003-09-15 David Lecomber <dsl@sources.redhat.com> + + * f-valprint.c: Apply array element printing limits to multi-dimensional arrays + +2003-09-14 Michael Chastain <mec@shout.net> + + * config/m68k/nm-apollo68v.h: Delete. + * config/m68k/xm-apollo68v.h: Delete. + +2003-09-14 Andrew Cagney <cagney@redhat.com> + + * rs6000-tdep.c (rs6000_push_dummy_call): Fix typos. + * dcache.c: Update copyrights and descriptions. + * scm-exp.c, ia64-aix-nat.c, hppam3-nat.c: environ.c: Ditto. + +2003-09-14 Andrew Cagney <cagney@redhat.com> + + * config/djgpp/fnchange.lst: Rename "amd64fbsd-tdep.c" and + "amd64fbsd-nat.c" to "a64fb-tdep.c" and "a64fb-nat.c". + +2003-09-14 Andrew Cagney <cagney@redhat.com> + + * alpha-nat.c: Remove some occurances of "register". + * alpha-tdep.c, arm-tdep.c, blockframe.c, breakpoint.c: Ditto. + * buildsym.c, c-typeprint.c, c-valprint.c, coffread.c: Ditto. + * corefile.c, cp-support.c, cp-valprint.c, cris-tdep.c: Ditto. + * dbxread.c, dcache.c, dwarf2read.c, elfread.c: Ditto. + * environ.c, eval.c, event-top.c, f-typeprint.c: Ditto. + * f-valprint.c, findvar.c, frame.c, gdbtypes.c: Ditto. + * h8300-tdep.c, hppa-tdep.c, hppab-nat.c, hppah-nat.c: Ditto. + * hppam3-nat.c, hpread.c, ia64-aix-nat.c, ia64-linux-nat.c: Ditto. + * infcall.c, infcmd.c, inflow.c, infptrace.c, infrun.c: Ditto. + * infttrace.c, irix5-nat.c, jv-typeprint.c: Ditto. + * jv-valprint.c, m68k-tdep.c, m68klinux-nat.c, main.c: Ditto. + * mdebugread.c, minsyms.c, mips-linux-tdep.c: Ditto. + * mips-nat.c, mips-tdep.c, mipsread.c, mipsv4-nat.c: Ditto. + * ns32k-tdep.c, objfiles.c, p-typeprint.c: Ditto. + * p-valprint.c, ppc-linux-nat.c, printcmd.c: Ditto. + * remote-mips.c, remote-vx.c, rs6000-nat.c: Ditto. + * rs6000-tdep.c, scm-exp.c, sh-tdep.c, sh64-tdep.c: Ditto. + * solib.c, somread.c, source.c, sparc-tdep.c: Ditto. + * stabsread.c, stack.c, standalone.c, symfile.c: Ditto. + * symmisc.c, symtab.c, top.c, tracepoint.c: Ditto. + * typeprint.c, utils.c, valarith.c, valops.c: Ditto. + * values.c, vax-tdep.c, xcoffread.c: Ditto. + +2003-09-13 Andrew Cagney <cagney@redhat.com> + + * config/pa/tm-hppa64.h (struct frame_info): Declare opaque. + * ppc-tdep.h (struct regcache): Declare opaque. + * objfiles.h (struct objfile_data): Declare opaque. + * cp-support.h (struct objfile): Declare opaque. + * linux-nat.h (target_waitstatus): Declare opaque. + +2003-09-14 Mark Kettenis <kettenis@gnu.org> + + * gdbarch.sh (DEPRECATED_REG_STRUCT_HAS_ADDR): Add comment. + (stabs_argument_has_addr): New architecture method. + * arch-utils.h (default_stabs_argument_has_addr): New prototype. + * arch-utils.c: Include "buildsym.h". + (default_stabs_argument_has_addr): New function. + * stabsread.c (define_symbol): Use stabs_argument_has_addr + instead of DEPRECATED_REG_STRUCT_HAS_ADDR. + + * cris-tdep.c (cris_gdbarch_init): Set + deprecated_reg_struct_has_addr instead of reg_struct_has_addr. + * hppa-tdep.c (hppa_gdbarch_init): Likewise. + * mcore-tdep.c (mcore_gdbarch_init): Likewise. + * mips-tdep.c (mips_gdbarch_init): Likewise. + * mn10300-tdep.c (mn10300_gdbarch_init): Likewise. + * sparc-tdep.c (sparc_gdbarch_init): Likewise. + +2003-09-13 Andrew Cagney <cagney@redhat.com> + + * values.c (using_struct_return): Delete "function" and "funcaddr" + parameters. + * value.h (using_struct_return): Update declaration. + * infcmd.c (finish_command_continuation): Update. + (finish_command): Update. + * infcall.c (call_function_by_hand): Update. + * eval.c (evaluate_subexp_standard): Update. + +2003-09-13 Christopher Faylor <cgf@redhat.com> + + * win32-nat.c: Just rely on CONTEXT_EXTENDED_REGISTER being defined for + SSE registers since gdb will not operate correctly without this. + Restore include file ordering munged in previous change. + * config/i386/tm-cygwin.h: Remove HAVE_SSE_REGS define. + +2003-09-13 Mark Kettenis <kettenis@gnu.org> + + * gdbarch.sh (DEPRECATED_REG_STRUCT_HAS_ADDR): Renamed from + REG_STRUCT_HAS_ADDR. + * gdbarch.c, gdbarch.h: Updated. + * infcall.c (call_function_by_hand): Update. + * stabsread.c (define_symbol): Updated. + + * Makefile.in (xm-i386-sv32.h, tm-i386gas.h): Remove. + +2003-09-12 Christopher Faylor <cgf@redhat.com> + + * win32-nat.c: Reorganize so that defines used by target headers are + actually defined by the system headers. + * config/i386/tm-cygwin.h: Check for CONTEXT_EXTENDED_REGISTERS rather + than HAVE_CONTEXT_EXTENDED_REGISTERS, since the latter actually exists. + +2003-09-12 Jim Blandy <jimb@redhat.com> + + * dbxread.c (read_dbx_symtab): Don't report an internal error if + the file has no .data, .bss, or .rodata sections. Instead wait + until we see a variable alleged to live in one of those sections. + + * dbxread.c (read_dbx_symtab): If we have no .data section and no + .bss section, presume that any variables we find live in the + .rodata section. + + * dbxread.c (read_dbx_symtab): Add FIXME about finding section + offsets for global and static variables. + + * dbxread.c (read_dbx_symtab): The N_DATA and N_DATA | N_EXT + symbol types are, by definition, in the .data section, so it is + correct to use SECT_OFF_DATA (objfile) here, not data_sect_index. + If there is no .data section, there should be no N_DATA or N_DATA + | N_EXT symbols. + +2003-09-12 Mark Kettenis <kettenis@gnu.org> + + * amd64fbsd-tdep.c: Fix sigtramp recognition. + (amd64fbsd_sigcontext_addr): Rewrite. + (amd64fbsd_sigtramp_start, amd64fbsd_sigtramp_end): Initialize + with correct values. + (amd64fbsd_sc_reg_offset): Initialize with correct values. + (amd64fbsd_init_abi): Fix typo. + +2003-09-12 Andrew Cagney <cagney@redhat.com> + + * ppc-sysv-tdep.c (align_up, align_down): Replace "round2" macro. + (ppc_sysv_abi_push_dummy_call): Rewrite, use a two pass loop. + +2003-09-12 Andrew Cagney <cagney@redhat.com> + + * objfiles.h (struct entry_info): Deprecate "entry_file_lowpc" and + "entry_file_highpc". Update comments. + * defs.h (deprecated_inside_entry_file): Rename + "inside_entry_file". + * blockframe.c (deprecated_inside_entry_file): Rename + "inside_entry_file". + * frame.c (get_prev_frame): Update. Use if 0 instead of #if 0. + * vax-tdep.c (vax_frame_chain): Update. + * sh64-tdep.c (sh64_frame_chain): Update. + * sh-tdep.c (sh_frame_chain): Update. + * rs6000-tdep.c (rs6000_frame_chain): Update. + * ns32k-tdep.c (ns32k_frame_chain): Update. + * mips-tdep.c (mips_frame_chain): Update. + * m68hc11-tdep.c (m68hc11_frame_this_id): Update. + * m32r-tdep.c (m32r_frame_this_id): Update. + * i386-interix-tdep.c (i386_interix_frame_chain_valid): Update. + * frv-tdep.c (frv_frame_this_id): Update. + * d10v-tdep.c (d10v_frame_this_id): Update. + * cris-tdep.c (cris_frame_chain): Update. + * blockframe.c (legacy_frame_chain_valid): Update. + * avr-tdep.c (avr_frame_this_id): Update. + * arm-tdep.c (arm_prologue_this_id): Update. + * alpha-tdep.c (alpha_heuristic_frame_this_id): Update. + * objfiles.c (objfile_relocate): Update. + * mipsread.c (mipscoff_symfile_read): Update. + (mipscoff_symfile_read): Update. + * mdebugread.c (parse_partial_symbols): Update. + * dwarfread.c (read_file_scope): Update. + * dwarf2read.c (read_file_scope): Update. + * dbxread.c (read_dbx_symtab): Update. + (read_dbx_symtab): Update. + * coffread.c (complete_symtab): Update. + +2003-09-12 Jeff Johnston <jjohnstn@redhat.com> + + * top.c (quit_target): New static helper function. + (quit_force): Moved code to quit_target(). Call quit_target() + via catch_errors() to catch errors during quit. + +2003-09-11 David Carlton <carlton@kealia.com> + + * buildsym.c (finish_block): Use allocate_block to allocate the + block. + * mdebugread.c (new_block): Add FIXME. + +2003-09-11 David Carlton <carlton@kealia.com> + + * gdbtypes.h: Add TYPE_CODE_NAMESPACE. + * gdbtypes.c (init_type): Handle TYPE_CODE_NAMESPACE. + (recursive_dump_type): Ditto. + * printcmd.c (print_formatted): Ditto. + * typeprint.c (print_type_scalar): Ditto. + * c-typeprint.c (c_type_print_varspec_prefix): Ditto. + (c_type_print_varspec_suffix, c_type_print_base): Ditto. + * cp-support.h: Declare cp_check_possible_namespace_symbols, + maint_cplus_cmd_list. + * cp-support.c: Make maint_cplus_cmd_list extern. + * cp-namespace.c: Include objfiles.h, gdbtypes.h, dictionary.h, + command.h. + (lookup_symbol_file): Look in possible namespace blocks when + appropriate. + (initialize_namespace_symtab): New. + (get_possible_namespace_block, free_namespace_block) + (check_possible_namespace_symbols) + (check_possible_namespace_symbols_loop) + (check_one_possible_namespace_symbol) + (lookup_possible_namespace_symbol, maintenance_cplus_namespace) + (_initialize_cp_namespace): Ditto. + * block.h: Declare allocate_block. + * block.c (allocate_block): New. + * jv-lang.c (get_java_class_symtab): Allocate blocks via + allocate_block. + * symfile.h: Update declaration of add_psymbol_to_list. + * symfile.c (add_psymbol_to_list): Return the partial symbol in + question. + * dwarf2read.c (dwarf2_build_psymtabs_hard): Add argument to + scan_partial_symbols_call. + (scan_partial_symbols): Add NAMESPACE argument; update calls to + helper functions. + (add_partial_symbol): If necessary, scan mangled names for names + of namespaces. + (add_partial_namespace): Add NAMESPACE argument; generate partial + symbols associated to namespaces. + (add_partial_enumeration): Add NAMESPACE argument. + (new_symbol): Allow namespace syms. + (read_namespace): Generate namespace syms. + * objfiles.h: Add opaque declaration of struct symtab. + (struct objfile): Add cp_namespace_symtab member. + * objfiles.c (allocate_objfile): Set + objfile->cp_namespace_symtab. + * Makefile.in (cp-namespace.o): Depend on objfiles_h, gdbtypes_h, + dictionary_h, command_h. + +2003-09-11 Andrew Cagney <cagney@redhat.com> + + * rs6000-tdep.c (rs6000_push_dummy_call): Use + regcache_raw_write_signed to set SP_REGNUM, move the operation to + near the function's end. + (rs6000_gdbarch_init): Do not set "deprecated_dummy_write_sp". + * ppc-sysv-tdep.c (ppc_sysv_abi_push_dummy_call): Use + regcache_raw_write_signed to set SP_REGNUM. + +2003-09-11 Elena Zannoni <ezannoni@redhat.com> + + * symfile.c (symbol_file_add_with_addrs_or_offsets): Make sure + orig_addrs is set up properly. + +2003-09-11 Andrew Cagney <cagney@redhat.com> + + * gdbarch.sh (DEPRECATED_STACK_ALIGN): Rename STACK_ALIGN. + * gdbarch.h, gdbarch.c: Re-generate. + * infcall.c (call_function_by_hand): Update. + * hppa-tdep.c (hppa_push_arguments): Update. + * ada-lang.c (place_on_stack): Update. + * xstormy16-tdep.c (xstormy16_gdbarch_init): Update. + * sparc-tdep.c (sparc_gdbarch_init): Update. + * m68hc11-tdep.c (m68hc11_gdbarch_init): Update. + * hppa-tdep.c (hppa_gdbarch_init): Update. + * h8300-tdep.c (h8300_gdbarch_init): Delete comment refering to + stack_align. + +2003-09-11 Daniel Jacobowitz <drow@mvista.com> + + * dwarf2loc.c (dwarf2_loc_desc_needs_frame): Variables in a + register do need a frame. + +2003-09-11 Andrew Cagney <cagney@redhat.com> + + Since the IRIX 4 configuration was forcing K&R mode it hasn't been + buildable since GDB 5.0. + * NEWS: Mention that IRIX 3 and IRIX 4 support were removed. + * configure.host: Delete "mips-sgi-irix3*" and "mips-sgi-irix4*". + * configure.tgt: Delete "mips*-sgi-*" a.k.a. irix3. + * irix4-nat.c: Delete file. + * config/mips/irix4.mh: Delete file. + * config/mips/irix3.mh: Delete file. + * config/mips/irix3.mt: Delete file. + * config/mips/tm-irix3.h: Delete file. + * config/mips/nm-irix3.h: Delete file. + * config/mips/xm-irix3.h: Delete file. + * config/mips/nm-irix4.h: Delete file. + * config/mips/xm-irix4.h: Delete file. + * config/mips/tm-irix5.h: Inline contents of "tm-irix3.h". + +2003-09-10 J. Brobecker <brobecker@gnat.com> + + * hppa-tdep.c: Include "dis-asm.h". Fixes a build failure. + * Makefile.in (hppa-tdep.o): Update dependencies. + +2003-09-10 James E Wilson <wilson@specifixinc.com> + + * MAINTAINERS: Change my e-mail address. Move to paper trail + section. + +2003-09-10 Kevin Buettner <kevinb@redhat.com> + + * MAINTAINERS (frv): New ISA entry. + +2003-09-10 Kevin Buettner <kevinb@redhat.com> + + * frv-tdep.c (dis-asm.h): Include. + * Makefile.in (frv-tdep.o): Update dependencies. + +2003-09-09 Jeff Johnston <jjohnstn@redhat.com> + + * ia64-tdep.c (ia64_sigtramp_frame_init_saved_regs): + Fix typo for high range of floating registers. + +2003-09-09 David Carlton <carlton@kealia.com> + + * dwarf2read.c (dwarf2_build_psymtabs_hard): Move lowpc and + highpc initialization here out of scan_partial_symbols. + (scan_partial_symbols): Restructure into a recursive version, + calling add_partial_namespace and add_partial_enumeration when + appropriate. + (add_partial_namespace): New. + (add_partial_enumeration, locate_pdi_sibling): Ditto. + +2003-09-09 Andrew Cagney <cagney@redhat.com> + + * rs6000-tdep.c (ppc_push_return_address): Delete function. + (rs6000_push_dummy_call): Set LR to BP_ADDR. + (rs6000_gdbarch_init): Do not set deprecated_push_return_address. + * ppc-sysv-tdep.c (ppc_sysv_abi_push_dummy_call): Ditto. + + * rs6000-tdep.c (rs6000_fix_call_dummy): Delete function. + (rs6000_push_dummy_call): Set the "TOC" register. + + * rs6000-tdep.c (rs6000_gdbarch_init): Do not set the deprecated + methods "max_register_raw_size", "max_register_virtual_size" or + "register_virtual_size". + +2003-09-09 Ian Lance Taylor <ian@wasabisystems.com> + + * MAINTAINERS: Update my e-mail address. + +2003-09-09 Andrew Cagney <cagney@redhat.com> + + * rs6000-tdep.c (rs6000_store_struct_return): Delete function. + (rs6000_push_dummy_call): Store the struct return address. + * ppc-sysv-tdep.c (ppc_sysv_abi_push_dummy_call): Ditto. + +2003-09-09 Andrew Cagney <cagney@redhat.com> + + * ppc-tdep.h (ppc_sysv_abi_push_dummy_call): Replace + "ppc_sysv_abi_push_arguments". + * ppc-sysv-tdep.c (ppc_sysv_abi_push_dummy_call): Replace + "ppc_sysv_abi_push_arguments". + * rs6000-tdep.c (rs6000_gdbarch_init): Set "push_dummy_call" + instead of "push_arguments". + (rs6000_push_dummy_call): Replace "rs6000_push_arguments". + +2003-09-09 Andrew Cagney <cagney@redhat.com> + + * sh64-tdep.c (sh64_push_return_address): Use ENTRY_POINT_ADDRESS + instead of CALL_DUMMY_ADDRESS. + +2003-09-09 Paul N. Hilfinger <hilfingr@gnat.com> + + * p-lang.c: Eliminate "register". + * c-lang.c: Ditto. + * expprint.c: Ditto. + * f-lang.c: Ditto. + * jv-lang.c: Ditto. + * language.c: Ditto. + * m2-lang.c: Ditto. + * parse.c: Ditto. + * scm-lang.c: Ditto. + * objc-lang.c: Ditto. + +2003-09-09 Nick Clifton <nickc@redhat.com> + + * v850-tdep.c (v850_processor_type_table): Add bfd_mach_v850e1. + +2003-09-04 Andrew Cagney <cagney@redhat.com> + + * avr-tdep.c: Include "dis-asm.h". + * cris-tdep.c: Include "dis-asm.h". + (cris_delayed_get_disassembler): Use "struct disassemble_info" + instead of corresponding typedef. + * h8300-tdep.c: Include "dis-asm.h". + * ia64-tdep.c: Include "dis-asm.h". + * i386-tdep.c: Include "dis-asm.h". + (i386_print_insn): Use "struct disassemble_info" instead of + corresponding typedef. + * m68k-tdep.c: Include "dis-asm.h". + * mcore-tdep.c: Include "dis-asm.h". + * mips-tdep.c: Include "dis-asm.h". + (gdb_print_insn_mips): Make static, use "struct disassemble_info" + instead of corresponding typedef. + * ns32k-tdep.c: Include "dis-asm.h". + * s390-tdep.c: Include "dis-asm.h". + * sparc-tdep.c: Include "dis-asm.h". + * vax-tdep.c: Include "dis-asm.h". + * v850-tdep.c: Include "dis-asm.h". + * mn10300-tdep.c: Include "dis-asm.h". + * rs6000-tdep.c: Include "dis-asm.h". + * xstormy16-tdep.c: Include "dis-asm.h". + (_initialize_xstormy16_tdep): Delete "extern" declaration of + print_insn_xstormy16. + * Makefile.in (v850-tdep.o): Update dependencies. + (vax-tdep.o, sparc-tdep.o, s390-tdep.o): Ditto. + (ns32k-tdep.o, mips-tdep.o, mcore-tdep.o): Ditto. + (m68k-tdep.o, ia64-tdep.o, i386-tdep.o): Ditto. + (h8300-tdep.o, cris-tdep.o, avr-tdep.o): Ditto. + (mn10300-tdep.o, xstormy16-tdep.o, disasm.o): Ditto. + (gdbarch_h): Remove $(dis_asm_h). + * disasm.c: Include "dis-asm.h". + (dis_asm_read_memory): Use "struct disassemble_info" instead of + corresponding typedef. + (dis_asm_memory_error, dump_insns, do_assembly_only): Ditto. + (gdb_disassemble_info, gdb_disassembly, gdb_print_insn): Ditto. + * gdbarch.sh: Do not include "dis-asm.h". + (struct disassemble_info): Declare opaque. + (TARGET_PRINT_INSN): Update declaration. + * gdbarch.h, gdbarch.c: Re-generate. + +2003-09-08 Andrew Cagney <cagney@redhat.com> + + * gdbarch.sh (DEPRECATED_CALL_DUMMY_ADDRESS): Rename + CALL_DUMMY_ADDRESS, change to a predicate. + * gdbarch.h, gdbarch.c: Re-generate. + * blockframe.c (deprecated_pc_in_call_dummy_at_entry_point): + Use either DEPRECATED_CALL_DUMMY_ADDRESS or entry_point_address. + * infcall.c (call_function_by_hand): Ditto. + * sparc-tdep.c (sparc_push_return_address): Ditto. + (sparc_gdbarch_init): Set deprecated_call_dummy_address. + * xstormy16-tdep.c (xstormy16_push_return_address): Replace + CALL_DUMMY_ADDRESS with entry_point_address. + * v850-tdep.c (v850_push_return_address): Ditto. + * s390-tdep.c (s390_push_return_address): Ditto. + * rs6000-tdep.c (ppc_push_return_address): Ditto. + * mn10300-tdep.c (mn10300_push_return_address): Ditto. + * mcore-tdep.c (mcore_push_return_address): Ditto. + * cris-tdep.c (cris_push_return_address): Ditto. + * arm-tdep.c (arm_push_return_address): Ditto. + +2003-09-08 Andrew Cagney <cagney@redhat.com> + + * dwarf2-frame.c (enum dwarf2_reg_rule): New, replace anonymous + enum. Add REG_UNSPECIFIED, rename REG_UNSAVED to REG_UNDEFINED + and REG_UNMODIFIED to REG_SAME_VALUE. + (execute_cfa_program): Update. + (dwarf2_frame_cache): Update. Initialize table to + REG_UNSPECIFIED, complain if CFI fails to specify a register's + location. + (dwarf2_frame_prev_register): Update. Handle REG_UNSPECIFIED. + +2003-09-08 Andrew Cagney <cagney@redhat.com> + + * gnu-nat.c: Remove "inline" function attribute. + * alpha-tdep.c, ppc-linux-tdep.c, macroexp.c: Ditto. + +2003-09-08 Kevin Buettner <kevinb@redhat.com> + + * config/frv/frv.mt (SIM_OBS, SIM): Enable simulator for FR-V + target. + +2003-09-08 Kevin Buettner <kevinb@redhat.com> + + * frv-tdep.c (frame-unwind.h, frame-base.h): Include. + (frame_extra_info): Rename this struct to frv_unwind_cache. + Delete fields ``fp_to_callers_sp_offset'' and ``lr_saved_on_stack''. + Add fields ``prev_sp'' and ``base''. + (frv_frame_chain, frv_frame_saved_pc, frv_frame_init_saved_regs) + (frv_saved_pc_after_call, frv_init_extra_frame_info) + (frv_push_return_address, frv_pop_frame, frv_pop_frame_regular): + Delete. + (frv_analyze_prologue): Add ``struct frv_unwind_cache *'' argument. + Revise all callers. Fill in the unwind cache argument and make + other adjustments to account for new frame mechanisms. + (frv_frame_unwind_cache, frv_frame_align, frv_unwind_pc) + (frv_frame_this_id, frv_frame_prev_register, frv_frame_sniffer) + (frv_frame_base_address, frv_unwind_dummy_id): New functions. + (frv_frame_unwind, frv_frame_base): New structs. + (frv_push_arguments): Change name to frv_push_dummy_call(). Add + additional arguments expected by this method and adjust function + body accordingly. + (frv_gdbarch_init): Remove calls to the following functions: + set_gdbarch_deprecated_init_frame_pc(), + set_gdbarch_deprecated_saved_pc_after_call(), + set_gdbarch_deprecated_frame_chain(), + set_gdbarch_deprecated_frame_saved_pc(), + set_gdbarch_deprecated_frame_init_saved_regs(), + set_gdbarch_deprecated_push_arguments(), + set_gdbarch_deprecated_push_return_address(), + set_gdbarch_deprecated_pop_frame(), + set_gdbarch_deprecated_call_dummy_words(), + set_gdbarch_deprecated_sizeof_call_dummy_words(), + set_gdbarch_deprecated_init_extra_frame_info(), + set_gdbarch_deprecated_dummy_write_sp(), and + set_gdbarch_deprecated_pc_in_call_dummy(). + Add calls to the following functions: + set_gdbarch_unwind_pc(), set_gdbarch_unwind_sp(), + set_gdbarch_frame_align(), frame_unwind_append_sniffer(), and + frame_base_set_default(). + * Makefile.in (frv-tdep.o): Update dependencies. + +2003-09-09 Mark Kettenis <kettenis@gnu.org> + + * dwarf2-frame.c (read_encoded_value): Add support for + DW_EH_PE_aligned encoding. + +2003-09-08 Daniel Jacobowitz <drow@mvista.com> + + * infrun.c (normal_stop): Don't print a message if the inferior + has exited. + +2003-09-08 Jim Blandy <jimb@redhat.com> + + * Makefile.in (dbxread.o): Note new dependency on $(gdb_assert_h). + * dbxread.c: #include "gdb_assert.h". + (read_dbx_symtab): If the objfile has no .data section, use the + section index for the .bss section instead. + +2003-09-08 Daniel Jacobowitz <drow@mvista.com> + + * frame.c (deprecated_safe_get_selected_frame): New function. + * frame.h (deprecated_safe_get_selected_frame): Add prototype. + * findvar.c (read_var_value): Call it. + +2003-09-08 Corinna Vinschen <vinschen@redhat.com> + + * Makefile.in (ALLDEPFILES): Add sh64-tdep.c. + (sh64-tdep.o): Add dependencies. + * configure.tgt: Add FIXME to sh-*-linux*. + * sh-tdep.c: Move sh64 support to sh64-tdep.c. + (sh_gdbarch_init): Always set correct sh_show_regs function + pointer. Call sh64_gdbarch_init() if machine type is sh5. + * sh-tdep.h: Move sh64 support to sh64-tdep.c. + * sh64-tdep.c: New file, containing all sh64 related code from + sh-tdep.c. + * config/sh/embed.mt (TDEPFILES): Add sh64-tdep.o. + * config/sh/linux.mt (TDEPFILES): Ditto. + * config/sh/nbsd.mt (TDEPFILES): Ditto. + * config/sh/tm-sh.h: Drop REGISTER_TYPE definition. + * config/sh/wince.mt (TDEPFILES): Ditto. + +2003-09-07 Daniel Jacobowitz <drow@mvista.com> + + * lin-lwp.c (detach_callback): Don't call stop_wait_callback. + (stop_wait_callback): Handle !lp->signalled also. + (lin_lwp_has_pending, flush_callback): New functions. + (lin_lwp_wait): Call flush_callback. + * linux-proc.c (linux_proc_add_line_to_sigset): New function. + (linux_proc_pending_signals): New function. + * linux-nat.h (linux_proc_pending_signals): Add prototype. + +2003-09-07 Daniel Jacobowitz <drow@mvista.com> + + From Nick Kelsey <nickk@ubicom.com>: + * infrun.c (handle_inferior_event): Check IN_SOLIB_RETURN_TRAMPOLINE + when the stop PC is at the beginning of a function also. + +2003-09-06 Daniel Jacobowitz <drow@mvista.com> + + * arm-linux-tdep.c (arm_linux_arm_be_breakpoint): New. + (arm_linux_init_abi): Use arm_linux_arm_be_breakpoint. + +2003-09-06 Mark Kettenis <kettenis@gnu.org> + + * sol-thread.c: Include "gdb_string.h". + +2003-09-03 Mark Kettenis <m.kettenis@osp.nl> + + * gcore.c: Reorder include files in alphabetical order. Include + "gdb_assert.h". Various coding style fixes. + (derive_stack_segment, derive_heap_segment): Replace check for + non-null BOTTOM and TOP with gdb_assert. + (derive_heap_segment): Replace check for successful creation of + ZERO with gdb_assert. + (make_mem_sec): Use bfd_section_lma to set OSEC->lma. + +2003-09-04 Andrew Cagney <cagney@redhat.com> + + * thread-db.c (verbose_dlsym): New function. + (thread_db_load): Use verbose_dlsym + (thread_db_new_objfile): Print that libthread_db was loaded, and + that thread debugging was enabled. + +2003-09-04 Andrew Cagney <cagney@redhat.com> + + * configure.tgt: Add "mips64*-*-*" target. Delete + mips64*el-*-ecoff*, mips64*el-*-elf*, mips*el-*-ecoff*, + mips*el-*-elf*, mips*-*-lnews*, mips*-*-sysv*, mips*-*-riscos*, + mips*-*-ecoff*, mips*-*-elf*, mips*-little-*, mips*-big-*, + mips*-dec-*, mips64*-big-*, mips64*vr*-*-elf*, mips64*-*-ecoff*, + mips*-sony-*, and mips64*-*-elf* targets. + * config/mips/embedl.mt: Delete file. + * config/mips/embedl64.mt: Delete file. + * config/mips/mips.mt: Delete file. + * config/mips/mips64.mt: Delete file. + * config/mips/tm-embed.h: Delete file. + * config/mips/embed.mt (TM_FILE): Set to "tm-mips.h". + * config/mips/embed64.mt: Delete out-of-date comment. + +2003-09-04 Andrew Cagney <cagney@redhat.com> + + * hppa-tdep.c (hppa_gdbarch_init): Set + "have_nonsteppable_watchpoint". + * config/pa/nm-hppah.h (HAVE_NONSTEPPABLE_WATCHPOINT): Delete. + * mips-tdep.c (mips_dump_tdep): Do not print + HAVE_NONSTEPPABLE_WATCHPOINT. + (mips_gdbarch_init): Set "have_nonsteppable_watchpoint". + * config/mips/tm-embed.h (HAVE_NONSTEPPABLE_WATCHPOINT): Delete. + * config/mips/nm-irix5.h (HAVE_NONSTEPPABLE_WATCHPOINT): Delete. + * config/mips/nm-irix4.h (HAVE_NONSTEPPABLE_WATCHPOINT): Delete. + +2003-09-04 Corinna Vinschen <vinschen@redhat.com> + + * breakpoint.c (watchpoint_check): Remove accidentally checked in + unused code. Add comment. + +2003-09-04 Corinna Vinschen <vinschen@redhat.com> + + * breakpoint.c (watchpoint_check): Check for pc being in an + epilogue if watchpoint frame couldn't be found. + +2003-09-04 Andrew Cagney <cagney@redhat.com> + + * Makefile.in: Re-generate all dependencies. + +2003-09-03 Andrew Cagney <cagney@redhat.com> + + * arch-utils.h (legacy_print_insn): Delete declaration. + * arch-utils.c (legacy_print_insn): Delete function. + * disasm.c (deprecated_tm_print_insn_info): Delete. + (_initialize_disasm): Delete function, contained code initializing + deprecated_tm_print_insn_info. + * gdbarch.sh (deprecated_tm_print_insn): Delete. + (deprecated_tm_print_insn_info): Delete. + (TARGET_PRINT_INSN): Do not provide a default. + * gdbarch.h, gdbarch.c: Re-generate. + +2003-09-03 Andrew Cagney <cagney@redhat.com> + + * disasm.c (fprintf_disasm): New function. + (gdb_disassemble_info): Call "init_disassemble_info", instead of + INIT_DISASSEMBLE_INFO_NO_ARCH. Do not initialize "insn_sets", + reverts 2003-08-14 change. + (_initialize_disasm): Call "init_disassemble_info", instead of + INIT_DISASSEMBLE_INFO_NO_ARCH. + +2003-09-03 Michael Snyder <msnyder@redhat.com> + + * config/djgpp/fnchange.lst: Fix up sim/frv/profile-fr*.[ch]. + +2003-09-03 Andrew Cagney <cagney@redhat.com> + + * config/rs6000/tm-rs6000.h (IBM6000_TARGET): Delete definition. + * config/rs6000/nm-rs6000.h (DEPRECATED_IBM6000_TARGET): Define. + * symfile.c (syms_from_objfile): Update. + (reread_symbols): `Update + * exec.c (exec_file_attach): Update. + (exec_file_attach): Update. + * config/powerpc/tm-nbsd.h: Delete #undef IBM6000_TARGET, revert + 2003-08-29 change. + * config/powerpc/tm-linux.h: Delete #undef IBM6000_TARGET. + +2003-09-03 Daniel Jacobowitz <drow@mvista.com> + + * arm-tdep.c: Include frame-unwind.h, frame-base.h, and + trad-frame.h. + (arm_get_cache): Delete macro. + (struct arm_prologue_cache): Update comments. Make saved_regs into + a trad_frame_saved_reg pointer. Remove unwound_pc; rename unwound_sp + to prev_sp. + (thumb_scan_prologue): Update for cache changes. Don't call + DEPRECATED_PC_IN_CALL_DUMMY. + (arm_scan_prologue): Update for cache changes. Take NEXT_FRAME + argument and use it in desperation search for our prologue. Do not + search past the specified PC. + (arm_make_prologue_cache): Simplify. + + (arm_prologue_this_id, arm_prologue_prev_register) + (arm_prologue_unwind, arm_prologue_unwind_sniffer) + (arm_normal_frame_base, arm_normal_base, arm_make_sigtramp_cache) + (arm_sigtramp_this_id, arm_sigtramp_prev_register) + (arm_sigtramp_unwind, arm_sigtramp_unwind_sniffer) + (arm_unwind_dummy_id, arm_unwind_pc, arm_unwind_sp): New. + + (arm_frame_chain_valid, arm_find_callers_reg) + (arm_frame_saved_pc, arm_read_fp, arm_frame_init_saved_regs) + (arm_pop_frame): Delete obsolete methods. + (arm_minimal_frame_chain, arm_minimal_frame_info): Delete. + + (arm_gdbarch_init): Update for new frame methods. Register prologue + and sigtramp unwinders. Set the default frame base method. + + * Makefile.in (arm-tdep.o): Update dependencies. + * varobj.c (find_frame_addr_in_frame_chain): Call + get_frame_base_address. + * std-regs.c (value_of_builtin_frame_fp_reg): Likewise. + +2003-09-03 Daniel Jacobowitz <drow@mvista.com> + + * arm-tdep.c (arm_minimal_frame_chain): Renamed from + arm_frame_chain. Take NEXT_FRAME and CACHE arguments. + Use the cache instead of DEPRECATED_FRAME_SAVED_PC. + (arm_minimal_frame_info): Renamed from arm_init_extra_frame_info. + Take NEXT_FRAME and CACHE arguments. Call + FRAMELESS_FUNCTION_INVOCATION instead of checking FROMLEAF argument. + Set unwound_pc in CACHE instead of modifying the frame argument. + Don't bother checking the frame type when looking for sigtramp + frames. + (arm_make_prologue_cache, arm_frame_chain) + (arm_init_extra_frame_info): New functions. + +2003-09-03 Daniel Jacobowitz <drow@mvista.com> + + * arm-tdep.c (arm_get_cache): Define. + (struct arm_prologue_cache): Renamed from frame_extra_info. Add + unwound_sp, unwound_pc, and saved_regs. + (thumb_scan_prologue): Take a cache instead of the frame. + (arm_scan_prologue): Likewise. + (arm_frame_chain): Create a temporary cache for arm_scan_prologue + instead of a temporary frame. + (arm_init_extra_frame_info): Allocate and use a cache. + (arm_frame_saved_pc, arm_pop_frame): Use the cache. + +2003-09-03 Andrew Cagney <cagney@redhat.com> + + * config/arm/wince.mt (TM_CLIBS): Replace WIN32LIBS. + * config/mips/wince.mt (TM_CLIBS): Ditto. + * config/sh/wince.mt (TM_CLIBS): Ditto. + * config/pa/hppa64.mt (TM_CLIBS): Delete. + * config/sparc/sp64.mt (CC): Delete. + +2003-09-03 Andrew Cagney <cagney@redhat.com> + + * defs.h: Do not include "arch-utils.h". + (GDB_MULTI_ARCH): If not defined, set to GDB_MULTI_ARCH_PARTIAL or + GDB_MULTI_ARCH_PURE. + * configure.in (GDB_MULTI_ARCH): Do not define. + * configure, config.in: Regenerate. + * configure.tgt: Do not set variable "gdb_multi_arch". + * config/s390/s390x.mt (GDB_MULTI_ARCH): Delete. + * config/s390/s390.mt (GDB_MULTI_ARCH): Delete. + * config/i386/x86-64linux.mt (GDB_MULTI_ARCH): Delete. + * config/v850/v850.mt (TM_FILE): Delete disabled definition. + * config/m68hc11/m68hc11.mt (TM_FILE): Delete definition. + * config/vax/tm-vax.h (GDB_MULTI_ARCH): Delete definition. + * config/sparc/tm-sparc.h (GDB_MULTI_ARCH): Delete definition. + * config/sparc/tm-sun4sol2.h (GDB_MULTI_ARCH): Delete definition. + * config/sparc/tm-nbsd.h (GDB_MULTI_ARCH): Delete definition. + * config/sparc/tm-linux.h (GDB_MULTI_ARCH): Delete definition. + * config/sparc/tm-sp64.h (GDB_MULTI_ARCH): Delete definition. + * config/pa/tm-hppa64.h (GDB_MULTI_ARCH): Delete definition. + * config/ns32k/tm-ns32k.h (GDB_MULTI_ARCH): Delete definition. + * config/m68k/tm-m68k.h (GDB_MULTI_ARCH): Delete definition. + * config/i386/tm-i386.h (GDB_MULTI_ARCH): Delete definition. + * config/h8300/tm-h8300.h (GDB_MULTI_ARCH): Delete definition. + * config/frv/tm-frv.h (GDB_MULTI_ARCH): Delete definition. + * config/alpha/tm-alpha.h (GDB_MULTI_ARCH): Delete definition. + +2003-08-30 Michael Chastain <mec@shout.net> + + * Makefile.in: Remove tm-hp300bsd.h, tm-hp300hpux.h. + * config/m68k/nm-hp300hpux.h: Delete. + * config/m68k/tm-hp300hpux.h: Delete. + * config/m68k/xm-hp300hpux.h: Delete. + * config/m68k/xm-hp300bsd.h: Delete. + * config/djgpp/fnchange.lst: Remove nm-hp300hpux.h, + tm-hp300hpux.h, xm-hp300hpux.h. + * somsolib.c: Remove comment about hp300 shared libraries. + +2003-08-31 Mark Kettenis <kettenis@gnu.org> + + * i386-linux-nat.c (ps_get_thread_area): Don't define as extern. + Only define PTRACE_GET_THREAD_AREA is not already defined. + Various style fixes in code and comments and some additional + spelling fixes in comments. Move after functions dealing with + debug registers. + * x86-64-linux-nat.c (ps_get_thread_area): Don't define as extern. + Fix coding-style. + + * alphafbsd-tdep.c (alphafbsd_sigcontext_addr): Use + frame_unwind_register_unsigned instead of + frame_unwind_unsigned_register. + +2003-08-30 Mark Kettenis <kettenis@gnu.org> + + * configure.in: Search for gethostbyname in libnsl. + * configure: Regenerated. + +2003-08-29 Mark Kettenis <kettenis@gnu.org> + + * configure.in: Remove redundant AC_MSG_RESULT in check for + uintptr_t in stdint.h. + * configure: Regenerated. + + * amd64-nat.h (struct regcache): Add opaque declaration. + + * i386-linux-tdep.h (I386_LINUX_NUM_REGS): New define. + * x86-64-linux-nat.c: Include "i386-linux-tdep.h" and "amd64.h". + Change "register array" to "register cache" in comments. + (x86_64_linux_gregset64_reg_offset): New variable. + (GETREGS_SUPPLIES): Remove macro. + (supply_gregset): Call amd64_supply_native_gregset instead of + x86_64_linux_supply_gregset. + (fill_gregset): Rename `regno' to `regnum'. Call + amd64_collect_native_gregset instead of x86_64_linux_fill_gregset. + (store_regs): Rename `regno' to `regnum'. + (store_fpregs): Rename `regno' to `regnum'. + (fetch_inferior_registers): Rename `regno' to `regnum'. Use + amd64_native_gregset_supplies_p instead of GREGSET_SUPPLIES. + Reorganize function a bit. + (store_inferior_registers): Rename `regno' to `regnum'. Use + amd64_native_gregset_supplies_p instead of GREGSET_SUPPLIES. + Reorganize function a bit. + (_initialize_x86_64_linux_nat): New function. + * config/i386/x86-64linux.mh. + +2003-08-29 Andrew Cagney <cagney@redhat.com> + + * config/mips/tm-embed.h (STOPPED_BY_WATCHPOINT): Delete macro. + (TARGET_CAN_USE_HARDWARE_WATCHPOINT): Delete macro. + (target_remove_watchpoint): Delete macro. + (target_insert_watchpoint): Delete macro. + (remote_mips_can_use_hardware_watchpoint): Delete declaration. + (remote_mips_stopped_by_watchpoint): Delete declaration. + (remote_mips_remove_watchpoint): Delete declaration. + (remote_mips_set_watchpoint): Delete declaration. + (TARGET_HAS_HARDWARE_WATCHPOINTS): Delete macro. + * remote-mips.c (_initialize_remote_mips): Set + "to_insert_watchpoint", "to_stopped_by_watchpoint", + "to_can_use_hardware_watchpoint", and "to_remove_watchpoint". + (mips_insert_watchpoint): Rename remote_mips_set_watchpoint. + (mips_remove_watchpoint): Rename remote_mips_remove_watchpoint. + (mips_stopped_by_watchpoint): Rename + remote_mips_stopped_by_watchpoint. + (mips_can_hardware_watchpoint): Rename + remote_mips_can_use_hardware_watchpoint, update function + signature. + +2003-08-29 Mark Kettenis <kettenis@gnu.org> + + * x86-64-linux-tdep.c (user_to_gdb_regmap): Remove USER_CS and + USER_DS. We haven't given them a register number yet. + + * amd64-nat.h: New file. + * amd64-nat.c: New file. + * amd64fbsd-nat.c: Include "amd64-nat.h". + (REG_ADDR, GETREGS_SUPPLIES): Remove macros. + (amd64fbsd32_r_reg_offset): New variable. + (supply_gregset): Simply call amd64_supply_native_gregset. + (fill_gregset): Rename `regno' to `regnum'. Simply call + amd64_collect_native_gregset. + (fill_fpregset): Rename `regno' to `regnum'. + (fetch_inferior_registers): Rename `regno' to `regnum'. Replace + usage of GETREGS_SUPPLIES with amd64_native_gregset_supplies_p. + Use `struct reg' and `struct fpreg' instead of `gregset_t' and + `fpregset_t'. Call amd64_supply_native_gregset instead of + supply_gregset. Call x86_64_supply_fxsave instead of + supply_fpregset. + (store_inferior_registers): Rename `regno' to `regnum'. Replace + usage of GETREGS_SUPPLIES with amd64_native_gregset_supplies_p. + Use `struct reg' and `struct fpreg' instead of `gregset_t' and + `fpregset_t'. Call amd64_collect_native_gregset instead of + fill_gregset. Call x86_64_collect_fxsave instead of + fill_fpregset. + (_initialize_am64fbsd_nat): Initialize + amd64_native_gregset32_reg_offset and + amd64_native_gregset64_reg_offset. + * config/i386/fbsd64.mh (NATDEPFILES): Add amd64-nat.o. + + * regcache.c (regcache_raw_supply): Don't assert that BUF isn't a + null pointer. Fix typo in comment. + + * regcache.c (supply_register): Reimplement to call + regcache_raw_supply. + (regcache_collect): Reimplement by calling regcache_raw_collect. + +2003-08-28 Mark Kettenis <kettenis@gnu.org> + + * regcache.c (register_buffer): Consitify first argument. + (regcache_raw_supply, regcache_raw_collect): New + functions. + +2003-08-28 Daniel Jacobowitz <drow@mvista.com> + + * config/powerpc/tm-nbsd.h: Undefine IBM6000_TARGET. Suggested + by Nathan J. Williams. + +2003-08-28 Daniel Jacobowitz <drow@mvista.com> + + * lin-lwp.c (wait_lwp): New function, copied from + stop_wait_callback. Clean up. + (stop_wait_callback): Use wait_lwp. + +2003-08-28 Andrew Cagney <cagney@redhat.com> + + * mips-tdep.c (gdb_print_insn_mips): Set the disassembler's + flavour and disassembler options. + (_initialize_mips_tdep): Do not set deprecated_tm_print_insn. + (mips_gdbarch_init): Set "print_insn". Delete initialization of + deprecated_tm_print_insn_info. + +2003-08-27 Andrew Cagney <cagney@redhat.com> + + * s390-tdep.c (s390_readinstruction): Delete "info" parameter. + Use target_read_memory. + (s390_get_frame_info): Update. Do not reference + deprecated_tm_print_insn_info. + (s390_check_function_end, s390_is_sigreturn): Ditto. + +2003-08-27 Andrew Cagney <cagney@redhat.com> + + * Makefile.in (cris-tdep.o): Update dependencies. + * cris-tdep.c: Include "gdb_assert.h". + (cris_gdbarch_init): Set print_insn. + (_initialize_cris_tdep): Do not set deprecated_tm_print_insn. + (cris_delayed_get_disassembler): Simplify, directly call the + disassembler returned by cris_get_disassembler. + * hppa-tdep.c (hppa_gdbarch_init): Set print_insn. + (_initialize_hppa_tdep): Do not set deprecated_tm_print_insn. + * ns32k-tdep.c (ns32k_gdbarch_init): Set print_insn. + (_initialize_ns32k_tdep): Do not set deprecated_tm_print_insn. + * mn10300-tdep.c (mn10300_gdbarch_init): Set print_insn. + (_initialize_mn10300_tdep): Do not set deprecated_tm_print_insn. + * mcore-tdep.c (mcore_gdbarch_init): Set print_insn. + (_initialize_mcore_tdep): Do not set deprecated_tm_print_insn. + * frv-tdep.c (frv_gdbarch_init): Set print_insn. + (_initialize_frv_tdep): Do not set deprecated_tm_print_insn. + * sparc-tdep.c (sparc_gdbarch_init): Set print_insn. + (gdb_print_insn_sparc): Delete function. + (_initialize_sparc_tdep): Do not set deprecated_tm_print_insn or + deprecated_tm_print_insn_info. + * v850-tdep.c (v850_gdbarch_init): Set print_insn. + (_initialize_v850_tdep): Do not set deprecated_tm_print_insn. + (v850_gdbarch_init): Do not set deprecated_tm_print_insn_info. + * xstormy16-tdep.c (xstormy16_gdbarch_init): Set print_insn. + (_initialize_xstormy16_tdep): Do not set deprecated_tm_print_insn. + * s390-tdep.c (gdb_print_insn_s390): Delete function. + (_initialize_s390_tdep): Do not set deprecated_tm_print_insn. + (s390_gdbarch_init): Set print_insn. + +2003-08-27 Andrew Cagney <cagney@redhat.com> + + * ppc-linux-tdep.c (ppc64_call_dummy_address): Delete function. + (ppc_linux_init_abi): For PPC64, do not set call_dummy_address. + * infcall.c (call_function_by_hand): Convert the entry point + address into a code address. + +2003-08-27 Andrew Cagney <cagney@redhat.com> + + * dsrec.c: Include "gdb_string.h". + * Makefile.in (dsrec.o): Update dependencies. + +2003-08-27 Michael Chastain <mec@shout.net> + + * config/djgpp/fnchange.lst: Add gdb/testsuite/gdb.mi/mi2-var-*. + +2003-08-27 Andrew Cagney <cagney@redhat.com> + + * alpha-osf1-tdep.c (alpha_call_dummy_address): Delete function. + (alpha_osf1_init_abi): Do not set call_dummy_address. + +2003-08-27 David Carlton <carlton@kealia.com> + + From Randolph Chung <tausq@debian.org>: + * linux-proc.c (linux_info_proc_cmd): rework the code so that it + compiles with -Wformat-nonliteral -Werror. + +2003-08-26 Jim Blandy <jimb@redhat.com> + + * solib-svr4.c (bfd_lookup_symbol): New SECT_FLAGS argument. + (enable_break): Pass SEC_CODE as the SECT_FLAGS argument to + bfd_lookup_symbol, since we only want symbols in code sections. + (look_for_base): Pass zero as the SECT_FLAGS argument to + bfd_lookup_symbol, since we're not concerned about which section + the symbol is in. + +2003-08-26 Jeff Johnston <jjohnstn@redhat.com> + + * ia64-tdep.c (examine_prologue): Only stop at predicated insns if + we are frameless or the return address register is already known. + +2003-08-26 Andrew Cagney <cagney@redhat.com> + + * i386-linux-nat.c (ps_get_thread_area): Make "desc" four "int"s + in size. Add comments. + +2003-08-26 Jeff Johnston <jjohnstn@redhat.com> + + * ia64-tdep.c (ia64_convert_from_func_addr): New function. + (ia64_gdbarch_init): Call set_gdbarch_convert_from_func_addr(). + +2003-08-26 Jason Merrill <jason@redhat.com> + + * dwarf2read.c (dwarf_attr_name): Move DW_AT_MIPS_linkage_name + case out of #ifdef MIPS block. + +2003-08-25 Daniel Jacobowitz <drow@mvista.com> + + PR java/1322 + * dwarf2-frame.c (dwarf2_frame_find_fde): Check whether any FDEs are + available before calling SECT_OFF_TEXT. + * PROBLEMS: Remove description of java/1322. + +2003-08-25 Jeff Johnston <jjohnstn@redhat.com> + + * ia64-tdep.c (pseudo_regs): New enum that lists gr32-gr127, p0-p63, + bof, and nat0-nat127 as pseudo-registers. + (ia64_frame_cache): New struct used to cache frame info. + (ia64_register_reggroup_p): New routine used to override default + register grouping so registers without names are still saved and + restored. + (ia64_dwarf_reg_to_regnum): New routine to map gr32-gr127 to their + pseudo values. + (ia64_pseudo_register_read): New routine to read pseudo-registers. + (ia64_pseudo_register_write): New routine to write pseudo-registers. + (ia64_alloc_frame_cache): New routine to create a new + ia64_frame_cache. + (examine_prologue): Change prototype to add next_frame pointer. + Assume frameless until otherwise proven. Verify that the cfm for + current frame matches the cfm that should occur for the prologues + alloc insn and if equal, mark as not frameless. At end of routine, + if not frameless, calculate registers for the previous frame and store + in the cache, if a cache is provided. + (ia64_skip_prologue): Use new prototype when calling examine_prologue + and pass 0 for next_frame. + (ia64_store_return_value): Change to use convert_typed_floating() + instead of calling ia64_convert_to_raw(). + (ia64_extract_return_value): Change to use convert_typed_floating() + instead of calling ia64_convert_to_virtual(). + (ia64_frame_cache): New routine to support new frame model. + (ia64_frame_this_id, ia64_frame_prev_register): Ditto. + (ia64_frame_sniffer): Ditto. + (ia64_sigtramp_frame_init_saved_regs): Ditto. + (ia64_sigtramp_frame_cache, ia64_sigtramp_frame_this_id): Ditto. + (ia64_sigtramp_frame_prev_register): Ditto. + (ia64_sigtramp_frame_sniffer): Ditto. + (ia64_frame_base_address): Ditto. + (ia64_extract_struct_value_address): Change to issue error message. + (ia64_frame_align): New routine to align sp. + (ia64_push_dummy_call): New routine based on ia64_push_arguments(). + (ia64_push_arguments): Removed. Logic moved to + ia64_push_dummy_call(). + (ia64_push_return_address): Ditto. + (ia64_unwind_dummy_id): New function. + (ia64_unwind_pc): Ditto. + (ia64_convert_register_p): Ditto. + (ia64_register_to_value): Ditto. + (ia64_value_to_register): Ditto. + (ia64_pop_frame, ia64_pop_frame_regular): Removed. + (ia64_register_byte, ia64_register_raw_size): Ditto. + (ia64_register_virtual_size, ia64_register_virtual_byte): Ditto. + (ia64_saved_pc_after_call): Ditto. + (ia64_frame_chain, ia64_frame_saved_pc): Ditto. + (ia64_frame_init_saved_regs, ia64_get_saved_register): Ditto. + (ia64_register_convertible, ia64_register_convert_to_virtual): Ditto. + (ia64_register_convert_to_raw): Ditto. + (ia64_store_struct_return, ia64_call_dummy_words): Ditto. + (ia64_init_extra_frame_info): Ditto. + (ia64_frame_args_address, ia64_frame_locals_address): Ditto. + (ia64_gdbarch_init): Remove registering of deprecated functions that + are no longer used. Add registration of new gdbarch functions. + Remove registering deprecated_write_sp. Replace + set_gdbarch_register_virtual_type() with set_gdbarch_register_type(). + Delete set_gdbarch_deprecated_register_convertible(), + set_gdbarch_deprecated_register_convert_to_virtual(), and + set_gdbarch_deprecated_register_convert_to_raw() calls. Remove + set_gdbarch_deprecated_register_size(), + set_gdbarch_deprecated_register_bytes(), + set_gdbarch_pcregnum(), + set_gdbarch_deprecated_register_byte(), + set_gdbarch_deprecated_register_raw_size(), + set_gdbarch_deprecated_max_register_raw_size(), + set_gdbarch_deprecated_register_virtual_size(), + and set_gdbarch_deprecated_max_register_virtual_size() calls. + Replace set_gdbarch_deprecated_extract_return_value() with + set_gdbarch_extract_return_value(). Remove calls to: + set_gdbarch_deprecated_saved_pc_after_call(); + set_gdbarch_deprecated_frame_chain(), + set_gdbarch_deprecated_frame_saved_pc(), + set_gdbarch_deprecated_frame_init_saved_regs(), + set_gdbarch_deprecated_get_saved_register(), + set_gdbarch_deprecated_call_dummy_words(), + set_gdbarch_deprecated_sizeof_call_dummy_words(), + set_gdbarch_deprecated_init_extra_frame_info(), + set_gdbarch_deprecated_frame_args_address(), + set_gdbarch_deprecated_frame_locals_address(), + and set_gdbarch_deprecated_dummy_write_sp(). + Add set_gdbarch_convert_register_p(), + set_gdbarch_register_to_value(), + set_gdbarch_value_to_register(), + set_gdbarch_push_dummy_call(), + set_gdbarch_frame_align(), + set_gdbarch_unwind_dummy_id(), + set_gdbarch_unwind_pc(), + frame_unwind_append_sniffer(), + frame_unwind_append_sniffer(), + and frame_base_set_default(). + +2003-08-25 Chris Demetriou <cgd@broadcom.com> + + * configure.tgt: Document need for special "mipsisa64" handling. + (mipsisa64*-*-linux64): Handle as target linux64. + (mipsisa64*-*-*): Handle as target embed64. + +2003-08-18 Michael Chastain <mec@shout.net> + + * PROBLEMS: Document pr gdb/1322, the Java anonymous + objfile bug. + +2003-08-24 Mark Kettenis <kettenis@gnu.org> + + * i387-tdep.h: Update copyright date. + (I387_SIZEOF_FSAVE, I387_SIZEOF_FXSAVE): New defines. + + * linux-proc.c (linux_proc_xfer_memory): Remove comment about + CFLAGS games to reflect reality. + +2003-08-24 Andrew Cagney <cagney@redhat.com> + + * arm-tdep.c (_initialize_arm_tdep): Simplify by assuming + GDB_MULTI_ARCH is always non-zero. + * osabi.c (_initialize_gdb_osabi): Ditto. + (gdbarch_init_osabi): Ditto. + * sparc-tdep.c: Ditto for #if code. + +2003-08-23 Mark Kettenis <kettenis@gnu.org> + + * x86-64-tdep.c (x86_64_supply_fxsave): Add `regnum' argument. + Update comments. + * x86-64-tdep.h (x86_64_supply_fxsave): Adjust prototype. Update + comments. + * x86-64-linux-tdep.c (fetch_core_registers): Adjust call to + x86_64_supply_fxsave. + * x86-64-linux-nat.c (supply_fpregset): Adjust call to + x86_64_supply_fxsave. + * amd64fbsd-nat.c (supply_fpregset): Adjust call to + x86_64_supply_fxsave. + +2003-08-23 Andreas Jaeger <aj@suse.de> + + * x86-64-tdep.c (x86_64_supply_fxsave): Adjust call to + i387_supply_fxsave. + +2003-08-23 Mark Kettenis <kettenis@gnu.org> + + * go32-nat.c (fetch_register): Call i387_supply_fsave instead of + i387_supply_register. + (go32_fetch_registers): Adjust call to i387_supply_fsave. + * i386nbsd-tdep.c (fetch_core_registers): Adjust call to + i387_supply_fsave. + (fetch_elfcore_registers): Adjust call to i387_supply_fsave and + i387_supply_fxsave. + * i386obsd-tdep.c (fetch_core_registers): Adjust call to + i387_supply_fsave. + * i386bsd-nat.c (supply_fpregset): Adjust call to + i387_supply_fsave. + (fetch_inferior_registers): Remove extraneous whitespace. Adjust + call to i387_supply_fxsave. Call i387_supply_fsave instead of + supply_fpregset. + (store_inferior_registers): Remove extraneous whitespace. Call + i387_fill_fsave instead of fill_fpregset. + * i386gnu-nat.c (fetch_fpregs): Adjust call to i387_supply_fsave. + (supply_fpregset): Likewise. + * i386v4-nat.c (supply_fpregset): Adjust call to + i387_supply_fsave. + * i386-interix-nat.c (supply_fpregset): Adjust call to + i387_supply_fsave. + * i386-linux-nat.c (supply_fpregset): Adjust call to + i387_supply_fsave. + (supply_fpxregset): Adjust call to i387_adjust_fxsave. + * i386-nto-tdep.c (i386nto_supply_fpregset): Adjust calls to + i387supply_fsave and i387_supply_fxsave. + * i387-tdep.c (i387_supply_fsave): Add `regnum' argument. + Incorporate code from `i387_supply_register. + (i387_supply_register): Remove. + (i387_supply_fxsave): Add `regnum' argument. + Update comments. + * i387-tdep.h (i387_supply_fsave, i387_supply_fsxave): Adjust + prototype. + (i387_supply_register): remove prototype. + Update comments. + +2003-08-22 Michael Chastain <mec@shout.net> + + * config/djgpp/fnchange.lst: Remove gdb/testsuite/gdb.c++/*. + Add lines for files in gdb/testsuite/gdb.cp/* that are + still not 8.3 unique. + +2003-08-22 Daniel Jacobowitz <drow@mvista.com> + + * gnu-v3-abi.c (gnuv3_baseclass_offset): Check whether + TYPE_VPTR_FIELDNO is valid. + +2003-08-19 Mark Kettenis <kettenis@gnu.org> + + * utils.c (set_width_command): Remove prototypes. + (set_screen_size): New prototype. + (init_page_info): Simplify by fetching the screen size from + Readline. Call set_screen_size. + (set_screen_size): New function. + (set_width): Add missing whitespace in comment. + (set_width_command): Call set_screen_size. + (set_height_command): New function. + (initialize_utils): Fix formatting. Make "set height" command + call set_height_command. Remove redundant code that turns off + pagination if output isn't a terminal. Remove redundant call to + set_width_command. + +2003-08-22 Mark Kettenis <kettenis@gnu.org> + + * sparc64-tdep.h (sparc64_regnum): Fix comment. + (sparc64_supply_rwindow, sparc64_fill_rwindow): Remove prototypes. + (sparc_supply_rwindow, sparc_fill_rwindow): New prototypes. + * sparc64-tdep.c (sparc64_pseudo_register_read): Add missing + `case' keyword. + (sparc64_register_info): Give the reister with number + SPARC64_STATE_REGNUM a name. + (sparc64_pseudo_register_write): Add support for %cwp, %pstate, + %asi and %ccr. + (sparc64_push_dummy_call): Take BIAS into account when checking + stcak alignment. + (sparc_software_single_step): Remove assertions that check whether + NPC and NNPC were zero. + (sparc_supply_rwindow): Make public. Merge functionality with + sparc64_supply_rwindow. + (sparc_fill_rwindow): Make public. Merge functionality with + sparc64_fill_rwindow. + (sparc64_supply_rwindow, sparc64_fill_rwindow): Remove. + * sparc64fbsd-nat.c (_initialize_sparc64fbsd_nat): Set + SPARCBSD_FPREG_SUPPLIES_P to sparc64fbsd_fpreg_supplies_p. + * sparc64fbsd-tdep.c (sparc64fbsd_supply_reg): Call + sparc_supply_rwindow instead of sparc64_supply_rwindow. + + * reggroups.c: Add whitespace after declarations of local + variables in functions. + +2003-08-21 Michael Chastain <mec@shout.net> + + * gdbtypes.h: Change array bound type from an int to enum. + +2003-08-21 Andrew Cagney <cagney@redhat.com> + + * config/sparc/tm-sp64.h: Delete #if !GDB_MULTI_ARCH and #if 0 code. + * config/sparc/tm-sparc.h: Ditto. + * config/arm/tm-arm.h (GDB_MULTI_ARCH): Define GDB_MULTI_ARCH + unconditionally. + * config/pa/tm-hppa.h (GDB_MULTI_ARCH): Ditto. + +2003-07-13 Mark Kettenis <kettenis@gnu.org> + + * objfiles.h (struct objfile): Add memebers `data' and `num_data'. + (register_objfile_data, set_objfile_data, objfile_data): New + prototypes. + * objfiles.c (objfile_alloc_data, objfile_free_data): New + prototypes. + (allocate_objfile): Call objfile_alloc_data. + (free_objfile): Call objfile_free_data. + (struct objfile_data): New. + (struct objfile_data_registration): New. + (struct objfile_data_registry): New. + (objfile_data_registry): New variable. + (register_objfile_data): New function. + (objfile_alloc_data, objfile_free_data): New functions. + (set_objfile_data, objfile_data): New functions. + * dwarf2-frame.c (dwarf2_frame_data): New variable. + (dwarf2_frame_find_fde, add_fde): Use new per-objfile data mechanism. + (_initialize_dwarf2_frame): New function and prototype. + +2003-08-21 Andrew Cagney <cagney@redhat.com> + + * sh3-rom.c (sh3_open, sh3e_open): Use gdbarch_update_p to select + a specific architecture. + * arch-utils.h (set_architecture_from_arch_mach): Delete + declaration. + (target_architecture_hook): Delete declaration. + * arch-utils.c: Delete non GDB_MULTI_ARCH includes. + (default_float_format): Assume GDB_MULTI_ARCH. + (default_double_format): Assume GDB_MULTI_ARCH. + (set_endian_from_file): Delete function. + (arch_ok): Delete function. + (set_arch): Delete function. + (set_architecture_from_arch_mach): Delete function. + (set_architecture_from_file): Delete function. + (set_architecture): Assume GDB_MULTI_ARCH. + (set_gdbarch_from_file): Assume GDB_MULTI_ARCH. + +2003-08-21 Mark Kettenis <kettenis@gnu.org> + + Rewrite FreeBSD/sparc64 native configuration. + * sparcbsd-nat.c, sparcbsd-nat.h: New files. + * sparc64fbsd-nat.c: New file. + * sparc64fbsd-tdep.c: New file. + * sparc64-tdep.c sparc64-tdep.h: New files. + * Makefile.in (sparcbsd-nat.o, sparc64fbsd-nat.o, sparc64-tdep.o, + sparc64fbsd-tdep.o): New dependencies. + (SFILES): Add sparcbsd-nat.c, sparc64fbsd-nat.c, sparc64-tdep.c + and sparc64fbsd-tdep.c. + (sparc64_tdep_h, sparcbsd_nat_h): New variables. + * config/sparc/fbsd.mh: Remove copyright notice. + (NATDEPFILES): Remove sparc-nat.o, add sparc64fbsd-nat.o and + sparcbsd-nat.o. + * config/sparc/fbsd.mt: Remove copyright notice. + (TDEPFILES): Remove sparc-tdep.o, solib.o solib-svr4.o, + solib-legacy.o. Add sparc64-tdep.o and sparc64fbsd-tdep.o. + * config/sparc/nm-fbsd.h: Don't include "elf/common.h". + (SVR4_SHARED_LIBS, PTRACE_GETREGS, PTRACE_SETREGS, + PTRACE_GETFPREGS, PTRACE_SETFPREGS, GDB_GREGSET_T, GDB_FPREGSET_T, + regs, r_g1, r_ps, r_pc, r_npc, r_y, FPU_FSR_TYPE, fp_status, fpu, + fpu_regs, fp_fr, fpu_fsr, Fpu_fsr): Remove defines. + * config/sparc/tm-fbsd.h: Don't include "solib.h" and + "sparc/tm-sp64.h". + (SVR4_SHARED_LIBS, START_INFERIOR_TRAPS_EXPECTED): Remove defines. + (GDB_MULTI_ARCH): Define to GDB_MULTI_ARCH_TM. + +2003-08-21 Michael Chastain <mec@shout.net> + + * symtab.h: Add doco on the space critical structures and + some measurements of space usage. + +2003-08-21 Michael Snyder <msnyder@redhat.com> + + * tracepoint.c (trace_dump_command): Trace break address + is subject to DECR_PC_AFTER_BREAK. + (set_traceframe_context): Make "trace_line" an int. + Fixes suggested by Mark Newman <mark.newman@lmco.com> + +2003-08-20 Michael Snyder <msnyder@redhat.com> + + * sh-tdep.h (struct gdbarch_tdep): New member FLOAT_ARGLAST_REG. + * sh-tdep.c (sh_gdbarch_init): For sh2e, sh3e, and sh4, set + FLOAT_ARG0_REGNUM and FLOAT_ARGLAST_REGNUM, to be used for + argument passing. + (sh_push_dummy_call_fpu, sh_push_dummy_call_nofpu): New + functions, replace sh_push_dummy_call. + (sh_gdbarch_init): Set push_dummy_call to one of new methods. + +2003-08-20 Michael Chastain <mec@shout.net> + + * gdbtypes.h (struct main_type): Rearrange to save space. + +2003-08-20 Michael Snyder <msnyder@redhat.com> + + * trad-frame.c: Comment typo fix. + +2003-08-20 Michael Snyder <msnyder@redhat.com> + Kevin Buettner <kevinb@redhat.com> + + * frv-tdep.c (gdb_string.h, frame.h, trad-frame.h): Include. + (frv_frame_init_saved_regs): Add declaration. + (frame_extra_info): Add new field ``saved_regs''. + (frv_frame_chain, frv_frame_saved_pc, frv_analyze_prologue) + (frv_skip_prologue, frv_init_extra_frame_info, frv_pop_frame_regular): + Update frame related code. + (frv_extract_struct_value_address): Adjust formatting. + * Makefile.in (frv-tdep.o): Update dependencies. + * config/frv/tm-frv.h (target_insert_watchpoint) + (target_remove_watchpoint, target_insert_hw_breakpoint) + (target_remove_hw_breakpoint): Delete these macros. + (remote_insert_watchpoint, remote_remove_watchpoint) + (remote_insert_hw_watchpoint, remote_remove_hw_watchpoint): Remove + these declarations. + +2003-08-20 Michael Chastain <mec@shout.net> + + * defs.h (ENUM_BITFIELD): New macro. + * symtab.h (ENUM_BITFIELD): Use it. + (BYTE_BITFIELD): Remove old macro, which was already disabled. + +2003-08-19 Shrinivas Atre <shrinivasa@kpitcummins.com> + + * MAINTAINERS (write after approval): Add myself. + +2003-08-18 Andrew Cagney <cagney@redhat.com> + + * gdbarch.sh (FRAME_RED_ZONE_SIZE): New architecture method. + * gdbarch.h, gdbarch.c: Re-generate. + * infcall.c (call_function_by_hand): Adjust the SP by + frame_red_zone_size before allocating any stack space. + * rs6000-tdep.c (rs6000_gdbarch_init): Set "frame_red_zone_size". + * x86-64-tdep.c (x86_64_frame_align): New function. + (x86_64_init_abi): Set "frame_red_zone_size" and "frame_align". + + * x86-64-tdep.c (x86_64_push_arguments): Revert 2003-08-07 change. + Remove code adjusting SP so that it skips over the Red Zone. + +2003-08-18 Mark Kettenis <kettenis@gnu.org> + + * NEWS (New native configurations): Mention FreeBSD/amd64. + +2003-08-18 Andrew Cagney <cagney@redhat.com> + + * m68hc11-tdep.c (m68hc11_gdbarch_init): Do not set + "dwarf2_build_frame_info". Append "m68k_frame_sniffer" instead of + "m68k_frame_p". + (m68hc11_frame_sniffer): Replace "m68hc11_frame_p". + +2003-08-18 Mark Kettenis <kettenis@gnu.org> + + * x86-64-tdep.c (x86_64_dwarf_regmap): Remove trailing whitespace. + +2003-08-18 Michal Ludvig <mludvig@suse.cz> + + * config/i386/nm-x86-64linux.h (LINUX_CHILD_POST_STARTUP_INFERIOR): + Define. + * i386-linux-nat.c: Include "linux-nat.h". + (child_post_startup_inferior): New function. + +2003-08-18 Mark Kettenis <kettenis@gnu.org> + + * i386-tdep.c (i386_analyze_register_saves): Handle register saves + at the start of a frameless function. This probably fixes PR + backtrace/1338. + +2003-08-17 Michael Chastain <mec@shout.net> + + * symfile.c (find_sym_fns): Remove special case for apollo target. + +2003-08-17 Daniel Jacobowitz <drow@mvista.com> + + * linux-nat.c (PTRACE_O_TRACEVFORKDONE, PTRACE_O_TRACEEXIT): Define. + (PTRACE_EVENT_VFORKDONE, PTRACE_EVENT_EXIT): Define. + (linux_parent_pid, linux_supports_tracevforkdone_flag): New variable. + (linux_test_for_tracefork): Set linux_supports_tracevforkdone_flag. + (linux_supports_tracevforkdone): New function. + (linux_enable_event_reporting): Enable TRACEVFORK, TRACEEXEC, and + TRACEVFORKDONE. + (child_follow_fork): Handle vfork. + (linux_handle_extended_wait): Likewise. Also handle exec. + (child_insert_vfork_catchpoint, child_insert_exec_catchpoint): Enable. + * NEWS: Mention fork tracing. + +2003-08-17 Daniel Jacobowitz <drow@mvista.com> + + * lin-lwp.c (child_wait): Call linux_record_stopped_pid. + +2003-08-17 Daniel Jacobowitz <drow@mvista.com> + + * Makefile.in (i386-linux-nat.o): Update dependencies. + * config/i386/nm-linux.h (LINUX_CHILD_POST_STARTUP_INFERIOR): Define. + * config/nm-linux.h (CHILD_POST_STARTUP_INFERIOR, CHILD_POST_ATTACH) + (CHILD_FOLLOW_FORK, KILL_INFERIOR): Define. + * i386-linux-nat.c: Include "linux-nat.h". + (child_post_startup_inferior): New function. + * i386-nat.c (child_post_startup_inferior): Wrap in #ifdef. + * infptrace.c (kill_inferior): Wrap in #ifdef. + * lin-lwp.c (lin_lwp_attach_lwp): Call child_post_attach after + attaching to each LWP. + (child_wait, lin_lwp_wait): Call linux_handle_extended_wait. + (init_lin_lwp_ops): Fill in some more operations. + * linux-nat.h (linux_enable_event_reporting) + (linux_handle_extended_wait, linux_child_post_startup_inferior): New + prototypes. + * linux-nat.c (linux_enable_event_reporting): New function. + (child_post_attach, linux_child_post_startup_inferior) + (child_post_startup_inferior, child_follow_fork) + (linux_handle_extended_wait, kill_inferior): New functions. + +2003-08-16 Andrew Cagney <cagney@redhat.com> + + * gdbarch.sh: Delete all #if not GDB_MULTI_ARCH code. + * gdbarch.h, gdbarch.c: Re-generate. + +2003-08-16 Mark Kettenis <kettenis@gnu.org> + + * config/alpha/nm-fbsd.h (SVR4_SHARED_LIBS): Remove define. + +2003-08-16 Andrew Cagney <cagney@redhat.com> + + * NEWS: Mention that "set prompt-escape-char" was deleted. + * top.c (get_prompt_1): Delete function. + (gdb_prompt_escape): + (init_main): Do not clear "gdb_prompt_escape". Delete "set + prompt-escape-char" command. + (MAX_PROMPT_SIZE): Delete macro. + (get_prompt): Simplify, do not call get_prompt_1. + +2003-08-16 Andrew Cagney <cagney@redhat.com> + + * Makefile.in (printcmd.o, valprint.o): Do not try to build with + -Werror. -Wformat-nonliteral problems. + +2003-08-15 J. Brobecker <brobecker@gnat.com> + + Further multiarching work mostly for hppa64-*-hpux11: + * hppa-tdep.h: New file. + * hppa-tdep.c: #include hppa-tdep.c. + (hppa32_num_regs): Renamed from hppa_num_regs. + (hppa64_num_regs): New constant. + (hppa64_call_dummy_breakpoint_offset): New constant. + (hppa32_call_dummy_length): New constant. + (hppa64_call_dummy_length): New constant. + (hppa32_stack_align): Make name 32bit explicit. + (hppa32_register_virtual_type): Likewise. + (hppa32_extract_return_value): Likewise. + (hppa32_use_struct_convention): Likewise. + (hppa32_store_return_value): Likewise. + (hppa64_register_virtual_type): New function. + (hppa64_extract_return_value): New function. + (hppa64_use_struct_convention): New function. + (hppa64_store_return_value): New function. + (hppa_frame_locals_address): Remove declaration, function does + not exist anymore. + (hppa_register_byte): Add support for PA64 ABI. + (hppa_gdbarch_init): Add support for PA64 ABI. + * hppa-hpux-tdep.c (hppa32_hpux_frame_saved_pc_in_sigtramp): + Make name 32bit explicit. + (hppa32_hpux_frame_base_before_sigtramp): Likewise. + (hppa32_hpux_frame_find_saved_regs_in_sigtramp): Likewise. + (hppa64_hpux_frame_saved_pc_in_sigtramp): New function. + (hppa64_hpux_frame_base_before_sigtramp): New function. + (hppa64_hpux_frame_find_saved_regs_in_sigtramp): New function. + * config/pa/tm-hppa64.h: Remove macros that are no longer + necessary now that the gdbarch vector is properly setup. + Transform some macros into function calls. Some minor cleanup. + * config/pa/tm-hppah.h: Update function calls in macros + following the function renaming in hppa-hpux-tdep.c. + * Makefile.in (hppa_tdep_h): New variable. + (hppa-tdep.o): Add dependency over hppa_tdep_h. + +2003-08-14 Michael Snyder <msnyder@redhat.com> + + * disasm.c (gdb_disassemble_info): Set info->insn_sets to zero. + +2003-08-13 J. Brobecker <brobecker@gnat.com> + + * hppa-hpux-tdep.c (_initialize_hppa_hpux_tdep): Use the correct + bfd arch_info when registering the GDB_OSABI_HPUX_ELF initialization + routine. + +2003-08-13 Michael Snyder <msnyder@redhat.com> + + * frv-tdep.c (frv_push_arguments): Use deprecated ftype. + (frv_saved_pc_after_call): Use deprecated ftype. + (stupid_useless_init_extra_frame_info): Remove orphan prototype. + (frv_remote_translate_xfer_address): Remove. + (frv_gdbarch_init): Use generic_remote_translate_xfer_address. + +2003-08-13 J. Brobecker <brobecker@gnat.com> + + * hppa-tdep.c (hppa_gdbarch_init): Perform the ABI-specific gdbarch + initialization after the common gdbarch initialization, not before. + +2003-08-13 J. Brobecker <brobecker@gnat.com> + + * config/pa/tm-hppa64.h (HPUX_1100): Remove, not used. + (ADDR_BITS_REMOVE): Remove, redundant. + +2003-08-13 J. Brobecker <brobecker@gnat.com> + + * hppa-tdep.c (hppa_gdbarch_init): Set the addr_bits_remove + gdbarch method to clear the 2 low bits of text addresses. + +2003-08-12 Andrew Cagney <cagney@redhat.com> + + * Makefile.in (dsrec.o): Update dependencies. + * dsrec.c: Include "gdb_assert.h". + (make_srec): Use snprintf instead of sprintf, use a literal format + string. + +2003-08-12 Andrew Cagney <cagney@redhat.com> + + * frame.c (deprecated_frame_xmalloc): Use XMALLOC, instead of + FRAME_OBSTACK_ZALLOC. + +2003-08-12 Kevin Buettner <kevinb@redhat.com> + + * i386-tdep.c (i386_gdbarch_init): Enable default support for + SSE registers. + +2003-08-10 Mark Kettenis <kettenis@gnu.org> + + * x86-64-tdep.h (amd64fbsd_sigtramp_start, amd64fbsd_sigtramp_end, + amd64fbsd_sc_reg_offset): Add extern declarations. + * amd64fbsd-nat.c (_initialize_am64fbsd_nat): Remove extern + declarations. + +2003-08-11 Ben Elliston <bje@wasabisystems.com> + + * MAINTAINERS (write after approval): Update my mail address. + +2003-08-10 Andrew Cagney <cagney@redhat.com> + + * Makefile.in (monitor.o): Do not build monitor.c with -Werror. + +2003-08-10 Mark Kettenis <kettenis@gnu.org> + + * i386-tdep.h (i386fbsd_sigtramp_start, i386fbsd_sigtramp_end, + i386obsd_sigtramp_start, i386obsd_sigtramp_end, + i386fbsd4_sc_reg_offset, i386fbsd_sc_reg_offset, + i386nbsd_sc_reg_offset, i386obsd_sc_reg_offset, + i386bsd_sc_reg_offset): Add extern declarations. + * i386obsd-nat.c: Include "i386-tdep.h" + (_initialize_i386obsd_nat): Remove extern declarations. + * i386fbsd-nat.c (_initialize_i386fbsd_nat): Remove extern + declarations. + * i386bsd-nat.c (_initialize_i386bsd_nat): Remove extern + declarations. + + * i386-tdep.c (i386_register_to_value): Use get_frame_register + instead of frame_read_register. + (i386_fetch_pointer_argument): Use get_frame_register_unsigned + instead of frame_read_register. Use I386_ESP_REGNUM instead of + SP_REGNUM. + (i386_frame_prev_register): Use frame_unwind_register_unsigned + instead of frame_unwind_unsigned_register. Use + I386_EFLAGS_REGISTER instead of PS_REGNUM. + (i386_get_longjmp_target): Use regcache_read_unsigned_register + instead of read_register. Use builtin_type_void_data_ptr instead + of builtin_type_void_func_ptr when extracting the address of the + jmp_buf. + (i386_extract_return_value, i386_store_return_value, + i386_pseudo_register_read, i386_pseudo_register_write): Use + register_size instead REGISTER_RAW_SIZE. + +2003-08-10 Andrew Cagney <cagney@redhat.com> + + * infcall.c (call_function_by_hand): Use xstrprintf instead of + sprintf. Make "name" constant. + +2003-08-10 Mark Kettenis <kettenis@gnu.org> + + * i387-tdep.c (i387_register_to_value): Use get_frame_register + instead of frame_read_register. + (i387_print_float_info): Use get_frame_register and + get_frame_register_unsigned instead of frame_register_read. + + * i386fbsd-nat.c: Include "i386-tdep.h". + (child_resume): Make `eflags' an ULONGEST. Use + regcache_cooked_read_unsigned and regcache_cooked_write_unsigned + instead of register_read and register_write. + + * i386bsd-nat.c (fetch_inferior_registers, + store_inferior_registers): Don't use && at the end of a line. + (_initialize_i386bsd_nat): Fix typo. + + * frame.c (_initialize_frame): Add missing backslash. + + From Peter Schauer (Peter.Schauer@regent.e-technik.tu-muenchen.de): + * sol-thread.c (sol_thread_store_registers): Use regcache_collect + and supply_register instead of manipulating the register buffer + directly. + + From Peter Schauer (Peter.Schauer@regent.e-technik.tu-muenchen.de): + * config/i386/nm-i386sol2.h + (TARGET_REGION_SIZE_OK_FOR_HW_WATCHPOINT): Define to one. + + Based on a patch from Michael Elizabeth Chastain (mec@shout.net): + * i386-tdep.c (i386_analyze_frame_setup): Recognize more + instructions that GCC likes to mingle into the prologue. Fixes + gdb/1253 and gdb/1255. + +2003-08-09 Andrew Cagney <cagney@redhat.com> + + Fix GDB PR cli/926. + * cli/cli-decode.c (add_setshow_uinteger_cmd): New function. + * command.h (add_setshow_uinteger_cmd): Declare. + * frame.c (set_backtrace_cmd): New function. + (show_backtrace_cmd): New function. + * frame.c (_initialize_frame): Replace "set/show + backtrace-below-main" with "set/show backtrace past-main". Add + command "set/show backtrace limit". + (backtrace_past_main): Rename "backtrace_below_main". + (backtrace_limit): New variable. + (get_prev_frame): Update. Check the backtrace_limit. + +2003-08-09 Andrew Cagney <cagney@redhat.com> + + * defs.h (xstrprintf): Declare. + * utils.c (xstrprintf): New function. + * breakpoint.c (insert_breakpoints): Replace sprintf and + non-literal format strings, with xstrprintf and cleanups. + (delete_breakpoint,breakpoint_re_set): Ditto. + (commands_command, insert_breakpoints): Ditto. + (bpstat_stop_status, break_at_finish_at_depth_command_1): Ditto. + (break_at_finish_command_1): Ditto. + +2003-08-09 Andrew Cagney <cagney@redhat.com> + + * MAINTAINERS (language support): List Adam Fedor as Objective C + maintainer. + +2003-08-08 J. Brobecker <brobecker@gnat.com> + + * NEWS (Multi-arched targets): Document that all hppa-hpux targets + are now multiarched. + +2003-08-08 J. Brobecker <brobecker@gnat.com> + + * config/pa/tm-hppa64.h: Remove lots of macros that are no + longer necessary now that hppa64 is partially multiarch'ed. + +2003-08-08 Andrew Cagney <cagney@redhat.com> + + * interps.c (interp_set): Check for a NULL "old_interp". + +2003-08-08 H.J. Lu <hongjiu.lu@intel.com> + + * Makefile.in (FLAGS_TO_PASS): Add DESTDIR. + (install-only): Support DESTDIR. + (uninstall): Likewise. + (install-gdbtk): Likewise. + +2003-08-08 Elena Zannoni <ezannoni@redhat.com> + + * symtab.c (lookup_symbol_aux): Make sure that is_a_field_of_this + contains something meaningful at all times. + +Fri Aug 8 00:28:46 UTC 2003 Brendan Conoboy <blc@redhat.com> + + * configure.host: Set gdb_host_cpu=arm when host_cpu=xscale. + +Fri Aug 8 00:28:38 UTC 2003 Brendan Conoboy <blc@redhat.com> + + * MAINTAINERS (write after approval): Added self. + +2003-08-07 Andrew Cagney <cagney@redhat.com> + + * inferior.h (AT_SYMBOL): Define. + * blockframe.c (inside_entry_file): Check for AT_SYMBOL. + * infcall.c (call_function_by_hand): Add code to handle AT_SYMBOL. + * mips-tdep.c (mips_call_dummy_address): Delete function. + (mips_gdbarch_init): Set call_dummy_location to AT_SYMBOL, do not + set call_dummy_address. + +2003-08-07 Andrew Cagney <cagney@redhat.com> + + * language.c (op_error): Delete function. + (binop_type_check): Delete function. + * language.h (type_op_error, range_op_error): Delete macros. + (op_error): Delete declaration. + +2003-08-07 Andrew Cagney <cagney@redhat.com> + + * interps.h (INTERP_MI2, INTERP_MI3): Define. + +2003-08-07 Michal Ludvig <mludvig@suse.cz> + + * x86-64-tdep.c (x86_64_dwarf_regmap): Correct register numbers. + (x86_64_push_arguments): Skip the red zone. + +2003-08-05 Andrew Cagney <cagney@redhat.com> + + * reggroups.c (reggroup_next): Check for the final entry. + +2003-08-04 Andrew Cagney <cagney@redhat.com> + + * monitor.h (monitor_dump_reg_block): Remove ATTR_FORMAT. + * cli/cli-script.c (define_command): Call query directly, instead + of passing it a buffer. + * ocd.c (ocd_error): Pass error a constant format string. + * remote-mips.c (mips_error): Use fputs_filtered. + + * solib-svr4.c (_initialize_svr4_solib): Update + register_gdbarch_data call. + * mips-linux-tdep.c (_initialize_mips_linux_tdep): Ditto. + + * gdbarch.sh (gdbarch_data_free_ftype): Delete declaration. + (register_gdbarch_data): Delete "free" parameter. Update + comments. + * gdbarch.h, gdbarch.c: Re-generate. + * reggroups.c (_initialize_reggroup): Update. + * gnu-v3-abi.c (init_gnuv3_ops): Update. + * frame-base.c (_initialize_frame_base): Update. + * frame-unwind.c (_initialize_frame_unwind): Update. + * user-regs.c (_initialize_user_regs): Update. + * remote.c (_initialize_remote): Update. + * regcache.c (_initialize_regcache): Update. + + * regcache.c (xfree_regcache_descr): Delete function. + (_initialize_regcache): Update call to register_gdbarch_data. + (init_regcache_descr, init_legacy_regcache_descr): Use + GDBARCH_OBSTACK_XALLOC and GDBARCH_OBSTACK_CALLOC. + + * remote.c (free_remote_state): Delete function. + (_initialize_remote): Update register_gdbarch_data. + (init_remote_state): Use GDBARCH_OBSTACK_XALLOC and + GDBARCH_OBSTACK_CALLOC instead of xmalloc / xcalloc. + +2003-08-04 Andrew Cagney <cagney@redhat.com> + + * reggroups.c (struct reggroup_el): Define. + (struct reggroups): Delete field "nr_group". Replace array + "group" with a "first" to "last" linked list. + (reggroups_init): Update. Allocate using gdbarch's obstack. + (reggroups_free): Delete function. + (add_group): Update. Add "el" parameter. + (reggroup_add): Pass gdbarch obstack allocated space to add_group. + (default_groups): Update. + (reggroup_next): Replace reggroups. + (reggroups_dump): Update. + (_initialize_reggroup): Pass XMALLOC allocated space to add_group. + * regcache.c (regcache_dump): Use reggroup_next instead of reggroups. + * infcmd.c (registers_info): Use reggroup_next instead of reggroups. + +2003-08-04 Daniel Jacobowitz <drow@mvista.com> + + * Makefile.in (tui-interp.o): Update dependencies. + +2003-08-04 David Carlton <carlton@kealia.com> + + * charset.c (cached_iconv_convert): Add __FILE__ and __LINE__ args + to internal_error call. + * source.c (forward_search_command): Add "%s" format argument. + (reverse_search_command): Ditto. + * top.c (quit_confirm): Ditto. + * cli/cli-setshow.c (do_setshow_command): Ditto. + * cp-valprint.c (cp_print_class_method): Replace + {f,}printf_{un,}filtered by {f,}puts_{un,}filtered. + (cp_print_class_member): Ditto. + * event-top.c (command_line_handler): Ditto. + * linux-proc.c (linux_info_proc_cmd): Ditto. + * p-typeprint.c (pascal_type_print_base): Ditto. + * p-valprint.c (pascal_object_print_class_method): Ditto. + (pascal_object_print_class_member): Ditto. + * printcmd.c (print_scalar_formatted,printf_command): Ditto. + * remote.c (remote_cisco_section_offsets): Ditto. + * top.c (command_line_input): Ditto. + * utils.c (vwarning,error_stream,quit): Ditto. + * valprint.c (print_floating,print_binary_chars) + (print_octal_chars,print_decimal_chars,print_hex_chars): Ditto. + +2003-08-04 Andrew Cagney <cagney@redhat.com> + + * frame.c (frame_func_unwind): Use frame_unwind_address_in_block. + +2003-08-02 Andrew Cagney <cagney@redhat.com> + + * config/djgpp/fnchange.lst: Fix up testsuite/gdb.c++/annota3.cc, + gdb/testsuite/gdb.c++/annota3.exp, amd64fbsd-tdep.c and + amd64fbsd-nat.c. + +2003-08-02 Andrew Cagney <cagney@redhat.com> + + * Makefile.in: Update all dependencies and definitions. + +2003-08-02 Adam Fedor <fedor@gnu.org> + + * linespec.c (is_objc_method_format): New function + (decode_line_1, locate_first_half): Use it. + Fixes PR objc/1298 + +2003-08-01 Andrew Cagney <cagney@redhat.com> + + * NEWS: Mention that m32r is multi-arch. + From 2003-07-28 Kei Sakamoto <sakamoto.kei@renesas.com>: + * configure.tgt: Recognize m32r-*-*. + * config/m32r/tm-m32r.h: Delete file. + * config/m32r/m32r.mt: New file. + * m32r-rom.c (m32r_upload_command): Use hostent only when + gethostname succeeds, in order to avoid a compilation + warning. + * m32r-tdep.c (m32r_store_return_value): Add a cast to remove a + compiler warning. + +2003-08-01 Michael Snyder <msnyder@redhat.com> + + * sh-tdep.c (sh_frame_align): New gdbarch method. + (sh_gdbarch_init): Set up frame_align method. + +2003-07-31 Michael Snyder <msnyder@redhat.com> + + * value.h, values.c, infcall.c, infcmd.c: Revert 07-30 change, + which is already covered by the new frames infrastructure. + +2003-07-31 Andrew Cagney <cagney@redhat.com> + + * user-regs.c (struct user_reg): Add "next" link. + (struct user_regs): Replace "user" with "first" and "last" links. + (append_user_reg): Add pre-allocated "reg" parameter. + (builtin_user_regs): Provide initial value for "last". + (user_reg_add_builtin): XMALLOC memory for append_user_reg. + (user_regs_init): Allocate memory from the gdbarch obstack. + (user_reg_add): GDBARCH_OBSTACK_ZALLOC memory for append_user_reg. + (user_reg_map_name_to_regnum): Rewrite to search the user_reg + linked list. + (usernum_to_user_reg): New function. + (user_reg_map_regnum_to_name): Use usernum_to_user_reg. + (value_of_user_reg): Use usernum_to_user_reg. + (user_regs_free): Delete function. + (_initialize_user_regs): Update register_gdbarch_data call. + +2003-07-31 Daniel Jacobowitz <drow@mvista.com> + + * dwarf2read.c (new_symbol): Use var_decode_location for parameters. + +2003-07-30 Michael Snyder <msnyder@redhat.com> + + * value.h (value_being_returned): Add a struct_addr argument. + * infcall.c (call_function_by_hand): Pass struct_addr to + value_being_returned. + * infcmd.c (print_return_value): Pass zero as struct_addr. + * values.c (value_being_returned): If struct_addr is passed, + use it instead of trying to recover it from the inferior. + +2003-07-30 Kevin Buettner <kevinb@redhat.com> + + * mn10300-tdep.c (analyze_dummy_frame): Pass ``pc'' so that + the prologue analyzer won't need to attempt to extract the pc + value from the woefully incomplete dummy frame. + (mn10300_analyze_prologue): Avoid calls to get_frame_pc() when + possible. Disable code which modifies the frame. + +2003-07-28 Andrew Cagney <cagney@redhat.com> + + * annotate.c (annotate_breakpoints_headers): Restrict annotation + to level 2. + (annotate_breakpoints_table, annotate_record): Ditto. + (annotate_breakpoints_table_end, annotate_field_begin): Ditto. + (annotate_field_name_end, annotate_field_value): Ditto. + (annotate_field_end, annotate_frame_source_begin): Ditto. + (annotate_frame_source_file, annotate_frame_source_file_end): Ditto. + (annotate_frame_source_line, annotate_frame_source_end): Ditto. + (annotate_frame_begin, annotate_frame_function_name): Ditto. + (annotate_frame_address_end, annotate_frame_address): Ditto. + (annotate_frame_args, annotate_frame_end): Ditto. + (annotate_frame_where, annotate_arg_begin): Ditto. + (annotate_arg_name_end, annotate_arg_value): Ditto. + (annotate_arg_end, annotate_signal_handler_caller): Ditto. + (annotate_function_call, annotate_signal_name): Ditto. + (annotate_signal_string, annotate_signal_name_end): Ditto. + (annotate_signal_string_end, annotate_value_history_begin): Ditto. + (annotate_value_begin, annotate_value_history_value): Ditto. + (annotate_value_history_end, annotate_value_end): Ditto. + (annotate_display_begin, annotate_display_number_end): Ditto. + (annotate_display_format, annotate_display_expression): Ditto. + (annotate_display_expression_end, annotate_display_value): Ditto. + (annotate_display_end, annotate_array_section_begin): Ditto. + (annotate_elt_rep, annotate_elt_rep_end): Ditto. + (annotate_elt, annotate_array_section_end): Ditto. + +2003-07-28 Andrew Cagney <cagney@redhat.com> + + * regcache.c (struct regcache_descr): Update comments on + nr_raw_registers. + (init_legacy_regcache_descr): Don't set nr_raw_registers or + sizeof_raw_register_valid_p. + (init_regcache_descr): Set nr_raw_registers and + sizeof_raw_register_valid_p before calling + init_legacy_regcache_descr. + +2003-07-28 Andrew Cagney <cagney@redhat.com> + + * mips-tdep.c (print_gp_register_row): Print the GPR's register + MOD NUM_REGS. + +2003-07-28 Daniel Jacobowitz <drow@mvista.com> + + * thread.c (info_threads_command): Use get_selected_frame (). + Check that there is at least one non-sentinel frame. + +2003-07-27 Stephane Carrez <stcarrez@nerim.fr> + + * m68hc11-tdep.c (struct frame_extra_info): Remove. + (m68hc11_pop_frame): Remove. + (m68hc11_frame_saved_pc): Remove. + (m68hc11_frame_chain): Remove. + (m68hc11_frame_init_saved_regs): Remove. + (m68hc11_init_extra_frame_info): Remove. + (m68hc11_store_struct_return): Remove. + (m68hc11_saved_pc_after_call): Remove. + +2003-07-27 Stephane Carrez <stcarrez@nerim.fr> + + * m68hc11-tdep.c (struct m68hc11_unwind_cache): New struct to hold + frame unwind information. + (m68hc11_scan_prologue): New function from m68hc11_guess_from_prologue + and adapted for frame unwinding. + (m68hc11_skip_prologue): Update to scan prologue in temporary object. + (m68hc11_unwind_pc): New function. + (m68hc11_frame_unwind_cache): New function to analyze frames. + (m68hc11_frame_this_id): New function to create new frame struct. + (m68hc11_frame_prev_register): New function to unwind a register from + the frame. + (m68hc11_frame_unwind): Default 68hc11/68hc12 unwinder. + (m68hc11_frame_p): New function for the above. + (m68hc11_frame_base_address): New function to return fp of frame. + (m68hc11_frame_args_address): Update for frame. + (m68hc11_frame_base): Default 68hc11/68hc12 frame. + (m68hc11_unwind_sp): New function. + (m68hc11_unwind_dummy_id): New function. + (m68hc11_gdbarch_init): Install the above frames; remove deprecated + calls. + +2003-07-27 Stephane Carrez <stcarrez@nerim.fr> + + * m68hc11-tdep.c (m68hc11_analyze_instruction): Don't advance the pc. + (m68hc11_guess_from_prologue): Advance the pc and frame size only + when we are beyond the current pc. + +2003-07-27 Stephane Carrez <stcarrez@nerim.fr> + + * m68hc11-tdep.c (m68hc11_push_dummy_call): New function adapted + from m68hc11_push_arguments. + (m68hc11_push_arguments): Remove. + (m68hc11_push_return_address): Remove. + (m68hc11_gdbarch_init): Install the above; remove above deprecated + handlers; remove deprecated_extra_stack_alignment_needed. + +2003-07-27 Andrew Cagney <cagney@redhat.com> + + * config/pa/tm-hppa.h (init_frame_pc_default): Declare. + * infcall.c (legacy_push_dummy_code) [GDB_TARGET_IS_HPPA]: Update + REAL_PC and not the pointer. + * hppa-hpux-tdep.c: Include frame.h + +2003-07-27 Andrew Cagney <cagney@redhat.com> + + * config/pa/tm-hppa64.h (GDB_MULTI_ARCH): Set to + GDB_MULTI_ACH_PARTIAL. + +2003-07-27 Andrew Cagney <cagney@redhat.com> + + Patch from 2003-07-22 Kei Sakamoto <sakamoto.kei@renesas.com>: + * m32r-tdep.c (m32r_memory_insert_breakpoint): Fix code style - + operator at start and not end of line. + (decode_prologue): Ditto. + (m32r_frame_unwind_cache, m32r_unwind_sp, m32r_unwind_pc): Use + frame_unwind_register_unsigned instead of + frame_unwind_unsigned_register. + (m32r_read_pc): Use regcache_cooked_read_unsigned instead of + read_register. + (m32r_push_dummy_call): Use register_size instead of + REGISTER_RAW_SIZE. + (m32r_frame_sniffer): Replace m32r_frame_p. + (m32r_gdbarch_init): Call frame_unwind_append_sniffer. + * m32r-rom.c (report_transfer_performance): Delete extern + declaration. + (m32r_load, m32r_upload_command): Use print_transfer_performance + instead of report_transfer_performance. + (_initialize_m32r_rom): Use add_setshow_cmd instead of add_set_cmd + / add_show_from_set. + +2003-07-26 Andrew Cagney <cagney@redhat.com> + + * m68hc11-tdep.c (m68hc11_gdbarch_init): Set non-deprecated + store_return_value and extract_struct_value_address. + +2003-07-26 Daniel Jacobowitz <drow@mvista.com> + + PR c++/1267 + * minsyms.c (lookup_minimal_symbol_by_pc_section): If SECTION is + NULL, default to the section containing PC. + +2003-07-24 Stephane Carrez <stcarrez@nerim.fr> + + * NEWS: Mention "regs" deprecated for m68hc11 too. + + * m68hc11-tdep.c (_initialize_m68hc11_tdep): Deprecate "regs" command. + (m68hc11_print_register): New function to print out one register. + (m68hc11_print_registers_info): New function to print registers. + (show_regs): Deprecate and use the above. + (m68hc11_gdbarch_init): Install the print_registers_info. + +2003-07-24 Jeff Johnston <jjohnstn@redhat.com> + + * ia64-linux-nat.c (ia64_linux_stopped_by_watchpoint): Verify + that we have a SIGTRAP before returning non-zero. + +2003-07-23 Michal Ludvig <mludvig@suse.cz> + Elena Zannoni <ezannoni@redhat.com> + + * linespec.c (decode_line_2): Avoid crash if + find_function_start_sal() returns empty record. + +2003-07-23 Andreas Schwab <schwab@suse.de> + + * ia64-tdep.c (ia64_print_insn): New function. + (ia64_gdbarch_init): Set print_insn to it. + (_initialize_ia64_tdep): Don't set deprecated_tm_print_insn and + deprecated_tm_print_insn_info. + +2003-07-22 Michael Snyder <msnyder@redhat.com> + + * h8300-tdep.c (h8300_extract_return_value): Teach it how to + handle 8-bit returns (long long). + (h8300h_extract_return_value): Ditto. + (h8300_gdbarch_init): Long long is 8 bytes, char is unsigned. + +2003-07-22 Andrew Cagney <cagney@redhat.com> + + * gdbarch.c Include "gdb_obstack.h". + (struct gdbarch): Add an "obstack". + (alloc_gdbarch_data): Allocate the gdbarch data using + GDBARCH_OBSTACK_CALLOC. + (free_gdbarch_data): Delete function. + (gdbarch_obstack_zalloc): New function. + (gdbarch_free): Free the obstack, do not call free_gdbarch_data. + Assert that the architecture is not initialized. + (gdbarch_alloc): Allocate an obstack, allocate the architecture + vector from the obstack. + (alloc_gdbarch_data, init_gdbarch_swap): Allocate memory using the + architecture obstack. + (GDBARCH_OBSTACK_CALLOC, GDBARCH_OBSTACK_ZALLOC): Define. + (set_gdbarch_data): Assert that the data is not initialized. + (struct gdbarch_data): Delete member "free". + (register_gdbarch_data): Do not initialize "free". + * gdbarch.h, gdbarch.c: Re-generate. + +2003-07-22 Andrew Cagney <cagney@redhat.com> + + * configure.in (build_warnings): Add -Wformat-nonliteral. + * configure: Re-generate. + +2003-07-22 Elena Zannoni <ezannoni@redhat.com> + + * dwarf2loc.c (locexpr_describe_location): Fix typos. + +2003-07-22 Elena Zannoni <ezannoni@redhat.com> + + * findvar.c (read_var_value): Remove case for thread local storage + variables. It is now entirely handled by the dwarf2 location + expression code. + * printcmd.c (address_info): Ditto. + * symtab.h (address_class): Remove LOC_THREAD_LOCAL_STATIC + enumeration value. + (struct symbol): Remove objfile field, which was used by + LOC_THREAD_LOCAL_STATIC only. + * dwarf2read.c (decode_locdesc): Remove is_thread_local variable. + * dwarf2loc.h (struct dwarf2_loclist_baton): Add comment about + usage of objfile pointer. + * dwarf2loc.c (locexpr_describe_location): Add case to handle + thread local variables. + Add include of objfiles.h. + * dwarf2expr.c (execute_stack_op): Add comments about thread local + storage variables. + * Makefile.in (dwarf2loc.o): Update dependencies. + +2003-07-22 Andrew Cagney <cagney@redhat.com> + + * config/pa/tm-hppa64.h (FRAME_SAVED_PC_IN_SIGTRAMP): Use + get_frame_base. + (FRAME_BASE_BEFORE_SIGTRAMP): Ditto. + (FRAME_FIND_SAVED_REGS_IN_SIGTRAMP): Ditto. + (struct value): Add opaque declaration. + (DEPRECATED_FRAME_ARGS_ADDRESS): Delete. + +2003-07-21 Andrew Cagney <cagney@redhat.com> + + From 2003-07-04 Kei Sakamoto <sakamoto.kei@renesas.com>: + * m32r-tdep.c, m32r-stub.c, m32r-tdep.c: Rewrite. + +2003-07-20 Stephane Carrez <stcarrez@nerim.fr> + + * m68hc11-tdep.c (m68hc11_pseudo_register_read): Use + regcache_cooked_read_unsigned instead of read_register. + (m68hc11_saved_pc_after_call): Likewise. + (m68hc11_pseudo_register_write): Use regcache_cooked_write_unsigned + instead of write_register. + (m68hc11_register_type): New function. + (m68hc11_register_virtual_type): Remove. + (m68hc11_store_return_value): Convert to use the regcache. + (m68hc11_extract_struct_value_address): Likewise. + (m68hc11_gdbarch_init): Remove deprecated ops for register to use + m68hc11_register_type; undeprecate store_return_value and + extract_struct_value_address. + +2003-07-20 Stephane Carrez <stcarrez@nerim.fr> + + * m68hc11-tdep.c (m68hc11_extract_return_value): Use regcache_raw_read + and translate to use regcache. + (m68hc11_gdbarch_init): Undeprecate extract_return_value. + +2003-07-18 Andrew Cagney <cagney@redhat.com> + + * gdbarch.sh (DWARF2_BUILD_FRAME_INFO): Delete method. + * gdbarch.h, gdbarch.c: Re-generate. + * i386-tdep.c (i386_gdbarch_init): Do not set + DWARF2_BUILD_FRAME_INFO. + * elfread.c (elf_symfile_read): Call dwarf2_build_frame_info + unconditionally. + * alpha-tdep.c (alpha_dwarf2_init_abi): Do not set + DWARF2_BUILD_FRAME_INFO. + +2003-07-18 Andrew Cagney <cagney@redhat.com> + + From 2003-07-04 Kei Sakamoto <sakamoto.kei@renesas.com>: + * disasm.c (gdb_disassemble_info): Initilize di.arch. + +2003-07-18 Andrew Cagney <cagney@redhat.com> + + * dwarf2-frame.c (dwarf2_frame_sniffer): Use + frame_unwind_address_in_block, instead of frame_pc_unwind. + (dwarf2_frame_cache): Ditto. + +2003-07-18 Andrew Cagney <cagney@redhat.com> + + * user-regs.h (struct gdbarch): Declare opaque. + * ui-out.h (struct ui_file): Declare opaque. + * dwarf2-frame.h (struct frame_info): Declare opaque. + +2003-07-18 Kris Warkentin <kewarken@qnx.com> + + * nto-procfs.c: Clean ARI hits. Change #include <..> to + #include "...". + (procfs_meminfo): Change strerror to safe_strerror. + (procfs_can_run): Remove K&R badness. + +2003-07-17 Michael Snyder <msnyder@redhat.com> + + * remote-sim.c: Comment typo fix. + +2003-07-17 Andrew Cagney <cagney@redhat.com> + + * defs.h (GDB_MULTI_ARCH): Delete conditional define. Handled by + configure. + * sparc-tdep.c (sparc_intreg_size): Make non-static. + * config/sparc/tm-sparc.h (GDB_MULTI_ARCH): Define to + GDB_MULTI_ARCH_PARTIAL. + +2003-07-17 Elena Zannoni <ezannoni@redhat.com> + + * Makefile.in (x86-64-linux-nat.o): Update dependencies. + * x86-64-linux-nat.c (ps_get_thread_area): New function. Add + include of asm/prctl.h, asm/ptrace.h, and gdb_proc_service.h. + +2003-07-16 Theodore A. Roth <troth@openavr.org> + + * avr-tdep.c (avr_skip_prologue): Return PC unchanged if no prologue + found. + (avr_frame_unwind_cache): Don't unwind FP for main. + Update a comment. + Save the computed prev_sp. + (avr_saved_regs_unwinder): Remove function. + (avr_frame_prev_register): Use PC unwind logic from + avr_saved_regs_unwinder(), otherwise use trad_frame_prev_register(). + +2003-07-16 Andrew Cagney <cagney@redhat.com> + + * frame-base.h (frame_base_p_ftype): Delete definition. + (frame_base_append_predicate): Delete declaration. + * frame-unwind.h (frame_unwind_p_ftype): Delete definition. + (frame_unwind_append_predicate): Delete declaration. + * frame-unwind.c (struct frame_unwind_table): Delete field "p". + (append_predicate): Delete parameter "p". + (frame_unwind_append_predicate): Delete function. + (frame_unwind_append_sniffer): Update call to append_predicate. + (frame_unwind_free): Delete function. + (_initialize_frame_unwind): Pass NULL as "free" to + register_gdbarch_data. + (frame_unwind_init): Append the dummy_frame_sniffer. + (frame_unwind_find_by_frame): Simplify. + * frame-base.c (struct frame_base_table): Delete field "p". + (append_predicate): Delete parameter "p". + (frame_base_append_predicate): Delete function. + (frame_base_append_sniffer): Update call to append_predicate. + (frame_base_free): Delete function. + (frame_base_find_by_frame): Simplify. + (_initialize_frame_base): Pass NULL as "free" to + register_gdbarch_data. + * x86-64-tdep.c (x86_64_frame_sniffer): Replace "x86_64_frame_p". + (x86_64_sigtramp_frame_sniffer): Replace + "x86_64_sigtramp_frame_p". + (x86_64_init_abi): Set the frame unwind sniffers. + * m68k-tdep.c (m68k_frame_sniffer): Replace "m68k_frame_p". + (m68k_sigtramp_frame_sniffer): Replace "m68k_sigtramp_frame_p" + (m68k_gdbarch_init): Set the frame unwind sniffers. + * i386-tdep.c (i386_sigtramp_frame_sniffer): Replace + "i386_sigtramp_frame_p". + (i386_frame_sniffer): Replace "i386_frame_p". + (i386_gdbarch_init): Set the frame unwind sniffers. + * avr-tdep.c (avr_frame_sniffer): Replace "avr_frame_sniffer". + (avr_gdbarch_init): Set the frame unwind sniffers. + * alpha-tdep.c (alpha_sigtramp_frame_sniffer): Replace + "alpha_sigtramp_frame_p" + (alpha_heuristic_frame_sniffer): Replace + "alpha_heuristic_frame_p". + (alpha_gdbarch_init): Set the frame unwind sniffers. + (alpha_dwarf2_init_abi): Ditto. + * alpha-mdebug-tdep.c (alpha_mdebug_frame_sniffer): Replace + "alpha_debug_frame_p". + (alpha_mdebug_frame_base_sniffer): Replace + "alpha_mdebug_frame_base_p". + (alpha_mdebug_init_abi): Set the frame unwind sniffers. + * d10v-tdep.c (d10v_frame_sniffer): Replace "d10v_frame_p". + (d10v_gdbarch_init): Set the frame unwind sniffer. + * dwarf2-frame.c (dwarf2_frame_sniffer): Replace "dwarf2_frame_p". + (dwarf2_frame_base_sniffer): Replace "dwarf2_frame_base_p". + * dwarf2-frame.h (dwarf2_frame_sniffer): Replace "dwarf2_frame_p". + (dwarf2_frame_base_sniffer): Replace "dwarf2_frame_base_p". + * dummy-frame.c (dummy_frame_sniffer): Replace "dummy_frame_p". + * dummy-frame.h (dummy_frame_sniffer): Replace "dummy_frame_p". + +2003-07-16 Michael Snyder <msnyder@redhat.com> + + * sh-tdep.c (sh_gdbarch_init): Fetch_registers for the sh3-dsp + should go thru sh_dsp_register_sim_regno, else the dsp regs + will not get the right values. + +2003-07-16 Corinna Vinschen <vinschen@redhat.com> + + * sh-tdep.c (sh_sh4_register_convert_to_virtual): Substitute call to + deprecated_store_floating by call to store_typed_floating. + (sh_sh4_register_convert_to_raw): Substitute call to + deprecated_extract_floating by call to extract_typed_floating. + +2003-07-16 Corinna Vinschen <vinschen@redhat.com> + + * sh-tdep.c (sh_gdbarch_init): Set double to 4 byte on sh2e and sh3e. + +2003-07-16 Corinna Vinschen <vinschen@redhat.com> + + * sh-tdep.c: Substitute calls to REGISTER_RAW_SIZE by calls to + register_size and calls to REGISTER_VIRTUAL_TYPE by calls to + gdbarch_register_type in 32 bit code throughout. Avoid current_gdbarch + as possible. + (do_pseudo_register): Remove. + (sh_push_dummy_code): New function. + (sh64_store_struct_return): Rename from sh_store_struct_return. + Only called for sh64 now. + (sh_extract_struct_value_address): Regcache'ify. + (sh_push_dummy_call): Rename from sh_push_arguments. Regcache'ify + and accomodate new tasks. + (sh64_push_return_address): Rename from sh_push_return_address. + Only called for sh64 now. + (sh_default_extract_return_value): Rename from sh_extract_return_value. + Regcache'ify. + (sh3e_sh4_extract_return_value): Regcache'ify. + (sh_default_store_return_value): Ditto. + (sh3e_sh4_store_return_value): Ditto. + (sh_default_register_byte): Remove. + (sh_sh4_register_byte): Remove. + (sh_default_register_raw_size): Remove. + (sh_sh4_register_raw_size): Remove. + (sh_register_virtual_size): Remove. + (sh_sh3e_register_virtual_type): Remove. + (sh_sh3e_register_type): New function. + (sh_sh4_register_virtual_type): Remove. + (sh_sh4_register_type): New function. + (sh_default_register_virtual_type): Remove. + (sh_default_register_type): New function. + (do_fv_register_info): Add parameters to accomodate call from + sh_print_registers_info. + (do_dr_register_info): Ditto. + (sh_print_pseudo_register): Rename from sh_do_pseudo_register. + Add parameters to accomodate call from sh_print_registers_info. + (sh_do_fp_register): Ditto. + (sh64_do_pseudo_register): Call do_dr_register_info, + do_fv_register_info and sh_do_fp_register with default parameters. + (sh_do_register): Add parameters to accomodate call from + sh_print_registers_info. + (sh_print_register): Ditto. + (sh_print_registers_info): Rename from sh_do_registers_info. + Add parameters to be used as gdbarch_print_registers_info + implementation. Accomodate removed do_pseudo_register function + pointer. + (sh_compact_do_registers_info): Accomodate removed do_pseudo_register + function pointer. Call sh_print_register with default parameters. + (sh64_do_registers_info): Call sh_print_registers_info instead of + sh_do_registers_info. + (sh_gdbarch_init): Rearrange to cleanup and to allow easier + detection of deprecated vs. non-deprecated functionality. + Rename sh_call_dummy_words to sh64_call_dummy_words. Remove + function pointer assignments by direct function calls. + +2003-07-15 Andrew Cagney <cagney@redhat.com> + + * frame.c (get_frame_id): Use frame_unwind_find_by_frame. + (frame_register_unwind, create_new_frame): Ditto. + (legacy_get_prev_frame, get_frame_type): Ditto. + (get_frame_base_address): Use frame_base_find_by_frame. + (get_frame_locals_address): Use frame_base_find_by_frame. + (get_frame_args_address): Use frame_base_find_by_frame. + * frame-base.h (frame_base_sniffer_ftype): Declare. + (frame_base_append_sniffer): Declare. + (frame_base_find_by_frame): Replace frame_base_find_by_pc. + * frame-base.c (append_predicate): Add a "sniffer" parameter. + (frame_base_append_sniffer): New function. + (frame_base_append_predicate): Add a NULL sniffer. + (frame_base_find_by_frame): Replace "frame_base_find_by_pc". + (struct frame_base_table): Add "sniffer". + (frame_base_free): Free the "sniffer" table. + * frame-unwind.h (frame_unwind_sniffer_ftype): Define. + (frame_unwind_append_sniffer): Declare. + (frame_unwind_find_by_frame): Replace frame_unwind_find_by_pc. + * frame-unwind.c (frame_unwind_free): Free the "sniffer" table. + (struct frame_unwind_table): Add "sniffer", delete "middle". + (append_predicate): Add "sniffer" parameter, append the sniffer. + (frame_unwind_init): Update append_predicate call. + (frame_unwind_append_sniffer): New function. + (frame_unwind_append_predicate): Update append_predicate call. + (frame_unwind_find_by_frame): Replace frame_unwind_find_by_pc. + +2003-07-15 Andrew Cagney <cagney@redhat.com> + + * frame.c (get_prev_frame): Move disabled inside_entry_func to + before code inhibiting repeated unwind attempts. Add to + commentary on that test's problems. + * blockframe.c (inside_main_func): Look for "main" in the minimal + symbol table. + * d10v-tdep.c (d10v_frame_this_id): Delete check that frames are + identical. + +2003-07-15 Andrew Cagney <cagney@redhat.com> + + * complaints.c (struct explanation): Define. + (struct complaints): Change type of "explanation" to "struct + explanation". + (symfile_explanations): Convert to a "struct explanation" table. + (vcomplaint): Update. + +2003-07-15 Michal Ludvig <mludvig@suse.cz> + + * x86-64-linux-nat.c (regmap): Removed. + (supply_gregset, fill_gregset): Call + x86_64_linux_(fill,supply)_gregset functions. + * x86-64-linux-tdep.c (USER_*): New defines. + (user_to_gdb_regmap, x86_64_core_fns): New structure. + (x86_64_linux_supply_gregset, x86_64_linux_fill_gregset): + New functions. + (fetch_core_registers): Ditto. + (_initialize_x86_64_linux_tdep): Call add_core_fns(). + * x86-64-linux-tdep.h: New file. + * config/i386/x86-64linux.mh (NATDEPFILES): Remove corelow.o + and core-regset.o. + * config/i386/x86-64linux.mt (TDEPFILES): Add corelow.o. + +2003-07-13 Mark Kettenis <kettenis@gnu.org> + + * x86-64-tdep.c (x86_64_store_return_value): Use + regcache_cooked_write_part instead of regcache_cooked_write. + + * configure.host: Add x86_64-*-freebsd*. + * configure.tgt: Add x86_64-*-freebsd*. + * Makefile.in (amd64fbsd-nat.o, amd64fbsd-tdep.o): New targets. + * amd64fbsd-nat.c: New file. + * amd64fbsd-tdep.c: New file. + * config/i386/nm-fbsd64.h: New file. + * config/i386/fbsd64.mh: New file. + * config/i386/fbsd64.mt: New file. + +2003-07-11 Mark Kettenis <kettenis@gnu.org> + + * alpha-tdep.h (struct gdbarch_tdep): Add members `sc_pc_offset', + `sc_regs_offset' and `sc_fpregs_offset'. + * alpha-tdep.c (SIGFRAME_PC_OFF, SIGFRAME_REGSAVE_OFF, + SIGFRAME_FPREGSAVE_OFF): Remove defines. + (alpha_sigtramp_register_address): Rewrite to use new members of + `struct gdbarch_tdep'. + (alpha_gdbarch_init): Initialize new members of struct + gdbarch_tdep'. + * alphafbsd-tdep.c (alphafbsd_use_struct_convention): Use + ALPHA_REGISTER_SIZE instead of DEPRECATED_REGISTER_SIZE. + (alphafbsd_sigtramp_start, alphafbsd_sigtramp_end): Nre variables. + (alphafbsd_pc_in_sigtramp): Implement. + (alphafbsd_sigtramp_offset): New function. + (alphafbsd_sigcontext_addr): New function. + (alphafbsd_init_abi): Initialize signal trampoline related members + of `struct gdbarch_tdep'. + (_initialize_alphafbsd_tdep): Add prototype. + +2003-07-11 Theodore A. Roth <troth@openavr.org> + + * Makefile.in (install-only): Quote sed expression when generating + transformed_name. + +2003-07-11 Richard Henderson <rth@redhat.com> + + * Makefile.in (dwarf2-frame.o): Add complaints_h. + * dwarf2-frame.c: Include complaints.h. + (decode_frame_entry_1): Rename from decode_frame_entry; tidy + variable initialization; return NULL on error. + (decode_frame_entry): New. + +2003-07-11 Andrew Cagney <cagney@redhat.com> + + * frame.h (frame_address_in_block): Delete declaration. + * blockframe.c (frame_address_in_block): Delete function. + (get_frame_block): Use get_frame_address_in_block. + (block_innermost_frame): Ditto. + * stack.c (print_frame, backtrace_command_1): Ditto. + + * frame.h (get_frame_address_in_block): Declare. + (frame_unwind_address_in_block): Declare. + * frame.c (frame_unwind_address_in_block): New function. + (get_frame_address_in_block): New function. + +2003-07-10 Andrew Cagney <cagney@redhat.com> + + * gdbarch.sh: Simplify predicate methods. Remove need to provide + pre-default. Note: re-generate has no effect. + +2003-07-10 Andrew Cagney <cagney@redhat.com> + + * gdbarch.sh: When a variable, but not a function, compare against + 0. Fix problem in previous patch. + * gdbarch.c: Re-generate. + +2003-07-10 Andrew Cagney <cagney@redhat.com> + + * gdbarch.sh: Use gdb_assert instead of internal_error. Compare + functions against NULL, not 0. + * gdbarch.c: Re-generate. + +2003-07-10 Fred Fish <fnf@ninemoons.com> + + * coff-solib.h (SOLIB_LOADED_LIBRARY_PATHNAME): Default to a + null string instead of a null pointer. + * solib.h (SOLIB_LOADED_LIBRARY_PATHNAME): Ditto. + +2003-07-09 Michael Snyder <msnyder@redhat.com> + + * sh-tdep.c (sh_dsp_register_sim_regno): Off-by-one error. + +2003-07-09 Mark Kettenis <kettenis@gnu.org> + + * x86-64-tdep.h (X86_64_RAX_REGNUM, X86_64_RDX_REGNUM, + X86_64_RDI_REGNUM, X86_64_RBP_REGNUM, X86_64_RSP_REGNUM, + X86_64_RIP_REGNUM, X86_64_EFLAGS_REGNUM, X86_64_ST0_REGNUM, + X86_64_XMM0_REGNUM, X86_64_XMM1_REGNUM): Moved here ... + * x86-64-tdep.c: ... from here. + +2003-07-09 Andreas Schwab <schwab@suse.de> + + * m68k-tdep.h (enum struct_return): Define. + (struct gdbarch_tdep): Add struct_return. + * m68k-tdep.c (m68k_push_dummy_call): Non-scalars bigger than 4 + bytes are padded to the right, not to the left. Pass struct value + address in register %a1, not on stack. + (m68k_use_struct_convention): New function. + (m68k_gdbarch_init): Set use_struct_convention. Initialize + struct_return in tdep to pcc_struct_return. + * m68klinux-tdep.c (m68k_linux_init_abi): Set struct_return to + reg_struct_return. + +2003-07-09 Joel Brobecker <brobecker@gnat.com> + + * somread.c (som_symfile_offsets): Fix compilation error. + +2003-07-09 Andrew Cagney <cagney@redhat.com> + + * regcache.c (register_size): Only check REGISTER_RAW_SIZE once. + Add comments about the checks. + +2003-07-08 Andrew Cagney <cagney@redhat.com> + + * Makefile.in: Make dependency section headers consistent. + (config_h): Move to $BUILD headers section. + (exc_request_U_h, exc_request_S_h, msg_reply_S_h): Ditto. + (msg_U_h, notify_S_h, process_reply_S_h): Ditto. + (ada-exp.tab.c): Move to YACC/LEX section. + (ada-lex.c, c-exp.tab.c, f-exp.tab.c): Ditto. + (jv-exp.tab.c, m2-exp.tab.c, objc-exp.tab.c, p-exp.tab.c): Ditto. + +2003-07-08 Kris Warkentin <kewarken@qnx.com> + + * nto-procfs.c: Cleaned up a bunch of ARI hits. + Include "gdb_dirent.h" instead of <dirent.h>, replace all instances + of strerror with safe_strerror, use ISO C function definitions, + and replace instances of sprintf with snprintf. + +2003-07-07 Andrew Cagney <cagney@redhat.com> + + * frame.c (get_prev_frame): Enable check for identical frames. + Update comments. Update error messages. + +2003-07-07 Joel Brobecker <brobecker@gnat.com> + + * hpread.c (hpread_psymtab_to_symtab_1): Fix compilation failure. + +2003-07-07 Joel Brobecker <brobecker@gnat.com> + + * xcoffread.c (xcoff_psymtab_to_symtab_1): Remove call to + sort_symtab_syms, no longer necessary. + +2003-07-07 Joel Brobecker <brobecker@gnat.com> + + * config/mips/tm-irix6.h (MIPS_REGISTER_TYPE): Add comment. + +2003-07-07 Joel Brobecker <brobecker@gnat.com> + + * mips-tdep.c (mips_register_raw_size): Fix compilation failure. + (mips_register_byte): Likewise. + +2003-07-07 Daniel Jacobowitz <drow@mvista.com> + + * Makefile.in (sparc_tdep_h): New. + (sparc-linux-nat.o, sparc-nat.o, sparc-tdep.o, sparc64nbsd-nat.o) + (sparcnbsd-nat.o, sparcnbsd-tdep.o): Depend on $(sparc_tdep_h). + * sparc-linux-nat.c: Include "sparc-tdep.h". + * sparc-nat.c: Likewise. + * sparc-tdep.c: Likewise. + * sparc64nbsd-nat.c: Likewise. + * sparcnbsd-nat.c: Likewise. + * sparcnbsd-tdep.c: Likewise. + * sparc-tdep.h: New file. + * config/sparc/tm-sparc.h: Remove prototypes for sparc_y_regnum + and sparc_npc_regnum. + +2003-07-07 Daniel Jacobowitz <drow@mvista.com> + + * mips-linux-nat.c (mips_linux_cannot_fetch_register) + (mips_linux_cannot_store_register): List supported instead of + unsupported registers. + +2003-07-07 Daniel Jacobowitz <drow@mvista.com> + + * disasm.c (dump_insns): Separate instructions from addresses. + +2003-07-07 Andreas Schwab <schwab@suse.de> + + * Makefile.in (m68k-tdep.o, m68klinux-tdep.o): Update + dependencies. + * m68k-tdep.c (NUM_FREGS): Delete. + (SIG_PC_FP_OFFSET): Delete. + (TARGET_M68K): Delete. + (P_MOVEAL_SP_FP, P_ADDAW_SP, P_ADDAL_SP, P_SUBQW_SP, + P_SUBQL_SP, P_LEA_SP_SP, P_LEA_PC_A5, P_FMOVEMX_SP, + P_MOVEL_SP, P_MOVEML_SP): Define. + (P_MOVL_SP_FP, P_MOVL, P_JSR, P_BSR, P_LEAL, P_MOVML, P_FMOVM, + P_TRAP): Delete. + (m68k_register_raw_size): Delete. + (m68k_register_virtual_size): Delete. + (m68k_register_type): Renamed from m68k_register_virtual_type and + add gdbarch argument. + (m68k_store_struct_return): Delete. + (m68k_deprecated_extract_return_value): Delete. + (m68k_deprecated_extract_struct_value_address): Delete. + (m68k_frame_chain): Delete. + (m68k_frame_saved_pc): Delete. + (m68k_fix_call_dummy): Delete. + (m68k_push_dummy_frame): Delete. + (m68k_pop_frame): Delete. + (m68k_extract_return_value): New function. + (m68k_store_return_value): Rewrite using regcache. + (m68k_extract_struct_value_address): Rewrite using regcache. + (m68k_push_dummy_call): New function. + (struct m68k_frame_cache): Define. + (m68k_alloc_frame_cache): New function. + (m68k_analyze_frame_setup): New function. + (m68k_analyze_register_saves): New function. + (m68k_analyze_prologue): New function. + (m68k_skip_prologue): Rewrite using above functions. + (m68k_unwind_pc): New function. + (m68k_frame_cache): New function. + (m68k_frame_this_id): New function. + (m68k_frame_prev_register): New function. + (m68k_frame_unwind): New variable. + (m68k_frame_p): New function. + (m68k_sigtramp_frame_cache): New function. + (m68k_sigtramp_frame_this_id): New function. + (m68k_sigtramp_frame_prev_register): New function. + (m68k_sigtramp_frame_unwind): New variable. + (m68k_sigtramp_frame_p): New function. + (m68k_frame_base_address): New function. + (m68k_frame_base): New function. + (m68k_unwind_dummy_id): New function. + (fill_gregset): Use regcache_collect. + (fill_fpregset): Likewise. + (m68k_saved_pc_after_call): Only define if SYSCALL_TRAP is + defined. + (m68k_gdbarch_init): Don't define call_dummy_words. Don't set + deprecated_init_frame_pc, deprecated_store_struct_return, + deprecated_extract_return_value, deprecated_store_return_value, + deprecated_frame_chain, deprecated_frame_saved_pc, + deprecated_frame_init_saved_regs, deprecated_register_raw_size, + deprecated_register_virtual_size, + deprecated_max_register_raw_size, + deprecated_max_register_virtual_size, + deprecated_register_virtual_type, deprecated_register_size, + deprecated_register_byte, deprecated_register_bytes, + deprecated_fp_regnum, deprecated_use_generic_dummy_frames, + call_dummy_location, deprecated_call_dummy_breakpoint_offset, + deprecated_pc_in_call_dummy, deprecated_call_dummy_length, + deprecated_call_dummy_start_offset, deprecated_call_dummy_words, + deprecated_sizeof_call_dummy_words, deprecated_fix_call_dummy, + deprecated_push_dummy_frame, deprecated_pop_frame, + deprecated_dummy_write_sp. Set deprecated_saved_pc_after_call + only if SYSCALL_TRAP is defined. Set extract_return_value, + store_return_value, extract_struct_value_address, register_type, + push_dummy_call, unwind_dummy_id, unwind_pc. Add two frame unwind + predicates. + * m68k-tdep.h (M68K_D1_REGNUM, M68K_NUM_REGS, + M68K_MAX_REGISTER_SIZE): Define. + (struct m68k_sigtramp_info): Define. + (struct gdbarch_tdep): Add get_sigtramp_info. + * m68klinux-nat.c (fetch_register): Use register_size instead of + REGISTER_RAW_SIZE. Don't put assignment in if. + (store_register): Likewise. + (fetch_inferior_registers): Likewise. + (store_inferior_registers): Likewise. + * m68klinux-tdep.c (m68k_linux_sigtramp_saved_pc): Delete. + (m68k_linux_frame_saved_pc): Delete. + (m68k_linux_sigcontext_reg_offset, + m68k_linux_ucontext_reg_offset): Define. + (m68k_linux_get_sigtramp_info): New function. + (m68k_linux_extract_return_value): Rewrite using regcache. + (m68k_linux_store_return_value): Likewise. + (m68k_linux_extract_struct_value_address): Likewise. + (m68k_linux_init_abi): Set get_sigtramp_info in tdep structure. + Don't set deprecated_frame_saved_pc, + deprecated_extract_return_value, deprecated_store_return_value, + deprecated_extract_struct_value_address. Set + extract_return_value, store_return_value, + extract_struct_value_address. + +2003-07-07 Andrew Cagney <cagney@redhat.com> + + * expprint.c: Include "user-regs.h" instead of "frame.h". + (print_subexp): Use user_reg_map_regnum_to_name, instead of + frame_map_regnum_to_name. + * frame.c: Include "user-regs.h" instead of "builtin-regs.h". + (frame_map_name_to_regnum): Simplify, call + user_reg_map_name_to_regnum. + (frame_map_regnum_to_name): Simplify, call + user_reg_map_regnum_to_name. + (frame_register_unwind): Update. + * std-regs.c: Include "user-regs.h" instead of "builtin-regs.h". + (_initialize_frame_reg): Call user_reg_add_builtin. + * findvar.c: Include "user-regs.h" instead of "builtin-regs.h". + (value_of_register): Use value_of_user_reg. + * eval.c (evaluate_subexp_standard): Update. + * parse.c (write_dollar_variable): Update. + * d10v-tdep.c (d10v_print_registers_info): Update. + * infcmd.c (registers_info): Update. + * Makefile.in (SFILES): Delete "builtin-regs.c", add "user-regs.c". + (builtin_regs_h): Delete macro. + (user_regs_h): Define. + (COMMON_OBS): Delete "builtin-regs.o", add "user-regs.o". + (builtin-regs.o): Delete target. + (user-regs.o): Specify dependencies. + (expprint.o): Update dependencies. + (findvar.o): Update dependencies. + (frame.o): Update dependencies. + (std-regs.o): Update dependencies. + +2003-07-06 Christopher Faylor <cgf@redhat.com> + + * win32-nat.c (solib_symbols_add): Use one variable for all section + address stuff. Pass variable rather than address of variable to + safe_symbol_file_add. + +2003-07-06 Andreas Schwab <schwab@suse.de> + + * m68klinux-nat.c (fill_fpregset): Fix use of loop index. + +2003-07-04 Joel Brobecker <brobecker@gnat.com> + + * rs6000-nat.c (vmap_symtab): Fix compilation error. + +2003-07-04 Kris Warkentin <kewarken@qnx.com> + + * config/i386/nto.mh: Set XM_FILE to xm-i386.h + +2003-07-04 Kris Warkentin <kewarken@qnx.com> + + * nto-procfs.c: New file. Native procfs support for QNX Neutrino. + * config/i386/nto.mh: New file. + * config/i386/nm-nto.h: New file. + * configure.host: Add i[3456]86-*-nto*. + +2003-07-03 Joel Brobecker <brobecker@gnat.com> + + * remote-vx.c (vx_add_symbols): Fix compilation error. + +2003-07-03 Andrew Cagney <cagney@redhat.com> + + * gdbarch.sh (REGISTER_NAME): Do not supply a default. + * gdbarch.h, gdbarch.c: Re-generate. + * config/sparc/tm-sparc.h (REGISTER_NAME): Define. + (legacy_register_name): Declare. + * config/sparc/tm-sp64.h (legacy_register_name): Declare. + (REGISTER_NAME): Define. + * sparc-tdep.c (legacy_register_name): New function. + * config/pa/tm-hppa64.h (REGISTER_NAMES): Delete macro. + (REGISTER_NAME): Define. + (hppa64_register_name): Declare. + * config/pa/tm-hppa.h (REGISTER_NAMES): Delete macro. + * hppa-tdep.c (hppa_gdbarch_init): Set hppa_register_name. + (hppa64_register_name): New function. + (hppa_register_name): New function. + * arch-utils.c (legacy_register_name): Delete. + * arch-utils.h (legacy_register_name): Delete. + +2003-07-03 Daniel Jacobowitz <drow@mvista.com> + + * cli/cli-interp.c (cli_interpreter_resume): Update the + cli_uiout's stream to gdb_stdout. + +2003-07-03 Andrew Cagney <cagney@redhat.com> + + * gdbarch.sh (REGISTER_RAW_SIZE, REGISTER_VIRTUAL_SIZE): Add + predicate. + * gdbarch.h, gdbarch.c: Re-generate. + * regcache.c (init_regcache_descr): Use legacy code when either + REGISTER_BYTE or REGISTER_RAW_SIZE is set. + +2003-07-02 Daniel Jacobowitz <drow@mvista.com> + + * NEWS: Move "set logging" entry into GDB 6.0 section. + +2003-07-02 Jim Blandy <jimb@redhat.com> + + * s390-tdep.c (struct frame_extra_info): new member: + 'stack_bought_valid'. + (s390_get_frame_info): Set fextra_info->stack_bought_valid if we + initialize fextra_info->stack_bought. + (s390_frameless_function_invocation): Don't trust the value of + fextra_info_ptr->stack_bought unless + fextra_info->stack_bought_valid is set. + + New S390 prologue analyzer. + * s390-tdep.c (struct prologue_value, enum pv_boolean): New types. + (pv_set_to_unknown, pv_set_to_constant, pv_set_to_register, + pv_constant_last, pv_add, pv_add_constant, pv_subtract, + pv_logical_and, pv_is_identical, pv_is_register, pv_is_array_ref, + compute_x_addr, s390_on_stack, s390_store, + s390_get_signal_frame_info): New functions. + (S390_NUM_SPILL_SLOTS): New macro. + (s390_get_frame_info): Rewritten. + (is_arg_reg): Deleted. + + Break out the decoding of S/390 instructions into separate + functions, to make it more legible, and easier to check + against the spec. + * s390-tdep.c (is_ri, is_ril, is_rr, is_rre, is_rs, is_rse, + is_rx, is_rxe): New functions. + (op1_aghi, op2_aghi, op1_ahi, op2_ahi, op_ar, op_basr, op1_bras, + op2_bras, op_l, op_la, op1_larl, op2_larl, op_lgr, op1_lghi, + op2_lghi, op1_lhi, op2_lhi, op_lr, op_nr, op_ngr, op_s, op_st, + op_std, op1_stg, op2_stg, op_stm, op1_stmg, op2_stmg, op_svc): New + enums for opcode values. (Is this an improvement?) + +2003-07-02 Andrew Cagney <cagney@redhat.com> + + * i386-tdep.c: Revert change committed as part of trad-frame code + below. + +2003-07-02 Daniel Jacobowitz <drow@mvista.com> + + * breakpoint.c (insert_catchpoint): Make static. + +2003-07-02 Andreas Schwab <schwab@suse.de> + + * ia64-tdep.c (ia64_push_dummy_call): Define as combination of + former ia64_push_arguments and ia64_push_return_address, and use + regcache functions instead of read/write_register. + (ia64_gdbarch_init): Set push_dummy_call instead of + deprecated_push_arguments and deprecated_push_return_address. + +2003-07-01 Andreas Jaeger <aj@suse.de> + + * x86-64-tdep.c (x86_64_push_arguments): Align stack to 16-byte + before the call. + Set %rax only to number of SSE registers used. + +2003-07-01 Andrew Cagney <cagney@redhat.com> + + * trad-frame.h: Update comments, a -1 .addr is reserved. + (trad_frame_value_p, trad_frame_addr_p): Declare. + (trad_frame_reg_p): Declare. + (trad_frame_set_value): Rename trad_frame_register_value. + (trad_frame_set_unknown): Declare. + * trad-frame.c (trad_frame_realreg_p): New function. + (trad_frame_addr_p, trad_frame_value_p): New function. + (trad_frame_set_unknown): New function. + (trad_frame_alloc_saved_regs): Initialize .addr to -1, not zero. + (trad_frame_prev_register): Use trad_frame_realreg_p, + trad_frame_addr_p and trad_frame_value_p. + (trad_frame_set_value): Rename trad_frame_register_value. + * d10v-tdep.c (d10v_frame_unwind_cache): Use trad_frame_addr_p + and trad_frame_set_value. + +2003-06-30 Jim Blandy <jimb@redhat.com> + + Patch from IBM (authors unspecified, probably Ulrich Weigand and + Gerhard Tonn) for argument passing on the S/390 and S/390x: + * s390-tdep.c (S390_STACK_FRAME_OVERHEAD): This is always space + for 16 registers, and then 32 more bytes. + (S390_STACK_PARAMETER_ALIGNMENT, S390_NUM_FP_PARAMETER_REGISTERS): + New macros. + (is_double_arg): The s390x doesn't handle DOUBLE_ARGS specially. + Move up in the file, since it's now used by is_simple_arg. + (is_simple_arg): Don't assume registers are four bytes long. + Exclude all double arguments. Extended floats are not simple + args. + (is_power_of_two): New function. + (pass_by_copy_ref): Call is_power_of_two, and check that the + length fits in a register, rather than listing all the acceptable + sizes. Extended floats are not passed by reference. + (s390_push_arguments): Don't assume registers are four bytes long. + Reserve an argument register to point to the buffer for structures + returned by value. Use S390_NUM_FP_PARAMETER_REGISTERS and + S390_STACK_FRAME_OVERHEAD. + +2003-06-30 Andreas Schwab <schwab@suse.de> + + * utils.c (internal_vproblem): Use xvasprintf, not xasprintf, to + format error message. + +2003-06-30 Joel Brobecker <brobecker@gnat.com> + + * sparc-tdep.c (stop_after_trap): Remove declaration, not used. + +2003-06-30 David Carlton <carlton@kealia.com> + + Band-aid for PR c++/1245. + * Makefile.in (cp-support.o): Depend on complaints_h. + * cp-support.c: Include complaints.h. Add declaration for + find_last_component. + (cp_find_first_component): Separate code into + cp_find_first_component_aux. + (cp_find_first_component_aux): Call demangled_name_complaint. + (demangled_name_complaint): New. + +2003-06-30 Andrew Cagney <cagney@redhat.com> + + * remote.c (remote_write_bytes): Explicitly compute and then use + the payload size. Update comments to reflect. Fixes problem of + GDB not sending small packets as found by Fred Fish. + +2003-06-30 Andrew Cagney <cagney@redhat.com> + + * remote.c (remote_async_wait): Fix -Wformat problem. + +2003-06-29 Andrew Cagney <cagney@redhat.com> + + * remote.c (remote_wait): Call error, and not warning, when the + packet is corrupt. + (remote_async_wait): Ditto. + +2003-06-29 Daniel Jacobowitz <drow@mvista.com> + + * sparc-tdep.c (sparc_y_regnum): Make external again. + +2003-06-29 Daniel Jacobowitz <drow@mvista.com> + + * cli/cli-logging.c (pop_output_files): Add void to function + definition. + +2003-06-29 Andrew Cagney <cagney@redhat.com> + + * frame.c (frame_register_unwind): Use unsigned char when dumping + the buffer contents. + +2003-06-28 Daniel Jacobowitz <drow@mvista.com> + + * cli/cli-logging.c: New file. + * cli-out.c (struct ui_out_data): Add original_stream. + (cli_redirect): New function. + (cli_ui_out_impl): Add cli_redirect. + (cli_out_new): Initialize original_stream. + * ui-out.c (default_ui_out_impl): Add NULL for redirect member. + (uo_redirect, ui_out_redirect): New. + * ui-out.h (struct ui_out_impl): Add redirect member. + (redirect_ftype): New. + (ui_out_redirect): Add prototype. + * Makefile.in: Add rules for cli-logging.c. + * NEWS: Mention "set logging". + +2003-06-27 Elena Zannoni <ezannoni@redhat.com> + + * config/powerpc/ppc64-linux.mh (NATDEPFILES): Add linux-nat.o. + +2003-06-27 Andrew Cagney <cagney@redhat.com> + + * m68hc11-tdep.c (m68hc11_call_dummy_address): Delete function. + (m68hc11_gdbarch_init): Do not set call_dummy_address. + * avr-tdep.c (avr_call_dummy_address): Delete function. + (avr_gdbarch_init): Do not set call_dummy_address. + +2003-06-27 Elena Zannoni <ezannoni@redhat.com> + + * symfile.c (syms_from_objfile): Move variables to inner block. + Move the checks for the non-mainline case a bit earlier to avoid + doing some useless computations. + +2003-06-27 Elena Zannoni <ezannoni@redhat.com> + + * dwarfread.c (decode_modified_type): Gag new compiler warning. + +2003-06-26 Elena Zannoni <ezannoni@redhat.com> + + * dwarf2read.c (dwarf2_locate_sections): Ignore empty .eh_frame + sections. + +2003-06-26 Michael Chastain <mec@shout.net> + + * config/djgpp/fnchange.lst: Add gdb/testsuite/gdb.c++/pr-1210.cc, + gdb/testsuite/gdb.c++/pr-1210.exp. + +2003-06-26 Andrew Cagney <cagney@redhat.com> + + * config/djgpp/fnchange.lst: Fix 8.3 problem with sim/ppc's + altivec_expression.h and altivec_registers.h. + +2003-06-26 Andrew Cagney <cagney@redhat.com> + + * mips-tdep.c (gdb_print_insn_mips): Only explicitly set + info->mach when MIPS16. Patch suggested by Fred Fish. + +2003-06-26 Andrew Cagney <cagney@redhat.com> + + * utils.c (internal_vproblem): Print the problem to a reason + buffer and then pass to query. Make the msg variable more local. + +2003-06-26 Andrew Cagney <cagney@redhat.com> + + * gdbarch.sh (FRAME_ARGS_ADDRESS): Add predicate. Deprecate. + (FRAME_LOCALS_ADDRESS): Add predicate. Deprecate. + * gdbarch.h, gdbarch.c: Re-generate. + * frame-base.c (default_frame_args_address): Update. Use + default_frame_base_address when DEPRECATED_FRAME_ARGS_ADDRESS is + not available. + (default_frame_locals_address): Ditto for + DEPRECATED_FRAME_LOCALS_ADDRESS. + * vax-tdep.c (vax_sigtramp_saved_pc): Update. + (vax_frame_num_args): Update. + (vax_gdbarch_init): Update. + * rs6000-tdep.c (rs6000_gdbarch_init): Update. + * ns32k-tdep.c (ns32k_gdbarch_init): Update. + * mcore-tdep.c (mcore_gdbarch_init): Update. + * m68hc11-tdep.c (m68hc11_gdbarch_init): Update. + * ia64-tdep.c (ia64_gdbarch_init): Update. + * symtab.h (address_class): Update comments. + * ns32k-tdep.c (ns32k_sigtramp_saved_pc): Update. + * config/sparc/tm-sparc.h (DEPRECATED_FRAME_ARGS_ADDRESS): Update. + (DEPRECATED_FRAME_LOCALS_ADDRESS): Update. + * config/pa/tm-hppa64.h (DEPRECATED_FRAME_ARGS_ADDRESS): Update. + (DEPRECATED_FRAME_LOCALS_ADDRESS): Update. + (DEPRECATED_FRAME_LOCALS_ADDRESS): Update. + * config/m68k/tm-delta68.h (DEPRECATED_FRAME_ARGS_ADDRESS): Update. + * alpha-mdebug-tdep.c: Update. + * ada-lang.c (add_symbols_from_enclosing_procs): Update. + +2003-06-26 Andreas Jaeger <aj@suse.de> + + * x86-64-tdep.c (x86_64_push_arguments): Always set %rax to number + of SSE registers so that varargs functions work. Rework handling + of passing arguments on the stack. + (x86_64_store_return_value): Return double and float values in SSE + register. + +2003-06-24 Michael Chastain <mec@shout.net> + + * PROBLEMS: Document pr gdb/1091 and pr gdb/1193, + the "constructor breakpoints ignored" bug. + +2003-06-25 David Carlton <carlton@kealia.com> + + * MAINTAINERS: Update e-mail address. + +2003-06-24 Jim Blandy <jimb@redhat.com> + + * ppc-linux-tdep.c: More "Linux" -> "GNU/Linux". + + * ppc-linux-tdep.c (ppc64_linux_convert_from_func_ptr_addr): New + function. + (ppc_linux_init_abi): Register it as the + CONVERT_FROM_FUNC_PTR_ADDR method under the PPC64 Linux ABI. + + * ppc-linux-tdep.c (ppc64_call_dummy_address): New function. + (ppc_linux_init_abi): Set it as the gdbarch's call_dummy_address + method. + + * ppc-linux-tdep.c (ppc64_desc_entry_point): New function. + (ppc64_standard_linkage_target): Use it. + +2003-06-23 Andrew Cagney <cagney@redhat.com> + + * rs6000-tdep.c (rs6000_register_virtual_type): Add explict cases + for 0 "int0" and 4 "int32" sized registers. + * gdbtypes.c (builtin_type_int0): Define. + (build_gdbtypes): Initialize builtin_type_int0. + * gdbtypes.h (builtin_type_int0): Declare. + +2003-06-23 Stephane Carrez <stcarrez@nerim.fr> + + * m68hc11-tdep.c (m68hc11_gdbarch_init): Clear gdb_arch_char_signed + as characters are unsigned. + +2003-06-22 Daniel Jacobowitz <drow@mvista.com> + + PR gdb/1179 + * dwarfread.c (struct_type): Skip static fields without crashing. + +2003-06-22 Andrew Cagney <cagney@redhat.com> + + GDB 6.0 branch created. + * README: Update. + * PROBLEMS: Update. Empty. + * NEWS: Update. + +2003-06-22 Daniel Jacobowitz <drow@mvista.com> + + * symfile.c (add_symbol_file_command): Use parse_and_eval_address. + Suggested by Nick Hibma <n_hibma@webweaving.org>. + +2003-06-22 Andrew Cagney <cagney@redhat.com> + + * osabi.c (generic_elf_osabi_sniff_abi_tag_sections): Handle + GNU_ABI_TAG_FREEBSD and GNU_ABI_TAG_NETBSD. Suggested by Momchil + Velikov. + +2003-06-22 Daniel Jacobowitz <drow@mvista.com> + + * cli/cli-cmds.c (shell_escape): Silence warnings from old + compilers. + +2003-06-21 Daniel Jacobowitz <drow@mvista.com> + + * c-valprint.c (c_value_print): Add VALUE_OFFSET to the address + argument of val_print. + * cp-valprint.c (cp_print_value): Don't add the offset parameter + to the address argument of baseclass_offset or target_read_memory. + Do add it to the argument of cp_print_value_fields. + +2003-06-21 Andrew Cagney <cagney@redhat.com> + + * mips-tdep.c: Include "reggroups.h" and "sim-regno.h". + (mips_register_name): Return names for NUM_REGS..2*NUM_REGS + instead of 0..NUM_REGS. + (mips_register_reggroup_p): New function. + (mips_pseudo_register_write): New function. + (mips_pseudo_register_read): New function. + (mips_register_raw_size): For NUM_REGS..2*NUM_REGS return the size + based on the register's type. + (read_next_frame_reg): Simplify. Assert that REGNO is a pseudo / + cooked. + (mips_get_saved_register): Simplify. Assert that REGNO is a + pseudo / cooked. + (mips_register_byte): New function. Use MIPS_REGISTER_BYTE. + (mips_register_type): Replace mips_register_virtual_type. Map + NUM_REGS..2*NUM_REGS onto 0..NUM_REGS. Use MIPS_REGISTER_TYPE + when available. + (read_next_frame_reg): Simplify, but handle SP_REGNUM. Assert + that the register is cooked / virtual. + (mips_frame_saved_pc): Fetch the cooked PC, and not the raw PC. + Only get the extra info when needed. + (set_reg_offset): Save the offset in NUM_REGS..2*NUM_REGS as well. + (mips32_heuristic_proc_desc): Fetch the cooked register. + (heuristic_proc_desc, mips_pop_frame, get_frame_pointer): Ditto. + (mips_init_extra_frame_info, get_frame_pointer): Ditto. + (mips_print_register): Use gdbarch_register_type, instead of + REGISTER_VIRTUAL_TYPE. + (print_gp_register_row): Use gdbarch_register_type, instead of + REGISTER_VIRTUAL_TYPE. Allow for a pseudo / cooked REGNUM. + (mips_print_registers_info): Assert REGNO is pseodo / cooked. + Print the pseudo / cooked registers. + (mips_print_registers_info): Assert REGNO is pseodo / cooked. + Print the pseudo / cooked registers. + (mips_xfer_register): Use regcache_cooked_read_part. Assert that + REG_NUM is pseudo / cooked. + (mips_o32_xfer_return_value): Xfer the pseudo / cooked register. + (mips_n32n64_xfer_return_value): Ditto. + (mips_stab_reg_to_regnum): Map onto NUM_REGS..2*NUM_REGS. + (mips_dwarf_dwarf2_ecoff_reg_to_regnum): Ditto. + (mips_register_sim_regno): New function. + (mips_gdbarch_init): Set deprecated_register_byte, + register_group_p, pseudo_register_write, pseudo_register_read, + register_sim_regno, and num_pseudo_regs. Set register_type, + instead of register_virtual_type. + * Makefile.in (mips-tdep.o): Update dependencies. + * config/mips/tm-mips64.h (MIPS_REGISTER_TYPE): Rename + REGISTER_VIRTUAL_TYPE. + * config/mips/tm-mips.h (MIPS_REGISTER_TYPE): Ditto. + * config/mips/tm-irix5.h (MIPS_REGISTER_TYPE): Ditto. + * config/mips/tm-mips.h (MIPS_REGISTER_BYTE): Rename REGISTER_BYTE. + * config/mips/tm-irix6.h (MIPS_REGISTER_BYTE): Ditto. + * config/mips/tm-irix5.h (MIPS_REGISTER_BYTE): Ditto. + +2003-06-21 Daniel Jacobowitz <drow@mvista.com> + + * Makefile.in (cli-cmds.o): Depend on $(gdb_vfork_h) + * cli/cli-cmds.c: Include "gdb_vfork.h". + (shell_escape): Use vfork. + +2003-06-21 Andrew Cagney <cagney@redhat.com> + + * mips-tdep.c (mips_find_saved_regs): Rewrite mdebug code handling + 32 bit floating-point register saves. + + * frame.h (deprecated_unwind_get_saved_register): Delete. + * frame.c (deprecated_unwind_get_saved_register): Delete function. + * mips-tdep.c (mips_get_saved_register): Use frame_register_unwind + and deprecated_get_next_frame_hack instead of + deprecated_unwind_get_saved_register. + + * mips-tdep.c (mips_dump_tdep): Do not print + REGISTER_CONVERT_FROM_TYPE or REGISTER_CONVERT_TO_TYPE. + + * frame.c (get_frame_register): New function. + (frame_unwind_register_signed): New function. + (get_frame_register_signed): New function. + (frame_unwind_register_unsigned): New function. + (get_frame_register_unsigned): New function. + * frame.h: Add comments on naming schema. + (get_frame_register, frame_unwind_register_signed): Declare. + (get_frame_register_signed, get_frame_register_signed): Declare. + (frame_unwind_register_unsigned): Declare. + (get_frame_register_unsigned): Declare. + +2003-06-20 Theodore A. Roth <troth@openavr.org> + + * avr-tdep.c (avr_gdbarch_init): Don't call set_gdbarch_bfd_vma_bit. + +2003-06-20 Theodore A. Roth <troth@openavr.org> + + * avr-tdep.c (avr_read_pc): Use regcache instead of read_register. + (avr_read_sp): Ditto. + +2003-06-20 Daniel Jacobowitz <drow@mvista.com> + + * config/arm/linux.mt: Remove code protected by GDBSERVER define. + * config/arm/nm-linux.h: Likewise. + * config/arm/tm-linux.h: Likewise. + * config/ia64/nm-linux.h: Likewise. + * config/ia64/tm-ia64.h: Likewise. + * config/s390/tm-linux.h: Likewise. + * config/s390/tm-s390.h: Likewise. + * s390-nat.c: Likewise. + * s390-tdep.c: Likewise. + + * config/i386/linux.mt: Don't set GDBSERVER_DEPFILES. + * config/ia64/linux.mt: Likewise. + * config/m68k/linux.mh: Likewise. + * config/mips/linux.mt: Likewise. + * config/powerpc/linux.mh: Likewise. + * config/sh/linux.mt: Likewise. + +2003-06-19 Kris Warkentin <kewarken@qnx.com> + + * solib.c (solib_open): Change tests for whether to search + LD_LIBRARY_PATH and PATH to better deal with remotes. Update + comments. + +2003-06-19 Theodore A. Roth <troth@openavr.org> + + * avr-tdep.c (avr_frame_address): Delete function. + (avr_gdbarch_init): Don't call set_gdbarch_frame_args_address, + set_gdbarch_frame_args_address. + +2003-06-19 Andrew Cagney <cagney@redhat.com> + + * config/mips/tm-mips.h (REGISTER_CONVERT_TO_TYPE): Delete. + (REGISTER_CONVERT_FROM_TYPE): Delete. + (mips_register_convert_to_type): Delete declaration. + (mips_register_convert_from_type): Delete declaration. + * linux-nat.h (struct target_ops): Declare opaque. s/Linux/Linux + kernel/. + +2003-06-19 Michael Snyder <msnyder@redhat.com> + + * linux-nat.h: New file. + * linux-nat.c: Include linux-nat.h. + * lin-lwp.c: Include linux-nat.h. + Move struct lwp_info def to linux-nat.h. + * linux-proc.c: Include linux-nat.h. + (linux_make_note_section): Iterate over lwps instead of threads. + (linux_do_thread_registers): Use lwp instead of merged pid. + * config/nm-linux.h: Move miscelaneous def'ns to linux-nat.h. + * Makefile.in (lin-lwp.o, linux-proc.o, linux-nat.o): + Add dependency on linux_nat_h. + +2003-06-19 Theodore A. Roth <troth@openavr.org> + + * avr-tdep.c (avr_extract_return_value): Delete debugging fprintf. + +2003-06-19 Daniel Jacobowitz <drow@mvista.com> + + * varobj.c (get_type, get_target_type): Use check_typedef. + +2003-06-19 Daniel Jacobowitz <drow@mvista.com> + + * breakpoint.c (insert_catchpoint): Call internal_error. + +2003-06-19 Theodore A. Roth <troth@openavr.org> + + * avr-tdep.c (avr_push_dummy_code): Delete function. + (avr_gdbarch_init): Don't call set_gdbarch_push_dummy_code. + +2003-06-19 Daniel Jacobowitz <drow@mvista.com> + + * arch-utils.c (default_prepare_to_proceed): Remove. + (generic_prepare_to_proceed): Remove. + * arch-utils.h (default_prepare_to_proceed): Remove prototype. + (generic_prepare_to_proceed): Remove prototype. + * gdbarch.sh (PREPARE_TO_PROCEED): Remove. + * gdbarch.c: Regenerate. + * gdbarch.h: Regenerate. + * hppa-tdep.c (hppa_prepare_to_proceed): Remove dangling prototype. + * hppah-nat.c (hppa_switched_threads): Remove. + * infrun.c (prepare_to_proceed): New static function, copied from + generic_prepare_to_proceed. Remove select_it argument. + (proceed): Call prepare_to_proceed. + * infttrace.c (old_gdb_pid, reported_pid, reported_bpt): Remove + variables. + (ptrace_wait): Don't set the removed variables. + (hppa_switched_threads): Remove. + * lin-lwp.c (lin_lwp_prepare_to_proceed): Remove. + * config/nm-linux.h (PREPARE_TO_PROCEED): Don't define. + (lin_lwp_prepare_to_proceed): Remove prototype. + * config/i386/nm-x86-64linux.h (PREPARE_TO_PROCEED): Don't undefine. + * config/pa/nm-hppah.h (PREPARE_TO_PROCEED): Don't define. + +2003-06-18 Theodore A. Roth <troth@openavr.org> + + * avr-tdep.c: Include frame.h, frame-unwind.h, frame-base.h, and + trad-frame.h. + (AVR_MAX_PROLOGUE_SIZE): Increase from 56 to 64. + (AVR_ARG1_REGNUM, AVR_ARGN_REGNUM): Define. + (AVR_RET1_REGNUM, AVR_RETN_REGNUM): Define. + (AVR_PROLOGUE_*): Enumerate prologue types. + (struct frame_extra_info): Remove. + (struct avr_unwind_cache): Define. + (avr_write_sp): Delete function. + (avr_read_fp): Ditto. + (avr_init_extra_frame_info): Ditto. + (avr_pop_frame): Ditto. + (avr_frame_saved_pc): Ditto. + (avr_saved_pc_after_call): Ditto. + (avr_push_return_address): Ditto. + (avr_frame_chain): Ditto. + (avr_store_struct_return): Ditto. + (avr_push_arguments): Ditto. + (avr_scan_prologue): Update comments. Changed to set up the info for + cache unwinding. Now returns end of prologue PC. + (avr_skip_prologue): Better handling of functions lacking a prologue + by using avr_scan_prologue. + (avr_scan_arg_moves): New function. + (avr_saved_regs_unwinder): Ditto. + (avr_frame_unwind_cache): Ditto. + (avr_unwind_pc): Ditto. + (avr_frame_this_id): Ditto. + (avr_frame_prev_register): Ditto. + (avr_frame_p): Ditto. + (avr_frame_base_address ): Ditto. + (avr_unwind_dummy_id): Ditto. + (avr_push_dummy_code): Ditto. + (push_stack_item): Ditto. + (pop_stack_item): Ditto. + (avr_push_dummy_call): Ditto. + (struct stack_item): Define. + (avr_frame_unwind): Declare structure. + (avr_frame_base): Ditto. + (avr_gdbarch_init): Remove calls to + set_gdbarch_deprecated_init_frame_pc, + set_gdbarch_deprecated_target_read_fp, + set_gdbarch_deprecated_dummy_write_sp, + set_gdbarch_deprecated_fp_regnum, + set_gdbarch_deprecated_push_arguments, + set_gdbarch_deprecated_push_return_address, + set_gdbarch_deprecated_pop_frame, + set_gdbarch_deprecated_store_struct_return, + set_gdbarch_deprecated_frame_init_saved_regs, + set_gdbarch_deprecated_init_extra_frame_info, + set_gdbarch_deprecated_frame_chain, + set_gdbarch_deprecated_frame_saved_pc, + set_gdbarch_deprecated_saved_pc_after_call. + Add calls to set_gdbarch_push_dummy_call, + set_gdbarch_push_dummy_code, + frame_unwind_append_predicate, + frame_base_set_default, + set_gdbarch_unwind_dummy_id, + set_gdbarch_unwind_pc. + Wrap a long line. + +2003-06-18 Corinna Vinschen <vinschen@redhat.com> + + * h8300-tdep.c (h8300s_register_name): Enable MACH and MACL + registers for H8/300S. + (h8300_print_registers_info): Ditto. + (h8300_gdbarch_init): Accommodate register count for H8/300S. + +2003-06-18 Daniel Jacobowitz <drow@mvista.com> + + * config/nm-linux.h (linux_record_stopped_pid): New prototype. + * lin-lwp.c (child_wait): Call linux_record_stopped_pid. + (lin_lwp_wait): Likewise. Update comments. + * linux-nat.c (struct simple_pid_list, add_to_pid_list) + (pull_pid_from_list, linux_record_stopped_pid): New. + +2003-06-17 Stephane Carrez <stcarrez@nerim.fr> + + * ada-lang.c (scan_discrim_bound): Name first argument. + (ada_add_block_symbols): Remove BLOCK_SYM to use local variable + declared by ALL_BLOCK_SYMBOLS. + +2003-06-17 Stephane Carrez <stcarrez@nerim.fr> + + * ada-tasks.c (find_function_in_inferior): Don't declare it. + ("regcache.h"): Include it. + * ada-lex.l (block_lookup): Replace VAR_NAMESPACE with VAR_DOMAIN. + +2003-06-17 Daniel Jacobowitz <drow@mvista.com> + + * NEWS: Mention gdbserver detach change and "disconnect" command. + * infcmd.c (disconnect_command): New function. + (_initialize_infcmd): Add ``disconnect'' command. + * remote.c (remote_async_detach): Delete. + (remote_detach): Merge remote_async_detach. + (remote_disconnect): New. + (init_remote_ops): Set to_disconnect. + (init_remote_cisco_ops): Likewise. + (init_remote_async_ops): Likewise. Use remote_detach. + * target.c (cleanup_target): Default to_disconnect. + (update_current_target): Inherit to_disconnect. + (target_disconnect, debug_to_disconnect): New functions. + (setup_target_debug): Set to_disconnect. + * target.h (struct target_ops): Add to_disconnect. + (target_disconnect): Add prototype. + +2003-06-17 Daniel Jacobowitz <drow@mvista.com> + + * breakpoint.c (insert_catchpoint): New function. + (insert_breakpoints): Use catch_exceptions to call + insert_catchpoint. Disable catchpoints if they fail to insert. + +2003-06-17 Daniel Jacobowitz <drow@mvista.com> + + * symfile.c (reread_symbols): Clear sym_private. + +2003-06-17 Andrew Cagney <cagney@redhat.com> + + * trad-frame.h (struct frame_info): Add opaque declaration. + * remote-fileio.h (struct cmd_list_element): Add opaque + declaration. + * h8300-tdep.c (h8300s_register_name): Avoid C++ // style + comments. + +2003-06-17 Daniel Jacobowitz <drow@mvista.com> + + * remote.c (remote_prepare_to_store): Replace call to + deprecated_read_register_bytes with multiple regcache_raw_read + calls. + +2003-06-17 Kris Warkentin <kewarken@qnx.com> + + * nto-tdep.c (nto_map_arch_to_cputype): Recognize "powerpc". + (nto_find_and_open_solib): Likewise. + (nto_init_solib_absolute_prefix): Likewise. + (_initialize_nto_tdep): Fix indentation. + +2003-06-17 Kris Warkentin <kewarken@qnx.com> + + * i386-nto-tdep.c (i386nto_sigcontext_addr): Make sp a CORE_ADDR. + +2003-06-17 Kris Warkentin <kewarken@qnx.com> + + * i386-nto-tdep.c (i386nto_sigcontext_addr): Declare sp before using. + +2003-06-17 Jim Blandy <jimb@redhat.com> + + * ppc-linux-tdep.c: "Linux" -> "GNU/Linux" + +2003-06-16 Theodore A. Roth <troth@openavr.org> + + * avr-tdep.c (avr_extract_return_value): New function. + (avr_gdbarch_init): Set extract_return_value method. + +2003-06-16 Andrew Cagney <cagney@redhat.com> + + * frame.h (deprecated_get_next_frame_hack): Declare. + * frame.c (legacy_saved_regs_prev_register): Only require + DEPRECATED_FRAME_INIT_SAVED_REGS when it is needed. Assert that + there are always saved regs. + (deprecated_generic_get_saved_register): Do not require + DEPRECATED_FRAME_INIT_SAVED_REGS. + (legacy_get_prev_frame): Do not require DEPRECATED_FRAME_CHAIN, + use frame ID unwind instead. + (deprecated_get_next_frame_hack): New function. + +2003-06-16 Corinna Vinschen <vinschen@redhat.com> + + * h8300-tdep.c (h8300_push_arguments): Remove. Substitute by... + (h8300_push_dummy_call): ...this function. Some minor optimization. + (h8300_push_return_address): Remove. + (h8300_gdbarch_init): Remove calls to + set_gdbarch_deprecated_dummy_write_sp, + set_gdbarch_deprecated_push_arguments and + set_gdbarch_deprecated_push_return_address. + Add call to set_gdbarch_push_dummy_call. + +2003-06-16 Corinna Vinschen <vinschen@redhat.com> + + * h8300-tdep.c (E_PSEUDO_CCR_REGNUM): New define. + (E_PSEUDO_EXR_REGNUM): Ditto. + (h8300_is_argument_spill): Check for instructions moving argument + registers into safe registers. + (h8300_skip_prologue): Check for stm instruction to push registers + used for register variables onto stack. + (gdb_print_insn_h8300): Remove. + (h8300_examine_prologue): Add a comment. + (h8300_register_name): Take pseudo registers into account. + (h8300s_register_name): Ditto. + (h8300sx_register_name): Ditto. + (h8300_print_register): Ditto. + (h8300_print_registers_info): Define "nice" printing order. + (h8300_saved_pc_after_call): Take pseudo registers into account. + (h8300_register_type): Ditto. Return type used for remote connection + when requesting real CCR or EXR register, return actual type when + requesting pseudo CCR or EXR. + (h8300_pseudo_register_read): New function. + (h8300_pseudo_register_write): Ditto. + (h8300_dbg_reg_to_regnum): Ditto. + (h8300s_dbg_reg_to_regnum): Ditto. + (h8300_gdbarch_init): Call set_gdbarch_num_pseudo_regs, + set_gdbarch_ecoff_reg_to_regnum, set_gdbarch_dwarf_reg_to_regnum, + set_gdbarch_dwarf2_reg_to_regnum, set_gdbarch_stab_reg_to_regnum and + set_gdbarch_print_insn architecture dependent. + Call set_gdbarch_pseudo_register_read and + set_gdbarch_pseudo_register_write. + (_initialize_h8300_tdep): Remove assignment to deprecated_tm_print_insn. + +2003-06-16 Andrew Cagney <cagney@redhat.com> + + * gdbarch.sh (SAVE_DUMMY_FRAME_TOS): Deprecate. + * gdbarch.h, gdbarch.c: Re-generate. + * xstormy16-tdep.c (xstormy16_gdbarch_init): Update. + * s390-tdep.c (s390_gdbarch_init): Update. + * rs6000-tdep.c (rs6000_gdbarch_init): Update. + * mn10300-tdep.c (mn10300_gdbarch_init): Update. + * mips-tdep.c (mips_gdbarch_init): Update. + * mcore-tdep.c (mcore_gdbarch_init): Update. + * cris-tdep.c (cris_gdbarch_init): Update. + * infcall.c (call_function_by_hand): Update. + * ia64-tdep.c (ia64_push_arguments): Update comment. + * frame.c (legacy_get_prev_frame): Do not assume + SAVE_DUMMY_FRAME_TOS_P. + * dummy-frame.c (find_dummy_frame): Update comment. + +2003-06-16 Andrew Cagney <cagney@redhat.com> + + * regcache.c (do_cooked_read): Do not use register_valid_p. + +2003-06-15 Theodore A. Roth <troth@openavr.org> + + * avr-tdep.c (avr_register_type): Remove a blank line. + (avr_scan_prologue): Correct some comments. + +2003-06-15 Theodore A. Roth <troth@openavr.org> + + * avr-tdep.c (avr_scan_prologue): Update comment describing the various + prologue types. + Properly scan prologues generated by gcc with the -mcall-prologues + option. + Add code to scan -mcall-prologues for mega devices. + +2003-06-15 Theodore A. Roth <troth@openavr.org> + + * avr-tdep.c (avr_register_byte): Delete function. + (avr_register_raw_size): Delete function. + (avr_register_virtual_size): Delete function. + (avr_register_virtual_type): Delete function. + (avr_register_type): New function. + (avr_address_to_pointer): Remove unused code. + (avr_read_fp): Need to read FP as two separate bytes due to change to + avr_register_type() usage. + (avr_gdbarch_init): Don't set deprecated_register_size. + Don't set deprecated_register_bytes. + Don't set deprecated_register_byte. + Don't set deprecated_register_raw_size. + Don't set deprecated_max_register_raw_size. + Don't set deprecated_register_virtual_size. + Don't set deprecated_max_register_virtual_size. + Don't set deprecated_register_virtual_type. + Set register_type method. + +2003-06-15 Daniel Jacobowitz <drow@mvista.com> + + * Makefile.in (linux-nat.o): Add rule. + * linux-nat.c: New file. + * config/nm-linux.h (CHILD_INSERT_FORK_CATCHPOINT): Define. + (CHILD_INSERT_VFORK_CATCHPOINT): Define. + (CHILD_INSERT_EXEC_CATCHPOINT): Define. + * config/alpha/alpha-linux.mh (NATDEPFILES): Add linux-nat.o. + * config/arm/linux.mh (NATDEPFILES): Likewise. + * config/i386/linux.mh (NATDEPFILES): Likewise. + * config/i386/x86-64linux.mh (NATDEPFILES): Likewise. + * config/ia64/linux.mh (NATDEPFILES): Likewise. + * config/m68k/linux.mh (NATDEPFILES): Likewise. + * config/mips/linux.mh (NATDEPFILES): Likewise. + * config/powerpc/linux.mh (NATDEPFILES): Likewise. + * config/s390/s390.mh (NATDEPFILES): Likewise. + * config/sparc/linux.mh (NATDEPFILES): Likewise. + +2003-06-15 Mark Kettenis <kettenis@gnu.org> + + * i387-tdep.c: Reorder includes, fix some whitespace issues and + replace out-of-date comment. + +2003-06-15 Andrew Cagney <cagney@redhat.com> + + * rdi-share/host.h (Fail): Change to a varargs function. + * remote-rdi.c (Fail): Update. + +2003-06-15 Mark Kettenis <kettenis@gnu.org> + + * i386-tdep.c (i386_next_regnum): Fix bounds checking. + (i386_convert_register_p, i386_register_to_value, + i386_register_from_value): Handle types longer than 8 bytes. + +2003-06-15 Mark Kettenis <kettenis@gnu.org> + + * i386-tdep.c (i386_register_to_value, i386_value_to_register): + Move floating-point code to new function in i387-tdep.c. + * i387-tdep.c (i387_register_to_value, i387_value_to_register): + New functions containing code moved here from i386-tdep.c. + * i387-tdep.h: Add opaque declaration for `struct type'. + (i387_register_to_value, i387_value_to_register): New prototypes. + * x86-64-tdep.c (x86_64_convert_register_p): New function. + (x86_64_init_abi): Set convert_register_p, register_to_value and + value_to_register here. + +2003-06-14 Andrew Cagney <cagney@redhat.com> + + * mips-tdep.c (mips_register_to_value): Make static. + (mips_value_to_register): Make static. + * i386-tdep.c (i386_fetch_pointer_argument): Make static. + * ia64-tdep.c (ia64_register_raw_size): Make static. + (ia64_register_virtual_size): Make static. + (ia64_register_byte): Make static. + * i387-tdep.c: Include "i387-tdep.h". + (print_387_control_word): Delete function. + (print_387_status_word): Delete function. + (print_387_status_bits): Delete function. + (print_387_control_bits): Delete function. + * Makefile.in (i387-tdep.o): Update dependencies. + * rdi-share/host.h (Fail): Declare. + * remote-rdi.c (Fail): Update to match declaration. + +2003-06-14 Andrew Cagney <cagney@redhat.com> + + * config/mips/embedl64.mt (TDEPFILES): Delete "remote-array.o". + * config/mips/embedl.mt (TDEPFILES): Delete "remote-array.o". + * config/mips/embed64.mt (TDEPFILES): Delete "remote-array.o". + * config/djgpp/fnchange.lst: Delete "remote-array.c". + * README: Delete reference to remote-array. + * Makefile.in (ALLDEPFILES): Remove "remote-array.c". + (remote-array.o): Delete target. + * config/mips/embed.mt (TDEPFILES): Delete "remote-array.o". + * remote-array.c: Delete file. + +2003-06-14 Andrew Cagney <cagney@redhat.com> + Mark Kettenis <kettenis@gnu.org> + + * gdbarch.sh (CONVERT_REGISTER_P): Add "type" parameter. + (REGISTER_TO_VALUE, VALUE_TO_REGISTER): Replace raw buffer + parameter with "frame". + * gdbarch.h, gdbarch.c: Re-generate. + * frame.h (put_frame_register): Declare. + * frame.c (put_frame_register): New function. + * arch-utils.c (legacy_convert_register_p): Add "type" parameter. + (legacy_register_to_value): Rewrite, use "frame" to get the + register value. + (legacy_value_to_register): Rewrite, use "frame" to find the + register's location before storing. + * arch-utils.h (legacy_convert_register_p): Update. + (legacy_register_to_value, legacy_value_to_register): Update. + * findvar.c (value_from_register): Rewrite, eliminate use of + REGISTER_CONVERT_TO_TYPE, pass "type" to CONVERT_REGISTER_P, pass + "frame" to REGISTER_TO_VALUE. + * valops.c (value_assign): Move the CONVERT_REGISTER code to the + lval_reg_frame_relative + lval_register branch of the switch. Do + not use REGISTER_CONVERT_FROM_TYPE. Use put_frame_register. + * i386-tdep.c (I386_EBX_REGNUM, I386_ECX_REGNUM, I386_ESI_REGNUM, + I386_EDI_REGNUM): New defines. + (i386_next_regnum, i386_convert_register_p, + i386_register_to_value, i386_value_to_register): New functions. + (i386_register_convertible, i386_register_convert_to_virtual, + i386_convert_to_raw): Remove functions. + (i386_gdbarch_init): Set convert_register_p, register_to_value and + value_to_register instead of register_convertible, + register_convert_to_virtual and register_convert_to_raw. + * mips-tdep.c (mips_convert_register_p): New function. + (mips_value_to_register): Replace mips_register_convert_from_type. + (mips_register_to_value): Replace mips_register_convert_to_type. + (mips_gdbarch_init): Set conver_register_p, value_to_register and + register_to_value. + * alpha-tdep.c (alpha_convert_register_p): Update. + (alpha_value_to_register): Update, store the register. + (alpha_register_to_value): Update, fetch the register. + +2003-06-14 Theodore A. Roth <troth@openavr.org> + + * avr-tdep.c (avr_remote_translate_xfer_address): Delete function. + (avr_gdbarch_init): Remove avr_call_dummy_words variable. + Don't set deprecated_call_dummy_words. + Remove commented out set_gdbarch_believe_pcc_promotion() call. + Don't set remote_translate_xfer_address. + (avr_io_reg_read_command): Remove commented out debug printf. + Wrap a long line. + +2003-06-14 Theodore A. Roth <troth@openavr.org> + + * avr-tdep.c (avr_scan_prologue): Fix to avoid a buffer over run which + causes gdb to seg fault. + +2003-06-14 Daniel Jacobowitz <drow@mvista.com> + + * sparc-nat.c (fetch_inferior_registers): Correct + a reference to "registers". + +2003-06-14 Jeroen Dekkers <jeroen@dekkers.cx> + + * Makefile.in (exc_request_U_h): Define + (exc_request_S_h): Likewise. + (msg_reply_S_h): Likewise. + (msg_U_h): Likewise. + (notify_S_h): Likewise. + (process_reply_S_h): Likewise. + (gnu-nat.o): Depend on gdb_obstack_h + * gnu-nat.c: Include "gdb_obstack.h". + +2003-06-13 Andrew Cagney <cagney@redhat.com> + + * gdbarch.sh: Document what PUSH_DUMMY_CALL replaces. + * gdbarch.h, gdbarch.c: Re-generate. + +2003-06-13 Andrew Cagney <cagney@redhat.com> + + * gdbarch.sh: Document what UNWIND_DUMMY_ID replaces. Clarify + when deprecated REGISTER macros can be deleted. + * gdbarch.h, gdbarch.c: Re-generate. + +2003-06-13 Jim Blandy <jimb@redhat.com> + + * solib-svr4.c (solib_break_names): Recognize the 64-bit PowerPC + Linux entry point symbols for _dl_debug_state, too. + +2003-06-13 Andrew Cagney <cagney@redhat.com> + + * infcall.c (call_function_by_hand): When UNWIND_DUMMY_ID is + available, do not use the FP register, and always save the TOS. + * dummy-frame.c (dummy_frame_this_id): Do not assert + SAVE_DUMMY_FRAME_TOS. + * i386-tdep.c (i386_save_dummy_frame_tos): Delete function. + (i386_gdbarch_init): Do not set save_dummy_frame_tos. + (i386_push_dummy_call): Add 8 to the returned SP. + * frame.c (legacy_frame_p): Do not require SAVE_DUMMY_FRAME_TOS. + * d10v-tdep.c (d10v_unwind_dummy_id): Use d10v_unwind_sp. + (d10v_gdbarch_init): Do not set save_dummy_frame_tos. + * x86-64-tdep.c (x86_64_save_dummy_frame_tos): Delete function. + (x86_64_push_dummy_call): Return "sp + 16". + (x86_64_init_abi): Do not set save_dummy_frame_tos. + * alpha-tdep.c (alpha_gdbarch_init): Do not set + save_dummy_frame_tos. + +2003-06-13 Jim Blandy <jimb@redhat.com> + + * frv-tdep.c (frv_use_struct_convention): Delete static + declaration for function deleted in my change of 2003-06-12. + +2003-06-13 Theodore A. Roth <troth@openavr.org> + + * avr-tdep.c (avr_address_to_pointer): Shift code addrs right 1 bit. + (avr_pointer_to_address): Shift code addrs left 1 bit. + (avr_convert_from_func_ptr_addr): Delete function since operation is + better handled by avr_address_to_pointer and avr_pointer_to_address. + (avr_gdbarch_init): Don't set convert_from_func_ptr_add method. + +2003-06-13 Mark Kettenis <kettenis@gnu.org> + + From Kelley Cook <kelleycook@wideopenwest.com>: + * configure.host: Accept i[34567]86 variants. + * configure.tgt: Likewise. + * nlm/configure.in: Likewise. + * nlm/configure: Regenerated. + +2003-06-13 Richard Earnshaw <rearnsha@arm.com> + + * arm-tdep.c (solib-svr4.h): Dont' include it. + (arm_linux_svr4_fetch_link_map_offsets): Move to ... + * arm-linux-tdep.c: ... here. Make static. + (arm_linux_init_abi): Register it. + (solib-svr4.h): Include it. + * Makefile.in: Update dependencies. + * config/arm/tm-linux.h (SVR4_FETCH_LINK_MAP_OFFSETS): Delete. + (arm_linux_svr4_fetch_link_map_offsets): Delete declaration. + +2003-06-13 Corinna Vinschen <vinschen@redhat.com> + + * h8300-tdep.c: Add definitions E_RET0_REGNUM and E_RET1_REGNUM to + indicate registers used for return values. + (struct frame_extra_info): Drop args_pointer and locals_pointer. + (h8300_examine_prologue): Remove initializing dropped frame_extra_info + members. + (h8300_init_extra_frame_info): Ditto. + (h8300_frame_locals_address): Removed. + (h8300_frame_args_address): Removed. + (h8300_extract_return_value): Use new regcache structure. Only care + for 16 bit CPUs. + (h8300h_extract_return_value): Same function for 32 bit CPUs. + (h8300_store_return_value): Use new regcache structure. Only care + for 16 bit CPUs. + (h8300h_store_return_value): Same function for 32 bit CPUs. + (h8300_store_struct_return): Removed. + (h8300_extract_struct_value_address): Use new regcache structure. + (h8300h_extract_struct_value_address): Removed. + (h8300_push_dummy_code): New function. + (h8300_gdbarch_init): Slightly rearranged to stress deprecated calls. + Remove call_dummy_words. Call set_gdbarch_extract_return_value and + set_gdbarch_store_return_value architecture dependent. + Call set_gdbarch_push_dummy_code and + set_gdbarch_extract_struct_value_address. + Remove calls to set_gdbarch_frame_args_address, + set_gdbarch_frame_locals_address, + set_gdbarch_deprecated_store_struct_return, + set_gdbarch_deprecated_extract_return_value, + set_gdbarch_deprecated_extract_struct_value_address, + set_gdbarch_deprecated_call_dummy_words and + set_gdbarch_deprecated_sizeof_call_dummy_words. + +2003-06-13 Corinna Vinschen <vinschen@redhat.com> + + * h8300-tdep.c (h8300_register_byte): Remove. + (h8300h_register_byte): Remove. + (h8300_register_virtual_type): Remove. Substitute by... + (h8300_register_type): New function. + (h8300_extract_struct_value_address): Drop usage of h8300_register_byte. + (h8300h_extract_struct_value_address): Ditto. + (h8300_gdbarch_init): Drop calls to + set_gdbarch_deprecated_register_byte and + set_gdbarch_deprecated_register_virtual_type. + Add call to set_gdbarch_register_type. + +2003-06-13 Andrew Cagney <cagney@redhat.com> + + * gdbarch.sh: Update comments on registers. + (deprecated_register_byte): Rename register_byte. + (deprecated_register_raw_size): Rename register_raw_size. + (deprecated_register_virtual_size): Rename register_virtual_size. + (deprecated_register_virtual_type): Rename register_virtual_type. + * gdbarch.h, gdbarch.c: Re-generate. + * xstormy16-tdep.c (xstormy16_gdbarch_init): Update. + * vax-tdep.c (vax_gdbarch_init): Update. + * v850-tdep.c (v850_gdbarch_init): Update. + * sparc-tdep.c (sparc_gdbarch_init): Update. + * sh-tdep.c (sh_gdbarch_init): Update. + * s390-tdep.c (s390_gdbarch_init): Update. + * rs6000-tdep.c (rs6000_gdbarch_init): Update. + * ns32k-tdep.c: Update. + * mn10300-tdep.c (mn10300_gdbarch_init): Update. + * mips-tdep.c (mips_gdbarch_init): Update. + * mcore-tdep.c (mcore_gdbarch_init): Update. + * m68k-tdep.c (m68k_gdbarch_init): Update. + * m68hc11-tdep.c (m68hc11_gdbarch_init): Update. + * ia64-tdep.c (ia64_gdbarch_init): Update. + * hppa-tdep.c (hppa_gdbarch_init): Update. + * h8300-tdep.c (h8300_gdbarch_init): Update. + * frv-tdep.c (frv_gdbarch_init): Update. + * cris-tdep.c (cris_gdbarch_init): Update. + * avr-tdep.c (avr_gdbarch_init): Update. + * alpha-tdep.c (alpha_gdbarch_init): Update. + * arm-tdep.c (arm_gdbarch_init): Update. + +2003-06-13 Andrew Cagney <cagney@redhat.com> + + * mips-tdep.c (mips_gdbarch_init): Replace remaining instances of + mips_o32_use_struct_convention with always_use_struct_convention. + +2003-06-12 David Carlton <carlton@kealia.com> + + * cp-namespace.c (cp_set_block_scope): Comment out + processing_has_namespace_info branch. + +2003-06-12 Jim Blandy <jimb@redhat.com> + + Recognize and skip 64-bit PowerPC Linux linkage functions. + * ppc-linux-tdep.c (insn_d, insn_ds, insn_xfx, read_insn, struct + insn_pattern, insns_match_pattern, d_field, ds_field): New + functions, macros, and types for working with PPC instructions. + (ppc64_standard_linkage, PPC64_STANDARD_LINKAGE_LEN, + ppc64_in_solib_call_trampoline, ppc64_standard_linkage_target, + ppc64_skip_trampoline_code): New functions, variables, and macros + for recognizing and skipping linkage functions. + (ppc_linux_init_abi): Use ppc64_in_solib_call_trampoline and + ppc64_skip_trampoline_code for the 64-bit PowerPC Linux ABI. + + * ppc-linux-nat.c (ppc_register_u_addr): Correctly compute u-area + register offsets for both the 32- and 64-bit interfaces. + + Actually finish the job started by my change of 2003-05-29. + * config/powerpc/tm-linux.h (SKIP_TRAMPOLINE_CODE): Remove the + other #definition of this. + (ppc_linux_skip_trampoline_code): Remove declaration. + * ppc-linux-tdep.c (ppc_linux_skip_trampoline_code): Make this + static. + (ppc_linux_init_abi): Register it as the skip_trampoline_code + method for GDBARCH. + + * config/powerpc/nm-ppc64-linux.h (PTRACE_XFER_TYPE): This is + 'long' on ppc64-*-linux*. + + * ppc-linux-nat.c (ppc_register_u_addr, fill_gregset): If PT_MQ + isn't #defined, assume the register doesn't exist: act as if + tdep->ppc_mq_regnum were -1. + + * configure.host, configure.tgt: Add entries for + powerpc64-*-linux, selecting powerpc/ppc64-linux.mh and + powerpc/linux.mt. + * config/powerpc/ppc64-linux.mh, config/powerpc/nm-ppc64-linux.mh: + New files. + + * arch-utils.c (always_use_struct_convention): New function. + * arch-utils.h (always_use_struct_convention): New prototype. + * alpha-tdep.c (alpha_use_struct_convention): Delete. + (alpha_gdbarch_init): Register always_use_struct_convention, + instead of alpha_use_struct_convention. + * cris-tdep.c (cris_use_struct_convention): Delete. + (cris_gdbarch_init): Register always_use_struct_convention, + instead of cris_use_struct_convention. + * frv-tdep.c (frv_use_struct_convention): Delete. + (frv_gdbarch_init): Register always_use_struct_convention, + instead of frv_use_struct_convention. + * h8300-tdep.c (h8300_use_struct_convention): Delete. + (h8300_gdbarch_init): Register always_use_struct_convention, + instead of h8300_use_struct_convention. + * mips-tdep.c (mips_o32_use_struct_convention): Delete. + (mips_o32_gdbarch_init): Register always_use_struct_convention, + instead of mips_o32_use_struct_convention. + +2003-06-12 Andrew Cagney <cagney@redhat.com> + + * wince.c: Include "mips-tdep.h". + * mips-tdep.h (mips_next_pc): Declare. + * mcore-tdep.c: Make more local functions static. + * Makefile.in (wince.o): Update dependencies. + +2003-06-12 David Carlton <carlton@kealia.com> + + * symtab.c (lookup_symbol_aux_minsyms): Replace + DEPRECATED_SYMBOL_NAME by SYMBOL_LINKAGE_NAME. + (find_pc_sect_line, search_symbols, rbreak_command): Ditto. + (COMPLETION_LIST_ADD_SYMBOL): Rewrite in terms of + SYMBOL_NATURAL_NAME. + +2003-06-12 Andreas Schwab <schwab@suse.de> + + * Makefile.in (tuiDisassem.o): Update dependencies. + +2003-06-12 David Carlton <carlton@bactrian.org> + + * symtab.h: Delete declaration of make_symbol_overload_list. + Add declaration of lookup_partial_symbol. + * symtab.c (remove_params): Move to cp-support.c. + (overload_list_add_symbol, make_symbol_overload_list) + (sym_return_val_size, sym_return_val_index): Ditto. + (lookup_partial_symbol): Make extern. + * cp-support.h: Add declaration of make_symbol_overload_list. + * cp-support.c: Include dictionary.h, objfiles.h, frame.h, + symtab.h, and block.h. + (remove_params): Move here from symtab.c. + (overload_list_add_symbol, make_symbol_overload_list) + (sym_return_val_size, sym_return_val_index): Ditto. + * valops.c: Include cp-support.h. + * Makefile.in (cp-support.o): Depend on dictionary_h, objfiles_h, + frame_h, and block_h. + (valops.o): Depend on cp_support_h. + +2003-06-12 Corinna Vinschen <vinschen@redhat.com> + + * h8300-tdep.c: Add H8SX registers. Drop E_NUM_REGS entirely, + substitute by NUM_REGS throughout. + (h8300_register_name): Only care for H8/300 and H8/300H registers. + (h8300s_register_name): New function for H8S registers. + (h8300sx_register_name): Ditto for H8SX registers. + (h8300_print_register): Revise register printing, avoid depending + on 32 bit long. + (h8300_register_byte): Only care for H8/300 registers. + (h8300h_register_byte): New function for any other architecture. + (h8300_register_raw_size): Remove. + (h8300_register_virtual_type): Revise to return actually useful + type. + (h8300_extract_struct_value_address): Only care for H8/300 registers. + (h8300h_extract_struct_value_address): New function for any other + architecture. + (h8300_gdbarch_init): Add h8300sxn. Call set_gdbarch_num_regs, + set_gdbarch_register_name, set_gdbarch_register_byte, + set_gdbarch_ptr_bit and set_gdbarch_addr_bit architecture dependent. + Remove calls to set_gdbarch_deprecated_register_size, + set_gdbarch_deprecated_register_bytes, set_gdbarch_register_raw_size, + set_gdbarch_deprecated_max_register_raw_size, + set_gdbarch_register_virtual_size and + set_gdbarch_deprecated_max_register_virtual_size entirely. + Call set_gdbarch_long_long_bit, set_gdbarch_double_bit and + set_gdbarch_long_double_bit. + +2003-06-11 Jeff Johnston <jjohnstn@redhat.com> + + * doublest.c (convert_doublest_to_floatformat): When dealing + with the implied integer bit, only alter mant_bits if we are + processing a full 32 bits of mantissa. + +2003-06-11 David Carlton <carlton@bactrian.org> + + * dictionary.h: New. + * dictionary.c: New. + * block.h: Add opaque declaration for struct dictionary. + (struct block): Add 'dict' member; delete 'hashtable', 'nsyms', + 'sym' members. + (BLOCK_DICT): New macro. + Delete macros BLOCK_HASHTABLE, BLOCK_NSYMS, BLOCK_SYM, + BLOCK_BUCKETS, BLOCK_BUCKET, BLOCK_HASHTABLE_SIZE, + BLOCK_SHOULD_SORT. + (ALL_BLOCK_SYMBOLS): Update definition. + * Makefile.in (SFILES): Add dictionary.c. + (dictionary_h): New. + (COMMON_OBS): Add dictionary.o. + (dictionary.o): New. + (ada-lang.o): Depend on dictionary_h. + (buildsym.o, coffread.o, jv-lang.o, mdebugread.o, objfiles.o) + (stack.o, symmisc.o, symtab.o, tracepoint.o, valops.o) + (mi-cmd-stack.o): Ditto. + (gdbtk-cmds.o): Update dependencies. + (gdbtk-stack.o): Ditto. + * ada-lang.c: Include dictionary.h. + (symtab_for_sym): Update uses of ALL_BLOCK_SYMBOLS. + (fill_in_ada_prototype, debug_print_block): Ditto. + (ada_add_block_symbols): Update uses of ALL_BLOCK_SYMBOLS; replace + explicit iteration by use of ALL_BLOCK_SYMBOLS. Delete variable + 'is_sorted'. + * mdebugread.c: Include dictionary.h. + (struct parse_stack): Delete 'maxsyms' member. + (parse_symbol): Update calls to new_block. Delete calls to + shrink_block. Use dictionary methods. + (psymtab_to_symtab_1): Delete calls to sort_symtab_syms. + Update calls to new_symtab. Don't maintain maxsyms data. + (mylookup_symbol): Update use of ALL_BLOCK_SYMBOLS. + (add_symbol): Just call dict_add_symbol. + (new_symtab): Delete 'maxsyms' argument. + (new_symtab): Update calls to new_block. + (new_block): Delete 'maxsyms' argument; add 'function' argument. + (shrink_block): Delete function. + (fixup_sigtramp): Update call to new_block. Add symbol via + dict_add_symbol. + * jv-lang.c: Include dictionary.h. + (get_java_class_symtab): Set the BLOCK_DICT of the blocks + appropriately. Set class_symtab->free_func. Make sure the + blockvector is big enough to hold two blocks. + (add_class_symtab_symbol): Use dictionary methods. + (free_class_block): New function. + (type_from_class): Replace explicit iteration by + ALL_BLOCK_SYMBOLS. + * symtab.h (struct symtab): Replace 'free_ptr' method by + 'free_func'. + * dwarf2read.c (psymtab_to_symtab_1): Delete call to + sort_symtab_syms. + * dwarfread.c (psymtab_to_symtab_1): Delete call to + sort_symtab_syms. + * coffread.c (coff_symfile_read): Delete call to sort_symtab_syms. + Include dictionary.h. + (patch_opaque_types): Update use of ALL_BLOCK_SYMBOLS. + * dbxread.c (dbx_psymtab_to_symtab_1): Delete call to + sort_symtab_syms. + * objfiles.c: Include dictionary.h. + (objfile_relocate): Update use of ALL_BLOCK_SYMBOLS. + * buildsym.c: Include dictionary.h. + (finish_block): Use dictionary methods. + (end_symtab): Set free_func to NULL, not free_ptr. + * tracepoint.c: Include dictionary.h. + (add_local_symbols): Update use of ALL_BLOCK_SYMBOLS. + (scope_info): Ditto. + * stack.c: Include dictionary.h. + (print_block_frame_locals): Update use of ALL_BLOCK_SYMBOLS. + (print_block_frame_labels, print_frame_arg_vars) + (print_frame_args): Ditto. + * symmisc.c (free_symtab_block): Use dictionary methods. + (dump_symtab): Ditto. + (free_symtab): Replace use of 'free_ptr' by 'free_func'. + Include dictionary.h. + * symfile.h: Delete declarations of sort_block_syms, + sort_symtab_syms. + * symfile.c (sort_block_syms): Delete. + (sort_symtab_syms): Delete. + * symtab.c: Include dictionary.h. + (lookup_block_symbol): Use dictionary iterators. + (find_pc_sect_symtab): Update use of ALL_BLOCK_SYMBOLS. + (search_symbols, make_symbol_completion_list): Ditto. + (make_symbol_overload_list): Ditto. + * valops.c (value_of_local): Use dict_empty. + Include dictionary.h. + +2003-06-11 J. Brobecker <brobecker@gnat.com> + + * win32-nat.c (solib_symbols_add): Fix a small compilation error. + +2003-06-11 David Carlton <carlton@bactrian.org> + + * block.h (BLOCK_SHOULD_SORT): Delete. + * symtab.c (lookup_block_symbol): Don't worry about sorted linear + blocks. + * ada-lang.c (ada_add_block_symbols): Ditto. + * symfile.c (sort_block_syms): Delete. + (sort_symtab_syms): Ditto. + * symfile.h: Delete sort_symtabs_syms and sort_block_syms + declarations. + * coffread.c (coff_symfile_read): Don't call sort_symtab_syms. + * dbxread.c (dbx_psymtab_to_symtab_1): Ditto. + * dwarf2read.c (psymtab_to_symtab_1): Ditto. + * dwarfread.c (psymtab_to_symtab_1): Ditto. + * hpread.c (hpread_psymtab_to_symtab_1): Ditto. + * mdebugread.c (psymtab_to_symtab_1): Ditto. + * xcoffread.c (xcoff_psymtab_to_symtab_1): Ditto. + +2003-06-11 Jeff Johnston <jjohnstn@redhat.com> + + * ia64-tdep.c (ia64_gdbarch_init): Set number of long double + bits to 128. + +2003-06-11 Andrew Cagney <cagney@redhat.com> + + * gdbarch.sh (DEPRECATED_REGISTER_CONVERTIBLE): Deprecate + REGISTER_CONVERTIBLE. + (DEPRECATED_REGISTER_CONVERT_TO_VIRTUAL): Same. + (DEPRECATED_REGISTER_CONVERT_TO_RAW): Same, make "from" constant. + * gdbarch.h, gdbarch.c: Re-generate. + * arch-utils.h (deprecated_register_convertible_not): Rename + generic_register_convertible_not. + * arch-utils.c (deprecated_register_convertible_not): Rename + generic_register_convertible. + (legacy_convert_register_p, legacy_register_to_value): Update. + * sh-tdep.c (sh64_push_arguments): Update. + * m68klinux-tdep.c (m68k_linux_extract_return_value): Update. + * config/m68k/tm-delta68.h (DEPRECATED_EXTRACT_RETURN_VALUE): Update. + * m68klinux-tdep.c (m68k_linux_store_return_value): Update. + * config/m68k/tm-delta68.h (DEPRECATED_STORE_RETURN_VALUE): Update. + * arch-utils.c (legacy_value_to_register): Update. + * rs6000-tdep.c (rs6000_gdbarch_init): Update. + (rs6000_register_convert_to_raw): Make parameter "from" const. + * mips-tdep.c (mips_gdbarch_init): Update. + (mips_register_convert_to_raw): Make parameter"virt_buf" const. + * infcmd.c (default_print_registers_info): Update. + * ia64-tdep.c (ia64_gdbarch_init): Update. + (ia64_register_convert_to_raw): Make parameter "from" const. + * i386-tdep.c (i386_gdbarch_init): Update. + (i386_register_convert_to_raw): Update. + +2003-06-11 Andrew Cagney <cagney@redhat.com> + + * remote-fileio.c: Include "remote-fileio.h". + * Makefile.in (remote-fileio.o): Update dependencies. + (remote_fileio_h): Fix typo. + +2003-06-11 Andrew Cagney <cagney@redhat.com> + + * xstormy16-tdep.c (xstormy16_push_return_address): Make static. + (xstormy16_save_dummy_frame_tos): Make static. + (_initialize_xstormy16_tdep): Add declaration. + * vax-tdep.c (_initialize_vax_tdep): Add declaration. + * v850-tdep.c: Make local functions static. + (_initialize_v850_tdep): Add declaration. + * sparc-tdep.c: Make local functions static. + (_initialize_sparc_tdep): Add declaration. + * sh-tdep.c: Make local functions static. + (_initialize_sh_tdep): Add declaration. + * sh3-rom.c (_initialize_sh3_rom): Add declaration. + * s390-tdep.c: Make local functions static. + (_initialize_s390_tdep): Add declaration. + * dbxread.c (find_stab_function_addr): Make static. + * ppc-bdm.c (_initialize_bdm_ppc): Add declaration. + * ocd.c (_initialize_remote_ocd): Add declaration. + * dink32-rom.c (_initialize_dink32_rom): Add declaration. + * ppcbug-rom.c (_initialize_ppcbug_rom): Add declaration. + * ns32k-tdep.c (_initialize_ns32k_tdep): Add declaration. + * ns32knbsd-tdep.c (_initialize_ns32knbsd_tdep): Add declaration. + * mips-tdep.c (_initialize_mips_tdep): Add declaration. + * remote-array.c (_initialize_array): Add declaration. + (_initialize_remote_monitors): Add declaration. + * remote-mips.c: Make local functions static. + (_initialize_remote_mips): Add declaration. + * mcore-tdep.c: Make all local functions static. + (_initialize_mcore_tdep): Add declaration. + * dbug-rom.c (_initialize_dbug_rom): Add declaration. + * abug-rom.c (_initialize_abug_rom): Add declaration. + * rom68k-rom.c (_initialize_rom68k): Add declaration. + * cpu32bug-rom.c (_initialize_cpu32bug_rom): Add declaration. + * m68k-tdep.c (_initialize_m68k_tdep): Add declaration. + * remote-est.c (_initialize_est): Add declaration. + * m68hc11-tdep.c (_initialize_m68hc11_tdep): Add declaration. + (m68hc11_call_dummy_address): Make static. + * ia64-tdep.c: Make local functions static. + (_initialize_ia64_tdep): Add declaration. + * solib-legacy.c (_initialize_svr4_lm): Add declaration. + * monitor.c (monitor_wait_filter): Make static. + (_initialize_remote_monitors): Add declaration. + * remote-hms.c (_initialize_remote_hms): Add declaration. + * remote-e7000.c (fetch_regs_from_dump): Make static. + (expect_n): Make static. + (_initialize_remote_e7000): Add declaration. + * ser-e7kpc.c: Always include "defs.h". + (_initialize_ser_e7000pc): Add declaration. + * h8300-tdep.c (_initialize_h8300_tdep): Add declaration. + * cris-tdep.c: Make all but one function static. + (_initialize_cris_tdep): Add declaration. + * solib-svr4.c (_initialize_svr4_solib): Add declaration. + * solib.c (update_solib_list): Make static. + (_initialize_solib): Add declaration. + * avr-tdep.c (avr_breakpoint_from_pc): Make static. + (_initialize_avr_tdep): Add declaration. + * remote-rdi.c (voiddummy): Make static. + (_initialize_remote_rdi): Add declaration. + * arm-tdep.c (_initialize_arm_tdep): Add declaration. + * remote-rdp.c (send_rdp): Make static. + (_initialize_remote_rdp): Add declaration. + * alpha-tdep.c (_initialize_alpha_tdep): Add declaration. + +2003-06-11 Corinna Vinschen <vinschen@redhat.com> + + * remote-fileio.c: Make ari happy. + +2003-06-10 J. Brobecker <brobecker@gnat.com> + + * rs6000-nat.c (child_xfer_memory): Compute the right address when + fetching the trailing bytes of the buffer we are about to write. + +2003-06-10 Andrew Cagney <cagney@redhat.com> + + * remote-fileio.h (REMOTE_FILEIO_H): Replace FILEIO_H. + * Makefile.in (remote-fileio.o): Update dependencies. + * remote-fileio.c: Include "gdb_wait.h" and "gdb_stat.h". Do not + include <setjmp.h>, or <sys/types.h> conditional on USG. + (remote_fio_jmp_buf): Delete global variable. + +2003-06-10 Corinna Vinschen <vinschen@redhat.com> + Martin M. Hunt <hunt@redhat.com> + + * Makefile.in (REMOTE_OBS): Add remote-fileio.o + (SFILES): Add remote-fileio.c. + Add dependencies for building remote-fileio.o. Add remote-fileio.h to + dependencies for building remote.o. + * remote-fileio.c: New file implementing the remote File-I/O protocol. + * remote-fileio.h: New header file defining remote File-I/O interface. + * remote.c (remote_write_bytes, remote_read_bytes): Remove + static storage class. + (remote_wait, remote_async_wait): Call remote_fileio_request() on + 'F' packet. + (_initialize_remote): Call initialize_remote_fileio(). + * remote.h: Declare remote_write_bytes() and remote_read_bytes(). + * defs.h: Declare gdb_stdin, gdb_stdtargerr and gdb_stdtargin. + * main.c: New ui_file gdb_stdin, gdb_stdtargerr and gdb_stdtargin. + (captured_main): Initialize new ui_files. + * ui-file.c: Add read and fgets input functions. + (ui_file_new): set ui_file_fputs and ui_file_read to null functions. + (null_file_read): New function. + (ui_file_read): New function. + (set_ui_file_read): New function. + (stdio_file_read): New function. + * ui-file.h: New type ui_file_read_ftype. + (set_ui_file_read): Declare. + (ui_file_read): Declare. + +2003-06-09 Andrew Cagney <cagney@redhat.com> + + * frame.h (deprecated_unwind_get_saved_register): Rename + generic_unwind_get_saved_register, update comments. + * mips-tdep.c (mips_get_saved_register): Update. + * frame.c (deprecated_unwind_get_saved_register): Update. + +2003-06-09 Andrew Cagney <cagney@redhat.com> + + * vax-tdep.c (vax_frame_locals_address): Delete function. + (vax_gdbarch_init): Do not set frame_locals_address. + * m68hc11-tdep.c (m68hc11_frame_locals_address): Delete function. + (m68hc11_gdbarch_init): Do not set frame_locals_address. + * s390-tdep.c (s390_frame_args_address): Delete function. + (s390_gdbarch_init): Do not set frame_args_address or + frame_locals_address. + * ns32k-tdep.c (ns32k_frame_locals_address): Delete. + (ns32k_gdbarch_init): Do not set frame_locals_address. + * hppa-tdep.c (hppa_frame_args_address): Delete function. + (hppa_frame_locals_address): Delete function. + (hppa_gdbarch_init): Do not set frame_args_address, or + frame_locals_address. + * arm-tdep.c (arm_frame_args_address): Delete. + (arm_frame_locals_address): Delete. + (arm_gdbarch_init): Do not set frame_args_address, or + frame_locals_address. + +2003-06-09 Andrew Cagney <cagney@redhat.com> + + * gdbarch.sh (FRAME_NUM_ARGS): Change to function with predicate. + * gdbarch.h, gdbarch.c: Re-generate. + * arch-utils.h (frame_num_args_unknown): Delete both declarations. + * arch-utils.c (frame_num_args_unknown): Delete function. + * stack.c (print_args_stub): Use FRAME_NUM_ARGS_P. + (frame_info): Use FRAME_NUM_ARGS_P. + * arm-tdep.c (arm_frame_num_args): Delete function. + (arm_gdbarch_init): Do not set frame_num_args. + * config/pa/tm-hppa64.h (FRAME_NUM_ARGS): Delete. + * hppa-tdep.c (hppa_frame_num_args): Delete function. + (hppa_gdbarch_init): Do not set frame_num_args. + * config/sparc/tm-sparc.h (FRAME_NUM_ARGS): Delete. + * xstormy16-tdep.c (xstormy16_gdbarch_init): Do not set + frame_num_args to default frame_num_args_unknown. + * v850-tdep.c (v850_gdbarch_init): Ditto. + * sparc-tdep.c (sparc_gdbarch_init): Ditto. + * sh-tdep.c (sh_gdbarch_init): Ditto. + * s390-tdep.c (s390_gdbarch_init): Ditto. + * rs6000-tdep.c (rs6000_gdbarch_init): Ditto. + * mn10300-tdep.c (mn10300_gdbarch_init): Ditto. + * mips-tdep.c (mips_gdbarch_init): Ditto. + * mcore-tdep.c (mcore_gdbarch_init): Ditto. + * m68k-tdep.c (m68k_gdbarch_init): Ditto. + * m68hc11-tdep.c (m68hc11_gdbarch_init): Ditto. + * ia64-tdep.c (ia64_gdbarch_init): Ditto. + * i386-tdep.c (i386_gdbarch_init): Ditto. + * h8300-tdep.c (h8300_gdbarch_init): Ditto. + * frv-tdep.c (frv_gdbarch_init): Ditto. + * d10v-tdep.c (d10v_gdbarch_init): Ditto. + * cris-tdep.c (cris_gdbarch_init): Ditto. + * avr-tdep.c (avr_gdbarch_init): Ditto. + * alpha-tdep.c (alpha_gdbarch_init): Ditto. + +2003-06-09 Andrew Cagney <cagney@redhat.com> + + * printcmd.c (print_frame_nameless_args): Moved to "stack.c". + (print_frame_args): Moved to "stack.c". + * stack.c: Include "gdb_assert.h". + (print_frame_nameless_args): Moved from "printcmd.c", made static. + (print_frame_args): Moved from "printcmd.c". + * frame.h (print_frame_args): Delete declaration. + * Makefile.in (stack.o): Update dependencies. + +2003-06-08 Andrew Cagney <cagney@redhat.com> + + * frame.c (get_prev_frame): Remove reference to + frame_args_address_correct in comments. + * frame-base.c (default_frame_args_address): Delete code + conditional on FRAME_ARGS_ADDRESS_CORRECT. + * vax-tdep.c (vax_frame_args_address_correct): Delete. + (vax_frame_args_address): Merge in vax_frame_args_address_correct. + * config/vax/tm-vax.h (FRAME_ARGS_ADDRESS_CORRECT): Delete + (vax_frame_args_address_correct): Delete declaration. + +2003-06-08 Andrew Cagney <cagney@redhat.com> + + * gdbarch.sh (UNWIND_SP): Add. + * gdbarch.h, gdbarch.c: Re-generate. + * frame.c (frame_sp_unwind): New function. + (get_frame_sp): New function. + * frame.h (get_frame_sp, frame_sp_unwind): Declare. + * regcache.c (read_sp): Rewrite, try each of TARGET_READ_SP, + gdbarch_unwind_sp and SP_REGNUM when looking for the SP register + value. + * d10v-tdep.c (d10v_unwind_sp): Replace d10v_read_sp. + (d10v_gdbarch_init): Set unwind_sp instead of read_sp. + +2003-06-08 Andrew Cagney <cagney@redhat.com> + + Deprecate BIG_REMOTE_BREAKPOINT, LITTLE_REMOTE_BREAKPOINT and + REMOTE_BREAKPOINT. + * remote.c: Update. + * config/sh/tm-sh.h (DEPRECATED_BIG_REMOTE_BREAKPOINT): Update. + (DEPRECATED_LITTLE_REMOTE_BREAKPOINT): Update. + * config/m68k/tm-sun3.h: Update. + * config/m68k/tm-m68klynx.h: Update. + * config/h8300/tm-h8300.h (DEPRECATED_REMOTE_BREAKPOINT): Update. + + * trad-frame.h (struct trad_frame_saved_reg): Rename "struct + trad_frame". Update comments. + * d10v-tdep.c (struct d10v_unwind_cache): Update. + * trad-frame.c (trad_frame_alloc_saved_regs): Update. + (trad_frame_register_value, trad_frame_prev_register): Update. + +2003-06-08 Andrew Cagney <cagney@redhat.com> + + * acinclude.m4 (gcc_AC_CHECK_DECL, (gcc_AC_CHECK_DECL): Stolen + from GCC's acinclude.m4. + * configure.in: Check for getopt's delcaration. + * aclocal.m4, config.in, configure: Re-generate. + * main.c (error_init): Delete declaration. + * defs.h (error_init): Declare. + * rs6000-tdep.c (rs6000_fetch_pointer_argument): Make static. + (rs6000_convert_from_func_ptr_addr): Make static. + (_initialize_rs6000_tdep): Add declaration. + * cli/cli-cmds.c (dont_repeat): Delete declaration. + (show_commands, set_verbose, show_history): Delete declaration. + * top.h (set_verbose): Add declaration. + (show_history, set_history, show_commands): Add declaration. + (do_restore_instream_cleanup): Add declaration. + * objc-lang.c (specialcmp): Make static. + (print_object_command): Make static. + (find_objc_msgsend): Make static. + (find_objc_msgcall_submethod_helper): Make static. + (find_objc_msgcall_submethod): Make static. + (_initialize_objc_language): Add declaration. + (find_implementation_from_class): Make static. + (find_implementation): Make static. + * objc-exp.y (yylex): Delete lookup_struct_typedef declaration. + * objc-lang.h (lookup_struct_typedef): Add declaration. + * cli/cli-interp.c (_initialize_cli_interp): Add declaration. + * cli/cli-script.c (clear_hook_in_cleanup): Make static. + (do_restore_user_call_depth): Make static. + (do_restore_instream_cleanup): Delete declaration. + (dont_repeat): Delete declaration. + * cli/cli-decode.c (add_abbrev_cmd): Delete function. + * cli/cli-dump.c (_initialize_cli_dump): Add declaration. + * reggroups.c (_initialize_reggroup): Add declaration. + * cp-support.c (_initialize_cp_support): Add declaration. + * cp-abi.c (_initialize_cp_abi): Add declaration. + * hpacc-abi.c (_initialize_hpacc_abi): Add declaration. + * gnu-v3-abi.c (gnuv3_baseclass_offset): Make static. + (_initialize_gnu_v3_abi): Add declaration. + * gnu-v2-abi.c (gnuv2_value_rtti_type): Make static. + (_initialize_gnu_v2_abi): Add declaration. + * frame-base.c (_initialize_frame_base): Add declaration. + * doublest.c (floatformat_from_length): Make static. + * frame-unwind.c (_initialize_frame_unwind): Add declaration. + * frame.c (create_sentinel_frame): Make static. + (_initialize_frame): Add declaration. + * top.c (do_catch_errors): Make static. + (gdb_rl_operate_and_get_next_completion): Make static. + * typeprint.c: Include "typeprint.h". + * sentinel-frame.c (sentinel_frame_prev_register): Make static. + (sentinel_frame_this_id): Make static. + * p-valprint.c (_initialize_pascal_valprint): Add declaration. + * ui-out.c (make_cleanup_ui_out_begin_end): Delete function. + * dwarf2-frame.c (dwarf2_frame_cache): Make static. + * p-exp.y (push_current_type, pop_current_type): ISO C declaration. + * dwarf2expr.h (dwarf_expr_context): ISO C declaration. + * maint.c (maintenance_print_architecture): Make static. + * signals/signals.c (_initialize_signals): Add declaration. + * std-regs.c (_initialize_frame_reg): Add declaration. + * jv-exp.y (push_variable): ISO C definition. + (push_qualified_expression_name): Ditto. + * memattr.c (_initialize_mem): Add declaration. + * remote.c (remote_check_watch_resources): Make static. + (remote_stopped_by_watchpoint): Make static. + (remote_stopped_data_address): Make static. + * d10v-tdep.c (nr_dmap_regs): Make static. + (a0_regnum): Make static. + (d10v_frame_unwind_cache): Make static. + (d10v_frame_p): Make static. + * osabi.c (show_osabi): Make static. + (_initialize_gdb_osabi): Add extern declaration. + * gdbtypes.c (make_qualified_type): Make static. + (safe_parse_type): Make static. + * macrocmd.c (_initialize_macrocmd): Add extern declaration. + * macrotab.c (macro_bcache_free): Make static. + * interps.c (interp_set_quiet): Make static. + (interpreter_exec_cmd): Make static. + * stack.h (select_frame_command): New file. + * stack.c: Include "stack.h". + (select_frame_command_wrapper): Delete function. + (select_frame_command): Make global. + * infcall.c: Include "infcall.h". + * linespec.c: Include "linespec.h". + * symfile.c (sections_overlap): Make static. + * cp-support.h (cp_initialize_namespace): ISO C declaration. + * charset.c (_initialize_charset): Add missing prototype. + * regcache.c (init_legacy_regcache_descr): Make static. + (do_regcache_xfree): Make static. + (regcache_xfer_part): Make static. + (_initialize_regcache): Add missing prototype. + * breakpoint.c (parse_breakpoint_sals): Make static. + (breakpoint_sals_to_pc): Make static. + * interps.h (clear_interpreter_hooks): ISO C declaration. + * Makefile.in (stack_h): Define. + (stack.o, typeprint.o, mi-main.o): Update dependencies. + (mi-cmd-stack.o, infcall.o, linespec.o): Update dependencies. + +2003-06-08 Andrew Cagney <cagney@redhat.com> + + * Makefile.in (d10v-tdep.o): Update dependencies. + (SFILES): Add trad-frame.c. + (trad_frame_h): Define. + (COMMON_OBS): Add trad-frame.o. + (trad-frame.o): Specify dependencies. + * d10v-tdep.c: Include "trad-frame.h". + (saved_regs_unwinder): Delete function. + (d10v_frame_prev_register): Use trad_frame_prev_register. + (struct d10v_unwind_cache): Change type of "saved_regs" to "struct + trad_frame", delete "regs" and "prev_sp". + (prologue_find_regs): Use trad-frame. + * trad-frame.h, trad-frame.c: New files. + +2003-06-08 Mark Kettenis <kettenis@gnu.org> + + * dwarf2cfi.c, dwarf2cfi.h: Remove. + +2003-06-07 Adam Fedor <fedor@gnu.org> + + * gdb/objc-lang.c (FETCH_ARGUMENT): Remove macro. + (OBJC_FETCH_POINTER_ARGUMENT): Shorthand macro for + using FETCH_POINTER_ARGUMENT with Objective-C method arguments. + (find_implementation, resolve_msgsend, resolve_msgsend_stret, + resolve_msgsend_super, resolve_msgsend_super_stret): + Use it. + +2003-06-07 Andrew Cagney <cagney@redhat.com> + + * symfile.h: Re-indent, clean up comments. + +2003-06-07 Andrew Cagney <cagney@redhat.com> + + * inferior.h (deprecated_write_sp): Replace + generic_target_write_sp. + * regcache.c (deprecated_write_sp): Replace + generic_target_write_sp. + * xstormy16-tdep.c (xstormy16_gdbarch_init): Update. + * vax-tdep.c (vax_gdbarch_init): Update. + * v850-tdep.c (v850_gdbarch_init): Update. + * sparc-tdep.c (sparc_gdbarch_init): Update. + * sh-tdep.c (sh_gdbarch_init): Update. + * s390-tdep.c (s390_gdbarch_init): Update. + * rs6000-tdep.c (rs6000_gdbarch_init): Update. + * ns32k-tdep.c (ns32k_gdbarch_init): Update. + * mn10300-tdep.c (mn10300_gdbarch_init): Update. + * mcore-tdep.c (mcore_gdbarch_init): Update. + * m68k-tdep.c (m68k_gdbarch_init): Update. + * m68hc11-tdep.c (m68hc11_gdbarch_init): Update. + * ia64-tdep.c (ia64_gdbarch_init): Update. + * h8300-tdep.c (h8300_gdbarch_init): Update. + * frv-tdep.c (frv_gdbarch_init): Update. + * cris-tdep.c (cris_gdbarch_init): Update. + * config/pa/tm-hppa.h (DEPRECATED_DUMMY_WRITE_SP): Update. + +2003-06-07 Andrew Cagney <cagney@redhat.com> + + * dwarf2-frame.c (dwarf2_frame_cache): Add comments on PC_REGNUM. + Assert that PC_REGNUM is valid. + (dwarf2_frame_prev_register): Add comments on SP_REGNUM. + +2003-06-07 Andrew Cagney <cagney@redhat.com> + + * gdbarch.sh (TARGET_READ_SP): Add predicate, delete default. + * gdbarch.h, gdbarch.c: Regenerate. + * mn10300-tdep.c: Include "gdb_assert.h". + (mn10300_read_fp): New function. + (mn10300_gdbarch_init): Set deprecated_target_read_fp to + mn10300_read_fp. Do not set read_sp to generic_target_read_sp. + * ia64-tdep.c: Include "gdb_assert.h". + (ia64_read_fp): New function. + (ia64_gdbarch_init): Set deprecated_target_read_fp to + ia64_read_sp. Do not set read_sp to generic_target_read_sp. + * regcache.c (generic_target_read_sp): Delete function. + (read_sp): Try TARGET_READ_SP and SP_REGNUM for the SP register. + * inferior.h (generic_target_read_sp): Delete declaration. + * frv-tdep.c (frv_gdbarch_init): Do not set read_sp to + generic_target_read_sp. + * m68hc11-tdep.c (m68hc11_gdbarch_init): Ditto. + * sparc-tdep.c (sparc_gdbarch_init): Ditto + * sh-tdep.c (sh_gdbarch_init): Ditto. + * rs6000-tdep.c (rs6000_gdbarch_init): Ditto. + * Makefile.in (mn10300-tdep.o, ia64-tdep.o): Update dependencies. + +2003-06-07 Andrew Cagney <cagney@redhat.com> + + * gdbarch.sh: Comment each field of startup_gdbarch. + * gdbarch.h, gdbarch.c: Re-generate. + +2003-06-07 Andrew Cagney <cagney@redhat.com> + + * gdbarch.sh (TARGET_READ_PC): Add predicate, remove default. + * gdbarch.h, gdbarch.c: Re-generate. + * regcache.c: Update comments on read_pc et.al. + (generic_target_read_pc): Delete function. + (read_pc_pid): Try TARGET_READ_PC and PC_REGNUM for a PC register. + * inferior.h (generic_target_read_pc): Delete declaration. + * frv-tdep.c (frv_gdbarch_init): Do not set read_pc to + generic_target_read_pc. + * sparc-tdep.c (sparc_gdbarch_init): Ditto. + * sh-tdep.c (sh_gdbarch_init): Ditto. + * rs6000-tdep.c (rs6000_gdbarch_init): Ditto. + * m68hc11-tdep.c (m68hc11_gdbarch_init): Ditto. + +2003-06-07 Andrew Cagney <cagney@redhat.com> + + * elfread.c (elf_symtab_read): Replace "special_local_sym_p" and + "index" with "special_local_sect". Use strcmp instead of STREQ. + Append period to coments. + +2003-06-06 Mark Mitchell <mark@codesourcery.com> + + * elfread.c (elf_symtab_read): Avoid use of SECT_OFF_MAX. + (elfstab_offset_sections): Likewise. + * gdb-stabs.h (stab_section_info): Likewise. + * i386-interix-tdep.c (pei_adjust_objfile_offsets): Likewise. + * objfiles.c (objfile_relocate): Likewise. + * pa64solib.c (pa64_solib_add_solib_objfile): Likewise. + * remote.c (get_offsets): Likewise. + (remote_cisco_objfile_relocate): Likewise. + * somread.c (som_symfile_offsets): Likewise. + * symfile.c (alloc_section_addr_info): New function. + (build_section_addr_info_from_section_tab): Use it. + (free_section_addr_info): Adjust. + (default_symfile_offsets): Avoid use of SECT_OFF_MAX. + (syms_from_objfile): Allocate local_addr dynamically. + (symbol_file_add_with_addrs_or_offsets): Allocate orig_addrs + dynamically. + (add_symbol_file_command): Allocate sect_opts dynamically. + (reread_symbols): Avoid use of SECT_OFF_MAX. + * symfile.h (section_addr_info): Do not use MAX_SECTIONS. + (alloc_section_addr_info): Declare it. + * symtab.h (SIZEOF_SECTION_OFFSETS): Remove. + * win32-nat.c (solib_symbols_add): Allocate section_addrs + dynamically. + * xcoffread.c (xcoff_symfile_offsets): Avoid use of SECT_OFF_MAX. + +2003-06-06 Andrew Cagney <cagney@redhat.com> + + * d10v-tdep.c (struct d10v_unwind_cache): Delete "return_pc". + (d10v_frame_unwind_cache): Do not set "return_pc". + +2003-06-06 Michael Snyder <msnyder@redhat.com> + + * h8300-tdep.c: Make tidy (long lines). + +2003-06-06 Michal Ludvig <mludvig@suse.cz> + + * x86-64-tdep.c (x86_64_fill_fxsave): Pass correct regnums + to regcache_collect(). + +2003-06-05 J. Brobecker <brobecker@gnat.com> + + * hppa-hpux-tdep.c (hppa_hpux_init_abi): New function, setting + pc_in_sigtramp multiarch method. + (hppa_hpux_som_init_abi): Use it. + (hppa_hpux_elf_init_abi): Likewise. + * config/pa/tm-hppah.h (PC_IN_SIGTRAMP): Remove, now that this + macro has been multiarched. + * config/pa/tm-hppa64.h (PC_IN_SIGTRAMP): Temporarily set this + macro here, as hppa64 isn't multiarched yet. + +2003-06-05 Andrew Cagney <cagney@redhat.com> + + * Makefile.in (value_h): Add $(frame_h). + * value.h: Include "frame.h". + (struct value): Replace "frame_addr" with "frame_id". + (VALUE_FRAME_ID): Replace VALUE_FRAME. + * values.c (allocate_value): Use VALUE_FRAME_ID. + (value_copy): Use VALUE_FRAME_ID. + * findvar.c (value_from_register): Use VALUE_FRAME_ID. + * valops.c (value_assign): Update. Use frame_find_by_id. + +2003-06-05 Michal Ludvig <mludvig@suse.cz> + + * x86-64-tdep.c (x86_64_push_arguments): Don't clear offset + in each pass. + +2003-06-05 Jeff Johnston <jjohnstn@redhat.com> + + * thread-db.c (check_event): For create/death event breakpoints, + loop through all messages to ensure that we read the message + corresponding to the breakpoint we are at. + +2003-06-04 Michael Snyder <msnyder@redhat.com> + + * h8300-tdep.c (h8300_gdbarch_init): Add h8300hn, h8300sn. + +2003-06-04 Mark Kettenis <kettenis@gnu.org> + + * dwarf2-frame.c (struct comp_unit): Add member `dbase'. + (read_encoded_value): Handle DW_EH_PE_datarel encoding. + (dwarf2_build_frame_info): Set base for DW_EH_PE_datarel encodings + when handling .eh_frame sections. + +2003-06-04 J. Brobecker <brobecker@gnat.com> + + * config/pa/nm-hppah.h (PREPARE_TO_PROCEED): Use the generic + prepare_to_proceed procedure instead of the hppa-specific one. + * hppa-tdep.c (hppa_prepare_to_proceed): Remove, no longer used. + +2003-06-04 Jeff Johnston <jjohnstn@redhat.com> + + * acconfig.h: Add HAVE_TKILL_SYSCALL definition check. + * config.in: Regenerated. + * configure.in: Add test for syscall function and check for + __NR_tkill macro in <syscall.h> to set HAVE_TKILL_SYSCALL. + * configure: Regenerated. + * lin-lwp.c [HAVE_TKILL_SYSCALL]: Include <unistd.h> and + <sys/syscall.h>. + (kill_lwp): New function that uses tkill syscall or + uses kill, depending on whether threading model is nptl or not. + All callers of kill() changed to use kill_lwp(). + (lin_lwp_wait): Make special check when WIFEXITED occurs to + see if all threads have already exited in the nptl model. + (stop_and_resume_callback): New callback function used by the + lin_lwp_wait thread exit handling code. + (stop_wait_callback): Check for threads already having exited and + delete such threads fromt the lwp list when discovered. + (stop_callback): Don't assert retcode of kill call. + + Roland McGrath <roland@redhat.com> + * i386-linux-nat.c (ps_get_thread_area): New function needed by + nptl libthread_db. + +2003-06-03 Richard Henderson <rth@redhat.com> + + * alpha-tdep.c (alpha_next_pc): Use alpha_read_insn. + (alpha_sigtramp_frame_this_id): Use get_frame_memory. + (alpha_sigtramp_frame_prev_register): Likewise. + (alpha_heuristic_frame_prev_register): Likewise. + * alpha-mdebug-tdep.c (alpha_mdebug_frame_prev_register): Likewise. + + * alpha-mdebug-tdep.c (alpha_mdebug_after_prologue): Use + alpha-specific register id names. + (alpha_mdebug_frame_unwind_cache): Likewise. + (alpha_mdebug_frame_prev_register): Likewise. + +2003-06-03 Richard Henderson <rth@redhat.com> + + * alpha-tdep.c (alpha_dwarf2_init_abi): New. + * alpha-tdep.h (alpha_dwarf2_init_abi): Declare it. + * alpha-linux-tdep.c (alpha_linux_init_abi): Use it. + * alphafbsd-tdep.c (alphafbsd_init_abi): Register dwarf2 and mdebug + unwind routines. + * alphanbsd-tdep.c (alphanbsd_init_abi): Likewise. + * config/alpha/fbsd.mt (TDEPFILES): Add alpha-mdebug-tdep.o. + * config/alpha/nbsd.mt (TDEPFILES): Likewise. + + * alpha-linux-tdep.c: Remove unnecessary includes. + * Makefile.in (alpha-linux-tdep.o): Update. + +2003-06-03 Richard Henderson <rth@redhat.com> + + * alphabsd-tdep.c (alphabsd_supply_fpreg): Fix typo last change. + (alphabsd_fill_fpreg): Likewise. + +2003-06-03 J. Brobecker <brobecker@gnat.com> + + * alphanbsd-tdep.c (alphanbsd_sigcontext_addr): Replace + references to struct frame_info fields by calls to the equivalent + accessors. Necessary now that frame_info is opaque. + +2003-06-03 J. Brobecker <brobecker@gnat.com> + + * alphanbsd-tdep.c (alphanbsd_skip_sigtramp_frame): Delete. + (alphanbsd_init_abi): Do not set skip_sigtramp_frame in tdep + structure, field no longer exists. + +2003-06-03 J. Brobecker <brobecker@gnat.com> + + * config/alpha/alpha-osf1.mt (TDEPFILES): Add alpha-mdebug-tdep.o. + * alpha-osf1-tdep.c (alpha_osf1_init_abi): Enable the mdebug module. + +2003-06-03 J. Brobecker <brobecker@gnat.com> + + * alpha-osf1-tdep.c (alpha_osf1_sigcontext_addr): Replace + references to struct frame_info fields by calls to the equivalent + accessors. Necessary now that frame_info is opaque. + +2003-06-03 J. Brobecker <brobecker@gnat.com> + + * alpha-osf1-tdep.c (alpha_osf1_skip_sigtramp_frame): Delete. + (alpha_osf1_init_abi): Do not set skip_sigtramp_frame in tdep + structure, field no longer exists. + +2003-06-03 Theodore A. Roth <troth@openavr.org> + + * remote.c (init_remote_state): Compute sizeof_g_packet by + accumulation of the size of all registers instead of blindly using + DEPRECATED_REGISTER_BYTES. + +2003-06-03 Michael Snyder <msnyder@redhat.com> + + * config/h8300/tm-h8300.h (h8300sxmode): Declare. + * h8300-tdep.c (h8300_gdbarch_init): Set machine mode + for h8300sx. + +2003-06-03 J. Brobecker <brobecker@gnat.com> + + * alpha-osf1-tdep.c (objfiles.h): #include, needed for symfile_objfile. + * Makefile.in (alpha-osf1-tdep.o): Update dependencies. + +2003-06-03 Andrew Cagney <cagney@redhat.com> + + * sparc-tdep.c (sparc_convert_to_virtual): Delete function. + (sparc_convert_to_raw): Delete function. + (sparc_gdbarch_init): Do not set register_convert_to_raw or + register_convert_to_virtual. + +2003-06-03 Jeff Johnston <jjohnstn@redhat.com> + + * thread-db.c (thread_db_mourn_inferior): Unpush thread target + layer if not dealing with a statically-linked threaded program. + +2003-06-03 Kris Warkentin <kewarken@qnx.com> + + * solib.c (solib_open): Update comment to reflect actual search order. + +2003-06-03 Andrew Cagney <cagney@redhat.com> + + * frame.c (get_frame_memory_signed): New function. + (get_frame_memory, get_frame_memory_unsigned): New function. + (get_frame_arch): New function. + * frame.h (get_frame_signed_memory, get_frame_arch): Declare. + (get_frame_memory, get_frame_unsigned_memory): Declare. + * d10v-tdep.c (d10v_frame_unwind_cache): Use + get_frame_memory_unsigned and get_frame_arch. + (d10v_frame_unwind_cache, saved_regs_unwinder): Ditto. + +2003-06-03 Raoul Gough <RaoulGough@yahoo.co.uk> + + * MAINTAINERS (write after approval): Add myself. + +2003-06-03 Jim Blandy <jimb@redhat.com> + + * s390-nat.c (supply_gregset, fill_gregset): On the s390x, the + elements of gregset_t are 64 bits each, but access registers + are still 32 bits, so they're packed two per gregset_t + element. Unpack/pack them properly. + +2003-06-02 David Carlton <carlton@bactrian.org> + + * linespec.c (find_methods): Break out code into + add_matching_methods and add_constructors. + (add_matching_methods): New. + (add_constructors): Ditto. + +2003-06-02 Andrew Cagney <cagney@redhat.com> + + * sparc-tdep.c (sparc_print_registers): Delete call to + REGISTER_CONVERTIBLE. + (sparc_gdbarch_init): Do not set register_convertible. + * m68hc11-tdep.c (m68hc11_gdbarch_init): Ditto. + * frv-tdep.c (frv_gdbarch_init): Ditto. + * cris-tdep.c (cris_gdbarch_init): Ditto. + +2003-06-02 Elena Zannoni <ezannoni@redhat.com> + + * target.h (TARGET_SYMFILE_POSTREAD): Delete unused macro. + * symfile.c (reread_symbols): Delete call to TARGET_SYMFILE_POSTREAD. + (syms_from_objfile): Ditto. + +2003-06-03 Andreas Schwab <schwab@suse.de> + + * m68k-tdep.c (m68k_gdbarch_init): Use set_gdbarch_print_insn ... + (_initialize_m68k_tdep): ... instead of deprecated_tm_print_insn. + +2003-06-02 Richard Henderson <rth@redhat.com> + + * alpha-tdep.c (alpha_register_reggroup_p): Zero is only + a member of all_reggroup. + +2003-06-02 Richard Henderson <rth@redhat.com> + + * alpha-tdep.c (alpha_register_type): Change from _virtual_type. + (alpha_convert_flt_dbl, alpha_convert_dbl_flt): Remove. + (alpha_lds, alpha_sts): New. + (alpha_convert_register_p): Change from _register_convertible. + (alpha_register_to_value): Change from _convert_to_virtual; + restructure and fail for type sizes other than 4 or 8. + (alpha_value_to_register): Similarly. + (alpha_extract_return_value): Use alpha_sts. + (alpha_store_return_value): Use alpha_lds. + (alpha_gdbarch_init): Update hooks. + +2003-06-02 Richard Henderson <rth@redhat.com> + + * alpha-tdep.c (alpha_register_virtual_type): Use alpha-specific + regnum identifiers. + (alpha_sigtramp_register_address): Likewise. + +2003-06-02 Richard Henderson <rth@redhat.com> + + * alpha-tdep.c (alpha_supply_int_regs, alpha_fill_int_regs): New. + (alpha_supply_fp_regs, alpha_fill_fp_regs): New. + * alpha-tdep.h: Declare them. + + * alpha-nat.c (fetch_osf_core_registers): Constify core_reg_mapping. + Remove zerobuf. Don't error on UNIQUE. + (fetch_elf_core_registers): Use alpha_supply_{int,fp}_regs. + (ALPHA_REGSET_UNIQUE): Provide default. + (supply_gregset): Use alpha_supply_int_regs. + (fill_gregset): Use alpha_fill_int_regs. + (supply_fpregset): Use alpha_supply_fp_regs. + (fill_fpregset): Use alpha_fill_fp_regs. + * alphabsd-tdep.c (NUM_GREGS, NUM_FPREGS): Remove. + (alphabsd_supply_reg): Use alpha_supply_int_regs. + (alphabsd_fill_reg): Use alpha_fill_int_regs. + (alphabsd_supply_fpreg): Use alpha_supply_fp_regs. + (alphabsd_fill_fpreg): Use alpha_fill_fp_regs. + * config/alpha/nm-linux.h (ALPHA_REGSET_UNIQUE): New. + +2003-06-02 Richard Henderson <rth@redhat.com> + + * alpha-tdep.c (alpha_store_return_value): Avoid switch fallthru. + + * alpha-tdep.c (alpha_extract_return_value): Use internal_error. + (alpha_store_return_value): Likewise. + +2003-06-02 David Carlton <carlton@math.stanford.edu> + + * block.c (contained_in): Add 'const' to arguments. + (block_function): Ditto. + * block.h: Update declarations for block_function and + contained_in. + +2003-06-02 David Carlton <carlton@math.stanford.edu> + + * objc-lang.c (find_imps): Delete unneeded variable 'sym_symtab'. + * c-valprint.c (c_val_print): Delete unneeded variable 's'. + * p-valprint.c (pascal_val_print): Ditto. + * ada-lang.c (standard_lookup): Delete unneded variable 'symtab'. + +2003-06-02 Richard Henderson <rth@redhat.com> + + * alpha-tdep.c (alpha_push_dummy_call): Use + builtin_type_ieee_double_little instead of builtin_type_double. + + * alpha-tdep.c (alpha_push_dummy_call): Handle ABI mandated + sign-extension of 32-bit values. + (alpha_store_return_value): Similarly. + + * alpha-tdep.c (alpha_push_dummy_call): Handle COMPLEX types. + (alpha_extract_return_value): Likewise. + (alpha_store_return_value): Likewise. + + * alpha-tdep.c (alpha_extract_return_value): Handle IEEE Quad floats. + (alpha_store_return_value): Error on IEEE Quad floats. + + * alpha-tdep.c (alpha_extract_return_value): Convert to regcache. + (alpha_extract_struct_value_address): Likewise. + (alpha_store_return_value): Likewise. + (alpha_store_struct_return): Remove. + (alpha_gdbarch_init): Update hook registration to match. + + * alpha-tdep.c (alpha_register_convert_to_virtual): Tidy use of + deprecated interfaces; use ALPHA_REGISTER_SIZE instead of gdbarch + macros where appropriate. + (alpha_register_convert_to_raw): Similarly. Use unpack_long. + (alpha_convert_flt_dbl, alpha_convert_dbl_flt): New. + + * alpha-tdep.c (alpha_register_virtual_type): Use void_data_ptr + for SP, GP; void_func_ptr for PC; non-language-specific types + for all others. + * alpha-tdep.h (ALPHA_GP_REGNUM): New. + +2003-06-02 Richard Henderson <rth@redhat.com> + + * top.h (lim_at_start): Declare. + * main.c (captured_main): Set it. + * top.c (lim_at_start): Define. + (command_loop): Use it instead of &environ. + * event-top.c (command_handler): Likewise. + +2003-06-01 Jason Thorpe <thorpej@wasabisystems.com> + + * mipsnbsd-tdep.c: Update copyright years. + (fetch_core_registers): Correct arguments to mipsnbsd_supply_fpreg. + +2003-06-01 Richard Henderson <rth@redhat.com> + + * Makefile.in (ALLDEPFILES): Add alpha-mdebug-tdep.c. + (alpha-linux-tdep.o): Update dependencies. + (alpha-nat.o, alpha-tdep.o, alpha-mdebug-tdep.o): Likewise. + * alpha-mdebug-tdep.c: Remove unneeded includes. + +2003-06-01 Richard Henderson <rth@redhat.com> + + * alpha-tdep.c (alpha_register_reggroup_p): New. + (alpha_gdbarch_init): Register it. + +2003-06-02 Andrew Cagney <cagney@redhat.com> + + * dwarfread.c: Eliminate "register" + (decode_die_type): Eliminate assignment within "if". + (struct_type, decode_array_element_type): Ditto. + (dwarf_read_array_type, read_tag_pointer_type): Ditto. + (read_subroutine_type, enum_type, add_enum_psymbol): Ditto. + (decode_modified_type, completedieinfo): Ditto. + * block.c: Eliminate "register". + (blockvector_for_pc_sect): Eliminate assignment within "if". + * cp-support.h (struct symbol): Opaque declaration. + * breakpoint.c (handle_gnu_v3_exceptions): Use xfree, not free. + +2003-06-01 Richard Henderson <rth@redhat.com> + + * alpha-tdep.c (alpha_gdbarch_init): Use set_gdbarch_print_insn ... + (_initialize_alpha_tdep): ... not deprecated_tm_print_insn. + +2003-06-01 Adam Fedor <fedor@gnu.org> + + * gdbarch.sh (function_list): Add FETCH_POINTER_ARGUMENT. + * gdbarch.[ch]: Regenerate. + * hppa-tdep.c (hppa_fetch_pointer_argument): New function. + (hppa_gdbarch_init): Set it in the gdbarch vector. + * i386-tdep.c (i386_fetch_pointer_argument): New + (i386_gdbarch_init): Set it into gdbarch. + * rs6000-tdep.c (rs6000_fetch_pointer_argument): New. + (rs6000_gdbarch_init): Set it in gdbarch. + * sparc-tdep.c (sparc_fetch_pointer_argument): New + (sparc_gdbarch_init): Set it in gdbarch. + +2003-06-01 Andrew Cagney <cagney@redhat.com> + + * defs.h (extract_address): Delete declaration. + * findvar.c (extract_address): Delete function. + * xstormy16-tdep.c (xstormy16_extract_return_value): Replace + extract_address with the inline equivalent, + extract_unsigned_integer. + (xstormy16_extract_struct_value_address): Ditto. + (xstormy16_pointer_to_address): Ditto. + * vax-tdep.c (vax_extract_struct_value_address): Ditto. + * v850-tdep.c (v850_push_arguments): Ditto. + (v850_extract_return_value): Ditto. + (v850_extract_struct_value_address): Ditto. + * sparcnbsd-tdep.c (sparcnbsd_get_longjmp_target_32): Ditto. + (sparcnbsd_get_longjmp_target_64): Ditto. + * sparc-tdep.c (sparc_frame_saved_pc): Ditto. + (get_longjmp_target): Ditto. + * sh-tdep.c (sh_extract_struct_value_address): Ditto. + (sh64_extract_struct_value_address): Ditto. + (sh_push_arguments): Ditto. + (sh64_push_arguments): Ditto. + * remote-vxsparc.c (vx_read_register): Ditto. + * ppc-linux-tdep.c (ppc_linux_skip_trampoline_code): Ditto. + * ns32k-tdep.c (ns32k_extract_struct_value_address): Ditto. + * mn10300-tdep.c (mn10300_extract_struct_value_address): Ditto. + * mipsv4-nat.c (get_longjmp_target): Ditto. + * mipsnbsd-tdep.c (mipsnbsd_get_longjmp_target): Ditto. + * mips-nat.c (get_longjmp_target): Ditto. + * mips-linux-tdep.c (mips_linux_get_longjmp_target): Ditto. + * mcore-tdep.c (mcore_extract_struct_value_address): Ditto. + * m68k-tdep.c (m68k_get_longjmp_target): Ditto. + * m68hc11-tdep.c (m68hc11_extract_struct_value_address): Ditto. + * irix5-nat.c (get_longjmp_target): Ditto. + * irix4-nat.c (get_longjmp_target): Ditto. + * ia64-tdep.c (generic_elf_find_global_pointer): Ditto. + (ia64_push_arguments): Ditto. + * hpux-thread.c (hpux_thread_store_registers): Ditto. + * h8300-tdep.c (h8300_push_arguments): Ditto. + (h8300_store_return_value): Ditto. + (h8300_extract_struct_value_address): Ditto. + * frv-tdep.c (frv_extract_struct_value_address): Ditto. + (frv_push_arguments): Ditto. + * avr-tdep.c (avr_pointer_to_address): Ditto. + (avr_push_arguments): Ditto. + * arm-tdep.c (arm_push_dummy_call): Ditto. + (arm_get_longjmp_target): Ditto. + * arm-linux-tdep.c (arm_linux_push_arguments): Ditto. + * alpha-tdep.c (alpha_extract_struct_value_address): Ditto. + (alpha_get_longjmp_target): Ditto. + + * solib-irix.c (extract_mips_address): Inline extract_address, + replacing it with extract_signed_integer. + * solib-svr4.c (SOLIB_EXTRACT_ADDRESS): Ditto. + (LM_NAME, IGNORE_FIRST_LINK_MAP_ENTRY): Ditto. + (first_link_map_member, open_symbol_file_object): Ditto. + (svr4_fetch_objfile_link_map, svr4_fetch_objfile_link_map): Ditto. + * solib-sunos.c (SOLIB_EXTRACT_ADDRESS): Ditto. + (LM_NEXT, LM_NAME): Ditto. + +2003-06-01 Richard Henderson <rth@redhat.com> + + * alpha-tdep.h (ALPHA_FP_REGNUM): Remove. + * alpha-tdep.c (alpha_register_name): Remove vfp entry. + (alpha_cannot_fetch_register): Remove ALPHA_FP_REGNUM. + (alpha_cannot_store_register): Likewise. + * alphabsd-nat.c (fetch_inferior_registers): Don't set FP_REGNUM. + * alpha-nat.c (supply_gregset): Likewise. + * alphanbsd-tdep.c (fetch_core_registers): Likewise. + +2003-06-01 Andrew Cagney <cagney@redhat.com> + + * infcall.c (call_function_by_hand): Update comment on + DEPRECATED_DUMMY_WRITE_SP. + + * mips-tdep.c (mips_gdbarch_init): Do not set + deprecated_dummy_write_sp. + (mips_eabi_push_dummy_call): Set the SP register. + (mips_o64_push_dummy_call): Set the SP register. + (mips_o32_push_dummy_call): Set the SP register. + (mips_n32n64_push_dummy_call): Set the SP register. + +2003-06-01 Richard Henderson <rth@redhat.com> + + * alpha-nat.c (fetch_osf_core_registers): Use ALPHA_REGISTER_SIZE + instead of ALPHA_MAX_REGISTER_RAW_SIZE. + (supply_gregset): Likewise. + * alpha-tdep.c (alpha_store_return_value): Likewise. + (alpha_get_longjmp_target): Likewise. + (alpha_register_name): Constify array. + (alpha_gdbarch_init): Remove deprecated_fp_regnum, + deprecated_register_size, deprecated_register_bytes, + deprecated_max_register_raw_size, deprecated_max_register_virtual_size. + * alpha-tdep.h (ALPHA_MAX_REGISTER_RAW_SIZE): Remove. + (ALPHA_MAX_REGISTER_VIRTUAL_SIZE): Remove. + +2003-06-01 Richard Henderson <rth@redhat.com> + + * alpha-tdep.c (alpha_push_dummy_call): Store sp. Tidy copies + from arg_reg_buffer to regcache to avoid double conversion. + +2003-06-01 Mark Kettenis <kettenis@gnu.org> + + * i386-linux-nat.c (child_resume): Use I386_ESP_REGNUM instead of + SP_REGNUM. + * i386-linux-tdep.c (i386_linux_sigcontext_addr): Likewise. + * i386bsd-tdep.c (i386bsd_sigcontext_addr): Likewise. + +2003-06-01 Richard Henderson <rth@redhat.com> + + * dwarf2-frame.c (struct dwarf2_cie): Add saw_z_augmentation. + (decode_frame_entry): Set it. Skip FDE augmentation. + +2003-06-01 Richard Henderson <rth@redhat.com> + + * dwarf2-frame.c (dwarf2_frame_cache): Handle retaddr_column + not overlapping PC_REGNUM. + +2003-06-01 Richard Henderson <rth@redhat.com> + + * alpha-tdep.c (alpha_push_dummy_call): Transmography from + alpha_push_arguments. Don't dump argument register data to + the target stack. Fix float and 128-bit long double semantics. + Store $t12 and $ra as specified by the ABI. Use regcache everywhere. + (alpha_fix_call_dummy): Remove. + (alpha_call_dummy_words): Remove. + (alpha_gdbarch_init): Kill deprecated call hooks; add push_dummy_call. + +2003-06-01 Richard Henderson <rth@redhat.com> + + * alpha-linux-tdep.c (alpha_linux_init_abi): Install dwarf2 unwinder. + +2003-06-01 Andrew Cagney <cagney@redhat.com> + + * mips-tdep.c (is_mips16_addr): New function. + (make_mips16_addr, unmake_mips16_addr): New functions. + (pc_is_mips16, mips_fetch_instruction): Use. + (gdb_print_insn_mips, mips_breakpoint_from_pc): Use. + (gdb_print_insn_mips): Eliminate TM_PRINT_INSN_MACH. + (mips_dump_tdep): Delete print of TM_PRINT_INSN_MACH, + UNMAKE_MIPS16_ADDR, MAKE_MIPS16_ADDR, IS_MIPS16_ADDR and + TARGET_MIPS. + * config/mips/tm-mips.h: Update copyright. + (TARGET_MIPS, TM_PRINT_INSN_MACH): Delete. + (DEPRECATED_REGISTER_SIZE, DEPRECATED_REGISTER_BYTES): Delete. + (IS_MIPS16_ADDR, MAKE_MIPS16_ADDR, UNMAKE_MIPS16_ADDR): Delete. + * config/mips/tm-irix6.h (DEPRECATED_REGISTER_BYTES): Delete. + (TM_PRINT_INSN_MACH): Delete. + * config/mips/tm-irix5.h (DEPRECATED_REGISTER_BYTES): Delete. + + * configure.tgt: Replace mips64*vr4xxx*el-*-elf*, + mips64*vr4xxx*-*-elf*, mips64*vr4300*el-*-elf*, + mips64*vr4300*-*-elf*, mips64*vr4100*el-*-elf*, + mips64*vr4100*-*-elf*, mips64*vr5000*el-*-elf*, and + mips64*vr5000*-*-elf* with mips64 mips64*vr*-*-elf*. Delete + mips*tx39*el*-elf*. Map mips*-sony-* and mips64*-big-* onto + mips64. Map mips*-dec-*, mips*-big-*, mips*-little-*, + mips*-*-riscos* and mips*-*-sysv* onto mips. + * config/mips/mips64.mt: New file. + * config/mips/mips.mt: New file. + * config/mips/littlemips.mt: Delete file. + * config/mips/decstation.mt: Delete file. + * config/mips/vr4300el.mt: Delete file. + * config/mips/vr5000el.mt: Delete file. + * config/mips/vr5000.mt: Delete file. + * config/mips/vr4100.mt: Delete file. + * config/mips/vr4xxxel.mt: Delete file. + * config/mips/vr4300.mt: Delete file. + * config/mips/vr4xxx.mt: Delete file. + * config/mips/bigmips.mt: Delete file. + * config/mips/bigmips64.mt: Delete file. + * config/mips/tx39l.mt (TM_FILE): Set to "tm-tx39.h". + * config/mips/embedl64.mt (TM_FILE): Set to "tm-mips64.h". + * config/mips/embed64.mt (TM_FILE): Set to "tm-mips64.h" + * config/mips/embedl.mt (TM_FILE): Set to "tm-mips.h". + * config/mips/tm-tx39.h: Include "tm-mips.h" instead of + "tm-bigmips.h". + * config/mips/tm-irix3.h: Ditto. + * config/mips/tm-mipsv4.h: Ditto. + * config/mips/tm-embed.h: Ditto. + * config/mips/tm-irix6.h: Include "tm-mips64.h" instead of + "tm-bigmips64.h". + * config/mips/tm-vr5000el.h: Delete file. + * config/mips/tm-tx39l.h: Delete file. + * config/mips/tm-vr4300el.h: Delete file. + * config/mips/tm-vr4xxxel.h: Delete file. + * config/mips/tm-vr4300.h: Delete file. + * config/mips/tm-vr4100.h: Delete file. + * config/mips/tm-vr4xxx.h: Delete file. + * config/mips/tm-vr5000.h: Delete file. + * config/mips/tm-embedl64.h: Delete file. + * config/mips/tm-embedl.h: Delete file. + * config/mips/tm-embed64.h: Delete file. + * config/mips/tm-bigmips64.h: Delete file. + * config/mips/tm-bigmips.h: Delete file. + +2003-06-01 Mark Kettenis <kettenis@gnu.org> + + Fix gdb/1216. + * shnbsd-nat.c: Include "sh-tdep.h". + + From Richard Henderson <rth@redhat.com>: + * dwarf2-frame.c (dwarf2_frame_state_alloc_regs): Fix ptr arithmetic. + +2003-05-31 Andrew Cagney <cagney@redhat.com> + + * mips-tdep.c (set_reg_offset): Add saved_regs parameter. Add + forward declaration. + (mips16_heuristic_proc_desc): Pass temp_saved_regs. + (mips16_heuristic_proc_desc): Pass temp_saved_regs. + (mips_find_saved_regs): Use set_reg_offset. + (mips_frame_init_saved_regs): Delete function. + (mips_pop_frame): Call mips_find_saved_regs instead of + DEPRECATED_FRAME_INIT_SAVED_REGS. + +2003-05-31 Andrew Cagney <cagney@redhat.com> + + * mips-tdep.c (mips_gdbarch_init): Do not set + deprecated_max_register_raw_size, register_virtual_size, and + deprecated_max_register_virtual_size. + +2003-05-31 Mark Kettenis <kettenis@gnu.org> + + * i386-tdep.c: Include "dwarf2-frame.h". + (i386_gdbarch_init): Hook in the DWARF CFI frame unwinder. + * Makefile.in (i386-tdep.o): Update dependencies. + + * dwarf2-frame.c, dwarf2-frame.h: New files. + * Makefile.in (SFILES): Add dwarf2-frame.c. + (dwarf2_frame_h): Define. + (COMMON_OBS): Add dwarf2-frame.o. + (dwarf2-frame.o): Add dependencies. + +2003-05-31 Andreas Jaeger <aj@suse.de> + + * x86-64-linux-nat.c: Fix comment. + +2003-05-31 Mark Kettenis <kettenis@gnu.org> + + * x86-64-tdep.c (x86_64_push_dummy_call): Adjust for changed + function signature. + + * i386-tdep.c (i386_sigtramp_frame_p): Only handle frames if we + have a sigcontext_addr handler. + * x86-64-tdep.c (x86_64_sigtramp_frame_p): Assert that we have a + sigcontext_addr handler. + +2003-05-31 Andrew Cagney <cagney@redhat.com> + + * mips-tdep.c (print_gp_register_row): Replace do_gp_register_row. + (print_fp_register_row): Replace do_fp_register_row. + (mips_print_fp_register): Add "file" and "frame" parameters. + (mips_print_register): Add "file" and "frame" parameters. + (mips_print_registers_info): Replace mips_do_registers_info. + (mips_gdbarch_init): Set print_registers_info instead of + deprecated_do_registers_info. + (mips_read_fp_register_single): Add "frame" parameter. + (mips_read_fp_register_double): Add "frame" parameter. + +2003-05-31 Mark Kettenis <kettenis@gnu.org> + + * i386-tdep.c (i386_register_name): Check for MMX registers first. + Fixes a bug where GDB would print the wrong register names for + targets without SSE. + + * x86-64-tdep.c (X86_64_NUM_SAVED_REGS): Set to X86_64_NUM_GREGS. + (x86_64_sigtramp_frame_cache): Use `sc_reg_offset' to find saved + registers. + + * x86-64-linux-tdep.c (x86_64_linux_sc_reg_offset): New variable. + (x86_64_linux_init_abi): Initialize TDEP->sc_reg_offset and + TDEP->sc_num_regs instead of TDEP->sc_pc_offset and + TDEP->sc_sp_offset. + + From Michal Ludvig <mludvig@suse.cz>: + * i386-tdep.h (struct gdbarch_tdep): Add members `sc_reg_offset' + and `sc_num_regs'. + (I386_EAX_REGNUM, I386_EDX_REGNUM, I386_ESP_REGNUM, + I386_EBP_REGNUM, I386_EIP_REGNUM, I386_EFLAGS_REGNUM, + I386_ST0_REGNUM): Move here from... + * i386-tdep.c: ... here. + (I386_NUM_SAVED_REGS): Define to I386_NUM_REGS. + (i386_sigtramp_frame_cache): Use `sc_reg_offset' to find saved + registers if possible. + (i386_gdbarch_init): Initialize TDEP->sc_reg_offset. + * i386bsd-tdep.c (i386bsd_sc_pc_offset, i386bsd_sc_sp_offset): + Remove variables. + (i386bsd_sc_reg_offset): New variable. + (i386bsd_init_abi): Initialize TDEP->sc_reg_offset and + TDEP->sc_num_regs instead of TDEP->sc_pc_offset and + TDEP->sc_sp_offset. + (i386fbsd_sc_reg_offset): New variable. + (i386fbsdaout_init_abi): Initialize TDEP->sc_reg_offset and + TDEP->sc_num_regs. + (i386fbsd4_sc_pc_offset, i386fbsd4_sc_sp_offset): Remove + variables. + (i386fbsd4_sc_reg_offset): New variable. + (i3864bsd4_init_abi): Initialize TDEP->sc_reg_offset and + TDEP->sc_num_regs instead of TDEP->sc_pc_offset and + TDEP->sc_sp_offset. + * i386-linux-tdep.c (i386_linux_sc_reg_offset): New variable. + (i386_linux_init_abi): Set TDEP->sc_reg_offset and TDEP->sc_num_regs. + * i386nbsd-tdep.c (i386nbsd_sc_pc_offset, i386nbsd_sc_sp_offset): + Remove variables. + (i386nbsd_sc_reg_offset): New variable. + (i386nbsd_init_abi): Initialize TDEP->sc_reg_offset and + TDEP->sc_num_regs instead of TDEP->sc_pc_offset and + TDEP->sc_sp_offset. + * i386obsd-tdep.c (i386obsd_sc_pc_offset, i386obsd_sc_sp_offset): + Remove variables. + (i386obsd_sc_reg_offset): New variable. + (i386obsd_init_abi): Initialize TDEP->sc_reg_offset and + TDEP->sc_num_regs instead of TDEP->sc_pc_offset and + TDEP->sc_sp_offset. + * i386bsd-nat.c (_initialize_i386bsd_nat): Adjust for changes in + i386bsd-tdep.c, i386nbsd-tdep.c and i386obsd-tdep.c. Add check + for frame pointer offset in `struct sigcontext'. + +2003-05-31 Andrew Cagney <cagney@redhat.com> + + * mips-tdep.c (mips_gdbarch_init): Do not set the deprecated + architecture methods call_dummy_words, sizeof_call_dummy_words, + push_return_address, store_struct_return, and fix_call_dummy. Set + push_dummy_call instead of deprecated_push_arguments. + (mips_store_struct_return): Delete function. + (mips_fix_call_dummy): Delete function. + (mips_push_return_address): Delete function. + (mips_eabi_push_dummy_call): Replace mips_eabi_push_arguments, set + RA_REGNUM and T9_REGNUM. + (mips_n32n64_push_dummy_call): Ditto for + mips_n32n64_push_arguments. + (mips_o32_push_dummy_call): Ditto for mips_o32_push_arguments. + (mips_o64_push_dummy_call): Ditto for mips_o64_push_arguments. + +2003-05-31 Andrew Cagney <cagney@redhat.com> + + * gdbarch.sh (PUSH_DUMMY_CALL): Add "func_addr" parameter. Rename + "dummy_addr" to "bp_addr". + * infcall.c (call_function_by_hand): Pass "funaddr" to + gdbarch_push_dummy_call. + * gdbarch.h, gdbarch.c: Re-generate. + * i386-tdep.c (i386_push_dummy_call): Update. + * arm-tdep.c (arm_push_dummy_call): Update. + * d10v-tdep.c (d10v_push_dummy_call): Update. + +2003-05-31 Mark Kettenis <kettenis@gnu.org> + + * x86-64-tdep.h (x86_64_num_regs, x86_64_num_gregs): Remove + variable declarations. + (x86_64_register_number, x86_64_register_name): Remove prototypes. + (x86_64_linux_frame_saved_pc, x86_64_linux+saved_pc_after_call, + x86_64_linux_in_sigtramp, x86_64_linux_frame_chain, + x86_64_init_frame_pc, x86_64_init_frame_pc, + x86_64_function_has_prologue): Remove prototypes. + (X86_64_NUM_GREGS): New define. + (x86_64_supply_fxsave, x86_64_fill_fxsave): New prototypes. + * x86-64-tdep.c: Don't include "dwarf2cfi.h". Include + "dummy_frame.h", "frame.h", "frame-base.h", "frame-unwind.h". + (RAX_REGNUM, RDX_REGNUM, RDI_REGNUM, EFLAGS_REGNUM, ST0_REGNUM, + XMM1_REGNUM): Remove defines. + (X86_64_RAX_REGNUM, X86_64_RDX_REGNUM, X86_64_RDI_REGNUM, + X86_64_RBP_REGNUM, X86_64_RSP_REGNUM, X86_64_RIP_REGNUM, + X86_64_EFLAGS_REGNUM, X86_64_ST0_REGNUM, X86_64_XMM0_REGNUM, + X86_64_XMM1_REGNUM): New defines. + (struct x86_64_register_info): Renamed from `struct + register_info'. Remove `size' member. + (x86_64_register_info_table): Remove variable. + (x86_64_register_info): New variable. + (X86_64_NUM_REGS): New define. + (X86_64_NUM_GREGS): Remove define. + (x86_64_num_regs, x86_64_num_gregs): Remove variables. + (x86_64_dwarf2gdb_regno_map, x86_64_dwarf2gdb_regno_map_length): + Remove variables. + (x86_54_dwarf2_reg_to_regnum): Remove function. + (x86_64_dwarf_regmap, x86_64_dwarf_regmap_len): New variables. + (x86_64_dwarf_reg_to_regnum): New function. + (x86_64_register_name): Rewrite. + (x86_64_register_raw_size): Remove function. + (x86_64_register_byte_table): Remove variable. + (x86_64_register_byte): Remove function. + (x86_64_register_virtual_type): Remove function. + (x86_64_register_type): New function. + (x86_64_register_convertible, x86_64_register_convert_to_virtual, + x86_64_register_convert_to_raw): Remove functions. + (x86_64_push_return_address, x86_64_pop_frame): Remove functon. + (x86_64_use_struct_convention): Make static. Adjust for renamed + defines. + (x86_64_frame_init_saved_regs): Remove function. + (x86_64_push_arguments): Make static. Change to accept a regcache + as argument. + (x86_64_store_return_value, x86_64_extract_return_value): Make + static. Rewrite based on i386 counterparts. + (x86_64_push_dummy_call): New function. + (X86_64_NUM_SAVED_REGS): New define. + (x86_64_register_number): Remove function. + (x86_64_store_struct_return): Remove function. + (x86_64_frameless_function_invocation, + x86_64_function_has_prologue): Remove functions. + (PROLOG_BUFSIZE): Remove define. + (struct x86_64_frame_cache): New structure. + (x86_64_alloc_frame_cache, x86_64_analyze_prologue, + x86_64_frame_cache, x86_64_frame_this_id, + x86_64_frame_prev_register, x86_64_frame_p, + x86_64_sigtramp_frame_cache, x86_64_sigtramp_frame_this_id, + x86_64_sigtramp_frame_prev_register, x86_sigtramp_frame_p): New + functions. + (x86_64_frame_unwind, x86_64_sigtramp_frame_unwind): New + variables. + (x86_64_skip_prologue): Rewrite in terms of + x86_64_analyze_prologue. + (x86_64_frame_base_address): New function. + (x86_64_frame_base): New variable. + (x86_64_save_dummy_frame_tos, x86_64_unwind_dummy_id): Rewrite. + (x86_64_init_abi): Set register_type and push_dummy_call. Don't + set deprecated_fp_regnum, deprecated_register_size, + deprecated_register_bytes, register_raw_size, register_byte, + register_virtual_type, register_convertiable, + register_convert_to_virtual, convert_to_raw, + deprecated_get_saved_register, deprecated_target_read_fp, + deprecated_push_arguments, deprecated_push_return_address, + deprecated_pop_frame, deprecated_store_struct_return, + deprecated_frame_init_saved_regs, deprecated_frame_chain, + frameless_function_invocation, deprecated_frame_saved_pc, + deprecated_saved_pc_after_call, frame_num_args, pc_in_sigtramp, + dwarf2_build_frame_info, deprecated_init_extra_frame_info, + deprecated_init_frame_pc and virtual_frame_pointer. Call + frame_unwind_append_predicate to register x86_64_sigtramp_frame_p + and x86_64_frame_p. Call frame_base_set_default to register + x86_64_frame_base. + (I387_FISEG_REGNUM, I387_FOSEG_REGNUM): New defines. + (x86_64_supply_fxsave, x86_64_fill_fxsave): New functions. + (_initialize_x86_64_tdep): Remove function. + * x86-64-linux-tdep.c: Don't include "dwarf2cfi.h". + (LINUX_SIGINFO_SIZE, LINUX_UCONTEXT_SIGCONTEXT_OFFSET, + LINUX_SIGCONTEXT_PC_OFFSET, LINUX_SIGCONTEXT_FP_OFFSET): Don't + define. + (X86_64_LINUX_UCONTEXT_SIGCONTEXT_OFFSET): Define. + (x86_64_linux_sigcontext_addr): Rewrite. + (x86_64_linux_sigtramp_saved_pc, x86_64_linux_saved_pc_after_call, + x86_64_linux_frame_saved_pc): Remove functions. + (x86_64_linux_pc_in_sigtramp): Renamed from + x86_64_linux_in_sigtramp. Try harder to recognize a signal + trampoline. + (x86_64_linux_frame_chain, x86_64_init_frame_pc): + Remove_functions. + (x86_64_linux_init_abi): Set pc_in_sigtramp. Initialize + TDEP->sigcontext_addr, TDEP->sc_pc_offset and TDEP->sc_sp_offset. + * x86-64-linux-nat.c: Sync with i386-linux-tdep.c. + (x86_64_regmap): Rename to regmap. + (GETREGS_SUPPLIES): Use X86_64_NUM_GREGS instead of + x86_64_num_gregs. + (supply_gregset, fill_gregset): Likewise. Use regmap instead of + x86_64_regmap. + (x86_64_fxsave_offset): Remove function. + (supply_fpregset): Simply call x86_64_supply_fxsave. + (fill_fpregset): Simply call x86_64_fill_fxsave. + (fetch_inferior_registers, store_inferior_registers): Avoid + asignment in if-statement. + (LINUX_SYSCALL_LEN, LINUX_SYSCALL_REGNUM, SYS_Sigreturn, + SYS_rt_sigreturn, LINUX_SIGCONTEXT_EFLAGS_OFFSET, + LINUX_UCONTEXT_SIGCONTEXT_OFFSET): Remove defines. + (fetch_core_registers): Remove function. + (linux_elf_core_fns): Remove. + (offsetoff): Don't define. + (_initialize_x86_64_linux_nat, kernel_u_size): Remove functions. + * config/i386/x86-64linux.mt (TDEPFILES): Add i386-linux-tdep.o. + * config/i386/x86-64linux.mh (NATDEPFILES): Remove core-aout.o, + add core-regset.o. + * config/i386/nm-x86-64linux.h: Use NM_X86_64_LINUX_H for + protection against multiple includes instead of NM_X86_64_h. Add + various comments. Include "config/nm-linux.h". Don't include + <signal.h>. + (REGISTER_U_ADDR, KERNEL_U_SIZE, U_REGS_OFFSET, KERN_U_ADDR, + GET_THREAD_SIGNALS): Remove defines. + (x86_64_register_u_addr, kernel_u_size, + lin_thread_get_thread_signals): Remove prototypes. + (PTRACE_ARG3_TYPE, PTRACE_XFER_TYPE): Define to `long'. + [HAVE_LINK_H]: Don't include "solib.h". + [HAVE_LINK_H] (SVR4_SHARED_LIBS): Remove define. + * config/i386/tm-x86-64linux.h: Fix comments. + * Makefile.in (x86-64-linux-nat.o, x86_64-linux-tdep.o, + x86-64-tdep.o): Update dependencies. + +2003-05-30 Andrew Cagney <cagney@redhat.com> + + * config/sparc/tm-sparc.h (sparc_extract_struct_value_address): + Change parameter type to a "struct regcache *". + + * gdbarch.sh: Regardless of the multi-arch level, always define + the macro when not already defined. + * gdbarch.h, gdbarch.c: Re-generate. + +2003-05-30 Richard Henderson <rth@redhat.com> + + * alpha-mdebug-tdep.c (alpha_mdebug_frame_p): Reject prologues. + (alpha_mdebug_frame_unwind_cache): Don't call the heuristic unwinder. + (alpha_mdebug_frame_this_id): Likewise. + (alpha_mdebug_frame_prev_register): Likewise. + (alpha_mdebug_frame_base_address): Likewise. + (alpha_mdebug_frame_locals_address): Likewise. + (alpha_mdebug_frame_args_address): Likewise. + (struct alpha_mdebug_unwind_cache): Remove in_prologue_cache. + * alpha-tdep.c (alpha_heuristic_proc_start): Use get_pc_function_start. + (alpha_heuristic_frame_unwind_cache): Make static; add missing + loop increment. + (alpha_heuristic_frame_this_id): Make static. + (alpha_heuristic_frame_prev_register): Likewise. + (alpha_heuristic_frame_base_address): Likewise. + * alpha-tdep.h: Update. + +2003-05-30 Mark Kettenis <kettenis@gnu.org> + + * i386-tdep.h (i386bsd_sigcontext_addr): Remove prototype. + (I386_SIZEOF_GREGS, I386_SIZEOF_FREGS, I386_SIZEOF_XREGS): Remove + defenitions. + (IS_FP_REGNUM, IS_SSE_REGNUM): Remove definitions. + * i386-tdep.c: Mark functions that are 64-bit safe as such. + (I386_EAX_REGNUM, I386_EDX_REGNUM, I386_ESP_REGNUM, + I386_EBP_REGNUM, I386_EIP_REGNUM, I386_EFLAGS_REGNUM, + I386_ST0_REGNUM): New defines. + (CODESTREAM_BUFSIZ, codestream_tell, codestream_peek, + codestream_get): Remove define. + (codestream_next_addr, condestream_addr, condestream_buf, + codestream_off, codestream_cnt): Remove variables. + (codestream_fill, codestream_seek, codestream_read): Remove + functions. + (i386_follow_jump): Rewrite to avoid usage of removed codestream + functionality. + (i386_get_frame_setup, i386_frameless_signal_p, i386_frame_chain, + i386_sigtramp_saved_pc, i386_sigtramp_saved_sp, + i386_frame_saved_pc, i386_saved_pc_after_call, + i386_frame_num_args, i386_frame_init_saved_regs, + i386_push_return_address, i386_do_pop_frame, i386_pop_frame, + i386_push_arguments): Remove functions. + (i386_skip_prologue): Rewrite to avoid usage of removed codestream + functionality. Use i386_analyze_prologue instead of + i386_get_frame_setup. + (I386_NUM_SAVED_REGS): New define. + (struct i386_frame_cache): New structure. + (i386_alloc_frame_cache, i386_analyze_struct_return, + i386_skip_probe, i386_analyze_frame_setup, + i386_analyze_register_saves, i386_analyze_prologue, + i386_unwind_pc, i386_frame_cache, i386_frame_this_id, + i386_frame_prev_register, i386_sigtramp_frame_cache, + i386_sigtramp_frame_this_id, i386_sigtramp_frame_prev_register, + i386_frame_p, i386_sigtramp_frame_p, i386_frame_base_address, + i386_unwind_dummy_id, i386_save_dummy_tos, i386_push_dummy_call): + New functions. + (i386_frame_unwind, i386_sigtramp_frame_unwind, i386_frame_base): + New variables. + (LOW_RETURN_REGNUM, HIGH_RETURN_REGNUM): Define in terms of + I386_EAX_REGNUM and I386_EDX_REGNUM. + (i386_extract_return_value, i386_store_return_value): Use + I386_ST0_REGNUM where appropriate. + (i386_extract_struct_value_address): Rewrite to use extract_address. + (i386_svr4_pc_in_sigtramp): Add comment. + (i386_svr4_sigcontext_addr): Rewrite. + (i386_svr4_init_abi): Adjust TDEP->sc_pc_offset and + TDEP->sc_sp_offset. + (i386_gdbarch_init): Don't set deprecated_init_frame_pc. Set + sp_regnum, fp_regnum, pc_regnum, ps_regnum and fp0_regnum in terms + of new defines. Set push_dummy_call, don't set + deprecated_push_arguments, deprecated_push_return_address, + deprecated_pop_frame. Don't set parm_boundary. Don't set + deprecated_frame_chain, deprecated_frame_saved_pc, + deprecated_saved_pc_after_call. Set unwind_dummy_id, + save_dummy_frame_tos, unwind_pc. Call + frame_unwind_append_predicate and frame_base_set_default. Don't + set deprecated_dummy_write_pc. Don't set deprecated_fp_regnum. + Don't set frameless_function_invocation. Don't set + deprecated_register_bytes, deprecated_register_size, + deprecated_call_dummy_words and deprecated_sizeof_call_dummy. + * i386-linux-tdep.c: Fix formatting in some comments. + (LINUX_SIGTRAMP_INSN0, LINUX_SIGTRAMP_OFFSET0, + LINUX_SIGTRAMP_INSN1, LINUX_SIGTRAMP_OFFSET1, + LINUX_SIGTRAMP_INSN2, LINUX_SIGTRAMP_OFFSET2, + LINUX_RT_SIGTRAMP_INSN0, LINUX_RT_SIGTRAMP_OFFSET0, + LINUX_RT_SIGTRAMP_INSN1, LINUX_RT_SIGTRAMP_OFFSET1): Drop + redundant parentheses. + (I386_LINUX_UCONTEXT_SIGCONTEXT_OFFSET): New define. + (i386_linux_sigcontext_addr): Use it. Rewrite. + (find_minsym_and_objfile): Change name of second argument. + (skip_gnu_resolver): Renamed from skip_hurd_resolver. All callers + changed. Use frame_pc_unwind instead of + DEPRECATED_SAVED_PC_AFTER_CALL. + (i386_linux_init_abi): Don't set deprecated_register_bytes. + * i386bsd-tdep.c (i386bsd_sigcontext_addr): Rewrite. + * i386-nto-tdep.c (i386nto_sigcontext_addr): Adapt for new frame + unwinder. + * i386-cygwin-tdep.c: Don't include "gdbcore.h", "frame.h" and + "dummy-frame.h". + (i386_cygwin_frame_chain_valid, i386_cygwin_frame_chain): Removed. + (_initialize_i386_cygwin_tdep): New prototype. + (i386_cygwin_init_abi): Don't set deprecated_frame_chain and + deprecated_frame_chain_valid. + * i386-sol2-tdep.c (i386_sol2_init_abi): Don't set + TDEP->sigcontext_addr, TDEP->sc_pc_offset and TDEP->sc_sp_offset. + Rely on the SVR4 defaults. + * config/i386/i386sol2.mt (TDEPFILES): Remove i386bsd-tdep.o. + * Makefile.in (i386-tdep.o, i386-cygwin-tdep.o): Update dependencies. + +2003-05-30 Andrew Cagney <cagney@redhat.com> + + * infcall.c (call_function_by_hand): Always call + DEPRECATED_FIX_CALL_DUMMY, even for AT_ENTRY_POINT case. + +2003-05-30 Richard Henderson <rth@redhat.com> + + * alpha-tdep.c (alpha_heuristic_frame_unwind_cache): Fix loop + increment. + +2003-05-29 Jim Blandy <jimb@redhat.com> + + Use gdbarch methods for solib stuff on PowerPC Linux. + * config/powerpc/tm-linux.h (IN_SOLIB_CALL_TRAMPOLINE, + SKIP_TRAMPOLINE_CODE): #undef these, so the gdbarch methods will + show through. + * ppc-linux-tdep.c (ppc_linux_init_abi): Register + IN_SOLIB_CALL_TRAMPOLINE and SKIP_TRAMPOLINE_CODE methods here, + giving the same effect as the #definitions above. + +2003-05-29 Adam Fedor <fedor@gnu.org> + + * objc-lang.c (CONVERT_FUNCPTR): Remove macro + (find_implementation_from_class): Replace it with the standard + case i.e. do nothing. + +2003-05-29 Richard Henderson <rth@redhat.com> + + * alpha-linux-tdep.c (alpha_linux_sigtramp_offset_1): New. + (alpha_linux_sigtramp_offset): Use it. Make static. + (alpha_linux_sigcontext_addr): Handle __NR_rt_sigreturn; + update for new frame model. + * alpha-mdebug-tdep.c: New file. + * alpha-osf1-tdep.c (alpha_call_dummy_address): Move from alpha-tdep.c. + (alpha_osf1_init_abi): Install it. + * alpha-tdep.c (PROC_*): Move to alpha-mdebug-tdep.c. + (linked_proc_desc_table): Remove. + (alpha_frame_past_sigtramp_frame): Remove. + (alpha_dynamic_sigtramp_offset): Remove. + (ALPHA_PROC_SIGTRAMP_MAGIC): Remove. + (alpha_proc_desc_is_dyn_sigtramp): Remove. + (alpha_set_proc_desc_is_dyn_sigtramp): Remove. + (push_sigtramp_desc): Remove. + (alpha_cannot_fetch_register): Use ALPHA_FP_REGNUM. + (alpha_cannot_store_register): Likewise. + (alpha_sigcontext_addr): Remove. + (alpha_find_saved_regs): Remove. + (alpha_frame_init_saved_regs): Remove. + (alpha_init_frame_pc_first): Remove. + (read_next_frame_reg): Remove. + (alpha_frame_saved_pc): Remove. + (alpha_saved_pc_after_call): Remove. + (temp_proc_desc, temp_saved_regs): Remove. + (alpha_about_to_return): Remove. + (cached_proc_desc): Remove. + (alpha_frame_chain): Remove. + (alpha_print_extra_frame_info): Remove. + (alpha_init_extra_frame_info): Remove. + (alpha_frame_locals_address): Remove. + (alpha_frame_args_address): Remove. + (alpha_push_arguments): Use ALPHA_REGISTER_BYTES not sizeof CORE_ADDR. + (alpha_push_dummy_frame): Remove. + (alpha_pop_frame): Remove. + (alpha_after_prologue): Rename from after_prologue; remove mdebug bits. + (alpha_read_insn): New. + (alpha_skip_prologue): Merge alpha_skip_prologue_internal; adjust + for different insn encodings. + (alpha_in_lenient_prologue): Remove. + (struct alpha_sigtramp_unwind_cache): New. + (alpha_sigtramp_frame_unwind_cache): New. + (alpha_sigtramp_register_address): New. + (alpha_sigtramp_frame_this_id): New. + (alpha_sigtramp_frame_prev_register): New. + (alpha_sigtramp_frame_unwind): New. + (alpha_sigtramp_frame_p): New. + (struct alpha_heuristic_unwind_cache): New. + (alpha_heuristic_proc_start): Rename from heuristic_proc_start; + don't count nop insns that occur between functions. + (alpha_heuristic_frame_unwind_cache): New; incorporate much of + heuristic_proc_desc, but without the mdebug wrapping. + (alpha_heuristic_frame_this_id): New. + (alpha_heuristic_frame_prev_register): New. + (alpha_heuristic_frame_unwind): New. + (alpha_heuristic_frame_p): New. + (alpha_heuristic_frame_base_address): New. + (alpha_heuristic_frame_base): New. + (alpha_unwind_dummy_id): New. + (alpha_unwind_pc): New. + (alpha_gdbarch_init): Don't set skip_sigtramp_frame. Kill use of + frame related deprecated initializations; install replacements. + (alpha_dump_tdep): Remove. + * alpha-tdep.h (struct gdbarch_tdep): Remove skip_sigtramp_frame. + (alpha_read_insn, alpha_after_prologue, + alpha_heuristic_frame_unwind_cache, alpha_heuristic_frame_this_id, + alpha_heuristic_frame_prev_register, + alpha_heuristic_frame_base_address, alpha_mdebug_init_abi): Declare. + * config/alpha/alpha-linux.mt (TDEPFILES): Add alpha-mdebug-tdep.o. + * config/alpha/tm-alpha.h (PRINT_EXTRA_FRAME_INFO): Remove. + * config/alpha/tm-alphalinux.h (SIGTRAMP_START, SIGTRAMP_END): Remove. + +2003-05-29 Andrew Cagney <cagney@redhat.com> + + * gdb_assert.h (gdb_assert_fail): Provide different definitions + dependant on the availability of ASSERT_FUNCTION. + (ASSERT_FUNCTION): Do not define when there is no function name. + +2003-05-29 Kevin Buettner <kevinb@redhat.com> + + From Jimi X <jimix@watson.ibm.com>: + * rs6000-tdep.c (skip_prologue): Improve support for 64-bit code. + +2003-05-28 Jim Blandy <jimb@redhat.com> + + * ppc-linux-nat.c (store_altivec_registers): Don't cast fourth + argument to ptrace to int; the system headers should give it the + right type, and pointers don't fit in ints on powerpc64-*-*. + +2003-05-28 H.J. Lu <hongjiu.lu@intel.com> + + * dwarf2read.c (process_die): Handle DW_TAG_try_block and + DW_TAG_catch_block. + +2003-05-26 Elena Zannoni <ezannoni@redhat.com> + + * stabsread.c (dbx_lookup_type): Make static. + (read_type): Ditto. + (add_undefined_type): Ditto. + * stabsread.h (dbx_lookup_type, read_type, add_undefined_type): Do + not export. + +2003-05-26 Elena Zannoni <ezannoni@redhat.com> + + * hpread.c (hpread_has_name): Make static. + (hpread_psymtab_to_symtab): Ditto. + (file_exists): Ditto. + (hpread_call_pxdb): Ditto. + (hpread_pxdb_needed): Ditto. + (hpread_quick_traverse): Ditto. + (hpread_get_header): Ditto. + (hpread_get_lntt): Ditto. + (hpread_get_slt): Ditto. + (class_of): Ditto. + +2003-05-25 Andreas Schwab <schwab@suse.de> + + * m68k-tdep.c (m68k_gdbarch_init): Set parm_boundary instead of + stack_align and deprecated_extra_stack_alignment_needed. + (m68k_stack_align): Delete. + + * m68k-tdep.c (m68k_register_raw_size): Remove cast. + (m68k_register_virtual_size): Likewise. + (altos_skip_prologue): Remove obsolete function. + (isi_frame_num_args): Likewise. + (news_frame_num_args): Likewise. + (m68k_fix_call_dummy): Make static. + (m68k_push_dummy_frame): Likewise. + (m68k_pop_frame): Likewise. + (m68k_skip_prologue): Likewise. + (m68k_frame_init_saved_regs): Likewise. + (m68k_saved_pc_after_call): Likewise. + (m68k_get_longjmp_target): Make multi-arch. + (m68k_gdbarch_init): Allocate and initialize gdbarch_tdep + structure. Register m68k_get_longjmp_target if enabled. + * m68k-tdep.h (struct gdbarch_tdep): Define. + * config/m68k/tm-m68k.h: Don't include "regcache.h". + + * Makefile.in (config.status): Also depend on configure.tgt + and configure.host. + (m68klinux-tdep.o): Update dependencies. + * configure.tgt (m68*-*-linux*): Set gdb_multi_arch to 1. + * m68klinux-tdep.c (M68K_LINUX_JB_ELEMENT_SIZE): Define. + (M68K_LINUX_JB_PC): Define. + (m68k_linux_pc_in_sigtramp): Renamed from m68k_linux_in_sigtramp + and take additional parameter. + (m68k_linux_sigtramp_saved_pc): Update. + (m68k_linux_init_abi): Set jb_pc and jb_elt_size. Register + m68k_linux_pc_in_sigtramp, in_plt_section, + find_solib_trampoline_target. + * config/m68k/tm-linux.h: Don't include any tm headers. + (START_INFERIOR_TRAPS_EXPECTED): Remove definition. + (JB_ELEMENT_SIZE): Likewise. + (JB_PC): Likewise. + (GET_LONGJMP_TARGET): Likewise. + (IN_SIGTRAMP): Likewise. + (SVR4_SHARED_LIBS): Define this and include "solib.h". + +2003-05-25 Mark Kettenis <kettenis@gnu.org> + + * sparc-tdep.c (sparc32_do_push_arguments): New function. + (sparc32_push_arguments): Re-implement by calling + sparc32_do_push_arguments. + +2003-05-25 Mark Kettenis <kettenis@gnu.org> + + * sparc-tdep.c (SPARC_F0_REGNUM, SPARC_F1_REGNUM, SPARC_O0_REGNUM, + SPARC_O1_REGNUM): New defines. + (sparc32_extract_return_value): Rewrite to operate on a regcache. + (sparc32_store_return_value): New function. + (sparc_extract_struct_value_address): Rewrite to operate on a + regcache. + (sparc_gdbarch_init): Don't set + deprecated_extract_struct_value_address. Set + extract_struct_value_address instead. Don't set + deprecated_extract_return_value and deprecated_store_return_value + for 32-bit targets. Set extract_return_value and + store_return_value instead. + * config/sparc/tm-sparc.h (DEPRECATED_STORE_RETURN_VALUE, + DEPRECATED_EXTRACT_RETURN_VALUE, + DEPRECATED_EXTRACT_STRUCT_VALUE_ADDRESS): Don't define these. + (STORE_RETURN_VALUE, EXTRACT_RETURN_VALUE, + EXTRACT_STRUCT_VALUE_ADDRESS): Define these instead. + (sparc_store_return_value): Remove prototype. + (sparc32_store_return_value): New prototype. + (sparc32_extract_return_value, sparc_extract_struct_value_address): + Adjust prototypes. + +2003-05-24 Mark Kettenis <kettenis@gnu.org> + + * sparcnbsd-tdep.c: Include "gdb_string.h". + +2003-05-23 Andrew Cagney <cagney@redhat.com> + + * p-valprint.c (pascal_val_print): Replace extract_address with + the inline equivalent extract_unsigned_integer. + * jv-valprint.c (java_value_print): Ditto. + * ada-valprint.c (ada_val_print_1): Ditto. + * ada-lang.h (EXTRACT_ADDRESS): Ditto. + +2003-05-23 Theodore A. Roth <troth@openavr.org> + + * blockframe.c (frameless_look_for_prologue): Remove unused + after_prologue variable. + +2003-05-23 Mark Kettenis <kettenis@gnu.org> + + * blockframe.c (get_pc_function_start): Rewrite to avoid + asignments in if-statements. + +2003-05-23 Raoul Gough <RaoulGough@yahoo.co.uk> + + Committed by Elena Zannoni <ezannoni@redhat.com>. + * coffread.c(coff_symtab_read): Do relocate static symbols from PE + files, don't relocate absolute symbols (and do use mst_abs). + +2003-05-23 Andrew Cagney <cagney@redhat.com> + + * objc-lang.c: Include "gdb_assert.h". + (objc_op_print_tab): Use OP_NULL and PREC_NULL instead of 0. + (CHECK, CHECK_FATAL, __CHECK_FUNCTION): Delete macros. + (gdb_check, gdb_check_fatal): Delete functions. + (read_objc_methlist_method): Replace CHECK and CHECK_FATAL with + gdb_assert. + (parse_selector, parse_method, find_methods, find_imps): Ditto. + * Makefile.in (objc-lang.o): Update dependencies. + +2003-05-22 Ian Lance Taylor <ian@airs.com> + + * disasm.c (gdb_disassemble_info): Initialize disassemble_info + with fprintf_filtered, not fprintf_unfiltered. + +2003-05-22 Andrew Cagney <cagney@redhat.com> + + * stack.c (frame_info): Inline extract_address, replacing it with + extract_unsigned_integer. + * findvar.c (unsigned_pointer_to_address): Ditto. + * dwarf2loc.c (dwarf_expr_read_reg): Ditto. + * dwarf2expr.c (dwarf2_read_address): Ditto. + * frame.c (frame_pc_unwind): Update comment. + * dummy-frame.c (deprecated_read_register_dummy): Update comment. + +2003-05-22 Jeff Johnston <jjohnstn@redhat.com> + + * infptrace.c (detach): Call print_sys_errmsg rather than + perror_with_name to issue warning message when errno is non-zero + after calling ptrace detach. + +2003-05-21 J. Brobecker <brobecker@gnat.com> + + * config/pa/tm-hppa.h: Delete some unused macros. Move some + macro definitions from here... + * hppa-tdep.c: ...to there. + +2003-05-20 Kevin Buettner <kevinb@redhat.com> + + * mips-nat.c (REGISTER_PTRACE_ADDR): Convert macro to function + register_ptrace_addr(). Fix all callers. + +2003-05-21 Andreas Schwab <schwab@suse.de> + + * Makefile.in (m68k-tdep.o, m68klinux-tdep.o): Update + dependencies. + * m68k-tdep.c (m68k_gdbarch_init): Call gdbarch_init_osabi at the + end. + * m68klinux-tdep.c (m68k_linux_init_abi): New function. + (_initialize_m68k_linux_tdep): New function. + (m68k_linux_frame_saved_pc): Make static. + (m68k_linux_extract_return_value): Likewise. + (m68k_linux_store_return_value): Likewise. + (m68k_linux_extract_struct_value_address): Likewise. + * config/m68k/tm-linux.h (DEPRECATED_EXTRACT_RETURN_VALUE): + Remove. + (DEPRECATED_STORE_RETURN_VALUE): Remove. + (DEPRECATED_EXTRACT_STRUCT_VALUE_ADDRESS): Remove. + (DEPRECATED_FRAME_SAVED_PC): Remove. + +2003-05-20 Kris Warkentin <kewarken@qnx.com> + + * nto-tdep.c (fetch_core_registers): Match gdb's idea of + regset numbering rather than our own. + +2003-05-19 David Carlton <carlton@bactrian.org> + + * config/djgpp/fnchange.lst: Add testsuite/gdb.c++/rtti*. + +2003-05-19 David Carlton <carlton@bactrian.org> + + Partial fix for PR c++/827. + * cp-support.h: Include symtab.h. + Declare cp_lookup_symbol_nonlocal, cp_lookup_symbol_namespace. + * cp-namespace.c: Update contributors. + (cp_lookup_symbol_nonlocal): New. + (lookup_namespace_scope, cp_lookup_symbol_namespace) + (lookup_symbol_file): Ditto. + * c-lang.c (cplus_language_defn): Use cp_lookup_symbol_nonlocal. + * block.h: Declare block_scope, block_using, block_global_block. + * block.c (block_scope): New. + (block_using, block_global_block): Ditto. + * Makefile.in (cp_support_h): Depend on symtab_h. + * config/djgpp/fnchange.lst: Add testsuite/gdb.c++/namespace1.cc. + +2003-05-19 David Carlton <carlton@bactrian.org> + + * language.h (struct language_defn): Add 'la_value_of_this' + and 'la_lookup_symbol_nonlocal' members. + * symtab.h: Declare basic_lookup_symbol_nonlocal, + lookup_symbol_static, lookup_symbol_global, + lookup_symbol_aux_block. + * symtab.c (lookup_symbol_aux): Call language hooks to determine + if we should search fields of this and how to do static/global + lookup. + (lookup_symbol_aux_block): Make extern. + (basic_lookup_symbol_nonlocal): New. + (lookup_symbol_static, lookup_symbol_global): Ditto. + * ada-lang.c (ada_language_defn): Set 'la_value_of_this' and + 'la_lookup_symbol_nonlocal' members. + * c-lang.c (c_language_defn, cplus_language_defn) + (asm_language_defn, minimal_language_defn): Ditto. + * jv-lang.c (java_language_defn): Ditto. + * language.c (unknown_language_defn, auto_language_defn) + (local_language_defn): Ditto. + * m2-lang.c (m2_language_defn): Ditto. + * objc-lang.c (objc_language_defn): Ditto. + * scm-lang.c (scm_language_defn): Ditto. + * f-lang.c (f_language_defn): Ditto, and include value.h as well. + * p-lang.c (pascal_language_defn): Ditto for both. + * Makefile.in (f-lang.o): Depend on value_h. + (p-lang.o): Ditto. + +2003-05-19 David Carlton <carlton@bactrian.org> + + * block.h: Declare block_static_block. + * block.c (block_static_block): New. + * symtab.c (lookup_symbol_aux): Remove 'static_block' argument to + lookup_symbol_aux_local, calling block_static_block instead. + (lookup_symbol_aux_local): Delete 'static_block' argument. + +2003-05-19 David Carlton <carlton@bactrian.org> + + * symtab.c (lookup_symbol_aux): Delete #if 0 hunk. + +2003-05-19 Michal Ludvig <mludvig@suse.cz> + + * x86-64-tdep.c (x86_64_dwarf2gdb_regno_map): Fix + register numbers mapping. + +2003-05-18 Adam Fedor <fedor@gnu.org> + + * symtab.c (completion_list_objc_symbol): New function. + (make_symbol_completion_list): Use it to add ObjC symbols + when looking though the list. + (language_search_unquoted_string): New function. + (make_file_symbol_completion_list): Use it. + +2003-05-18 Andreas Schwab <schwab@suse.de> + + * Makefile (m68klinux-nat.o, m68klinux-tdep.o): Update + dependencies. + * config/m68k/tm-linux.h (DEPRECATED_EXTRACT_RETURN_VALUE): Define + as m68k_linux_extract_return_value. + (DEPRECATED_STORE_RETURN_VALUE): Define as + m68k_linux_store_return_value. + (DEPRECATED_EXTRACT_STRUCT_VALUE_ADDRESS): Define as + m68k_linux_extract_struct_value_address. + * m68klinux-tdep.c (m68k_linux_sigtramp_saved_pc): Use + get_next_frame, get_frame_base, get_frame_pc. + (m68k_linux_frame_saved_pc): Use get_frame_base. + (m68k_linux_extract_return_value): New function. + (m68k_linux_store_return_value): New function. + (m68k_linux_extract_struct_value_address): New function. + * config/m68k/tm-m68k.h: Declare m68k_get_longjmp_target. + + * c-exp.y (typebase): Remove duplicate occurence of + `SIGNED_KEYWORD LONG LONG'. Use builtin_type_long_long instead + of lookup_signed_typename. + +2003-05-18 Mark Kettenis <kettenis@gnu.org> + + * dwarf2loc.c (find_location_expression): Change type of second + argument to `size_t *'. + (loclist_read_variable, loclist_tracepoint_var_ref): Use size_t + for size variable. + +2003-05-18 David Carlton <carlton@bactrian.org> + + * symtab.c (lookup_symbol_aux): Rename 'mangled_name' argument to + 'linkage_name'. Add comment. + (lookup_symbol_aux_local): Rename 'mangled_name' argument to + 'linkage_name'. + (lookup_symbol_aux_block, lookup_symbol_aux_symtabs) + (lookup_symbol_aux_psymtabs, lookup_symbol_aux_minsyms) + (lookup_block_symbol): Ditto. + +2003-05-16 Andrew Cagney <cagney@redhat.com> + + * gdbarch.sh (DEPRECATED_REGISTER_BYTES): Rename REGISTER_BYTES. + * gdbarch.h, gdbarch.c: Re-generate. + * arm-linux-tdep.c (arm_linux_extract_return_value): Delete reference. + * TODO (REGISTER_BYTES): Delete reference. + * alpha-tdep.c (alpha_gdbarch_init): Update. + * xstormy16-tdep.c (xstormy16_gdbarch_init): Update. + * x86-64-tdep.c (x86_64_init_abi): Update. + * vax-tdep.c (vax_gdbarch_init): Update. + * v850-tdep.c (v850_gdbarch_init): Update. + * sparc-tdep.c (sparc_gdbarch_init): Update. + * sh-tdep.c (sh_gdbarch_init): Update. + * s390-tdep.c (s390_gdbarch_init): Update. + * rs6000-tdep.c (rs6000_gdbarch_init): Update. + * ns32k-tdep.c (ns32k_gdbarch_init_32082): Update. + (ns32k_gdbarch_init_32382): Update. + * mn10300-tdep.c (mn10300_gdbarch_init): Update. + * mcore-tdep.c (mcore_gdbarch_init): Update. + * m68k-tdep.c (m68k_gdbarch_init): Update. + * m68hc11-tdep.c (m68hc11_gdbarch_init): Update. + * ia64-tdep.c (ia64_gdbarch_init): Update. + * i386-tdep.c (i386_gdbarch_init): Update. + * i386-linux-tdep.c (i386_linux_init_abi): Update. + * hppa-tdep.c (hppa_gdbarch_init): Update. + * h8300-tdep.c (h8300_gdbarch_init): Update. + * frv-tdep.c (frv_gdbarch_init): Update. + * cris-tdep.c (cris_gdbarch_init): Update. + * avr-tdep.c (avr_gdbarch_init): Update. + * arm-tdep.c (arm_gdbarch_init): Update. + * sparc-tdep.c (sparc_pop_frame): Update. + * rs6000-tdep.c (rs6000_pop_frame): Update. + * remote.c (init_remote_state): Update. + (remote_prepare_to_store): Update. + * remote-vx.c (vx_prepare_to_store): Update. + * remote-sds.c (sds_fetch_registers): Update. + (sds_prepare_to_store): Update. + * remote-array.c: Update. + * regcache.c (init_legacy_regcache_descr): Update. + (init_regcache_descr): Update. + * mips-tdep.c (mips_eabi_extract_return_value): Update. + (mips_o64_extract_return_value): Update. + * irix5-nat.c (fetch_core_registers): Update. + * irix4-nat.c (fetch_core_registers): Update. + * i386-tdep.h: Update. + * hppa-tdep.c (pa_do_registers_info): Update. + (pa_do_strcat_registers_info): Update. + * cris-tdep.c (cris_register_bytes_ok): Update. + * config/nm-gnu.h (CHILD_PREPARE_TO_STORE): Update. + * config/sparc/tm-sparc.h (DEPRECATED_REGISTER_BYTES): Update. + * config/sparc/nm-sun4sol2.h (CHILD_PREPARE_TO_STORE): Update. + * config/sparc/nm-sun4os4.h (CHILD_PREPARE_TO_STORE): Update. + * config/sparc/nm-nbsd.h (CHILD_PREPARE_TO_STORE): Update. + * config/sparc/tm-sp64.h (DEPRECATED_REGISTER_BYTES): Update. + * config/s390/tm-s390.h (DEPRECATED_REGISTER_BYTES): Update. + * config/pa/tm-hppa64.h (DEPRECATED_REGISTER_BYTES): Update. + * config/mips/tm-mips.h (DEPRECATED_REGISTER_BYTES): Update. + * config/mips/tm-irix6.h (DEPRECATED_REGISTER_BYTES): Update. + * config/mips/tm-irix5.h (DEPRECATED_REGISTER_BYTES): Update. + * config/m68k/tm-sun3.h (DEPRECATED_REGISTER_BYTES): Update. + (REGISTER_BYTES_OK): Update. + * config/m68k/nm-sun3.h (CHILD_PREPARE_TO_STORE): Update. + * config/ia64/tm-ia64.h (DEPRECATED_REGISTER_BYTES): Update. + +2003-05-16 Ian Lance Taylor <ian@airs.com> + + * vax-tdep.c (INVALID_FLOAT, MAXLEN, NOPCODES): Don't define. + (vax_print_insn, print_insn_arg): Remove static functions. + (vax_gdbarch_init): Call set_gdbarch_print_insn with + print_insn_vax from opcodes library. + (_initialize_vax_tdep): Don't set deprecated_tm_print_insn. + +2003-05-15 Andrew Cagney <cagney@redhat.com> + + * arch-utils.h (legacy_breakpoint_from_pc): Delete declaration. + * target.h (memory_breakpoint_from_pc): Delete declaration. + * mem-break.c (memory_breakpoint_from_pc): Delete function. + * arch-utils.c (legacy_breakpoint_from_pc): Delete function. + * monitor.c (monitor_insert_breakpoint): Use + gdbarch_breakpoint_from_pc instead of memory_breakpoint_from_pc. + * gdbarch.sh (BREAKPOINT_FROM_PC): Do not provide a default. + * gdbarch.h, gdbarch.c: Re-generate. + * sparc-tdep.c (sparc_breakpoint_from_pc): New function. + (sparc_gdbarch_init): Set breakpoint_from_pc to + sparc_breakpoint_from_pc. + * config/sparc/tm-sparc.h (BREAKPOINT): Delete macro. + (BREAKPOINT_FROM_PC): Define. + (sparc_breakpoint_from_pc): Declare. + * hppa-tdep.c (hppa_breakpoint_from_pc): New function. + * config/pa/tm-hppa.h (hppa_breakpoint_from_pc): Declare. + (BREAKPOINT_FROM_PC): Define. + (BREAKPOINT): Delete macro. + * target.h: Update comment. + * s390-tdep.c (s390_gdbarch_init): Update comments. + * remote.c: Update comments. + * remote-mips.c: Update comments. + * proc-api.c (write_with_trace): Do not check for a breakpoint. + * mem-break.c: Update comment. + * ia64-tdep.c (IA64_BREAKPOINT): Rename BREAKPOINT. + (ia64_memory_insert_breakpoint): Update. + * config/sparc/tm-sparc.h: Update comment. + * config/pa/tm-hppa64.h: Update comment. + * rs6000-tdep.c (BIG_BREAKPOINT, LITTLE_BREAKPOINT): Delete macro. + (rs6000_breakpoint_from_pc): Update. + * mips-tdep.c (BIG_BREAKPOINT, LITTLE_BREAKPOINT): Delete macro. + (PMON_BIG_BREAKPOINT, PMON_LITTLE_BREAKPOINT): Delete macro. + (IDT_LITTLE_BREAKPOINT, IDT_LITTLE_BREAKPOINT): Delete macro. + (MIPS16_LITTLE_BREAKPOINT, MIPS16_BIG_BREAKPOINT): Delete macro. + (mips_breakpoint_from_pc): Update. + (mips_dump_tdep): Update. + + * symtab.h (DEPRECATED_SYMBOL_MATCHES_NAME): Delete macro. + * minsyms.c (lookup_minimal_symbol): Inline + DEPRECATED_SYMBOL_MATCHES_NAME. Replace STREQ with strcmp. + + * c-lang.c (c_printstr): Delete "extern inspect_it" declaration. + * p-valprint.c (pascal_object_print_value_fields): Ditto. + * p-lang.c (pascal_printstr): Ditto. + * objc-lang.c (objc_printstr): Ditto. + * m2-lang.c (m2_printstr): Ditto. + * jv-valprint.c (java_print_value_fields): Ditto. + * f-lang.c (f_printstr): Ditto. + * cp-valprint.c (cp_print_value_fields): Ditto. Include "valprint.h". + * ada-valprint.c (inspect_it, repeat_count_threshold): Ditto, and + for repeat_count_threshold. + * Makefile.in (cp-valprint.o): Update dependencies. + +2003-05-15 Jeff Johnston <jjohnstn@redhat.com> + + * ia64-tdep.c: Increase max_skip_non_prologue_insns to 40. + (examine_prologue): Support looking through leaf functions, knowing + they start with mov r2,r12. Support skipping over indirect stores + of the input registers. Upon hitting a non-nop branch instruction + or predicated instruction, bail out by setting lim_pc to the current + pc value in the loop. At the end, if the lim_pc value is still + beyond our calculated value and we have trust_limit set, + use the lim_pc value. + +2003-05-15 Andrew Cagney <cagney@redhat.com> + + * dummy-frame.h (deprecated_find_dummy_frame_regcache): Rename + generic_find_dummy_frame. + * dummy-frame.c (deprecated_find_dummy_frame_regcache): Update. + (deprecated_generic_find_dummy_frame): Update. + (deprecated_read_register_dummy): Update. + * frame.c (deprecated_generic_get_saved_register): Update. + +2003-05-15 Theodore A. Roth <troth@openavr.org> + + * avr-tdep.c (avr_breakpoint_from_pc): New function. + (avr_gdbarch_init): Set breakpoint_from_pc method. + +2003-05-15 Andrew Cagney <cagney@redhat.com> + + * regcache.c (build_regcache): Set deprecated_register_valid + directly. + (deprecated_grub_regcache_for_register_valid): Delete function. + * regcache.h (deprecated_grub_regcache_for_register_valid): Delete + declaration. + +2003-05-15 David Carlton <carlton@bactrian.org> + + Committed by Elena Zannoni <ezannoni@redhat.com> + * symtab.c (lookup_symbol_aux): Delete calls to + lookup_symbol_aux_minsyms. + (lookup_symbol_aux_minsyms): Comment out function and + prototype. Delete lookup by mangled name. + +2003-05-14 Kevin Buettner <kevinb@redhat.com> + + * dwarf2expr.c (new_dwarf_expr_context): Set ``stack_len'' to + correctly indicate an empty stack and ``stack_allocated'' to the + indicate the number of elements initially allocated. + (dwarf_expr_grow_stack): Simplify method for computing new + stack size. Don't loop infinitely if ``stack_len'' is zero. + (execute_stack_op): Move ``ctx->in_reg'' initialization + out of loop. Allow DW_OP_reg0 ... DW_OP_reg31 and DW_OP_regx to + be used in conjuction with DW_OP_piece. Revise error message + accordingly. + +2003-05-14 Theodore A. Roth <troth@openavr.org> + + * MAINTAINERS: Update my email address. + * avr-tdep.c: Ditto. + +2003-05-14 Elena Zannoni <ezannoni@redhat.com> + + * symtab.h (enum domain_enum): Rename from namespace_enum. + (UNDEF_DOMAIN, VAR_DOMAIN, STRUCT_DOMAIN, LABEL_DOMAIN, + VARIABLES_DOMAIN, FUNCTIONS_DOMAIN, TYPES_DOMAIN, METHODS_DOMAIN): + Rename from UNDEF_NAMESPACE, VAR_NAMESPACE, STRUCT_NAMESPACE, + LABEL_NAMESPACE, VARIABLES_NAMESPACE, FUNCTIONS_NAMESPACE, + TYPES_NAMESPACE, METHODS_NAMESPACE. + (SYMBOL_NAMESPACE): Rename to SYMBOL_DOMAIN. + (struct symbol, struct partial_symbol): Rename field + 'namespace_enum namespace' to 'domain_enum domain'. + (PSYMBOL_NAMESPACE): Rename to PSYMBOL_DOMAIN. + Delete old define kludge for namespace. + + * ada-exp.y, ada-lang.c, ada-lang.h, alpha-tdep.c, arm-tdep.c, + blockframe.c, c-exp.y, c-valprint.c, coffread.c, dbxread.c, + dwarf2read.c, dwarfread.c, f-exp.y, gdbtypes.c, gdbtypes.h, + gnu-v3-abi.c, hppa-tdep.c, hpread.c, jv-exp.y, jv-lang.c, + language.c, linespec.c, m2-exp.y, m3-nat.c, mdebugread.c, + mips-tdep.c, nlmread.c, objc-exp.y, objc-lang.c, objfiles.c, + p-exp.y, p-valprint.c, parse.c, printcmd.c, scm-lang.c, source.c, + stabsread.c, stack.c, symfile.c, symfile.h, symmisc.c, symtab.c, + valops.c, values.c, xcoffread.c, xstormy16-tdep.c: Replace all + occurrences of the above. + +2003-05-14 Ian Lance Taylor <ian@airs.com> + + * Makefile.in (install-only): Use $(SHELL) when running + mkinstalldirs. + +2003-05-13 Ian Lance Taylor <ian@airs.com> + + * MAINTAINERS (write after approval): Add myself. + + * ser-pipe.c (_initialize_ser_pipe): Correct call to memset--swap + second and third arguments. + * ser-tcp.c (_initialize_ser_tcp): Likewise. + * ser-unix.c (_initialize_ser_hardwire): Likewise. + +2003-05-13 Andrew Cagney <cagney@redhat.com> + + * defs.h (store_address): Delete declaration. + findvar.c (store_address): Delete function. + * arm-tdep.c (arm_push_dummy_call): Replace store_address with + store_unsigned_integer. + * xstormy16-tdep.c (xstormy16_address_to_pointer): Ditto. + * v850-tdep.c (v850_push_arguments): Ditto. + * sparc-tdep.c (sparc_get_saved_register): Ditto. + * sh-tdep.c (sh64_get_saved_register): Ditto. + * rs6000-tdep.c (rs6000_push_arguments): Ditto. + * ppc-sysv-tdep.c (ppc_sysv_abi_push_arguments): Ditto. + * mips-tdep.c (mips_eabi_push_arguments): Ditto. + (mips_get_saved_register): Ditto. + * ia64-tdep.c (ia64_get_saved_register): Ditto. + (find_func_descr, ia64_push_arguments): Ditto. + * i386-tdep.c (i386_push_arguments): Ditto. + * hpux-thread.c (hpux_thread_fetch_registers): Ditto. + * frv-tdep.c (frv_push_arguments): Ditto. + * frame.c (legacy_saved_regs_prev_register): Ditto. + (deprecated_generic_get_saved_register): Ditto. + * findvar.c (unsigned_address_to_pointer): Ditto. + * dwarf2read.c (dwarf2_const_value): Ditto. + * arm-linux-tdep.c (arm_linux_push_arguments): Ditto. + * alpha-tdep.c (alpha_push_arguments): Ditto. + +2003-05-12 J. Brobecker <brobecker@gnat.com> + + * NEWS: Mention that the hppa-hpux port has been partially + multiarched (32bit ABIT only, so far). + +2003-05-11 Andrew Cagney <cagney@redhat.com> + + * Makefile.in (mi-symbol-cmds.o): Rename mi-cmd-symbol. + * config/djgpp/fnchange.lst: Rename include/xtensa-isa-internal.h, + include/xtensa-isa.h, sim/testsuite/sim/arm/misaligned1.ms, + sim/testsuite/sim/arm/misaligned2.ms, and + sim/testsuite/sim/arm/misaligned3.ms. + * disasm.h (struct ui_file): Add opaque struct declaration. + * config/pa/tm-hppa64.h (struct type, struct frame_info): Ditto. + * frame.h (struct ui_file): Ditto. + +2003-05-11 Mark Kettenis <kettenis@gnu.org> + + * value.h: Pretty print. + +2003-05-10 Mark Kettenis <kettenis@gnu.org> + + * config/i386/tm-linux.h (I386_GNULINUX_TARGET): Remove define. + +2003-05-08 Andrew Cagney <cagney@redhat.com> + + * regcache.h (max_register_size): Delete declaration. + * regcache.c (max_register_size): Delete function. + (struct regcache_descr): Delete field "max_register_size". + (init_regcache_descr, init_legacy_regcache_descr): Assert that all + registers fit in MAX_REGISTER_SIZE. + (regcache_save): Replace max_register_size with MAX_REGISTER_SIZE. + (regcache_restore, regcache_xfer_part, regcache_dump): Ditto. + * thread-db.c: Replace max_register_size with MAX_REGISTER_SIZE. + * sh-tdep.c, rom68k-rom.c, remote-sim.c, remote-mips.c: Ditto. + * remote-e7000.c, monitor.c, mipsv4-nat.c, mips-nat.c: Ditto. + * m68klinux-nat.c, lynx-nat.c, irix4-nat.c: Ditto. + * hpux-thread.c, hppah-nat.c, hppab-nat.c, hppa-tdep.c: Ditto. + * dve3900-rom.c, hppa-tdep.c: Ditto. + +2003-05-08 David Carlton <carlton@math.stanford.edu> + + * valops.c (push_word): Fix typo. + +2003-05-08 Andrew Cagney <cagney@redhat.com> + + * gdbarch.sh: Delete references to MAX_REGISTER_RAW_SIZE. + * gdbarch.h: Re-generate. + * defs.h (MAX_REGISTER_RAW_SIZE): Delete macro. + (legacy_max_register_raw_size): Delete declaration. + * regcache.c (legacy_max_register_raw_size): Delete function. + * valops.c: Replace MAX_REGISTER_RAW_SIZE with MAX_REGISTER_SIZE. + * target.c, stack.c, sparc-tdep.c, sh-tdep.c: Ditto. + * rs6000-tdep.c, rs6000-nat.c, remote.c, remote-sim.c: Ditto. + * remote-rdp.c, remote-array.c, regcache.c: Ditto. + * ppc-linux-nat.c, monitor.c, mn10300-tdep.c: Ditto. + * mips-tdep.c, mips-linux-tdep.c, m68klinux-nat.c: Ditto. + * infptrace.c, ia64-tdep.c, i386-tdep.c, frame.c: Ditto. + * findvar.c, dwarf2cfi.c: Ditto. + +2003-05-08 Andrew Cagney <cagney@redhat.com> + + * mips-tdep.c (read_signed_register): New function, moved to here + from "regcache.c". + (read_signed_register_pid): Ditto. + * regcache.c (read_signed_register_pid): Delete function, moved to + "mips-tdep.c". + (read_signed_register): Ditto. + * regcache.h (read_signed_register): Delete declaration. + (read_signed_register_pid): Delete declaration. + +2003-05-08 Andrew Cagney <cagney@redhat.com> + + * gdbarch.sh: Add comments on MAX_REGISTER_SIZE. + * gdbarch.h: Re-generate. + * defs.h (MAX_REGISTER_VIRTUAL_SIZE): Delete macro. + (legacy_max_register_virtual_size): Delete declaration. + * infcmd.c (default_print_registers_info): Use MAX_REGISTER_SIZE. + * d10v-tdep.c (d10v_print_registers_info): Ditto. + * tracepoint.c (memrange_sortmerge): Ditto. + * sparc-tdep.c (sparc_print_registers): Ditto. + * regcache.c (legacy_max_register_virtual_size): Delete function. + +2002-05-08 J. Brobecker <brobecker@gnat.com> + + * fork-child.c (escape_bang_in_quoted_argument): New function. + (fork_inferior): Escape '!' characters in quoted arguments + only when needed. + +2003-05-08 J. Brobecker <brobecker@gnat.com> + + * dwarf2read.c (set_cu_language): Set the language to "minimal" if + the language of the CU is not currently supported by GDB. + +2003-05-08 J. Brobecker <brobecker@gnat.com> + + * defs.h (language): Add language_minimal enum value. + * c-lang.c (minimal_language_defn): New language definition. + (_initialize_c_language): Add the new minimal language to the list + of languages known to GDB. + +2003-05-08 Kevin Buettner <kevinb@redhat.com> + + * frame.c (get_frame_type): Don't attempt to lazily initialize + frame's unwinder for legacy frames. + +2003-05-07 Andrew Cagney <cagney@redhat.com> + + * ia64-tdep.c (ia64_remote_translate_xfer_address): Add "gdbarch" + and "regcache" parameters. + * avr-tdep.c (avr_remote_translate_xfer_address): Ditto. + +2003-05-07 Jeff Johnston <jjohnstn@redhat.com> + + * dwarf2read.c (dwarf_decode_lines): Only use output of + check_cu_functions() when calling record_line(). Do not update + the current address. + +2003-05-07 Andrew Cagney <cagney@redhat.com> + + * fork-child.c (startup_inferior): Delete #ifdef STARTUP_INFERIOR + code. + +2003-05-07 Jim Blandy <jimb@redhat.com> + + Rename commands 'maint list symtabs' and 'maint list psymtabs' to + 'maint info symtabs' and 'maint info psymtabs'. + * symmisc.c (maintenance_info_symtabs, maintenance_info_psymtabs): + Renamed from maintenance_list_symtabs and maintenance_list_psymtabs. + * symtab.h (maintenance_info_symtabs, maintenance_info_psymtabs): + Declarations updated. + * maint.c (maintenance_list_command): Delete. + (_initialize_maint_cmds): Update calls to add_cmd. + * gdbcmd.h (maintenancelistlist): Delete declaration. + * cli/cli-cmds.c (maintenancelistlist): Delete. + (init_cmd_lists): Don't initialize it. + * cli/cli-cmds.h (maintenancelistlist): Delete declaration. + +2003-05-07 Andrew Cagney <cagney@redhat.com> + + * d10v-tdep.c (remote_d10v_translate_xfer_address): Add + "regcache". + (d10v_print_registers_info): Update. + (d10v_dmap_register, d10v_imap_register): Delete functions. + (struct gdbarch_tdep): Add "regcache" parameter to "dmap_register" + and "imap_register". + (d10v_ts2_dmap_register, d10v_ts2_imap_register): Add "regcache". + (d10v_ts3_dmap_register, d10v_ts3_imap_register): Add "regcache". + * arch-utils.c (generic_remote_translate_xfer_address): Add + "regcache" and "gdbarch" parameters. + * gdbarch.sh (REMOTE_TRANSLATE_XFER_ADDRESS): Add "regcache" + parameter. Change class to multi-arch. + * gdbarch.h, gdbarch.c: Re-generate. + * remote.c (remote_xfer_memory): Use + gdbarch_remote_translate_xfer_address. + +2003-05-07 Jeff Johnston <jjohnstn@redhat.com> + + * infrun.c (prev_pc): Move declaration ahead of proceed(). + (proceed): Refresh prev_pc value before resuming. + (stop_stepping): Remove code to refresh prev_pc. + +2003-05-06 Kris Warkentin <kewarken@qnx.com> + + * nto-tdep.c: Removed stray comment. + +2003-05-06 Kris Warkentin <kewarken@qnx.com> + + * i386-nto-tdep.c: Fix old K&R function definitions. + * nto-tdep.c: Likewise and change stat.h include to gdb_stat.h. + Also change add_show_from_set() call to add_setshow_cmd(). + * nto-tdep.h: Remove PARAMS and grep ^func ARI hits. + +2003-05-05 Andrew Cagney <cagney@redhat.com> + + * dummy-frame.c: Include "command.h" and "gdbcmd.h". + (fprint_dummy_frames): New function. + (maintenance_print_dummy_frames): New function. + (_initialize_dummy_frame): Add command "maint print dummy-frames". + * frame.c (fprint_frame_id): Make global. + * frame.h (fprint_frame_id): Declare. + * Makefile.in (dummy-frame.o): Update dependencies. + +2003-05-05 Andrew Cagney <cagney@redhat.com> + + * gdbarch.sh (DEPRECATED_REGISTER_SIZE): Rename REGISTER_SIZE. + (DEPRECATED_SIZEOF_CALL_DUMMY_WORDS): Rename + SIZEOF_CALL_DUMMY_WORDS. + (DEPRECATED_CALL_DUMMY_WORDS): Rename CALL_DUMMY_WORDS. + (DEPRECATED_FIX_CALL_DUMMY): Rename FIX_CALL_DUMMY. + (DEPRECATED_CALL_DUMMY_BREAKPOINT_OFFSET): Rename + CALL_DUMMY_BREAKPOINT_OFFSET. + (DEPRECATED_CALL_DUMMY_START_OFFSET): Rename + CALL_DUMMY_START_OFFSET. + (DEPRECATED_CALL_DUMMY_LENGTH): Rename CALL_DUMMY_LENGTH. + * gdbarch.h, gdbarch.c: Re-generate. + * alpha-tdep.c, alphafbsd-tdep.c, arm-linux-tdep.c: Update. + * arm-tdep.c, avr-tdep.c, breakpoint.c, cris-tdep.c: Update. + * dummy-frame.c, dummy-frame.h, frv-tdep.c, gdbarch.c: Update. + * gdbarch.h, gdbarch.sh, h8300-tdep.c, hppa-tdep.c: Update. + * i386-tdep.c, ia64-tdep.c, infcall.c, inferior.h: Update. + * m68hc11-tdep.c, m68k-tdep.c, mcore-tdep.c: Update. + * mips-tdep.c, mn10300-tdep.c, ns32k-tdep.c: Update. + * rs6000-tdep.c, s390-tdep.c, sh-tdep.c, sol-thread.c: Update. + * sparc-tdep.c, target.c, v850-tdep.c, valops.c: Update. + * vax-tdep.c, x86-64-tdep.c, xstormy16-tdep.c: Update. + * config/ia64/tm-ia64.h, config/m68k/tm-vx68.h: Update. + * config/mips/tm-mips.h, config/pa/nm-hppah.h: Update. + * config/pa/tm-hppa.h, config/pa/tm-hppa64.h: Update. + * config/s390/tm-s390.h, config/sparc/tm-sp64.h: Update. + * config/sparc/tm-sparc.h: Update. + +2003-05-05 Kris Warkentin <kewarken@qnx.com> + + * configure.tgt: Add i[3456]86-*-nto*. + * i386-nto-tdep.c: New file. i386 specific support for QNX Neutrino. + * nto-tdep.c: New file. Neutrino target support routines. + * nto-tdep.h: New file. Neutrino target header. + * config/tm-qnxnto.h: New file. + * config/i386/i386nto.mt: New file. + * config/i386/tm-i386nto.h: New file. + +2003-05-04 Andrew Cagney <cagney@redhat.com> + + * gdbthread.h (save_infrun_state): Drop prev_func_name parameter. + (load_infrun_state): Ditto. + (struct thread_info): Drop "prev_func_name" field. + * thread.c (load_infrun_state): Update. + (save_infrun_state): Update. + * infrun.c (prev_func_name): Delete variable. + (init_wait_for_inferior): Do not clear prev_func_name. + (stop_stepping, keep_going, context_switch): Do not swap + prev_func_name. + (handle_inferior_event, check_sigtramp2): Use pc_in_sigtramp + instead of PC_IN_SIGTRAMP. + +2003-05-04 Andrew Cagney <cagney@redhat.com> + + * sentinel-frame.c (sentinel_frame_prev_register): Replace + REGISTER_BYTE with register_offset_hack. + * regcache.c (init_regcache_descr): When REGISTER_BYTE_P, check + that REGISTER_BYTE is consistent with the regcache. + * gdbarch.sh (REGISTER_BYTE): Add a predicate. + * gdbarch.h, gdbarch.c: Regenerate. + +2003-05-04 Mark Kettenis <kettenis@gnu.org> + + * i387-tdep.c (fxsave_offset): Add entries for %xmm8-%xmm15. + (FXSAVE_ADDR, i387_supply_fxsave): Add support for %xmm8-%xmm15. + + * i386-linux-nat.c (supply_gregset): Remove unnecessary casts. + +2003-05-03 J. Brobecker <brobecker@gnat.com> + + From Thierry Schneider <tpschneider1@yahoo.com> + * Makfile.in (SUBDIR_MI_OBS): Add dependency on mi-cmd-symbol.o. + (SUBDIR_MI_SRCS): Add mi-cmd-symbol.c. + (mi-cmd-symbol.o): Add rule. + +2003-05-03 Andrew Cagney <cagney@redhat.com> + + * gdbarch.sh (PUSH_DUMMY_CODE): New architecture method, add + comments noteing that it replaces the old FIX_CALL_DUMMY code. + * gdbarch.h, gdbarch.c: Re-generate. + * d10v-tdep.c (d10v_push_dummy_code): New function. + (d10v_gdbarch_init): Set push_dummy_code. + * infcall.c (legacy_push_dummy_code): New function. + (generic_push_dummy_code): New function. + (push_dummy_code): New function. + (call_function_by_hand): Call push_dummy_code. Pass bp_addr, + instead of dummy_addr, to push_dummy_call. Move call to + generic_save_call_dummy_addr to outside of CALL_DUMMY_LOCATION + switch. + * sparc-tdep.c (sparc_gdbarch_init): Mention push_dummy_code. + +2003-05-03 Andrew Cagney <cagney@redhat.com> + + * disasm.h (print_insn): Declare. + * disasm.c (init_gdb_disassemble_info): New function. + (gdb_disassembly): Call init_gdb_disassemble_info. + (gdb_print_insn): New function. + * v850-tdep.c (v850_scan_prologue): Call gdb_print_insn, instead + of TARGET_PRINT_INSN. Send debug info to "gdb_stdlog". + * mcore-tdep.c: Include "disasm.h" + (mcore_dump_insn): Call gdb_print_insn, instead of TARGET_PRINT_INSN. + * d10v-tdep.c: Include "disasm.h". + (display_trace): Call gdb_print_insn, instead of print_insn. + (print_insn): Delete function. + * printcmd.c: Include "disasm.h". + (print_insn): Delete function. + (print_formatted): Call gdb_print_insn, instead of print_insn. + * Makefile.in (printcmd.o): Update dependencies. + (mcore-tdep.o, d10v-tdep.o): Ditto. + +2003-05-02 Andrew Cagney <cagney@redhat.com> + + * std-regs.c (value_of_builtin_frame_pc_reg): Delete #ifdef + PC_REGNUM, re-indent. + * stack.c (frame_info): Use "pc" for the name of get_frame_pc when + PC_REGNUM isn't set. + + * gdbarch.sh (REGISTER_SIZE, REGISTER_BYTES): Make optional. + * gdbarch.h, gdbarch.c: Re-generate. + * d10v-tdep.c (d10v_gdbarch_init): Do not set register_size, + register_virtual_size, pc_regnum, or register_bytes. + (D10V_PC_REGNUM): Rename _PC_REGNUM. + (d10v_register_type): Use D10V_PC_REGNUM. + (d10v_print_registers_info, d10v_read_pc): Ditto. + (d10v_write_pc, d10v_eva_prepare_to_trace): Ditto. + (d10v_unwind_pc, d10v_frame_prev_register): Ditto. + +2003-05-02 David Carlton <carlton@bactrian.org> + + * objfiles.c (allocate_objfile): For anonymous objfiles, allocate + the name with mstrsave. + +2003-05-02 Elena Zannoni <ezannoni@redhat.com> + + * charset.c (GDB_DEFAULT_TARGET_CHARSET, + GDB_DEFAULT_HOST_CHARSET): Move to earlier in the file. + (host_charset_name, target_charset_name): New vars for use by + set/show commands. + (host_charset_enum, target_charset_enum): New enums for set/show + commands. + (set_charset_sfunc, set_host_charset_sfunc, + set_target_charset_sfunc): New functions. + (set_host_charset, set_target_charset): Make static. + (list_charsets, set_host_charset_command, + set_target_charset_command): Delete functions. + (show_charset_command): Rewrite as.... + (show_charset): Hook this up with the set/show command mechanism. + (_initialize_charset): Change names of charsets to match the + set/show enums. Use host_charset_name and target_charset_name. + Use set/show mechanism for charset, host-charset, target-charset + commands. Do not make 'show host-charset' and 'show + target-charset' be aliases of 'show charset'. + + * charset.h (set_host_charset, set_target_charset): Don't export, + they are not used outside the file. + +2003-05-01 Andrew Cagney <cagney@redhat.com> + + * disasm.c (gdb_disassemble_from_exec): Delete global variable. + (gdb_disassembly): Make "di" non static, always initialize and + cleanup. Always use dis_asm_read_memory. + (gdb_dis_asm_read_memory): Delete function. + +2003-05-01 Andrew Cagney <cagney@redhat.com> + + * d10v-tdep.c (d10v_frame_align): Replace d10v_stack_align. + (d10v_gdbarch_init): Set frame_align instead of stack_align. + +2003-04-30 Andrew Cagney <cagney@redhat.com> + + * gdbarch.sh (deprecated_tm_print_insn_info): Rename + "tm_print_insn_info". + (TARGET_PRINT_INSN_INFO): Delete macro. + (dis_asm_read_memory): Delete function declaration. + (dis_asm_memory_error, dis_asm_print_address): Ditto. + (tm_print_insn_info): Delete variable definition. + (_initialize_gdbarch): Do not initialize "tm_print_insn_info". + * gdbarch.h, gdbarch.c: Re-generate. + * d10v-tdep.c (display_trace): Replace "tm_print_insn_info" with + "deprecated_tm_print_insn_info". + * mcore-tdep.c (mcore_dump_insn): Ditto. + * mips-tdep.c (mips_gdbarch_init): Ditto. + * sparc-tdep.c (_initialize_sparc_tdep): Ditto. + * v850-tdep.c (v850_scan_prologue, v850_gdbarch_init): Ditto. + * ia64-tdep.c (_initialize_ia64_tdep): Ditto. + * printcmd.c (print_insn): Use "deprecated_tm_print_insn_info" + instead of TARGET_PRINT_INSN_INFO, add comment. + * s390-tdep.c (s390_get_frame_info): Instead of + "dis_asm_read_memory", use "deprecated_tm_print_insn_info". + (s390_check_function_end, s390_is_sigreturn): Ditto. + * corefile.c (dis_asm_read_memory): Move to "disasm.c". + (dis_asm_memory_error, dis_asm_print_address): Ditto. + * disasm.c: Include "gdbcore.h". + (_initialize_disasm): New function, initialize + "deprecated_tm_print_insn_info". + (deprecated_tm_print_insn_info): New variable. + (dis_asm_read_memory): Moved from "corefile.c", made static. + (dis_asm_print_address, dis_asm_memory_error): Ditto. + * Makefile.in (disasm.o): Update dependencies. + +2003-04-30 Andrew Cagney <cagney@redhat.com> + + * sparc-tdep.c (SPARC_HAS_FPU): When multi-arch, define as 1. + +2003-04-29 Adam Fedor <fedor@gnu.org> + + * eval.c (evaluate_subexp_standard): Handle ObjC ops. + * infcall.c (find_function_addr): Make non-static. + * infcall.h (find_function_addr): Declare. + * Makefile.in (eval.o): Update dependencies. + +2003-04-28 Adam Fedor <fedor@gnu.org> + + * symtab.c (symbol_find_demangled_name): Check for and demangle + ObjC symbols. + (symbol_init_demangled_name): Init for language_objc as well. + +2003-04-28 Andrew Cagney <cagney@redhat.com> + + * gdbarch.sh (DEPRECATED_TARGET_READ_FP): Replace TARGET_READ_FP. + (DEPRECATED_FP_REGNUM): Replace FP_REGNUM. + * gdbarch.h, gdbarch.c: Re-generate. + * infcall.c (call_function_by_hand): Use DEPRECATED_FP_REGNUM, + DEPRECATED_TARGET_READ_FP, or "sp" to create the dummy frame ID. + * inferior.h (deprecated_read_fp): Rename read_fp. + (generic_target_read_fp): Delete declaration. + * regcache.c (generic_target_read_fp): Delete function. + (deprecated_read_fp): Replace read_fp, use + DEPRECATED_TARGET_READ_FP or DEPRECATED_FP_REGNUM. + * d10v-tdep.c (d10v_read_fp): Delete function. + (d10v_gdbarch_init): Do not set deprecated_read_fp. + + * sparc-tdep.c (sparc_gdbarch_init): Do not set + deprecated_target_read_fp to generic_target_read_fp. + * sh-tdep.c (sh_gdbarch_init): Ditto. + * rs6000-tdep.c (rs6000_gdbarch_init): Ditto. + * m68hc11-tdep.c (m68hc11_gdbarch_init): Ditto. + * frv-tdep.c (frv_gdbarch_init): Ditto. + + * xstormy16-tdep.c (xstormy16_gdbarch_init): Set + deprecated_fp_regnum. + * x86-64-tdep.c (x86_64_init_abi): Ditto. + * vax-tdep.c (vax_gdbarch_init): Ditto. + * v850-tdep.c (v850_gdbarch_init): Ditto. + * sparc-tdep.c (sparc_gdbarch_init): Ditto. + * sh-tdep.c (sh_gdbarch_init): Ditto. + * s390-tdep.c (s390_gdbarch_init): Ditto. + * rs6000-tdep.c (rs6000_gdbarch_init): Ditto. + * mn10300-tdep.c (mn10300_gdbarch_init): Ditto. + * mcore-tdep.c (mcore_gdbarch_init): Ditto. + * m68k-tdep.c (m68k_gdbarch_init): Ditto. + * m68hc11-tdep.c (m68hc11_gdbarch_init): Ditto. + * ia64-tdep.c (ia64_gdbarch_init): Ditto. + * i386-tdep.c (i386_gdbarch_init): Ditto. + * hppa-tdep.c (hppa_gdbarch_init): Ditto. + * h8300-tdep.c (h8300_gdbarch_init): Ditto. + * frv-tdep.c (frv_gdbarch_init): Ditto. + * cris-tdep.c (cris_gdbarch_init): Ditto. + * avr-tdep.c (avr_gdbarch_init): Ditto. + * arm-tdep.c (arm_gdbarch_init): Ditto. + * alpha-tdep.c (alpha_gdbarch_init): Ditto. + + * x86-64-tdep.c (x86_64_init_abi): Set deprecated_target_read_fp. + * v850-tdep.c (v850_gdbarch_init): Ditto. + * sparc-tdep.c (sparc_gdbarch_init): Ditto. + * sh-tdep.c (sh_gdbarch_init): Ditto. + * s390-tdep.c (s390_gdbarch_init): Ditto. + * rs6000-tdep.c (rs6000_gdbarch_init): Ditto. + * mn10300-tdep.c (mn10300_gdbarch_init): Ditto. + * mips-tdep.c (mips_gdbarch_init): Ditto. + * m68hc11-tdep.c (m68hc11_gdbarch_init): Ditto. + * ia64-tdep.c (ia64_gdbarch_init): Ditto. + * hppa-tdep.c (hppa_gdbarch_init): Ditto. + * frv-tdep.c (frv_gdbarch_init): Ditto. + * avr-tdep.c (avr_gdbarch_init): Ditto. + * arm-tdep.c (arm_gdbarch_init): Ditto. + + * vax-tdep.c (vax_frame_init_saved_regs): Replace FP_REGNUM with + DEPRECATED_FP_REGNUM. + (vax_push_dummy_frame, vax_pop_frame): Ditto. + * std-regs.c (value_of_builtin_frame_fp_reg): Ditto. + * sparc-tdep.c (sparc_init_extra_frame_info): Ditto. + (sparc_push_dummy_frame, sparc64_read_fp): Ditto. + (sparc32_register_virtual_type): Ditto. + * sh-tdep.c (sh64_frame_chain): Ditto. + (sh64_get_saved_register, sh64_pop_frame): Ditto. + (sh_nofp_frame_init_saved_regs): Ditto. + (sh64_nofp_frame_init_saved_regs): Ditto. + (sh_fp_frame_init_saved_regs): Ditto. + * remote-mips.c (mips_wait, mips_fetch_registers): Ditto. + * remote-e7000.c (fetch_regs_from_dump): Ditto. + * procfs.c (procfs_fetch_registers): Ditto. + (procfs_store_registers): Ditto. + * ns32knbsd-nat.c (fetch_inferior_registers): Ditto. + (store_inferior_registers, fetch_core_registers): Ditto. + (fetch_kcore_registers, clear_regs): Ditto. + * ns32k-tdep.c (ns32k_frame_init_saved_regs): Ditto. + (ns32k_push_dummy_frame, ns32k_pop_frame): Ditto. + * nlm/i386.h (DEPRECATED_FP_REGNUM): Ditto. + * nlm/i386.c (do_status): Ditto. + * mipsv4-nat.c (supply_gregset): Ditto. + * mips-tdep.c: Ditto for comments. + * mips-nat.c (fetch_inferior_registers): Ditto. + (store_inferior_registers, fetch_core_registers): Ditto. + * m68k-tdep.c (m68k_push_dummy_frame): Ditto. + (m68k_pop_frame, m68k_frame_init_saved_regs): Ditto. + * i386-tdep.c (i386_frame_init_saved_regs): Ditto. + (i386_do_pop_frame, i386_register_type): Ditto. + * hppa-tdep.c (hppa_frame_chain): Ditto. + (hppa_push_dummy_frame, find_dummy_frame_regs): Ditto. + (hppa_pop_frame, hppa_read_fp): Ditto. + (skip_prologue_hard_way, hppa_frame_find_saved_regs): Ditto. + * cris-tdep.c (cris_examine, cris_pop_frame): Ditto. + * config/vax/nm-vax.h (REGISTER_U_ADDR): Ditto. + * config/sparc/tm-sparc.h (DEPRECATED_FP_REGNUM): Ditto. + * config/sparc/tm-sp64.h (DEPRECATED_FP_REGNUM): Ditto. + * config/s390/tm-s390.h (DEPRECATED_FP_REGNUM): Ditto. + * config/pa/tm-hppa64.h (DEPRECATED_FP_REGNUM): Ditto. + * config/ia64/tm-ia64.h (DEPRECATED_FP_REGNUM): Ditto. + * blockframe.c: Ditto for comments. + * arch-utils.h: Ditto for comments. + * arch-utils.c (legacy_virtual_frame_pointer): Ditto. + * alphanbsd-tdep.c (fetch_core_registers): Ditto. + * alphabsd-nat.c (fetch_inferior_registers): Ditto. + * alpha-tdep.h: Ditto for comments. + * alpha-tdep.c (alpha_cannot_fetch_register): Ditto. + (alpha_cannot_store_register): Ditto. + (alpha_push_dummy_frame): Ditto. + * alpha-nat.c (supply_gregset): Ditto. + + * config/sparc/tm-sp64.h (DEPRECATED_TARGET_READ_FP): Update. + * config/pa/tm-hppa64.h (DEPRECATED_TARGET_READ_FP): Update. + * config/sparc/tm-sparc.h: Update comment. + + * hppa-tdep.c (hppa_init_extra_frame_info): Use + deprecated_read_fp instead of TARGET_READ_FP. + (hppa_init_extra_frame_info, hppa_frame_chain): Ditto. + (hppa_push_dummy_frame, hppa_read_fp): Ditto. + * sparc-tdep.c (sparc_init_extra_frame_info): Use + deprecated_read_fp instead of read_fp. + * s390-tdep.c (s390_push_arguments): Ditto. + * ia64-tdep.c (ia64_gdbarch_init): Ditto. + * frame.h: Ditto in comments. + * frame.c (legacy_get_prev_frame): Ditto. + * dummy-frame.c (dummy_frame_this_id): Ditto. + * arm-tdep.c (arm_init_extra_frame_info): Ditto. + +2003-04-28 Andrew Cagney <cagney@redhat.com> + + * gdbarch.sh (deprecated_tm_print_insn): Rename tm_print_insn. + * gdbarch.h, gdbarch.c: Re-generate. + * xstormy16-tdep.c (_initialize_xstormy16_tdep): Update. + * vax-tdep.c (_initialize_vax_tdep): Update. + * v850-tdep.c (_initialize_v850_tdep): Update. + * sparc-tdep.c (_initialize_sparc_tdep): Update. + * s390-tdep.c (_initialize_s390_tdep): Update. + * ns32k-tdep.c (_initialize_ns32k_tdep): Update. + * mn10300-tdep.c (_initialize_mn10300_tdep): Update. + * mips-tdep.c (_initialize_mips_tdep): Update. + * mcore-tdep.c (_initialize_mcore_tdep): Update. + * m68k-tdep.c (_initialize_m68k_tdep): Update. + * ia64-tdep.c (_initialize_ia64_tdep): Update. + * hppa-tdep.c (_initialize_hppa_tdep): Update. + * h8300-tdep.c (_initialize_h8300_tdep): Update. + * frv-tdep.c (_initialize_frv_tdep): Update. + * cris-tdep.c (cris_delayed_get_disassembler): Update. + (_initialize_cris_tdep): Update. + * arch-utils.c (legacy_print_insn): Update. + * alpha-tdep.c (_initialize_alpha_tdep): Update. + +2003-04-26 Adam Fedor <fedor@gnu.org> + + * linespec.c (decode_objc): New function to decode ObjC calls + (decode_line_1): Check for ObjC calls (using decode_objc) + * Makefile (linespec.o): Update dependencies. + +2003-04-26 Daniel Jacobowitz <drow@mvista.com> + + * breakpoint.h (struct breakpoint_ops): New. + (struct breakpoint): Add ops member. + + * breakpoint.c (print_bp_stop_message, print_one_breakpoint) + (mention): Use new breakpoint ops member. + (set_raw_breakpoint): Initialize ops field to NULL. + (print_exception_catchpoint, print_one_exception_catchpoint) + (print_mention_exception_catchpoint, handle_gnu_v3_exceptions): New. + (gnu_v3_exception_catchpoint_ops): New. + (catch_exception_command_1): Call handle_gnu_v3_exceptions. + +2003-04-25 Adam Fedor <fedor@gnu.org> + + * Makefile.in (COMMON_OBS): Add objc-lang.o + +2003-04-25 Andrew Cagney <cagney@redhat.com> + + * d10v-tdep.c (print_insn): Delete function. + (display_trace): Use TARGET_PRINT_INSN. + (_initialize_d10v_tdep): Do not set tm_print_insn. + (d10v_gdbarch_init): Set print_insn. + +2003-04-25 Andrew Cagney <cagney@redhat.com> + + * d10v-tdep.c (d10v_extract_return_value): Delete call to printf. + (_initialize_d10v_tdep): Use add_setshow_boolean_cmd. + (d10v_frame_unwind_cache): Use FRAME_OBSTACK_CALLOC. + (NR_DMAP_REGS, A0_REGNUM): Delete, replaced by ... + (nr_dmap_regs, a0_regnum): ... new functions. + (d10v_print_registers_info): Use a0_regnum, use register_size. + (d10v_register_byte): Delete function. + (d10v_register_raw_size): Delete function. + (d10v_register_type): Use a0_regnum. + (d10v_print_registers_info): Use a0_regnum. + (D10V_SP_REGNUM): Rename _SP_REGNUM, replace it and SP_REGNUM. + (d10v_gdbarch_init): Do not set register_byte or + register_raw_size, use D10V_SP_REGNUM to set sp_regnum. + (d10v_pointer_to_address): Use extract_unsigned_integer instead of + extract_address. + (trace_command): Use XCALLOC. + (print_insn): Delete reference to tm_print_insn. + (saved_regs_unwinder): Use store_unsigned_integer instead of + store_address. + * frame.h (FRAME_OBSTACK_CALLOC): Define + +2003-04-25 David Carlton <carlton@bactrian.org> + + * config/djgpp/fnchange.lst: Add testsuite/gdb.c++/maint.exp. + +2003-04-24 Adam Fedor <fedor@gnu.org> + + * objc-lang.c: Include "valprint.h" + * Makefile.in (objc-lang.o): Update dependencies. + +2003-04-24 Adam Fedor <fedor@gnu.org> + + * objc-lang.c (FETCH_ARGUMENT, CONVERT_FUNCPTR): Remove + architecture dependant compilation and mark as unimplemented + (until they get put in the gdbarch vector). + +2003-04-23 David Carlton <carlton@bactrian.org> + + * cp-support.c (cp_find_first_component): Accept 'operator' in + more locations. + +2003-04-23 Andrew Cagney <cagney@redhat.com> + + * infcall.c (call_function_by_hand): Eliminate redundant + indentation. Move "saved_async" and "old_cleanups" to where they + are needed. + +2003-04-23 Andrew Cagney <cagney@redhat.com> + + * infcall.c (call_function_by_hand): Eliminate the variables "rc" + and "buffer". Move the "name" code to where it is needed. + +2003-04-23 Andrew Cagney <cagney@redhat.com> + + * infcall.c (call_function_by_hand): Move variables "start_sp", + "dummy", "sizeof_dummy1" and "dummy1" and corresponding dummy call + code to ON_STACK switch branch. + +2003-04-23 Andrew Cagney <cagney@redhat.com> + + * infcall.c (call_function_by_hand): Make declaration of "i", + "sal", "bpt" and "old_sp" more local to their use. Delete #if + lint. + +2003-04-23 Andrew Cagney <cagney@redhat.com> + + * infcall.c (call_function_by_hand): Delete variable + "n_method_args". Localize "param_type"'s declaration to the loop + that it is used. Reinstate code assigning to said variable - + deleted on 2002-06-14. Rationalize calls to value_args_coerce. + Rationalize code using "param_type". + +2003-04-22 Andrew Cagney <cagney@redhat.com> + + * infcall.c (call_function_by_hand): Use new variable "bp_addr" to + compute the breakpoint address. Only call FIX_CALL_DUMMY when + ON_STACK. Eliminate the variable "addr". Do not pass "real_pc" + to DEPRECATED_PUSH_RETURN_ADDRESS. + +2003-04-22 Kevin Buettner <kevinb@redhat.com> + + * dwarf2loc.c (dwarf2_evaluate_loc_desc): Invoke DWARF2_REG_TO_REGNUM + on the DWARF2 register number prior to fetching a register. + +2003-04-22 J. Brobecker <brobecker@gnat.com> + + * config/pa/tm-hppa.h (SOFT_FLOAT): Delete this macro. + Update all the tests using SOFT_FLOAT considering the fact that + this macro was always set to 0. + * config/pa/tm-hppa64.h: Update all the tests using SOFT_FLOAT + considering the fact that this macro was always set to 0. + * hppa-tdep.h (hppa_store_return_value): Likewise. + (hppa_extract_return_value): Likewise. + +2003-04-22 J. Brobecker <brobecker@gnat.com> + + * config/pa/tm-hppa.h: Remove obsolete code, was used by + the hppa-pro target only. + +2003-04-21 J. Brobecker <brobecker@gnat.com> + + Ongoing multi-arch conversion effort for HP/UX: + * config/pa/tm-hppa.h: Move all macro that are no longer + defined now that GDB_MULTI_ARCH is now set to 1 from here... + * config/pa/tm-hppa64.h: ... to here (hppa64 is not multiarch'ed yet). + +2003-04-21 J. Brobecker <brobecker@gnat.com> + + * config/pa/tm-hppa.h: Obsolete a section that was only used + for hppa-pro. + +2003-04-21 J. Brobecker <brobecker@gnat.com> + + Ongoing multi-arch conversion for HP/UX. + * config/pa/tm-hppa.h (GDB_MULTI_ARCH): Set to 1. Do not define + if already defined (allows hppa64 to stay non-multiarched for now). + * config/pa/tm-hppa64.h (GDB_MULTI_ARCH): Define. + +2003-04-21 Andrew Cagney <cagney@redhat.com> + + * frame.c (frame_id_eq): Fail when the code_addr's do not match. + +2003-04-21 Andrew Cagney <cagney@redhat.com> + + * i386-tdep.c (i386_gdbarch_init): Replace "mmx_num_regs" with + "i386_num_mmx_regs". + +2003-04-21 Andrew Cagney <cagney@redhat.com> + + * infcall.c: New file. + * infcall.h: New file. + * valarith.c: Include "infcall.h". + * scm-lang.c, objc-lang.cm, hppa-tdep.c, gcore.c: Ditto. + * eval.c, ada-valprint.c, ada-lang.c: Ditto. + * Makefile.in (valarith.o, scm-lang.o): Update dependencies. + (objc-lang.o, hppa-tdep.o, gcore.o): Update dependencies. + (eval.o, ada-valprint.o, ada-lang.o): Update dependencies. + (SFILES): Add "infcall.c" + (COMMON_OBS): Add "infcall.o". + (infcall.o): Specify dependencies. + * value.h (call_function_by_hand): Delete declaration. + * inferior.h (run_stack_dummy): Delete declaration. + * infcmd.c (breakpoint_auto_delete_contents): Move to "infcall.c". + (run_stack_dummy): Move to "infcall.c", merged into + call_function_by_hand. + * valops.c (call_function_by_hand): Moved to "infcall.c". + (find_function_addr, value_arg_coerce): Ditto. + (unwindonsignal_p, coerce_float_to_double): Ditto. + (_initialize_valops): Move "set/show coerce-float-to-double", and + "set/show unwindonsignal" commands to "infcall.c". + * v850-tdep.c, target.h: Update comments. + * sparc-tdep.c (sparc_fix_call_dummy): Update comments. + * sh-tdep.c (sh_init_extra_frame_info): Update comments. + (sh64_init_extra_frame_info): Update comments. + * mn10300-tdep.c: Update comments. + * mcore-tdep.c (mcore_init_extra_frame_info): Update comments. + * config/sparc/tm-sparc.h: Update comments. + * breakpoint.h: Update comments. + * avr-tdep.c (avr_init_extra_frame_info): Update comments. + * arm-tdep.c: Update comment. + +2003-04-19 Mark Kettenis <kettenis@gnu.org> + + * i386-tdep.c (i386_num_register_names): New variable. + (i386_num_mmx_regs): Renamed from mmx_num_regs. + (MM0_REGNUM): Remove redundant parentheses in define. + (i386_mmx_regnum_p): Use i386_mmx_regnum instead of mmx_num_regs. + (i386_fp_regnum_p, i386_fpc_regnum_p, i386_sse_regnum_p, + i386_mxcsr_regnum_p): Remove redundant parentheses. + (i386_register_name): Use i386_num_register_names. + + * i386-tdep.c (i386_extract_return_value, + i386_store_return_value): Correct check for availability of + floating-point registers. + + * i386-tdep.c (i386_frame_num_args): Remove function. + (i386_gdbarch_init): Set frame_num_args to frame_num_args_unknown. + + * i386-tdep.c (i386_mmx_regnum_to_fp_regnum): Renamed from + mmx_regnum_to_fp_regnum. Adjust all callers. + + * i386-tdep.c (i386_get_longjmp_target): Use + TYPE_LENGTH(builtin_type_void_func_ptr) instead of TARGET_PTR_BIT + and TARGET_CHAR_BIT. Use extract_typed_address instead of + extract_address. + +2003-04-19 Mark Kettenis <kettenis@gnu.org> + + * core-regset.c: Update comments to reflect reality. Re-order + includes. + (fetch_core_registers): Use switch instead of if. Remove + redundant prototype. + +2003-04-18 Jim Blandy <jimb@redhat.com> + + * s390-tdep.c (s390_frame_align): New function. + (s390_gdbarch_init): Register it with the gdbarch object. + +2003-04-17 Richard Henderson <rth@redhat.com> + + * remote.c (minitelnet): Don't redeclare escape_count, echo_check. + +2003-04-17 Michael Snyder <msnyder@redhat.com> + Karen Bennet <bennet@redhat.com> + + Committed by Elena Zannoni <ezannoni@redhat.com> + * gdb_gcore.sh: New script to create a core dump of a process. + +2003-04-17 Elena Zannoni <ezannoni@redhat.com> + + * values.c (value_being_returned): Don't fetch the return + value if the return type is void. + +2003-04-17 Jeff Johnston <jjohnstn@redhat.com> + + * thread-db.c: Reindented. + +2003-04-17 Jeff Johnston <jjohnstn@redhat.com> + + * gdb_indent.sh: Recognize td_thrhandle_t, td_event_msg_t, + td_thr_events_t, td_notify_t, td_thr_iter_f, and td_thrinfo_t + as types. + + + + + + + + + + + + + + + + + + + + + + + + + +2003-04-16 Kevin Buettner <kevinb@redhat.com> + + * rs6000-tdep.c (rs6000_gdbarch_init): For the SysV ABI, set + the size of ``long double'' to 16, instead of 8. + +2003-04-16 Mark Kettenis <kettenis@gnu.org> + + * i386-linux-nat.c: Add some whitespace to make things more + readable. + (fetch_register, store_register, fetch_inferior_registers, + store_inferior_registers): Get rid of assignment in if-statement. + (store_register): Fix typo in error message. + +2003-04-16 Andrew Cagney <cagney@redhat.com> + + * utils.c (xmmalloc): Always allocate something, matches + libiberty/xmalloc's semantics. + (xmrealloc, xmcalloc): Ditto. + +2003-04-16 Andrew Cagney <cagney@redhat.com> + + * frame.c (get_prev_frame): Do not initialize "unwind" or "type", + update comments. + (get_frame_type): Initialize unwind and type when needed. + (get_frame_id, frame_register_unwind): Ditto. + +2003-04-16 Andrew Cagney <cagney@redhat.com> + + * NEWS: Mention that sparclet-*-* and sparclite-*-* have been made + obsolete. + * sparc-tdep.c: Obsolete SPARCLET and SPARCLITE code. + * sparcl-stub.c: Obsolete file. + * config/sparc/tm-sparclet.h: Obsolete file. + * sparclet-stub.c: Obsolete file. + * sparclet-rom.c: Obsolete file. + * sparcl-tdep.c: Obsolete file. + * config/sparc/tm-sparclite.h: Obsolete file. + * config/sparc/sparclite.mt: Obsolete file. + * config/sparc/sparclet.mt: Obsolete file. + * configure.tgt: Make sparclet-*-*, sparclite-*-*, and + sparc86x-*-* obsolete. + +2003-04-15 David Carlton <carlton@math.stanford.edu> + + * Makefile.in (SFILES): Add cp-namespace.c. + (COMMON_OBS): Add cp-namespace.o. + (block.o): Depend on gdb_obstack_h and cp_support_h. + (buildsym.o): Depend on cp_support_h. + (cp-namespace.o): New. + (cp-support.o): Depend on gdb_string_h, demangle_h, gdb_assert_h, + gdb_obstack_h, symtab_h, symfile_h, and gdbcmd_h. + (dwarf2read.o): Depend on cp_support_h. + * jv-lang.c (get_java_class_symtab): Set BLOCK_NAMESPACE. + * dwarf2read.c (process_die): Set processing_has_namespace_info, + processing_current_namespace. + (read_namespace): Update processing_current_namespace; check for + anonymous namespaces. + (dwarf2_name): New function. + (dwarf2_extension): Ditto. + * cp-support.h: Update copyright, contributors. + Add inclusion guards. + Add opaque declaration for structs obstack, block, symbol. + (struct using_direct): New struct. + Add declarations for cp_find_first_component, + cp_entire_prefix_len, processing_has_namespace_info, + processing_current_namespace, cp_is_anonymous, + cp_add_using_directive, cp_initialize_namespace, + cp_finalize_namespace, cp_set_block_scope, + cp_scan_for_anonymous_namespaces. + * cp-namespace.c: New file. + * cp-support.c: Update copyright. + Include ctype.h, gdb_assert.h, gdbcmd.h. + New variable maint_cplus_cmd_list. + (cp_find_first_component): New function. + (cp_entire_prefix_len, maint_cplus_command) + (first_component_command, _initialize_cp_support): Ditto. + * buildsym.c: Include cp-support.h. + New variable using_list. + (add_symbol_to_list): Check for anonymous namespaces. + (finish_block): Set block's scope. + (start_symtab): Initialize C++ namespace support. + (end_symtab): Finalize C++ namespace support. + * block.h: Add opaque declarations for structs + block_namespace_info, using_direct, and obstack. + Add declarations for block_set_scope and block_set_using. + (struct block): Add 'language_specific' member. + (BLOCK_NAMESPACE): New macro. + * block.c: Include gdb_obstack.h and cp-support.h. + (struct block_namespace_info): New struct. + (block_set_scope): New function. + (block_set_using, block_initialize_namespace): Ditto. + +2003-04-14 Kevin Buettner <kevinb@redhat.com> + + * solib-svr4.c (svr4_have_link_map_offsets): New function. + (locate_base): Return early if there aren't any link map offsets. + (svr4_solib_create_inferior_hook): Warn if shared library support + is unavailable. + +2003-04-14 David Carlton <carlton@math.stanford.edu> + + * symtab.c (symbol_set_names): Add prefix when storing Java names + in hash table. Fix for PR java/1039. + +2003-04-14 David Carlton <carlton@math.stanford.edu> + + * symtab.c (symbol_set_names): Rename 'name' arg to + 'linkage_name', and 'tmpname' variable to 'linkage_name_copy'. + * symtab.h: Change 'name' argument in declaration of + symbol_set_names to 'linkage_name'. + (SYMBOL_SET_NAMES): Change 'name' argument to 'linkage_name'. + +2003-04-14 Andrew Cagney <cagney@redhat.com> + + * mips-tdep.c (mips_read_sp): Do not apply ADDR_BITS_REMOVE, + return the fully sign-extended register value. + (get_frame_pointer): Ditto. + (mips_pop_frame): Initialize "proc_desc" after checking for a + dummy frame. + +2003-04-14 Andrew Cagney <cagney@redhat.com> + + * mips-tdep.c (mips_push_dummy_frame): Delete function. + (MASK, PUSH_FP_REGNUM, GEN_REG_SAVE_MASK): Delete macros. + (FLOAT_REG_SAVE_MASK, FLOAT_SINGLE_REG_SAVE_MASK): Delete macro. + (mips_push_register): Delete function. + (mips_dump_tdep): Delete references to GEN_REG_SAVE_MASK and + PUSH_FP_REGNUM. + +2003-04-14 Jim Blandy <jimb@redhat.com> + + * symmisc.c: #include "gdb_regex.h". + (maintenance_list_symtabs, maintenance_list_psymtabs): New + functions. + * maint.c (maintenance_list_command): New function. + (_initialize_maint_cmds): Register the above as commands. + * symtab.h (maintenance_list_symtabs, + maintenance_list_psymtabs): New declarations. + * cli/cli-cmds.c (maintenancelistlist): New variable. + (init_cmd_lists): Initialize it. + * cli/cli-cmds.h (maintenancelistlist): New declaration. + * gdbcmd.h (maintenancelistlist): New declaration. + * Makefile.in (symmisc.o): Update dependencies. + +2003-04-14 Elena Zannoni <ezannoni@redhat.com> + + * s390-nat.c: Include asm/types.h for addr_t. + +2003-04-14 Corinna Vinschen <vinschen@redhat.com> + + * cp-valprint.c (cp_print_class_method): Call unpack_pointer() with + actually incoming type. + +2003-04-13 Andrew Cagney <cagney@redhat.com> + + * ppc-linux-tdep.c: Use get_frame_base, get_frame_pc, + get_next_frame and get_frame_saved_regs. + +2003-04-13 Andrew Cagney <cagney@redhat.com> + + * reggroups.c (default_register_reggroup_p): Use NUM_REGS instead + of gdbarch_num_regs. + +2003-04-13 Andrew Cagney <cagney@redhat.com> + + * frame.h: Mention what replaced what in "struct frame_info". + * hppa-hpux-tdep.c: Use get_frame_base, get_frame_pc and + deprecated_update_frame_base_hack and + deprecated_update_frame_pc_hack. + * hppa-tdep.c: Ditto. + +2003-04-13 Daniel Jacobowitz <drow@mvista.com> + + * dwarf2expr.h (struct dwarf_expr_context): Remove extra arguments + to read_reg and update its comment. Remove regnum member. + * dwarf2expr.c (execute_stack_op): Remove memaddr and expr_lval. + Don't call read_reg when setting in_reg. Call read_reg to get + the frame base if it's in a register. Return the register number + on the stack instead of in the context. Remove extra arguments + to read_reg. + * dwarf2loc.c (dwarf_expr_read_reg): Remove extra arguments. + (dwarf2_evaluate_loc_desc): Call value_from_register. Expect + the register number on the expression stack. + (needs_frame_read_reg): Remove extra arguments. + +2003-04-13 Daniel Jacobowitz <drow@mvista.com> + + * dwarf2expr.c (dwarf2_read_address): Renamed from read_address; + made non-static. + (execute_stack_op): All callers updated. + * dwarf2expr.h: Add prototype for dwarf2_read_address. + * dwarf2loc.c (find_location_expression): New function. + (dwarf_expr_frame_base): Call it. + (dwarf2_evaluate_loc_desc): Handle 0-length location expressions. + (dwarf2_tracepoint_var_ref): New function, broken out from + locexpr_tracepoint_var_ref. + (locexpr_tracepoint_var_ref): Call dwarf2_tracepoint_var_ref. + Make static. + (loclist_read_variable, loclist_read_needs_frame): New functions. + (loclist_describe_location, loclist_tracepoint_var_ref): New + functions. + (dwarf2_loclist_funcs): New struct location_funcs. + * dwarf2loc.h (struct dwarf2_loclist_baton): New type. + (struct dwarf2_locexpr_baton): Add comments. + (dwarf2_loclist_funcs): New extern. + * dwarf2read.c (struct comp_unit_head): Remove DIE member, add + base_address and base_known. + (dwarf_loc_buffer): New variable. + (struct dwarf2_pinfo): Add dwarf_loc_buffer and dwarf_loc_size. + (DWARF_LOC_BUFFER, DWARF_LOC_SIZE): New macros. + (dwarf2_has_info): Initialize dwarf_loc_offset. + (dwarf2_build_psymtabs): Read in .debug_loc. + (dwarf2_build_psymtabs_hard): Use DWARF_LOC_BUFFER and + DWARF_LOC_SIZE. + (psymtab_to_symtab_1): Likewise. Move base address calculation + here, from... + (dwarf2_get_pc_bounds): ... here. Use the base address from + cu_header. + (dwarf2_symbol_mark_computed): Handle location lists. + +2003-04-13 Daniel Jacobowitz <drow@mvista.com> + + * minsyms.c (install_minimal_symbols): Only switch to gnu-v3 mode + if the linkage name demangled successfully. + +2003-04-13 Mark Kettenis <kettenis@gnu.org> + + * x86-64-tdep.c (att_flavour, intel_flavour, valid_flavours, + disassmbly_flavour): Removed. + + * x86-64-tdep.c (gdb_print_insn_x86_64): Removed. + +2003-04-13 Mark Kettenis <kettenis@gnu.org> + + * x86-64-tdep.c (x86_64_breakpoint_from_pc): Removed. + +2003-04-12 Andrew Cagney <cagney@redhat.com> + + * frame.h (struct frame_info): Move definition from here ... + * frame.c (struct frame_info): ... to here. + +2003-04-12 Andrew Cagney <cagney@redhat.com> + + * gdbthread.h (save_infrun_state): Delete parameter + "prev_func_start". + (struct thread_info): Delete field "prev_func_start". + (load_infrun_state): Ditto. + * thread.c (load_infrun_state, save_infrun_state): Update. + * infrun.c (prev_func_start): Delete variable. + (context_switch, init_wait_for_inferior): Update. + (stop_stepping, keep_going): Update. + +2003-04-12 Andrew Cagney <cagney@redhat.com> + + * gdbarch.sh: Add missing opaque declarations. + * gdbarch.h: Regnerate. + * symtab.h: Add missing opaque declarations. + * value.h, target.h, symfile.h, stabsread.h: Ditto. + * x86-64-tdep.h, xmodem.h, monitor.h, typeprint.h: Ditto. + * srec.h, solib-svr4.h, source.h, inferior.h: Ditto. + * ser-unix.h, serial.h, remote-utils.h, gdbcore.h: Ditto. + * ppc-tdep.h, ocd.h, mips-tdep.h, gdbtypes.h: Ditto. + * buildsym.h, builtin-regs.h, linespec.h, language.h: Ditto. + * i387-tdep.h, gdbthread.h, event-top.h, gdb.h: Ditto. + * dwarf2cfi.h, doublest.h, disasm.h, cp-abi.h: Ditto. + * cli-out.h, c-lang.h, ax-gdb.h, arch-utils.h: Ditto. + * ada-lang.h, config/nm-lynx.h, config/nm-linux.h: Ditto. + * config/sparc/tm-sp64.h, config/rs6000/tm-rs6000.h: Ditto. + * config/pa/tm-hppah.h, config/m68k/tm-delta68.h: Ditto. + * cli/cli-setshow.h, cli/cli-script.h: Ditto. + +2003-04-11 Andrew Cagney <cagney@redhat.com> + + * frame.c (get_frame_id): Return this frame's "id". + (legacy_get_prev_frame): Set prev's frame ID code_addr to the + function start. + (legacy_saved_regs_this_id): Replace function body with + internal-error. + (deprecated_frame_xmalloc): Mark the frame ID as valid, use + FRAME_OBSTACK_ZALLOC. + (create_new_frame): Mark the frame ID as valid. + +2003-04-11 Alexandre Oliva <aoliva@redhat.com> + + * Makefile.in (libbfd_h): Added missing setting. + * mips-tdep.c (mips_gdbarch_init): Set disassembler_options + according to the selected ABI. + +2003-04-11 Jeff Johnston <jjohnstn@redhat.com> + + * gdb_indent.sh: Recognize pid_t and sigset_t as types. + +2003-04-11 Andrew Cagney <cagney@redhat.com> + + * gdbarch.sh (DEPRECATED_SAVED_PC_AFTER_CALL): Deprecate + SAVED_PC_AFTER_CALL. + * gdbarch.h, gdbarch.c: Regenerate. + * xstormy16-tdep.c (xstormy16_gdbarch_init): Update. + * x86-64-tdep.c (x86_64_init_abi): Update. + * vax-tdep.c (vax_gdbarch_init): Update. + * v850-tdep.c (v850_gdbarch_init): Update. + * sparc-tdep.c (sparc_gdbarch_init): Update. + * sh-tdep.c (sh_gdbarch_init): Update. + * s390-tdep.c (s390_gdbarch_init): Update. + * rs6000-tdep.c (rs6000_gdbarch_init): Update. + * ns32k-tdep.c (ns32k_gdbarch_init): Update. + * mn10300-tdep.c (mn10300_gdbarch_init): Update. + * mips-tdep.c (mips_gdbarch_init): Update. + * mcore-tdep.c (mcore_gdbarch_init): Update. + * m68k-tdep.c (m68k_gdbarch_init): Update. + * m68hc11-tdep.c (m68hc11_gdbarch_init): Update. + * ia64-tdep.c (ia64_gdbarch_init): Update. + (ia64_saved_pc_after_call): Update declaration. + * i386ly-tdep.c (i386lynx_init_abi): Update. + * i386-tdep.c (i386_gdbarch_init): Update. + * hppa-tdep.c (hppa_gdbarch_init): Update. + * h8300-tdep.c (h8300_gdbarch_init): Update. + * frv-tdep.c (frv_gdbarch_init): Update. + * cris-tdep.c (cris_gdbarch_init): Update. + * avr-tdep.c (avr_gdbarch_init): Update. + * arm-tdep.c (arm_gdbarch_init): Update. + * alpha-tdep.c (alpha_gdbarch_init): Update. + * ns32knbsd-nat.c (frame_num_args): Update. + * ns32k-tdep.c (umax_frame_num_args): Update. + * mips-tdep.c (mips_init_frame_pc_first): Update. + * infrun.c (step_over_function): Update. + * i386-linux-tdep.c (skip_hurd_resolver): Update. + * i386-interix-tdep.c (i386_interix_back_one_frame): Update. + * config/sparc/tm-sparc.h (DEPRECATED_SAVED_PC_AFTER_CALL): Update. + (DEPRECATED_INIT_FRAME_PC_FIRST): Update. + * config/rs6000/tm-rs6000.h (DEPRECATED_INIT_FRAME_PC_FIRST): Update. + * config/pa/tm-hppa.h (DEPRECATED_SAVED_PC_AFTER_CALL): Update. + * arm-linux-tdep.c (skip_hurd_resolver): Update. + * arch-utils.c (init_frame_pc_default): Update. + * alpha-tdep.c (alpha_init_frame_pc_first): Update. + * x86-64-tdep.h (x86_64_linux_saved_pc_after_call): Update + declaration. + +2003-04-11 Andrew Cagney <cagney@redhat.com> + + * i387-tdep.c: Update copyright. + (i387_to_double): Delete function. + (double_to_i387): Delete function. + +2003-04-10 Andrew Cagney <cagney@redhat.com> + + * d10v-tdep.c (d10v_frame_this_id): Set the code addr to the + frame's function's address. Simplify. + (d10v_frame_unwind_cache): Check that the frame's function is + non-zero. + +2003-04-10 Jim Blandy <jimb@redhat.com> + + * s390-tdep.c (s390_gdbarch_init): Put back accidentally deleted + call to set_gdbarch_deprecated_push_arguments. + +2003-04-10 Andrew Cagney <cagney@redhat.com> + + * frame.c (fprint_frame_id): New function. + (fprint_frame_type, fprint_frame): New function. + (frame_pc_unwind, frame_func_unwind): Add/update trace code. + (create_sentinel_frame, get_frame_id): Ditto. + (frame_id_p, frame_id_eq): Ditto. + (frame_id_inner, create_new_frame): Ditto. + (legacy_get_prev_frame, get_prev_frame): Ditto. + (deprecated_update_frame_pc_hack): Ditto. + (frame_register_unwind): Ditto. + (deprecated_update_frame_base_hack): Ditto. + +2003-04-10 Corinna Vinschen <vinschen@redhat.com> + + * i386-cygwin-tdep.c (i386_cygwin_frame_chain): New function. + (i386_cygwin_init_abi): Set i386_cygwin_frame_chain as new + frame_chain function. + * Makefile.in: Add dependencies due to above change. + +2003-04-10 Corinna Vinschen <vinschen@redhat.com> + + * blockframe.c (legacy_frame_chain_valid): Move call to + DEPRECATED_FRAME_CHAIN_VALID before calls to inside_entry_func and + inside_entry_file. + +2003-04-09 Andrew Cagney <cagney@redhat.com> + + * frame.h (struct frame_id): Replace "pc" and "base" with + "stack_addr" and "code_addr". Update comments. + (frame_id_build): Update parameter names and comment. + (struct frame_info): Replace "id_p" and "id" with "this_id". + * dummy-frame.c (dummy_frame_this_id): Update. + * breakpoint.c (print_one_breakpoint): Update. + * frame.c (get_frame_id): Update. + (get_frame_base, frame_id_build): Update. + (create_sentinel_frame, legacy_get_prev_frame): Update. + (deprecated_update_frame_base_hack): Update. + (frame_id_p, frame_id_eq): Rework, return 0 when an invalid ID. + (frame_id_inner): Ditto. + +2003-04-09 Andrew Cagney <cagney@redhat.com> + + * defs.h (gdb_print_host_address): Make "addr" parameter a + pointer constant. + * utils.c (gdb_print_host_address): Update. + +2003-04-09 Kevin Buettner <kevinb@redhat.com> + + * rs6000-tdep.c (frame_get_saved_regs): Don't assume that the + register number for R0 is 0. + +2003-04-09 J. Brobecker <brobecker@gnat.com> + + * frame.h (struct gdbarch): Add opaque structure definition + to avoid a compilation warning on LynxOS 4.0. + +2003-04-09 Andrew Cagney <cagney@redhat.com> + + * frame.h (struct frame_info): Delete field "pc". Replace + "pc_unwind_cache" and "pc_unwind_cache_p" with "prev_pc" + structure. + * frame.c (frame_pc_unwind): Update. + (create_sentinel_frame): Do not set "pc". + (get_prev_frame): Do not set "pc". Use frame_pc_unwind. + (get_frame_pc): Call frame_pc_unwind. + (deprecated_update_frame_pc_hack): Update. + (create_new_frame): Use "pc" not "->pc". + +2003-04-09 Andrew Cagney <cagney@redhat.com> + + * frame.c (get_frame_id): Eliminate code updating "frame". + (legacy_get_prev_frame): Ditto. + (get_frame_base): Return id.base directly. + (deprecated_update_frame_base_hack): Update "id.base". + * frame.h (struct frame_info): Delete field "frame". + +2003-04-09 Andrew Cagney <cagney@redhat.com> + + * NEWS: Mention that the "Sequent family" is obsolete. + * configure.tgt: Obsolete i[3456]86-sequent-bsd*, + i[3456]86-sequent-sysv4*, and i[3456]86-sequent-sysv*. + * configure.host: Obsolete i[3456]86-sequent-bsd*, + i[3456]86-sequent-sysv4*, and i[3456]86-sequent-sysv*. + * config/i386/tm-ptx4.h: Obsolete file. + * config/i386/tm-ptx.h: Obsolete file. + * symm-tdep.c: Obsolete file. + * config/i386/symmetry.mt: Obsolete file. + * config/i386/tm-symmetry.h: Obsolete file. + * symm-nat.c: Obsolete file. + * config/i386/nm-symmetry.h: Obsolete file. + * config/i386/xm-symmetry.h: Obsolete file. + * config/i386/symmetry.mh: Obsolete file. + * config/i386/nm-ptx4.h: Obsolete file. + * config/i386/ptx4.mh: Obsolete file. + * config/i386/ptx.mt: Obsolete file. + * config/i386/ptx.mh: Obsolete file. + * config/i386/xm-ptx4.h: Obsolete file. + * config/i386/xm-ptx.h: Obsolete file. + +2003-04-09 Andrew Cagney <cagney@redhat.com> + + Obsolete mips*-*-mach3*. + * NEWS: Mention that mips*-*-mach3* is obsolete. + * m3-nat.c: Obsolete file. + * config/nm-m3.h: Obsolete file. + * config/mips/tm-mipsm3.h: Obsolete file. + * config/mips/mipsm3.mt: Obsolete file. + * config/mips/mipsm3.mh: Obsolete file. + * config/mips/xm-mipsm3.h: Obsolete file. + * mipsm3-nat.c: Obsolete file. + * configure.host: Obsolete mips-dec-mach3*. + * configure.tgt: Obsolete mips*-*-mach3*. + +2003-04-09 Andrew Cagney <cagney@redhat.com> + + * doublest.h: Update copyright. + (deprecated_store_floating, deprecated_extract_floating): Rename + store_floating and extract_floating. Update comments. + * doublest.c: Update copyright. + (extract_floating_by_length): Replace extract_floating. + (store_floating_by_length): Replace store_floating. + (deprecated_extract_floating): New function. + (deprecated_store_floating): New function. + (extract_typed_floating): Call extract_floating_by_length. + (store_typed_floating): Call store_floating_by_length. + * x86-64-tdep.c (x86_64_store_return_value): Update. + * sh-tdep.c (sh3e_sh4_extract_return_value): Update. + (sh64_extract_return_value): Update. + (sh_sh4_register_convert_to_virtual): Update. + (sh_sh64_register_convert_to_virtual): Update. + (sh_sh4_register_convert_to_raw): Update. + (sh_sh64_register_convert_to_raw): Update. + * rs6000-tdep.c (rs6000_register_convert_to_virtual): Update. + (rs6000_register_convert_to_raw): Update. + * ia64-tdep.c (ia64_register_convert_to_virtual): Update. + (ia64_register_convert_to_raw): Update. + * config/i386/tm-symmetry.h (REGISTER_CONVERT_TO_RAW): Update. + (REGISTER_CONVERT_TO_VIRTUAL): Update. + * arm-linux-tdep.c (arm_linux_push_arguments): Update. + * alpha-tdep.c (alpha_register_convert_to_virtual): Update. + (alpha_register_convert_to_raw): Update. + +2003-04-08 Andrew Cagney <cagney@redhat.com> + + * gdbarch.sh (SAVED_PC_AFTER_CALL): Add a predicate. + * gdbarch.h, gdbarch.c: Re-generate. + * d10v-tdep.c (d10v_saved_pc_after_call): Delete function. + (d10v_gdbarch_init): Do not set saved_pc_after_call. + * infrun.c (step_over_function): Call SAVED_PC_AFTER_CALL_P + conditionally, use frame_pc_unwind as an alternative. Add + comments. + * arch-utils.c (init_frame_pc_default): Only call + SAVED_PC_AFTER_CALL when available. + +2003-04-08 Elena Zannoni <ezannoni@redhat.com> + + * infrun.c (stop_soon): Rename from stop_soon_quietly. + (struct inferior_status): Rename stop_soon_quietly field to stop_soon. + (clear_proceed_status): Rename stop_soon_quietly to stop_soon. + (start_remote): Ditto. + (handle_inferior_event): Ditto. + (save_inferior_status): Ditto. + (restore_inferior_status): Ditto. + * infcmd.c (attach_command): Ditto. + * fork-child.c (startup_inferior): Ditto. + * inferior.h (stop_soon): Rename from stop_soon_quietly. + * alpha-tdep.c (heuristic_proc_start): Ditto. + * mips-tdep.c (heuristic_proc_start): Ditto. + * solib-svr4.c (svr4_solib_create_inferior_hook): Ditto. + * solib-sunos.c (sunos_solib_create_inferior_hook): Ditto. + * solib-osf.c (osf_solib_create_inferior_hook): Ditto. + * solib-irix.c (irix_solib_create_inferior_hook): Ditto. + * remote-vx.c (vx_create_inferior): Ditto. + +2003-04-08 Elena Zannoni <ezannoni@redhat.com> + + * infrun.c (stop_soon_quietly): Make it an enum, to better + override the default behavior of handle_inferior_event. + (clear_proceed_status): Update uses of stop_soon_quietly to + reflect that it is now an enum. + (start_remote): Ditto. + (handle_inferior_event): Change logic a bit if stop_soon_quietly + is set to handle the new GNU/Linux kernel behavior for + attach/sigstop. Update uses of stop_soon_quietly. + * inferior.h (enum stop_kind): New enum. + * infcmd.c (attach_command): Use STOP_QUIETLY_NO_SIGSTOP. + Reset normal handle_inferior_event behavior, afterwards. + * fork-child.c (startup_inferior): Update. + * alpha-tdep.c (heuristic_proc_start): Update. + * solib-svr4.c (svr4_solib_create_inferior_hook): Update. + * solib-sunos.c (sunos_solib_create_inferior_hook): Update. + * solib-osf.c (osf_solib_create_inferior_hook): Update. + * solib-irix.c (irix_solib_create_inferior_hook): Update. + * remote-vx.c (vx_create_inferior): Update. + * mips-tdep.c (heuristic_proc_start): Update. + +2003-04-07 Elena Zannoni <ezannoni@redhat.com> + + * disasm.c (dump_insns): Move variables inside loop, or they will + be freed more than once, causing wild memory corruptions. + (gdb_disassembly): Look for the substring "-thread", + instead of "-threads" in the target name, to make sure to find + the 'multi-thread' target. Also, make sure we do the right thing + with the "core" target. + +2003-04-07 Kevin Buettner <kevinb@redhat.com> + + * mips-tdep.c (mips_print_fp_register): New function, created from + do_fp_register_row(). Registers are now (also) printed as hex. + Only one register is printed per row. + (mips_print_register, do_fp_register_row): Print floating point + registers with mips_print_fp_register(). + +2003-04-06 Andrew Cagney <cagney@redhat.com> + + * valprint.h (inspect_it): Add extern declaration. + * objc-lang.c (value_nsstring): Avoid assignment inside of "if". + (selectors_info, classes_info): Ditto. + (find_objc_msgcall): Fix indentation. + (objc_printstr): Delete extern declarations. + + * arm-tdep.c (arm_frameless_function_invocation): Fix typo. + +2003-04-06 Andrew Cagney <cagney@redhat.com> + + * frame.h (legacy_frame_chain_valid): Rename frame_chain_valid. + Update comment. + * frame.c (legacy_saved_regs_this_id): Update. + (legacy_get_prev_frame): Update. + * xstormy16-tdep.c: Update comment. + * sparc-tdep.c (sparc_frame_chain): Update comment. + * blockframe.c (legacy_frame_chain_valid): Update. + +2003-04-06 Andrew Cagney <cagney@redhat.com> + + * valprint.c (val_print_type_code_int): Delete #ifdef + PRINT_TYPELESS_INTEGER code. + + * gdbarch.sh (DEPRECATED_USE_GENERIC_DUMMY_FRAMES) + (CALL_DUMMY_LOCATION, DEPRECATED_PC_IN_CALL_DUMMY): Allow partial + multi-arch definition. + * gdbarch.h: Re-generate. + +2003-04-05 Andrew Cagney <cagney@redhat.com> + + Eliminate FRAME_FIND_SAVED_REGS. + * config/pa/tm-hppah.h (hppa_hpux_frame_find_saved_regs_in_sigtramp): + Change FSR parameter to a pointer. + * config/pa/tm-hppa64.h (FRAME_FIND_SAVED_REGS_IN_SIGTRAMP): + Assume FSR parameter is a pointer. + * hppa-hpux-tdep.c (hppa_hpux_frame_find_saved_regs_in_sigtramp): + Make fsr a pointer. + * hppa-tdep.c (hppa_frame_find_saved_regs): New function. + (hppa_frame_saved_pc): Call hppa_frame_init_saved_regs. Make + saved_regs a pointer. + (hppa_frame_saved_pc): Ditto. + (find_dummy_frame_regs): Make frame_saved_regs a pointer + (hppa_pop_frame): Call hppa_frame_init_saved_regs. Make fsr a + pointer. + (restore_pc_queue): Make fsr a pointer. + (hppa_frame_find_saved_regs): Make frame_saved_regs a pointer. + (hppa_frame_chain): Make saved_regs a pointer, call + hppa_frame_init_saved_regs. + * sparc-tdep.c: Include "gdb_assert.h". + (sparc_frame_find_saved_regs): Replace internal_error with + gdb_assert. + * remote-vxsparc.c (vx_read_register): Delete reference to + FRAME_FIND_SAVED_REGS. + * gdbarch.sh: Delete check for FRAME_FIND_SAVED_REGS. + * gdbarch.h: Regenerate. + * frame.h (DEPRECATED_FRAME_INIT_SAVED_REGS): Delete macro. + (deprecated_get_frame_saved_regs): Delete declaration. + (struct frame_saved_regs): Delete definition. + * frame.c (deprecated_get_frame_saved_regs): Delete function. + * config/pa/tm-hppa.h (hppa_frame_init_saved_regs): Declare. + (hppa_frame_find_saved_regs): Delete declaration. + (FRAME_FIND_SAVED_REGS): Delete macro. + (DEPRECATED_FRAME_INIT_SAVED_REGS): Define. + * config/i386/tm-ptx.h (FRAME_FIND_SAVED_REGS): Delete + FRAME_FIND_SAVED_REGS in comment. + +2003-04-05 Andrew Cagney <cagney@redhat.com> + + * frame.c (frame_func_unwind, get_frame_func): New functions. + * frame.h (get_frame_func, frame_func_unwind): Declare. + (struct frame_info): Add field "prev_func" for caching the + previous frame's function address. + * arm-tdep.c (arm_frameless_function_invocation): Combine + get_pc_function_start and get_frame_pc into get_frame_func. + * sh-tdep.c (sh_nofp_frame_init_saved_regs): Ditto. + (sh64_nofp_frame_init_saved_regs): Ditto. + * s390-tdep.c (s390_function_start): Ditto. + * rs6000-tdep.c (rs6000_pop_frame): Ditto. + (rs6000_frameless_function_invocation): Ditto. + (rs6000_frame_saved_pc): Ditto. + * m68k-tdep.c (m68k_frame_init_saved_regs): Ditto. + * ia64-tdep.c (ia64_frame_init_saved_regs): Ditto. + * i386-tdep.c (i386_frameless_signal_p): Ditto. + (i386_frame_init_saved_regs): Ditto. + * hppa-tdep.c (hppa_frame_find_saved_regs): Ditto. + * d10v-tdep.c (d10v_frame_unwind_cache): Combine + get_pc_function_start and frame_pc_unwind into frame_func_unwind. + * cris-tdep.c (cris_frame_init_saved_regs): Ditto. + * blockframe.c (frameless_look_for_prologue): Ditto. + +2003-04-05 Andrew Cagney <cagney@redhat.com> + + * frame.c (legacy_get_prev_frame): Link prev to next at the + function start. Update comments. + +2003-04-05 Andrew Cagney <cagney@redhat.com> + + * frame.c (get_frame_id): Update comment. + (legacy_get_prev_frame): Update comment. + * gdbarch.sh: Delete check for EXTRA_FRAME_INFO. + * gdbarch.h: Regenerate. + * config/sparc/tm-sparc.h (EXTRA_FRAME_INFO): Delete. + * frame.h: Delete #ifdef EXTRA_FRAME_INFO code. + +2003-04-05 Andrew Cagney <cagney@redhat.com> + + * stack.c (print_frame_info): Use get_frame_pc. + +2003-04-04 Andrew Cagney <cagney@redhat.com> + + * frame.c (get_prev_frame): Do not call frame_type_from_pc. Set + the frame's type from the unwinder. + (get_frame_type): Map UNKNOWN_FRAME onto NORMAL_FRAME. + (create_new_frame, legacy_get_prev_frame): When the unwinder's + type isn't UNKNOWN_FRAME, initalize "type" from the unwinder. + (get_frame_base_address): Use get_frame_type. + (get_frame_locals_address, get_frame_args_address): Ditto. + (legacy_saved_regs_unwinder): Set the type to UNKNOWN_TYPE. + * frame.h (enum frame_type): Add UNKNOWN_FRAME. + (struct frame_info): Add comment explaining why the frame contains + a "type" field. + * dummy-frame.c (dummy_frame_unwind): Set the type to DUMMY_FRAME. + * d10v-tdep.c (d10v_frame_unwind): Set the type to NORMAL_FRAME. + * sentinel-frame.c (sentinel_frame_unwinder): Set the type to + NORMAL_FRAME. + * frame-unwind.h: Include "frame.h". + (struct frame_unwind): Add "type" field. + * Makefile.in (frame_unwind_h): Add $(frame_h). + +2003-04-04 Andrew Cagney <cagney@redhat.com> + + * x86-64-tdep.c (x86_64_unwind_dummy_id): Use frame_id_build. + * dummy-frame.c (dummy_frame_this_id): Use frame_id_build. + * d10v-tdep.c (d10v_frame_this_id): Use get_frame_pc and + get_frame_base. + (d10v_unwind_dummy_id): Use frame_id_build. + * frame.c (find_frame_sal): Use get_frame_pc. + (create_new_frame): Use deprecated_update_frame_pc_hack and + deprecated_update_frame_base_hack. + (create_sentinel_frame): Add comment about ->pc going away. + (get_prev_frame): Add comment about ->pc going away. + (legacy_get_prev_frame): Use get_frame_base, get_frame_pc, + frame_id_build, deprecated_update_frame_pc_hack and + deprecated_update_frame_base_hack. + (select_frame): Use get_frame_pc. + (legacy_saved_regs_this_id): Use frame_id_build. + +2003-04-04 Elena Zannoni <ezannoni@redhat.com> + + * x86-64-tdep.c (x86_64_push_arguments): Handle correctly the + signed integer case. + (classify_argument): Handle enumerations and references. + +2003-04-04 Andrew Cagney <cagney@redhat.com> + + * frame.c (create_sentinel_frame): Initialize the sentinel frame's + ID to NULL. + +2003-04-01 Adam Fedor <fedor@gnu.org> + + * gdb/objc-lang.c (selectors_info): Replace calls to + SYMBOL_DEMANGLED_NAME and DEPRECATED_SYMBOL_NAME with + SYMBOL_NATURAL_NAME. + (classes_info, find_methods): Likewise. + +2003-04-03 Kevin Buettner <kevinb@redhat.com> + + * rs6000-tdep.c (rs6000_gdbarch_init): For xcoff executables, set + ``mach'' to the value determined by bfd_default_set_arch_mach(). + +2003-04-02 Bob Rossi <bob_rossi@cox.net> + + * Makefile.in (SUBDIR_MI_OBS): Add "mi-cmd-file.o". + (SUBDIR_MI_SRCS): Add "mi-cmd-file.c". + (mi-cmd-file.o): Update dependencies. + +2003-04-01 Kevin Buettner <kevinb@redhat.com> + + * mips-tdep.c (mips_dwarf_dwarf2_ecoff_reg_to_regnum) + (mips_stab_reg_to_regnum): Add mappings for HI_REGNUM and LO_REGNUM. + +2003-04-01 Adam Fedor <fedor@gnu.org> + + * Makefile.in (c_lang.o, jv_lang.o, language.o): Add $(demangle_h). + * language.h (struct language_defn): Add la_demangle. + (language_demangle): Declare. + * language.c (language_demangle): New function. + (unk_lang_demangle): Likewise. + (unknown_language_defn, auto_language_defn, local_language_defn): + Add ukn_lang_demangle. + * ada-lang.c (ada_language_defn): Add NULL for la_demangle element. + * f-lang.c, m2-lang.c, p-lang.c, scm-lang.c: Likewise. + * c-lang.c (c_language_defn, asm_language_defn): Likewise. + (cplus_language_defn): Add cplus_demangle for la_demangle element. + * jv-lang.c (java_demangle): New function + (java_language_defn): Use it for la_demangle element. + * objc-lang.c (objc_demangle): Add options argument + (objc_language_defn): Use objc_demangle for la_demangle element. + * maint.c (maintenance_demangle): Replace switch with + call to language_demangle. + * utils.c (fprintf_symbol_filtered): Likewise. + +2003-04-01 Andrew Cagney <cagney@redhat.com> + + * printcmd.c (print_frame_nameless_args): Delete #ifdef + NAMELESS_ARG_VALUE, PRINT_NAMELESS_INTEGER and + PRINT_TYPELESS_INTEGER. + * config/sparc/tm-sp64.h (DEPRECATED_PUSH_RETURN_ADDRESS): Rename + PUSH_RETURN_ADDRESS. + +2003-04-01 Andrew Cagney <cagney@redhat.com> + + * Makefile.in (d10v-tdep.o): Update dependencies. + * d10v-tdep.c: Include "frame-base.h". + (d10v_frame_unwind): Make constant. + (d10v_frame_base_address): New function. + (d10v_frame_base): New variable. + (d10v_gdbarch_init): Set frame_base default. + (struct d10v_unwind_cache): Add the field "prev_sp". Update + comment for base. + (d10v_frame_unwind_cache): Set and use "prev_sp". + (d10v_frame_this_id): Use the previous frame's inner most stack + address and this frame's func address for the frame ID. Use + frame_id_build. Don't analyze beyond the current instruction. + +2003-04-01 Andrew Cagney <cagney@redhat.com> + + * frame.h (get_frame_locals_address, get_frame_args_address): + Refer to the base address, instead of the address of the first + local or parameter. + +2003-04-01 Andrew Cagney <cagney@redhat.com> + + Add frame debug info addresses: + * frame-base.c: New file. + * frame-base.h: New file. + * frame.h (struct frame_base): Add opaque declaration. + (get_frame_base): Update comment. + (get_frame_base_address): Declare. + (get_frame_locals_address): Declare. + (get_frame_args_address): Declare. + (struct frame_info): Add "base" and "base_cache". Update + comments on the unwinder. + * frame.c: Include "frame-base.h". + (get_frame_locals_address): New function. + (get_frame_base_address): New function. + (get_frame_args_address): New function. + * findvar.c (read_var_value): Use get_frame_locals_address and + get_frame_args_address. + * stack.c (frame_info): Use get_frame_locals_address and + get_frame_args_address. + (FRAME_ARGS_ADDRESS_CORRECT): Delete conditionally defined macro, + moved to "frame-base.c". + * printcmd.c (print_frame_nameless_args): Ditto. + * symtab.h (address_class): Update comments. + * dwarf2loc.c (dwarf_expr_frame_base): Add note about + get_frame_base_address. + * dwarf2expr.c (execute_stack_op): Ditto. + * Makefile.in (frame_base_h): Define. + (frame.o): Update dependencies. + (frame-base.o): Add dependencies. + (SFILES): Add frame-base.c. + (COMMON_OBS): Add frame-base.o. + +2003-04-01 Andrew Cagney <cagney@redhat.com> + + * gdbarch.sh (CALL_DUMMY_START_OFFSET): Default to zero. + CALL_DUMMY_LENGTH): Ditto. + * gdbarch.c: Re-generate. + * inferior.h (CALL_DUMMY_START_OFFSET): Delete macro. + (CALL_DUMMY_LENGTH): Delete macro. + * alpha-tdep.c (alpha_gdbarch_init): Do not set above when zero. + * arm-tdep.c (arm_gdbarch_init): Ditto. + * avr-tdep.c (avr_gdbarch_init): Ditto. + * cris-tdep.c (cris_gdbarch_init): Ditto. + * d10v-tdep.c (d10v_gdbarch_init): Ditto. + * frv-tdep.c (frv_gdbarch_init): Ditto. + * h8300-tdep.c (h8300_gdbarch_init): Ditto. + * hppa-tdep.c (hppa_gdbarch_init): Ditto. + * i386-tdep.c (i386_gdbarch_init): Ditto. + * ia64-tdep.c (ia64_gdbarch_init): Ditto. + * m68hc11-tdep.c (m68hc11_gdbarch_init): Ditto. + * mcore-tdep.c (mcore_gdbarch_init): Ditto. + * mips-tdep.c (mips_gdbarch_init): Ditto. + * mn10300-tdep.c (mn10300_gdbarch_init): Ditto. + * rs6000-tdep.c (rs6000_gdbarch_init): Ditto. + * s390-tdep.c (s390_gdbarch_init): Ditto. + * sh-tdep.c (sh_gdbarch_init): Ditto. + * sparc-tdep.c (sparc_gdbarch_init): Ditto. + * v850-tdep.c (v850_gdbarch_init): Ditto. + * vax-tdep.c (vax_gdbarch_init): Ditto. + * xstormy16-tdep.c (xstormy16_gdbarch_init): Ditto. + +2003-04-01 Corinna Vinschen <vinschen@redhat.com> + + * frame.c (get_prev_frame): Disable call to inside_entry_file(). + +2003-04-01 Andrew Cagney <cagney@redhat.com> + + * gdbarch.sh (CALL_DUMMY_BREAKPOINT_OFFSET): Default to zero. + (CALL_DUMMY_BREAKPOINT_OFFSET_P): Delete. + * gdbarch.h, gdbarch.c: Re-generate. + * config/sparc/tm-sp64.h (CALL_DUMMY_BREAKPOINT_OFFSET_P): Delete. + (CALL_DUMMY_BREAKPOINT_OFFSET_P): Delete. + * config/pa/tm-hppa64.h (CALL_DUMMY_BREAKPOINT_OFFSET_P): Delete. + * inferior.h (CALL_DUMMY_BREAKPOINT_OFFSET_P): Delete. + (CALL_DUMMY_BREAKPOINT_OFFSET): Delete. + * infcmd.c (run_stack_dummy): Simplify assuming + CALL_DUMMY_BREAKPOINT_OFFSET_P. + * infrun.c (handle_inferior_event): Ditto. + * alpha-tdep.c (alpha_gdbarch_init): Do not set + call_dummy_breakpoint_offset or call_dummy_breakpoint_offset_p. + * arm-tdep.c (arm_gdbarch_init): Ditto. + * avr-tdep.c (avr_gdbarch_init): Ditto. + * cris-tdep.c (cris_gdbarch_init): Ditto. + * d10v-tdep.c (d10v_gdbarch_init): Ditto. + * frv-tdep.c (frv_gdbarch_init): Ditto. + * h8300-tdep.c (h8300_gdbarch_init): Ditto. + * i386-tdep.c (i386_gdbarch_init): Ditto. + * ia64-tdep.c (ia64_gdbarch_init): Ditto. + * m68hc11-tdep.c (m68hc11_gdbarch_init): Ditto. + * m68k-tdep.c (m68k_gdbarch_init): Ditto. + * mcore-tdep.c (mcore_gdbarch_init): Ditto. + * mips-tdep.c (mips_gdbarch_init): Ditto. + * mn10300-tdep.c (mn10300_gdbarch_init): Ditto. + * ns32k-tdep.c (ns32k_gdbarch_init): Ditto. + * rs6000-tdep.c (rs6000_gdbarch_init): Ditto. + * s390-tdep.c (s390_gdbarch_init): Ditto. + * sh-tdep.c (sh_gdbarch_init): Ditto. + * sparc-tdep.c (sparc_gdbarch_init): Ditto. + * v850-tdep.c (v850_gdbarch_init): Ditto. + * vax-tdep.c (vax_gdbarch_init): Ditto. + * xstormy16-tdep.c (xstormy16_gdbarch_init): Ditto. + +2003-04-01 Daniel Jacobowitz <drow@mvista.com> + + * symfile.c (symfile_relocate_debug_section): Update call to + bfd_simple_get_relocated_section_contents. + +2003-03-31 Andrew Cagney <cagney@redhat.com> + + * gdbarch.sh (FIX_CALL_DUMMY): Change to function with predicate. + * gdbarch.h, gdbarch.c: Regenerate. + * inferior.h (FIX_CALL_DUMMY): Delete macro. + * valops.c (hand_function_call): Only call FIX_CALL_DUMMY when + available. + * frame.h (generic_fix_call_dummy): Delete declaration. + * dummy-frame.h: Update comment. + * dummy-frame.c (generic_fix_call_dummy): Delete function. + * xstormy16-tdep.c (xstormy16_gdbarch_init): Do not set + fix_call_dummy. + * sh-tdep.c (sh_gdbarch_init): Ditto. + * s390-tdep.c (s390_gdbarch_init): Ditto. + * mn10300-tdep.c (mn10300_gdbarch_init): Ditto. + * mcore-tdep.c (mcore_gdbarch_init): Ditto. + * m68hc11-tdep.c (m68hc11_gdbarch_init): Ditto. + * ia64-tdep.c (ia64_gdbarch_init): Ditto. + * i386-tdep.c (i386_gdbarch_init): Ditto. + * h8300-tdep.c (h8300_gdbarch_init): Ditto. + * frv-tdep.c (frv_gdbarch_init): Ditto. + * d10v-tdep.c (d10v_gdbarch_init): Ditto. + * cris-tdep.c (cris_gdbarch_init): Ditto. + * avr-tdep.c (avr_gdbarch_init): Ditto. + * arm-tdep.c (arm_gdbarch_init): Ditto. + +2003-03-31 J. Brobecker <brobecker@gnat.com> + + * config/pa/tm-hppa64.h (FRAME_ARGS_ADDRESS): Delete macro, not useful. + (INIT_FRAME_AP): Likewise. + (EXTRA_FRAME_INFO): Likewise. + +2003-03-31 Andrew Cagney <cagney@redhat.com> + + * gdbarch.sh: Include "symfile.h". + (CALL_DUMMY_ADDRESS): Default to entry_point_address. + * gdbarch.h, gdbarch.c: Re-generate. + * inferior.h (CALL_DUMMY_ADDRESS): Delete macro. + * xstormy16-tdep.c (xstormy16_gdbarch_init): Do not set + call_dummy_address, the default is at entry_point_address. + * v850-tdep.c (v850_gdbarch_init): Ditto. + * sparc-tdep.c (sparc_gdbarch_init): Ditto. + * sh-tdep.c (sh_gdbarch_init): Ditto. + * s390-tdep.c (s390_gdbarch_init): Ditto. + * rs6000-tdep.c (rs6000_gdbarch_init): Ditto. + * mn10300-tdep.c (mn10300_gdbarch_init): Ditto. + * mcore-tdep.c (mcore_gdbarch_init): Ditto. + * ia64-tdep.c (ia64_gdbarch_init): Ditto. + * i386-tdep.c (i386_gdbarch_init): Ditto. + * h8300-tdep.c (h8300_gdbarch_init): Ditto. + * frv-tdep.c (frv_gdbarch_init): Ditto. + * d10v-tdep.c (d10v_gdbarch_init): Ditto. + * cris-tdep.c (cris_gdbarch_init): Ditto. + * arm-tdep.c (arm_gdbarch_init): Ditto. + +2003-03-31 Andrew Cagney <cagney@redhat.com> + + * gdbarch.sh (CALL_DUMMY_P): Delete. + * gdbarch.h, gdbarch.c: Re-generate. + * inferior.h (CALL_DUMMY_P): Delete macro. + * xstormy16-tdep.c (xstormy16_gdbarch_init): Update. + * vax-tdep.c (vax_gdbarch_init): Update. + * v850-tdep.c (v850_gdbarch_init): Update. + * sparc-tdep.c (sparc_gdbarch_init): Update. + * sh-tdep.c (sh_gdbarch_init): Update. + * s390-tdep.c (s390_gdbarch_init): Update. + * rs6000-tdep.c (rs6000_gdbarch_init): Update. + * ns32k-tdep.c (ns32k_gdbarch_init): Update. + * mn10300-tdep.c (mn10300_gdbarch_init): Update. + * mips-tdep.c (mips_gdbarch_init): Update. + * mcore-tdep.c (mcore_gdbarch_init): Update. + * m68k-tdep.c (m68k_gdbarch_init): Update. + * m68hc11-tdep.c (m68hc11_gdbarch_init): Update. + * ia64-tdep.c (ia64_gdbarch_init): Update. + * i386-tdep.c (i386_gdbarch_init): Update. + * h8300-tdep.c (h8300_gdbarch_init): Update. + * frv-tdep.c (frv_gdbarch_init): Update. + * d10v-tdep.c (d10v_gdbarch_init): Update. + * cris-tdep.c (cris_gdbarch_init): Update. + * breakpoint.c (deprecated_frame_in_dummy): Update. + * avr-tdep.c (avr_gdbarch_init): Update. + * alpha-tdep.c (alpha_gdbarch_init): Update. + * arm-tdep.c (arm_gdbarch_init): Update. + * dummy-frame.c (dummy_frame_this_id): Update comments. + * rs6000-tdep.c (rs6000_extract_struct_value_address): Ditto. + * frame.c (legacy_get_prev_frame): Ditto. + * valops.c (call_function_by_hand): Delete function. + (hand_function_call): Rename to call_function_by_hand + +2003-03-30 Andrew Cagney <cagney@redhat.com> + + 2002-11-10 Klee Dienes <kdienes@apple.com> + * value.h (struct value): Update comment. + +2003-03-30 Andrew Cagney <cagney@redhat.com> + + * d10v-tdep.c: Replace _FP_REGNUM and FP_REGNUM with + D10V_FP_REGNUM. + (d10v_gdbarch_init): Do not set fp_regnum. + + * frame.c (get_frame_base): Force ID initialization. + (get_prev_frame): Move computation of the frame ID from here ... + (get_frame_id): ... to here. + (legacy_get_prev_frame): Mark the frame ID as valid. + * frame.h (struct frame_info): Add field "id_p". + +2003-03-30 Mark Kettenis <kettenis@gnu.org> + + * i386-tdep.c (i386_store_struct_return): Removed. + (i386_gdbarch_init): Don't set deprecated_store_struct_return. + +2003-03-30 Andrew Cagney <cagney@redhat.com> + + * gdbarch.sh (DEPRECATED_DUMMY_WRITE_SP): Replace TARGET_WRITE_SP. + * gdbarch.h, gdbarch.c: Regenerate. + * v850-tdep.c (v850_gdbarch_init): Set deprecated_dummy_write_sp. + * xstormy16-tdep.c (xstormy16_gdbarch_init): Ditto. + * mcore-tdep.c (mcore_gdbarch_init): Ditto. + * m68k-tdep.c (m68k_gdbarch_init): Ditto. + * i386-tdep.c (i386_gdbarch_init): Ditto. + * h8300-tdep.c (h8300_gdbarch_init): Ditto. + * cris-tdep.c (cris_gdbarch_init): Ditto. + * vax-tdep.c (vax_gdbarch_init): Ditto. + * s390-tdep.c (s390_gdbarch_init): Ditto. + * ns32k-tdep.c (ns32k_gdbarch_init): Ditto. + * mn10300-tdep.c (mn10300_gdbarch_init): Ditto. + * alpha-tdep.c (alpha_gdbarch_init): Ditto. + * sparc-tdep.c (sparc_push_dummy_frame, sparc_pop_frame): Update. + * config/sparc/tm-sp64.h (DEPRECATED_DUMMY_WRITE_SP): Update. + * config/pa/tm-hppa.h (DEPRECATED_DUMMY_WRITE_SP): Define. + * sparc-tdep.c (sparc_gdbarch_init): Update. + * sh-tdep.c (sh_gdbarch_init): Update. + * rs6000-tdep.c (rs6000_gdbarch_init): Update. + * mips-tdep.c (mips_gdbarch_init): Update. + * m68hc11-tdep.c (m68hc11_gdbarch_init): Update. + * ia64-tdep.c (ia64_gdbarch_init): Update. + * frv-tdep.c (frv_gdbarch_init): Update. + * avr-tdep.c (avr_gdbarch_init): Update. + * valops.c (hand_function_call): Replace TARGET_WRITE_SP with + DEPRECATED_DUMMY_WRITE_SP. Call when the method is available, + instead of when push_dummy_call is not available. + +2003-03-30 Andrew Cagney <cagney@redhat.com> + + * infttrace.c: Include "gdbthread.h". + (parent_attach_all): Fix function signature. + (call_ptrace): Update call. + * Makefile.in (infttrace.o): Update dependencies. + +2003-03-30 Andrew Cagney <cagney@redhat.com> + + * gdbarch.sh (DEPRECATED_PUSH_RETURN_ADDRESS): Replace + PUSH_RETURN_ADDRESS. + * gdbarch.h, gdbarch.c: Regenerate. + * xstormy16-tdep.c (xstormy16_gdbarch_init): Update. + * x86-64-tdep.c (x86_64_init_abi): Update. + * v850-tdep.c (v850_gdbarch_init): Update. + * sparc-tdep.c (sparc_gdbarch_init): Update. + * sh-tdep.c (sh_gdbarch_init): Update. + * s390-tdep.c (s390_gdbarch_init): Update. + * rs6000-tdep.c (rs6000_gdbarch_init): Update. + * mn10300-tdep.c (mn10300_gdbarch_init): Update. + * mips-tdep.c (mips_gdbarch_init): Update. + * mcore-tdep.c (mcore_gdbarch_init): Update. + * m68hc11-tdep.c (m68hc11_gdbarch_init): Update. + * ia64-tdep.c (ia64_gdbarch_init): Update. + * i386-tdep.c (i386_gdbarch_init): Update. + * h8300-tdep.c (h8300_gdbarch_init): Update. + * frv-tdep.c (frv_gdbarch_init): Update. + * cris-tdep.c (cris_gdbarch_init): Update. + * avr-tdep.c (avr_gdbarch_init): Update. + * arm-tdep.c (arm_gdbarch_init): Update. + * valops.c (hand_function_call): Update. + +2003-03-29 Andrew Cagney <cagney@redhat.com> + + * d10v-tdep.c (d10v_gdbarch_init): Do not set call_dummy_words or + sizeof_call_dummy_words. + * gdbarch.sh (CALL_DUMMY_WORDS, SIZEOF_CALL_DUMMY_WORDS): Always + define. + * gdbarch.h: Regenerate. + +2003-03-29 Andrew Cagney <cagney@redhat.com> + + * infttrace.h: New file. + * hpread.c: Include "gdb_assert.h" and "somsolib.h". + (hpread_get_textlow): Detect an uninitialized dn_bufp. + (hpread_read_doc_function_type): Detect an initialized type1. + (hpread_quick_traverse): Initialize mod_name_string. + * somsolib.h: Add #ifdef SOMSOLIB_H wrapper. + (som_solib_get_solib_by_pc): Declare. + (so_lib_thread_start_addr): Declare. + (no_shared_libraries): Declare. + * somread.c (init_import_symbols): Make static. Add forward + declaration. + * config/pa/nm-hppah.h: Include "infttrace.h" for + parent_attach_all. + (hppa_insert_hw_watchpoint): Declare. + (hppa_can_use_hw_watchpoint, hppa_remove_hw_watchpoint): Declare. + * hppah-nat.c: Include "gdb_string.h". + (parent_attach_all): Delete extern declaration, moved to + "infttrace.h". + (hppa_can_use_hw_watchpoint): Change type of "type" parameter to + int. + (hppa_remove_hw_watchpoint, hppa_insert_hw_watchpoint): Ditto. + * Makefile.in (infttrace_h): Define. + (hpread.o): Update dependencies. + (hppah-nat.o, hppa-hpux-tdep.o, hppa-tdep.o): Ditto. + * hppa-hpux-tdep.c: Include "gdb_string.h". + * hppa-tdep.c (hppa_frame_saved_pc): Initialize "old_pc". + * infrun.c (handle_inferior_event): Always initialize + stepped_after_stopped_by_watchpoint. Add default and remove + fallthrough in switch statement. + * infttrace.c (hppa_can_use_hw_watchpoint): Change type of "type" + parameter to int. + (hppa_remove_hw_watchpoint): Ditto. + +2003-03-29 Andrew Cagney <cagney@redhat.com> + + * ns32k-tdep.c (ns32k_gdbarch_init): Set the call dummy breakpoint + offset. + +2003-03-29 Richard Earnshaw <rearnsha@arm.com> + + * arm-tdep.c (arm_push_arguments): Delete. + (struct stack_item): New type. + (push_stack_item, pop_stack_item, arm_push_dummy_call): New functions. + (arm_store_struct_return): Delte. + (arm_gdbarch_init): Register arm_push_dummy_call. Don't register + arm_push_arguments or arm_store_struct_return. + +2003-03-28 Andrew Cagney <cagney@redhat.com> + + * Makefile.in (d10v-tdep.o): Update dependencies. + * remote.h (target_resume_hook, target_wait_loop_hook): Declare. + * d10v-tdep.c: Include "remote.h". + (target_resume_hook): Delete extern declaration. + (target_wait_loop_hook): Ditto. + (tdisassemble_command): Eliminate assignment in "if" conditional. + (d10v_ts2_register_sim_regno): Eliminate call to + legacy_register_sim_regno. + (d10v_ts3_register_sim_regno): Ditto. + +2003-03-28 Jeff Johnston <jjohnstn@redhat.com> + + * thread.c: Reindented. + * lin-lwp.c: Ditto. + * linux-proc.c: Ditto. + +2003-03-28 Bob Rossi <bob_rossi@cox.net> + + * MAINTAINERS (write after approval): Add myself. + +2003-03-27 Theodore A. Roth <troth@openavr.org> + + * objc-exp.y: Add missing semi-colons. + +2003-03-27 Andrew Cagney <cagney@redhat.com> + + * regcache.c (write_sp): Delete function and references. + * inferior.h (write_sp): Delete declaration. + * valops.c (hand_function_call): Replace write_sp with + TARGET_WRITE_SP. + * sparc-tdep.c (sparc_push_dummy_frame): Ditto. + (sparc_pop_frame): Ditto. + +2003-03-27 Andrew Cagney <cagney@redhat.com> + + * NEWS: Mention removal of support for hppa*-*-bsd* and + hppa*-*-osf* natives, and hppa*-*-pro* target. + * config/pa/xm-hppah.h: Do not include "pa/xm-pa.h". + * config/pa/xm-pa.h: Obsolete file. + * config/pa/xm-hppab.h: Obsolete file. + * config/pa/nm-hppab.h: Obsolete file. + * config/pa/tm-hppab.h: Obsolete file. + * config/pa/tm-hppao.h: Obsolete file. + * config/pa/nm-hppao.h: Obsolete file. + * config/pa/tm-pro.h: Obsolete file. + * config/pa/hppaosf.mt: Obsolete file. + * config/pa/hppaosf.mh: Obsolete file. + * config/pa/hppapro.mt: Obsolete file. + * config/pa/hppabsd.mt: Obsolete file. + * config/pa/hppabsd.mh: Obsolete file. + * configure.host: Disable hppa*-*-bsd* and hppa*-*-osf*. + * configure.tgt: Disable hppa*-*-bsd*, hppa*-*-pro* and + hppa*-*-osf*. + +2003-03-27 Andrew Cagney <cagney@redhat.com> + + * d10v-tdep.c (d10v_gdbarch_init): Set push_dummy_call instead of + push_arguments. Don't set push_return_address or write_sp. + (d10v_push_dummy_call): Replace d10v_push_arguments. + (d10v_push_return_address, d10v_write_sp): Delete function, + handled by push_dummy_call. + +2003-03-26 Andrew Cagney <cagney@redhat.com> + + * gdbarch.sh (DEPRECATED_PUSH_ARGUMENTS): Rename PUSH_ARGUMENTS. + (push_dummy_call): New pure multi-arch replacement with gdbarch, + regcache and dummy_addr parameters. + * gdbarch.h, gdbarch.c: Re-generate. + * valops.c (hand_function_call): Use gdbarch_push_dummy_call when + available; assume it will handle stack alignment and return + address issues. Fall back to DEPRECATED_PUSH_ARGUMENTS and + legacy_push_arguments. + (legacy_push_arguments): Rename default_push_arguments. + * value.h (legacy_push_arguments): Rename default_push_arguments. + * i386-tdep.c (i386_push_arguments): Call legacy_push_arguments. + * config/sparc/tm-sparc.h (DEPRECATED_PUSH_ARGUMENTS): Update. + * config/sparc/tm-sp64.h (DEPRECATED_PUSH_ARGUMENTS): Update. + * config/pa/tm-hppa.h (DEPRECATED_PUSH_ARGUMENTS): Update. + * config/i386/tm-symmetry.h: Update. + * xstormy16-tdep.c (xstormy16_gdbarch_init): Update. + * x86-64-tdep.c (x86_64_init_abi): Update. + * v850-tdep.c (v850_gdbarch_init): Update. + * sparc-tdep.c (sparc_gdbarch_init): Update. + * sh-tdep.c (sh_gdbarch_init): Update. + * s390-tdep.c (s390_gdbarch_init): Update. + * rs6000-tdep.c (rs6000_gdbarch_init): Update. + * mn10300-tdep.c (mn10300_gdbarch_init): Update. + * mips-tdep.c (mips_gdbarch_init): Update. + * mcore-tdep.c (mcore_gdbarch_init): Update. + * m68hc11-tdep.c (m68hc11_gdbarch_init): Update. + * ia64-tdep.c (ia64_gdbarch_init): Update. + * i386-tdep.c (i386_gdbarch_init): Update. + * hppa-tdep.c (hppa_gdbarch_init): Update. + * h8300-tdep.c (h8300_gdbarch_init): Update. + * frv-tdep.c (frv_gdbarch_init): Update. + * d10v-tdep.c (d10v_gdbarch_init): Update. + * cris-tdep.c (cris_gdbarch_init): Update. + * avr-tdep.c (avr_gdbarch_init): Update. + * arm-tdep.c (arm_gdbarch_init): Update. + * arm-linux-tdep.c (arm_linux_init_abi): Update. + * alpha-tdep.c (alpha_gdbarch_init): Update. + +2003-03-26 Daniel Jacobowitz <drow@mvista.com> + + * signals/signals.c (do_target_signal_to_host): Correct realtime + signal range test. + +2003-03-26 Daniel Jacobowitz <drow@mvista.com> + + * breakpoint.c (handle_gnu_4_16_catch_command, get_catch_sals) + (struct sal_chain, map_catch_names): Remove. + (catch_exception_command_1): Don't call + handle_gnu_4_16_catch_command. + +2003-03-26 Daniel Jacobowitz <drow@mvista.com> + + From Mark Dettinger <dettinge@de.ibm.com>: + * dwarf2cfi.c (read_2u): Increment pointer by two. + +2003-03-26 Daniel Jacobowitz <drow@mvista.com> + + * signals/signals.c: Fix typos in last change. + +2003-03-26 Daniel Jacobowitz <drow@mvista.com> + + * signals/signals.c (REALTIME_LO, REALTIME_HI): Define if + not already defined. Use __SIGRTMIN if available. + (target_signal_from_host): Remove SIGRTMIN block. + (do_target_signal_to_host): Remove SIGRTMIN block; check that + the signal is within the realtime range. + +2003-03-25 Adam Fedor <fedor@gnu.org> + + * Makefile.in (infrun.o): Add $(language_h) + * infrun.c (handle_inferior_event): Use skip_language_trampoline + for language specific trampolines. + * language.h (struct language_defn): Add skip_trampoline. + (skip_language_trampoline): Declare. + * language.c (unk_lang_trampoline, skip_language_trampoline): + New functions. + (unknown_language_defn, auto_language_defn, local_language_defn): + Add ukn_lang_trampoline. + * ada-lang.c (ada_language_defn): Add NULL for language + specific skip_trampoline. + * c-lang.c, f-lang.c, jv-lang.c, m2-lang.c, p-lang.c, + scm-lang.c: Likewise. + * objc-lang.c (objc_skip_trampoline): New function. + (objc_language_defn): Add objc_skip_trampoline. + +2003-03-25 Andrew Cagney <cagney@redhat.com> + + * frame.c (get_prev_frame): Delay validating a frame's ID - + non-NULL, didn't go backwards - until an attempt to unwind it to + the previous frame. + +2003-03-25 Andrew Cagney <cagney@redhat.com> + + * gdbarch.sh (DEPRECATED_EXTRA_STACK_ALIGNMENT_NEEDED): Replace + EXTRA_STACK_ALIGNMENT_NEEDED. Default to 0 not 1. + * gdbarch.h, gdbarch.c: Re-generate. + * config/sparc/tm-sparc.h + (DEPRECATED_EXTRA_STACK_ALIGNMENT_NEEDED): Define. + * sparc-tdep.c (sparc_gdbarch_init): Set + deprecated_extra_stack_alignment_needed. + * config/pa/tm-hppa.h (EXTRA_STACK_ALIGNMENT_NEEDED): Delete. + * xstormy16-tdep.c (xstormy16_gdbarch_init): Do not clear + extra_stack_alignment_needed. + * v850-tdep.c (v850_gdbarch_init): Ditto. + * hppa-tdep.c (hppa_gdbarch_init): Ditto. + * h8300-tdep.c (h8300_gdbarch_init): Ditto. + * d10v-tdep.c (d10v_gdbarch_init): Ditto. + * cris-tdep.c (cris_gdbarch_init): Ditto. + * m68k-tdep.c (m68k_gdbarch_init): Ditto. + * m68hc11-tdep.c (m68hc11_gdbarch_init): Ditto. + +2003-03-25 Andrew Cagney <cagney@redhat.com> + + * gdbarch.sh (DEPRECATED_STORE_STRUCT_RETURN): Replace + STORE_STRUCT_RETURN. + * gdbarch.h, gdbarch.c: Regenerate. + * d10v-tdep.c (d10v_store_struct_return): Delete function. + (d10v_push_arguments): Set the struct return register. + (d10v_gdbarch_init): Update. + * xstormy16-tdep.c (xstormy16_gdbarch_init): Update. + * x86-64-tdep.c (x86_64_init_abi): Update. + * vax-tdep.c (vax_gdbarch_init): Update. + * v850-tdep.c (v850_gdbarch_init): Update. + * sparc-tdep.c (sparc_gdbarch_init): Update. + * sh-tdep.c (sh_gdbarch_init): Update. + * s390-tdep.c (s390_gdbarch_init): Update. + * rs6000-tdep.c (rs6000_gdbarch_init): Update. + * ns32k-tdep.c (ns32k_gdbarch_init): Update. + * mn10300-tdep.c (mn10300_gdbarch_init): Update. + * mips-tdep.c (mips_gdbarch_init): Update. + * mcore-tdep.c (mcore_gdbarch_init): Update. + * m68k-tdep.c (m68k_gdbarch_init): Update. + * m68hc11-tdep.c (m68hc11_gdbarch_init): Update. + * ia64-tdep.c (ia64_gdbarch_init): Update. + * i386-tdep.c (i386_gdbarch_init): Update. + * hppa-tdep.c (hppa_gdbarch_init): Update. + * h8300-tdep.c (h8300_gdbarch_init): Update. + * frv-tdep.c (frv_gdbarch_init): Update. + * cris-tdep.c (cris_gdbarch_init): Update. + * avr-tdep.c (avr_gdbarch_init): Update. + * arm-tdep.c (arm_gdbarch_init): Update. + * alpha-tdep.c (alpha_gdbarch_init): Update. + +2003-03-25 Andrew Cagney <cagney@redhat.com> + + * gdbarch.sh (CALL_DUMMY_STACK_ADJUST_P): Delete. + (DEPRECATED_CALL_DUMMY_STACK_ADJUST): Replace + CALL_DUMMY_STACK_ADJUST with a predicate variable. + * gdbarch.h, gdbarch.c: Regenerate. + * xstormy16-tdep.c (xstormy16_gdbarch_init): Do not set + call_dummy_stack_adjust_p. + * vax-tdep.c (vax_gdbarch_init): Ditto. + * v850-tdep.c (v850_gdbarch_init): Ditto. + * sh-tdep.c (sh_gdbarch_init): Ditto. + * s390-tdep.c (s390_gdbarch_init): Ditto. + * rs6000-tdep.c (rs6000_gdbarch_init): Ditto. + * ns32k-tdep.c (ns32k_gdbarch_init): Ditto. + * mn10300-tdep.c (mn10300_gdbarch_init): Ditto. + * mips-tdep.c (mips_gdbarch_init): Ditto. + * mcore-tdep.c (mcore_gdbarch_init): Ditto. + * m68k-tdep.c (m68k_gdbarch_init): Ditto. + * m68hc11-tdep.c (m68hc11_gdbarch_init): Ditto. + * ia64-tdep.c (ia64_gdbarch_init): Ditto. + * i386-tdep.c (i386_gdbarch_init): Ditto. + * h8300-tdep.c (h8300_gdbarch_init): Ditto. + * frv-tdep.c (frv_gdbarch_init): Ditto. + * d10v-tdep.c (d10v_gdbarch_init): Ditto. + * cris-tdep.c (cris_gdbarch_init): Ditto. + * avr-tdep.c (avr_gdbarch_init): Ditto. + * arm-tdep.c (arm_gdbarch_init): Ditto. + * alpha-tdep.c (alpha_gdbarch_init): Ditto. + * config/sparc/tm-sp64.h (CALL_DUMMY_STACK_ADJUST): Update. + * config/sparc/tm-sparc.h (CALL_DUMMY_STACK_ADJUST): Update. + * config/sparc/tm-sp64.h (CALL_DUMMY_STACK_ADJUST): Update. + * sparc-tdep.c (sparc_gdbarch_init): Update. Do not set + call_dummy_stack_adjust_p. + * inferior.h (CALL_DUMMY_STACK_ADJUST_P): Delete macro. + (CALL_DUMMY_STACK_ADJUST): Delete macro. + * sparc-tdep.c (sparc32_push_arguments): Update. + * valops.c (hand_function_call): Update. + +2003-03-25 Corinna Vinschen <vinschen@redhat.com> + + * xstormy16-tdep.c (xstormy16_gdbarch_init): Add call to + set_gdbarch_char_signed. + +2003-03-25 Richard Earnshaw <rearnsha@arm.com> + + PR cli/548 + * arm-tdep.c (_initialize_arm_tdep): Command is "set arm disassembler". + +2003-03-25 Richard Earnshaw <rearnsha@arm.com> + + * arm-tdep.c (arm_gdbarch_init): Register the disassembler function. + (_initialize_arm_tdep): Don't set tm_print_insn. + +2003-03-24 Adam Fedor <fedor@gnu.org> + + * Makefile.in (YYOBJ): Add objc-exp.tab.o + * objc-lang.h: Add multiple inclusion protection. + (start_msglist, add_msglist, end_msglist): Additional declarations. + +2003-03-24 Richard Earnshaw <rearnsha@arm.com> + + * armnbsd-tdep.c (arm_netbsd_aout_init_abi): ARM_FLOAT_SOFT enum + value was renamed to ARM_FLOAT_SOFT_FPA. + +2003-03-23 Andrew Cagney <cagney@redhat.com> + + * gdbarch.sh (DEPRECATED_FRAME_CHAIN): Replace FRAME_CHAIN. + (DEPRECATED_FRAME_CHAIN_VALID): Replace FRAME_CHAIN_VALID. + * gdbarch.h, gdbarch.c: Regenerate. + * valops.c (hand_function_call): Update. + * objfiles.h (DEPRECATED_FRAME_CHAIN_VALID): Update. + * frame.c (legacy_saved_regs_this_id): Update. + (legacy_get_prev_frame, get_prev_frame, legacy_frame_p): Update. + * dummy-frame.h: Update. + * config/sparc/tm-sparc.h (DEPRECATED_FRAME_CHAIN): Update. + * config/pa/tm-hppa.h (DEPRECATED_FRAME_CHAIN_VALID): Update. + * config/m68k/tm-vx68.h (DEPRECATED_FRAME_CHAIN): Update. + * config/m68k/tm-os68k.h (DEPRECATED_FRAME_CHAIN): Update. + * config/m68k/tm-sun3.h: Update. + * blockframe.c (inside_main_func, frame_chain_valid): Update. + * xstormy16-tdep.c (xstormy16_gdbarch_init): Update. + * x86-64-tdep.c (x86_64_init_abi): Update. + * vax-tdep.c (vax_gdbarch_init): Update. + * v850-tdep.c (v850_gdbarch_init): Update. + * sparc-tdep.c (sparc_frame_chain, sparc_gdbarch_init): Update. + * sh-tdep.c (sh_gdbarch_init): Update. + * s390-tdep.c (s390_gdbarch_init): Update. + * rs6000-tdep.c (rs6000_frame_saved_pc): Update. + (rs6000_gdbarch_init, rs6000_frame_saved_pc): Update. + (frame_get_saved_regs): Update. + * ppc-linux-tdep.c (ppc_linux_init_abi): Update. + * ns32k-tdep.c (ns32k_gdbarch_init): Update. + * mn10300-tdep.c (mn10300_gdbarch_init): Update. + * mips-tdep.c (mips_gdbarch_init): Update. + * mcore-tdep.c (mcore_gdbarch_init): Update. + * m68k-tdep.c (m68k_gdbarch_init): Update. + * m68hc11-tdep.c (m68hc11_gdbarch_init): Update. + * ia64-tdep.c (ia64_gdbarch_init): Update. + * i386-tdep.c (i386_frame_num_args, i386_gdbarch_init): Update. + * i386-interix-tdep.c (i386_interix_init_abi): Update. + (i386_interix_back_one_frame): Update. + * hppa-tdep.c (hppa_gdbarch_init): Update. + (hppa_init_extra_frame_info): Update. + * h8300-tdep.c (h8300_gdbarch_init): Update. + * frv-tdep.c (frv_gdbarch_init): Update. + * cris-tdep.c (cris_gdbarch_init): Update. + * avr-tdep.c (avr_gdbarch_init): Update. + * arm-tdep.c (arm_gdbarch_init): Update. + * alpha-tdep.c (alpha_gdbarch_init): Update. + +2003-03-22 Richard Earnshaw <rearnsha@arm.com> + + * arm-tdep.h (arm_float_model): Add AUTO and LAST values. + (arm_get_fp_model): Declare. + * arm-tdep.c (fp_model_strings): New string array. + (arm_fp_model, current_fp_model): New variables. + (arm_get_fp_model): New function. + (arm_set_fp): New function. + (set_fp_model_sfunc): New function. + (show_fp_model): New function. + (_initialize_arm_tdep): Add new command to set/show the FPU. + (arm_extract_return_value): Use arm_get_fp_model. + (arm_store_return_value): Likewise. + (arm_gdbarch_init): Default fpa model is softfpa. Call arm_set_fp + to initialize the floating-point data types. + * arm-linux-tdep.c (arm_linux_init_abi): The default floating point + model is FPA. + +2003-03-22 Richard Earnshaw <rearnsha@arm.com> + + * arm-tdep.c (show_arm_command): Don't print out help. Instead, show + the current setting of each value. + (_initialize_arm_tdep): Delete variable new_cmd and add new vars + new_set and new_show. Use add_setshow_cmd_full and + add_setshow_boolean_cmd as appropriate. Deprecate "set/show apcs32" + commands and add new version as subcommands of "set/show arm". + +2003-03-22 Richard Earnshaw <rearnsha@arm.com> + + * arm-tdep.c (setarmcmdlist, showarmcmdlist): New command lists. + (set_arm_command, show_arm_command): New functions. + (_initialize_arm_tdep): Add them. + (num_disassembly_options): Renamed from num_flavor_options. + (valid_disassembly_styles): Renamed from valid_flavors. + (disassembly_style): Renamed from disassembly_flavor. + (set_disassembly_style_sfunc): Renamed from + set_disassembly_flavor_sfunc. + (set_disassembly_style): Renamed from set_disassembly_flavor. + (arm_othernames): Updated. + (_initialize_arm_tdep): Deprecate "set/show disassembly-flavor" + command. Add "set/show arm disassembly" commands. Deprecate + "othernames" command. + +2003-03-22 Richard Earnshaw <rearnsha@arm.com> + + * Makefile.in (elf_reloc_macros_h, elf_arm_h): Define. + (arm-tdep.o): Depend on elf_arm_h. + +2003-03-22 Richard Earnshaw <rearnsha@arm.com> + + * Makefile.in (coff_internal_h): Define. + (arm-tdep.o): Update dependencies. + +2003-03-22 Richard Earnshaw <rearnsha@arm.com> + + * arm-tdep.c (prologue_cache): Delete. + (check_prologue_cache, save_prologue_cache): Delete. + (arm_scan_prologue): Don't check or update the prologue_cache. + (arm_gdb_arch_init): Don't initialize it. + (_initialize_arm_tdep): Likewise. + +2003-03-21 Stephane Carrez <stcarrez@nerim.fr> + + * MAINTAINERS (tui): Maintainer of tui code. + +2003-03-21 Corinna Vinschen <vinschen@redhat.com> + + * Makefile.in (ALLDEPFILES): Add i386-cygwin-tdep.c. + (i386-cygwin-tdep.o): Add dependencies. + * defs.h (enum gdb_osabi): Add GDB_OSABI_CYGWIN. + * i386-cygwin-tdep.c: New file. + * osabi.c (gdb_osabi_name): Add string for GDB_OSABI_CYGWIN. + * config/i386/cygwin.mt (TDEPFILES): Add i386-cygwin-tdep.o. + +2003-03-20 Andrew Cagney <cagney@redhat.com> + + * infrun.c (DYNAMIC_TRAMPOLINE_NEXTPC): Delete macro. + (handle_inferior_event): Remove code calling + DYNAMIC_TRAMPOLINE_NEXTPC. + + * Makefile.in (init.c): Don't add $(srcdir) prefix when a file + already has a full path. + + * main.c (gdb_main): Return 1. + (captured_main): Call error to report an invalid interpreter. + + * Makefile.in (alpha-osf1-tdep.o): Update dependencies. + * alpha-osf1-tdep.c: Include "gdb_string.h". + +2003-03-19 J. Brobecker <brobecker@gnat.com> + + Continuing work to convert the hppa targets to multiarch partial. + + * hppa-tdep.c (hppa_gdbarch_init): Set the push_dummy_frame gdbarch + method, now that hppa_push_dummy_frame has a conformant prototype. + * config/pa/tm-hppa.h (DEPRECATED_PUSH_DUMMY_FRAME): Wrap macro + inside "#if !GDB_MULTI_ARCH ... #endif" conditional, in preparation + for the switch to multiarch partial. + +2003-03-19 Kevin Buettner <kevinb@redhat.com> + + * mdebugread.c (parse_symbol): For stEnd, we're done counting + when iss is issNull. + +2003-03-18 Kevin Buettner <kevinb@redhat.com> + + * mips-tdep.c (mips_register_name): Fix fencepost error involving + NUM_REGS bounds check. + +2003-03-18 Kevin Buettner <kevinb@redhat.com> + + * Makefile.in (mips-tdep.o): Add dependency on $(gdb_assert_h). + * mips-tdep.c (gdb_assert.h): Include. + (mips_generic_reg_names, mips_processor_reg_names): Make static. + (mips_register_name): Handle integer registers explicitly. Add + bounds checking. + (mips_r3041_reg_names, mips_r3051_reg_names, mips_r3081_reg_names) + (mips_lsi33k_reg_names): Don't list integer registers; they're + handled by mips_register_name() now. + * config/mips/tm-irix3.h (MIPS_REGISTER_NAMES): Likewise. + * config/mips/tm-irix6.h (MIPS_REGISTER_NAMES): Likewise. + * config/mips/tm-mips.h (MIPS_REGISTER_NAMES): Likewise. + * config/mips/tm-tx39.h (MIPS_REGISTER_NAMES): Likewise. + * config/mips/tm-tx39l.h (MIPS_REGISTER_NAMES): Likewise. + +2003-03-18 Andrew Cagney <cagney@redhat.com> + + * printcmd.c (print_scalar_formatted): Change VALADDR parameter to + a void pointer. + * gdbtypes.h (print_scalar_formatted): Update declaration. + * expression.h (enum exp_opcode): Remove non-ISO C trailing comma. + +2003-03-18 J. Brobecker <brobecker@gnat.com> + + * infrun.c (observer.h): Add #include. + (normal_stop): Add call to observer_notify_normal_stop. + * Makefile.in (infrun.o): Add dependency on observer.h. + +2003-03-18 J. Brobecker <brobecker@gnat.com> + + Continuing work to convert the hppa targets to multiarch partial. + * hppa-tdep.c (hppa_push_dummy_frame): Remove unused function + parameter. Reformat comment. + * config/pa/tm-hppa.h (hppa_push_dummy_frame): Update profile. + (DEPRECATED_PUSH_DUMMY_FRAME): Update call to hppa_push_dummy_frame() + to match new profile. + +2003-03-18 J. Brobecker <brobecker@gnat.com> + + * hppa-tdep.c (hppa_push_dummy_frame): Remove hack which does not + appear to be working in any case. + +2003-03-18 J. Brobecker <brobecker@gnat.com> + + * observer.c (observer_test_first_observer): New static variable. + (observer_test_second_observer): Likewise. + (observer_test_third_observer): Likewise. + (observer_test_first_notification_function): New static function. + (observer_test_second_notification_function): Likewise. + (observer_test_third_notification_function): Likewise. + +2003-03-17 J. Brobecker <brobecker@gnat.com> + + * hppa-tdep.c (gdb_assert.h): Add missing #include. + * somsolib.c (gdb_assert.h): Likewise. + * Makefile.in (hppa-tdep.o): Add dependency on gdb_assert.h. + (somsolib.o): Likewise. + +2003-03-17 Andrew Cagney <cagney@redhat.com> + + * disasm.c (gdb_disassembly): Set di.mach using the architecture's + BFD. Simplify setting of di.endian. + +2003-03-17 Andrew Cagney <cagney@redhat.com> + + * rs6000-tdep.c (ppc_floating_point_unit_p): New function. + * ppc-tdep.h (ppc_floating_point_unit_p): Declare. + + From Elena Zannoni <ezannoni@redhat.com> + * ppc-sysv-tdep.c (ppc_sysv_abi_push_arguments): Handle e500 + vector and floating-point parameters. + (ppc_sysv_abi_use_struct_convention): Handle e500 struct return + convention. + (ppc_sysv_abi_broken_use_struct_convention): Ditto. + +2003-03-17 Fernando Nasser <fnasser@redhat.com> + + * MAINTAINERS: Remove my name from several maintainership roles. + +2003-03-17 Andrew Cagney <cagney@redhat.com> + + Fix frame off-by-one bug. + * frame-unwind.h (frame_this_id_ftype): Replace + frame_unwind_id_ftype. + (frame_prev_register_ftype): Replace frame_unwind_reg_ftype. + (struct frame_unwind): Replace "id" with "this_id". Replace "reg" + with "prev_register". + * frame-unwind.c (frame_unwind_find_by_pc): Return + legacy_saved_regs_unwind instead of trad_frame_unwind. Update + comment. + * dummy-frame.c (cached_find_dummy_frame): Delete function. + (dummy_frame_this_id): Replace dummy_frame_id_unwind. + (dummy_frame_prev_register): Replace dummy_frame_register_unwind. + (dummy_frame_unwind): Update. + * sentinel-frame.c (sentinel_frame_prev_register): Replace + sentinel_frame_register_unwind. + (sentinel_frame_this_id): Replace sentinel_frame_id_unwind. + (sentinel_frame_unwinder): Update. + * frame.h (legacy_saved_regs_unwind): Replace trad_frame_unwind. + (struct frame_info): Rename "unwind_cache" to "prologue_cache". + * frame.c (create_sentinel_frame): Update. Initialize + "prologue_cache" instead of "unwind_cache". + (frame_register_unwind): Call this frame's prev_register with the + next frame and this frame's prologue cache. + (get_prev_frame): Simplify. Always call prev frame's this_id with + this frame and prev frame's prologue cache. Document that this + call is shifted one to the left when compared to the + frame_register_unwind call. + (legacy_saved_regs_prev_register): Replace + frame_saved_regs_register_unwind. + (legacy_saved_regs_this_id): Replace frame_saved_regs_id_unwind. + (legacy_saved_regs_unwinder): Replace trad_frame_unwinder. + (legacy_saved_regs_unwind): Replace trad_frame_unwind. + * d10v-tdep.c (d10v_frame_this_id): Replace d10v_frame_id_unwind. + (d10v_frame_unwind): Update. + (d10v_frame_prev_register): Replace d10v_frame_register_unwind. + (d10v_frame_unwind_cache): Replace this "fi" with "next_frame". + (saved_regs_unwinder): Replace this "frame" with "next_frame", and + "saved_regs" with "this_saved_regs". + +2003-03-16 Andrew Cagney <cagney@redhat.com> + + * frame.c (frame_pop): Don't call target_store_registers. Fix + problem reported by Mark Kettenis. + +2003-03-16 Mark Kettenis <kettenis@gnu.org> + + * i386-tdep.c (i386_register_type): Renamed from + i386_register_virtual_type. Adjust function signature. + (i386_gdbarch_init): Set register_type instead of + deprecated_max_register_raw_size, + deprecated_max_register_virtual_size and register_virtual_type. + +2003-03-14 Andrew Cagney <cagney@redhat.com> + + * frame.c (get_prev_frame): When a legacy frame, always call + legacy_get_prev_frame. Simplify unwind code using assumption that + the unwinder is new. + (legacy_get_prev_frame): Handle legacy sentinel frame unwind here. + (legacy_frame_p): When no gdbarch_unwind_dummy_id, or + SAVED_DUMMY_FRAME_TOS, assume a legacy frame. + +2003-03-14 Andrew Cagney <cagney@redhat.com> + + * frame.c (get_saved_register): Delete function. + * frame.h (get_saved_register): Delete declaration. + * xstormy16-tdep.c: Update comment. + * regcache.h: Update comments. + * sparc-tdep.c (sparc_init_extra_frame_info): Instead of + get_saved_register and extract_address, use + frame_read_unsigned_register. + (sparc_frame_saved_pc): Ditto. + (sparc_get_saved_register): Instead of get_saved_register, use + frame_register. + (sparc_pop_frame): Ditto. + * findvar.c: Update comments. + (value_of_register): Call frame_register instead of + get_saved_register. + (value_from_register): Ditto. + * config/sparc/tm-sparc.h: Update comment. + * breakpoint.c: Update comment. + +2003-03-14 Andrew Cagney <cagney@redhat.com> + + * gdbarch.sh (DEPRECATED_GET_SAVED_REGISTER): Replace + GET_SAVED_REGISTER. + * gdbarch.h, gdbarch.c: Re-generate. + * frame.h: Update comments. + * xstormy16-tdep.c (xstormy16_gdbarch_init): Update. + * x86-64-tdep.c (x86_64_init_abi): Update. + * sparc-tdep.c (sparc_gdbarch_init): Update. + * sh-tdep.c (sh_gdbarch_init): Update. + * mips-tdep.c (mips_gdbarch_init): Update. + * m68hc11-tdep.c (m68hc11_gdbarch_init): Update. + * cris-tdep.c (cris_gdbarch_init): Update. + * ia64-tdep.c (ia64_gdbarch_init): Update. + * frame.c (frame_register): Update. + (get_saved_register): Update. + * config/sparc/tm-sparc.h (DEPRECATED_GET_SAVED_REGISTER): Update. + +2003-03-13 Andrew Cagney <cagney@redhat.com> + + * gdbarch.sh (DEPRECATED_POP_FRAME): Replace POP_FRAME. + * gdbarch.h, gdbarch.c: Regenerate. + * valops.c (hand_function_call): Update comment. + * stack.c (return_command): Update comment. + * config/sparc/tm-sparc.h (DEPRECATED_POP_FRAME): Update. + * config/pa/tm-hppa.h (DEPRECATED_POP_FRAME): Update. + * xstormy16-tdep.c (xstormy16_gdbarch_init): Update. + * x86-64-tdep.c (x86_64_init_abi): Update. + * vax-tdep.c (vax_gdbarch_init): Update. + * v850-tdep.c (v850_gdbarch_init): Update. + * sparc-tdep.c (sparc_gdbarch_init): Update. + * sh-tdep.c (sh_gdbarch_init): Update. + * s390-tdep.c (s390_gdbarch_init): Update. + * rs6000-tdep.c (rs6000_gdbarch_init): Update. + * ns32k-tdep.c (ns32k_gdbarch_init): Update. + * mn10300-tdep.c (mn10300_gdbarch_init): Update. + * mips-tdep.c (mips_gdbarch_init): Update. + * mcore-tdep.c (mcore_gdbarch_init): Update. + * m68k-tdep.c (m68k_gdbarch_init): Update. + * m68hc11-tdep.c (m68hc11_gdbarch_init): Update. + * ia64-tdep.c (ia64_gdbarch_init): Update. + * i386-tdep.c (i386_gdbarch_init): Update. + * hppa-tdep.c (hppa_gdbarch_init): Update. + * h8300-tdep.c (h8300_gdbarch_init): Update. + * frv-tdep.c (frv_gdbarch_init): Update. + * cris-tdep.c (cris_gdbarch_init): Update. + * avr-tdep.c (avr_gdbarch_init): Update. + * arm-tdep.c (arm_gdbarch_init): Update. + * alpha-tdep.c (alpha_gdbarch_init): Update. + +2003-03-13 Andrew Cagney <cagney@redhat.com> + + * frame.c (legacy_frame_p): New function. + (get_prev_frame): Use legacy_frame_p. + * frame.h (legacy_frame_p): Declare. + +2003-03-13 D. Venkatasubramanian <dvenkat@noida.hcltech.com> + + * MAINTAINERS (write after approval): Alphabetically + listing corrected. + +2003-03-13 D. Venkatasubramanian <dvenkat@noida.hcltech.com> + + * MAINTAINERS (write after approval): Add myself. + +2003-03-12 Andrew Cagney <cagney@redhat.com> + + * frame.c (get_prev_frame): Rename the frame parameter to + "this_frame". + (get_next_frame, legacy_get_prev_frame): Ditto. + +2003-03-12 Andrew Cagney <cagney@redhat.com> + + * frame.c (get_current_frame): Check target_has_registers before + checking target_has_stack. + * eval.c (evaluate_subexp_standard): Use get_selected_frame, + instead of deprecated_selected_frame. + * findvar.c (value_of_register): Pass "frame", not + deprecated_selected_frame, to value_of_builtin_reg. + +2003-03-12 Andrew Cagney <cagney@redhat.com> + + * regcache.c (regcache_cooked_write_signed): New function. + (regcache_cooked_write_unsigned): New function. + (regcache_cooked_read_unsigned): Fix regnum in range assertion. + (regcache_cooked_read_signed): Fix regnum in range assertion. + * regcache.h (regcache_cooked_write_signed): Declare. + (regcache_cooked_write_unsigned): Declare. + +2003-03-12 Andrew Cagney <cagney@redhat.com> + + * gdbarch.sh (DEPRECATED_FRAME_SAVED_PC): Replace FRAME_SAVED_PC. + * gdbarch.h, gdbarch.c: Re-generate. + * xstormy16-tdep.c (xstormy16_gdbarch_init): Update. + * x86-64-tdep.h: Update. + * x86-64-tdep.c (x86_64_init_abi): Update. + * v850-tdep.c (v850_gdbarch_init): Update. + * sparc-tdep.c (sparc_gdbarch_init): Update. + * sh-tdep.c (sh_gdbarch_init): Update. + * s390-tdep.c (s390_gdbarch_init): Update. + * rs6000-tdep.c (rs6000_gdbarch_init): Update. + * ppc-linux-tdep.c (ppc_linux_init_abi): Update. + * ns32k-tdep.c (ns32k_gdbarch_init): Update. + * mn10300-tdep.c (mn10300_gdbarch_init): Update. + * mips-tdep.c (mips_gdbarch_init): Update. + * mcore-tdep.c (mcore_gdbarch_init): Update. + * m68k-tdep.c (m68k_gdbarch_init): Update. + * m68hc11-tdep.c (m68hc11_gdbarch_init): Update. + * ia64-tdep.c (ia64_gdbarch_init): Update. + * i386-tdep.c (i386_gdbarch_init): Update. + * i386-interix-tdep.c (i386_interix_init_abi): Update. + * hppa-tdep.c (hppa_gdbarch_init): Update. + * h8300-tdep.c (h8300_gdbarch_init): Update. + * frv-tdep.c (frv_gdbarch_init): Update. + * cris-tdep.c (cris_gdbarch_init): Update. + * avr-tdep.c (avr_gdbarch_init): Update. + * arm-tdep.c (arm_gdbarch_init): Update. + * alpha-tdep.c (alpha_gdbarch_init): Update. + * sh-tdep.c (sh_init_extra_frame_info): Update. + (sh64_init_extra_frame_info): Update. + * ns32knbsd-nat.c (frame_num_args): Update. + * m68hc11-tdep.c (m68hc11_init_extra_frame_info): Update. + * xstormy16-tdep.c (xstormy16_pop_frame): Update. + (xstormy16_frame_chain_valid): Update. + * vax-tdep.c (vax_saved_pc_after_call): Update. + * v850-tdep.c (v850_frame_chain): Update. + (v850_pop_frame): Update. + (v850_init_extra_frame_info): Update. + * sparc-tdep.c (setup_arbitrary_frame): Update. + * ns32k-tdep.c (umax_frame_num_args): Update. + * s390-tdep.c (s390_pop_frame_regular): Update. + * mn10300-tdep.c (mn10300_frame_chain): Update. + (mn10300_pop_frame_regular): Update. + (mn10300_init_extra_frame_info): Update. + * mips-tdep.c (mips_init_frame_pc_first): Update. + (mips_frame_chain): Update. + (mips_pop_frame): Update. + * mcore-tdep.c (mcore_frame_chain): Update. + (mcore_pop_frame): Update. + (mcore_init_extra_frame_info): Update. + * arch-utils.c (init_frame_pc_default): Update. + * m68k-tdep.c (isi_frame_num_args): Update. + (delta68_frame_num_args): Update. + (news_frame_num_args): Update. + * ia64-tdep.c (ia64_pop_frame_regular): Update. + * alpha-tdep.c (alpha_init_frame_pc_first): Update. + (alpha_frame_chain): Update. + (alpha_pop_frame): Update. + * hppa-tdep.c (hppa_saved_pc_after_call): Update. + (hppa_init_extra_frame_info): Update. + (hppa_frame_chain): Update. + (hppa_frame_chain_valid): Update. + * cris-tdep.c (cris_init_extra_frame_info): Update. + * avr-tdep.c (avr_init_extra_frame_info): Update. + * arm-tdep.c (arm_frame_chain_valid): Update. + (arm_init_extra_frame_info): Update. + (arm_pop_frame): Update. + * frame.c (frame_pc_unwind): Update. + * config/sparc/tm-sparc.h (DEPRECATED_FRAME_SAVED_PC): Update. + (DEPRECATED_INIT_FRAME_PC_FIRST): Update. + * config/rs6000/tm-rs6000.h (DEPRECATED_INIT_FRAME_PC_FIRST): Update. + * config/pa/tm-hppa.h (DEPRECATED_FRAME_SAVED_PC): Update. + * config/m68k/tm-delta68.h (DEPRECATED_FRAME_SAVED_PC): Update. + * config/m68k/tm-linux.h (DEPRECATED_FRAME_SAVED_PC): Update. + +2003-03-12 Andrew Cagney <cagney@redhat.com> + + Eliminate the need for POP_FRAME. + * frame.c (do_frame_unwind_register): New function. + (frame_pop): When no POP_FRAME, pop the frame using register + unwind and a scratch regcache. + (frame_saved_regs_pop): Delete function. + (trad_frame_unwinder): Update. + * d10v-tdep.c (d10v_frame_pop): Delete function. + (d10v_frame_unwind): Update. + * sentinel-frame.c (sentinel_frame_pop): Delete function. + (sentinel_frame_unwinder): Update. + * dummy-frame.c (dummy_frame_pop): Delete function. + (dummy_frame_unwind): Update. + * frame-unwind.h (frame_unwind_pop_ftype): Delete definition. + (struct frame_unwind): Update. + +2003-03-11 Kevin Buettner <kevinb@redhat.com> + + * mips-tdep.c (mips_ecoff_reg_to_regnum): Rename to + mips_dwarf_dwarf2_ecoff_reg_to_regnum(). + (mips_dwarf_dwarf2_ecoff_reg_to_regnum, mips_stab_reg_to_regnum): + Do range checks on register number obtained from debugging info. + (mips_gdbarch_init): Call set_gdbarch_dwarf_reg_to_regnum() and + set_gdbarch_dwarf2_reg_to_regnum(). Adjust call of + set_gdbarch_ecoff_reg_to_regnum() to account for new name of + mapping function. + (do_fp_register_row): Fix typo which caused double type to be + used when attempting to unpack a float. + +2003-03-11 J. Brobecker <brobecker@gnat.com> + + * breakpoint.c (bpstat_stop_status): Fix a small memory leak. + +2003-03-11 Andrew Cagney <cagney@redhat.com> + + * frame.c (deprecated_update_frame_pc_hack): Don't assume a next + frame. Problem found by Corinna Vinschen. + +2003-03-11 Pierre Muller <muller@ics.u-strasbg.fr> + + * doublest.c (floatformat_from_length): Accept also + the real size of 'long double' type. + +2003-03-10 Daniel Jacobowitz <drow@mvista.com> + + From Klee Dienes <kdienes@apple.com>: + * breakpoint.c (bpstat_copy): Copy the command lines as well + as the old value, to match what is freed in bpstat_clear. + +2003-03-10 David Carlton <carlton@math.stanford.edu> + + * minsyms.c (add_minsym_to_hash_table): Replace + DEPRECATED_SYMBOL_NAME by SYMBOL_LINKAGE_NAME. + (compare_minimal_symbols, compact_minimal_symbols) + (install_minimal_symbols, find_solib_trampoline_target): Ditto. + (lookup_minimal_symbol_text): Use strcmp on linkage names instead + of DEPRECATED_SYMBOL_MATCHES_NAME. + (lookup_minimal_symbol_solib_trampoline): Ditto. + +2003-03-10 Andrew Cagney <cagney@redhat.com> + + * regcache.h (regcache_cooked_read_ftype): Define. + (regcache_save, regcache_restore): Add a cooked_read parameter. + * regcache.c (regcache_save, regcache_restore): Update. + (do_cooked_read): New function. + (regcache_cpy): Pass do_cooked_read to regcache_save and + regcache_restore. + +2003-03-10 Andrew Cagney <cagney@redhat.com> + + * gdbarch.sh (DEPRECATED_FRAME_SAVED_PC): Replace FRAME_SAVED_PC. + * gdbarch.h, gdbarch.c: Re-generate. + * xstormy16-tdep.c (xstormy16_gdbarch_init): Update. + * x86-64-tdep.h: Update. + * x86-64-tdep.c (x86_64_init_abi): Update. + * v850-tdep.c (v850_gdbarch_init): Update. + * sparc-tdep.c (sparc_gdbarch_init): Update. + * sh-tdep.c (sh_gdbarch_init): Update. + * s390-tdep.c (s390_gdbarch_init): Update. + * rs6000-tdep.c (rs6000_gdbarch_init): Update. + * ppc-linux-tdep.c (ppc_linux_init_abi): Update. + * ns32k-tdep.c (ns32k_gdbarch_init): Update. + * mn10300-tdep.c (mn10300_gdbarch_init): Update. + * mips-tdep.c (mips_gdbarch_init): Update. + * mcore-tdep.c (mcore_gdbarch_init): Update. + * m68k-tdep.c (m68k_gdbarch_init): Update. + * m68hc11-tdep.c (m68hc11_gdbarch_init): Update. + * ia64-tdep.c (ia64_gdbarch_init): Update. + * i386-tdep.c (i386_gdbarch_init): Update. + * i386-interix-tdep.c (i386_interix_init_abi): Update. + * hppa-tdep.c (hppa_gdbarch_init): Update. + * h8300-tdep.c (h8300_gdbarch_init): Update. + * frv-tdep.c (frv_gdbarch_init): Update. + * cris-tdep.c (cris_gdbarch_init): Update. + * avr-tdep.c (avr_gdbarch_init): Update. + * arm-tdep.c (arm_gdbarch_init): Update. + * alpha-tdep.c (alpha_gdbarch_init): Update. + * sh-tdep.c (sh_init_extra_frame_info): Update. + (sh64_init_extra_frame_info): Update. + * ns32knbsd-nat.c (frame_num_args): Update. + * m68hc11-tdep.c (m68hc11_init_extra_frame_info): Update. + * xstormy16-tdep.c (xstormy16_pop_frame): Update. + (xstormy16_frame_chain_valid): Update. + * vax-tdep.c (vax_saved_pc_after_call): Update. + * v850-tdep.c (v850_frame_chain): Update. + (v850_pop_frame): Update. + (v850_init_extra_frame_info): Update. + * sparc-tdep.c (setup_arbitrary_frame): Update. + * ns32k-tdep.c (umax_frame_num_args): Update. + * s390-tdep.c (s390_pop_frame_regular): Update. + * mn10300-tdep.c (mn10300_frame_chain): Update. + (mn10300_pop_frame_regular): Update. + (mn10300_init_extra_frame_info): Update. + * mips-tdep.c (mips_init_frame_pc_first): Update. + (mips_frame_chain): Update. + (mips_pop_frame): Update. + * mcore-tdep.c (mcore_frame_chain): Update. + (mcore_pop_frame): Update. + (mcore_init_extra_frame_info): Update. + * arch-utils.c (init_frame_pc_default): Update. + * m68k-tdep.c (isi_frame_num_args): Update. + (delta68_frame_num_args): Update. + (news_frame_num_args): Update. + * ia64-tdep.c (ia64_pop_frame_regular): Update. + * alpha-tdep.c (alpha_init_frame_pc_first): Update. + (alpha_frame_chain): Update. + (alpha_pop_frame): Update. + * hppa-tdep.c (hppa_saved_pc_after_call): Update. + (hppa_init_extra_frame_info): Update. + (hppa_frame_chain): Update. + (hppa_frame_chain_valid): Update. + * cris-tdep.c (cris_init_extra_frame_info): Update. + * avr-tdep.c (avr_init_extra_frame_info): Update. + * arm-tdep.c (arm_frame_chain_valid): Update. + (arm_init_extra_frame_info): Update. + (arm_pop_frame): Update. + * frame.c (frame_pc_unwind): Update. + * config/sparc/tm-sparc.h (DEPRECATED_FRAME_SAVED_PC): Update. + (DEPRECATED_INIT_FRAME_PC_FIRST): Update. + * config/rs6000/tm-rs6000.h (DEPRECATED_INIT_FRAME_PC_FIRST): Update. + * config/pa/tm-hppa.h (DEPRECATED_FRAME_SAVED_PC): Update. + * config/m68k/tm-delta68.h (DEPRECATED_FRAME_SAVED_PC): Update. + * config/m68k/tm-linux.h (DEPRECATED_FRAME_SAVED_PC): Update. + +2003-03-10 Andrew Cagney <cagney@redhat.com> + + * gdbarch.sh (gdbarch_unwind_pc): New method. + * gdbarch.h, gdbarch.c: Regenerate. + * frame.c (frame_pc_unwind): Rewrite. Prefer gdbarch_unwind_pc, + but use read_pc and FRAME_SAVED_PC as fall backs. + (frame_saved_regs_pc_unwind): Delete function. + (trad_frame_unwinder): Update. + * frame-unwind.h (frame_unwind_pc_ftype): Delete declaration. + (struct frame_unwind): Update. + * dummy-frame.c (dummy_frame_pc_unwind): Delete function. + (dummy_frame_unwind): Update. + * sentinel-frame.c (sentinel_frame_pc_unwind): Delete function. + (sentinel_frame_unwinder): Update. + * d10v-tdep.c (d10v_frame_pc_unwind): Delete function. + (d10v_frame_unwind): Update. + (d10v_unwind_pc): New function. + (d10v_gdbarch_init): Set unwind_pc. + +2003-03-10 Andrew Cagney <cagney@redhat.com> + + * gdbarch.h: Re-generate. + + * d10v-tdep.c (d10v_frame_register_unwind): Correctly unwind the + PC. + (d10v_frame_pop): Unwind the PC, and not the LR, when restoring + the PC register. + +2003-03-08 Mark Kettenis <kettenis@gnu.org> + + * gdbarch.sh (save_dummy_frame_tos): Add comment. + +2003-03-08 Andrew Cagney <cagney@redhat.com> + + * cli-out.c: Update copyright. + (cli_out_data): Define typedef. Use instead of ui_out_data. + +2003-03-08 Andrew Cagney <cagney@redhat.com> + + * valarith.c (value_subscripted_rvalue): Copy the array's REGNO to + the result. + +2003-03-07 Andrew Cagney <cagney@redhat.com> + + * gdbarch.sh: Don't generate two macro definitions when an + undefined macro taking no arguments. + * gdbarch.h: Regenerate. + +2002-03-07 Michal Ludvig <mludvig@suse.cz> + + * x86-64-tdep.c (x86_64_save_dummy_frame_tos) + (x86_64_unwind_dummy_id): New functions. + (x86_64_init_abi): Register these two new functions. + +2003-03-07 Michal Ludvig <mludvig@suse.cz> + + * x86-64-tdep.c (x86_64_function_has_prologue): New function. + (x86_64_skip_prologue): Move prologue detection to + separate function. + * x86-64-tdep.h (x86_64_function_has_prologue): New prototype. + +2003-03-05 Andrew Cagney <cagney@redhat.com> + + * d10v-tdep.c (d10v_unwind_dummy_id): New function. + (d10v_gdbarch_init): Set unwind_dummy_id and save_dummy_frame_tos. + * frame.c (get_prev_frame): Restructure the frame ID unwind code + to use unwind_dummy_id when a dummy frame. + * gdbarch.sh (unwind_dummy_id): New multi-arch method with + predicate. + * gdbarch.h, gdbarch.c: Regneerate. + +2003-03-05 Andrew Cagney <cagney@redhat.com> + + * d10v-tdep.c (struct d10v_unwind_cache): Add field "base". + (d10v_frame_unwind_cache): Rewrite code computing the base and SP. + Do not use d10v_read_sp or d10v_read_fp when obtaining register + values. + +2003-03-05 Andrew Cagney <cagney@redhat.com> + + * d10v-tdep.c (struct frame_extra_info): Delete unused structure. + (struct d10v_unwind_cache): Delete field "frameless". Replace + "next_addr" with "sp_offset". Add "r11_offset". + (d10v_frame_unwind_cache): Update. + (prologue_find_regs): Update. When "mv r11, sp", save the + "sp_offset" in "r11_offset". Recognize "st rn, @r11", note that + RN was saved in r11_offset. + +2003-03-05 Andrew Cagney <cagney@redhat.com> + + * frame.c (deprecated_update_frame_pc_hack): Also update the the + cached PC value in the next frame. + +2003-03-05 Andrew Cagney <cagney@redhat.com> + + * frame.h (struct frame_info): Replace "id_unwind_cache_p" and + "id_unwind_cache" with "id". + (frame_id_unwind): Delete declaration. + * frame.c (frame_id_unwind): Delete function. + (get_prev_frame): Call the frame id unwind method directly. Store + the returned next frame's ID value in NEXT_FRAME. Note that there + is a problem with the wrong unwind ID being called with the wrong + unwind cache. + +2003-03-05 Daniel Jacobowitz <drow@mvista.com> + + * Makefile.in (FLAGS_TO_PASS): Add LDFLAGS. + +2003-03-05 James Ingham <jingham@apple.com> + Daniel Jacobowitz <drow@mvista.com> + + * cp-abi.c: Include "command.h", "gdbcmd.h", and "ui-out.h". + (auto_cp_abi): New variable. + (current_cp_abi, num_cp_abis): Make static. + (CP_ABI_MAX): Define. + (cp_abis): Turn into an array. + (value_virtual_fn_field): Fix formatting. + (switch_to_cp_abi, register_cp_abi): Update. register_cp_abi now + takes a pointer. + (set_cp_abi_as_auto_default, set_cp_abi_cmd, show_cp_abi_cmd) + (list_cp_abis, _initialize_cp_abi): New functions. + * cp-abi.h: Add prototype for set_cp_abi_as_auto_default. Remove + declarations for cp_abis, num_cp_abis, current_cp_abi, and + switch_to_cp_abi. Update prototype for register_cp_abi. + * Makefile.in (cp-abi.o): Update dependencies. + * minsyms.c (install_minimal_symbols): Call set_cp_abi_as_auto_default + instead of switch_to_cp_abi. + * gnu-v2-abi.c (_initialize_gnu_v2_abi): Likewise. Update call to + register_cp_abi. + * gnu-v3-abi.c (_initialize_gnu_v3_abi): Update call to + register_cp_abi. + * hpacc-abi.c (_initialize_hpacc_abi): Likewise. + +2003-03-05 Daniel Jacobowitz <drow@mvista.com> + + * dwarf2expr.c (new_dwarf_expr_context): Add (void) to definition. + * dwarf2loc.c: Include "regcache.h". + (dwarf_expr_read_reg): Rename regnum argument to dwarf_regnum. Use + register_size. + * Makefile.in (dwarf2loc.o): Update dependencies. + +2003-03-04 Theodore A. Roth <troth@openavr.org> + + * avr-tdep.c (avr_io_reg_read_command): Fix to handle case when the + number of io registers reported by remote target is not a multiple of + step. + +2003-03-04 David Carlton <carlton@math.stanford.edu> + + * symtab.c (lookup_partial_symbol): Add linkage_name argument. + (lookup_symbol_aux_psymtabs): Update call to + lookup_partial_symbol. + (lookup_transparent_type, find_main_psymtab) + (make_symbol_overload_list): Ditto. + +2003-03-04 Kazu Hirata <kazu@cs.umass.edu> + + * MAINTAINERS (Write after approval): Update my email address. + +2003-03-03 Andrew Cagney <cagney@redhat.com> + + Make MAX_REGISTER_RAW_SIZE and MAX_REGISTER_VIRTUAL_SIZE optional. + * gdbarch.sh (DEPRECATED_MAX_REGISTER_RAW_SIZE): Variable with + predicate. Replace MAX_REGISTER_RAW_SIZE. + (DEPRECATED_MAX_REGISTER_VIRTUAL_SIZE): Ditto for + MAX_REGISTER_VIRTUAL_SIZE. + * regcache.c (legacy_max_register_raw_size): New function. + (legacy_max_register_virtual_size): New function. + * defs.h (MAX_REGISTER_VIRTUAL_SIZE): Define. + (MAX_REGISTER_RAW_SIZE): Define. + (legacy_max_register_raw_size): Declare. + (legacy_max_register_virtual_size): Declare. + * config/sparc/tm-sparc.h (DEPRECATED_MAX_REGISTER_RAW_SIZE) + (DEPRECATED_MAX_REGISTER_VIRTUAL_SIZE): Update. + * config/sparc/tm-sp64.h (DEPRECATED_MAX_REGISTER_RAW_SIZE) + (DEPRECATED_MAX_REGISTER_VIRTUAL_SIZE): Ditto. + * config/pa/tm-hppa.h (DEPRECATED_MAX_REGISTER_RAW_SIZE) + (DEPRECATED_MAX_REGISTER_VIRTUAL_SIZE): Ditto. + * config/pa/tm-hppa64.h (DEPRECATED_MAX_REGISTER_RAW_SIZE): Ditto. + * config/ia64/tm-ia64.h (DEPRECATED_MAX_REGISTER_RAW_SIZE): Ditto. + * config/i386/tm-ptx.h (DEPRECATED_MAX_REGISTER_RAW_SIZE): Ditto. + * xstormy16-tdep.c (xstormy16_gdbarch_init): Update. + * vax-tdep.c (vax_gdbarch_init): Update. + * v850-tdep.c (v850_gdbarch_init): Update. + * sparc-tdep.c (sparc_gdbarch_init): Update. + * sh-tdep.c (sh_gdbarch_init): Update. + * s390-tdep.c (s390_gdbarch_init): Update. + * rs6000-tdep.c (rs6000_gdbarch_init): Update. + * ns32k-tdep.c (ns32k_gdbarch_init): Update. + * mn10300-tdep.c (mn10300_gdbarch_init): Update. + * mips-tdep.c (mips_gdbarch_init): Update. + * mcore-tdep.c (mcore_gdbarch_init): Update. + * m68k-tdep.c (m68k_gdbarch_init): Update. + * m68hc11-tdep.c (m68hc11_gdbarch_init): Update. + * ia64-tdep.c (ia64_gdbarch_init): Update. + * i386-tdep.c (i386_gdbarch_init): Update. + * hppa-tdep.c (hppa_gdbarch_init): Update. + * h8300-tdep.c (h8300_gdbarch_init): Update. + * frv-tdep.c (frv_gdbarch_init): Update. + * cris-tdep.c (cris_gdbarch_init): Update. + * avr-tdep.c (avr_gdbarch_init): Update. + * arm-tdep.c (arm_gdbarch_init): Update. + * alpha-tdep.c (alpha_gdbarch_init): Update. + * d10v-tdep.c (d10v_gdbarch_init): Do not set + max_register_raw_size or max_register_virtual_size. + +2003-03-03 David Carlton <carlton@math.stanford.edu> + + * symtab.h (DEPRECATED_SYMBOL_MATCHES_NAME): Rename from + SYMBOL_MATCHES_NAME, add comment. + (SYMBOL_MATCHES_NATURAL_NAME): New. + * minsyms.c (lookup_minimal_symbol_solib_trampoline): Replace + SYMBOL_MATCHES_NAME with DEPRECATED_SYMBOL_MATCHES_NAME. + (lookup_minimal_symbol, lookup_minimal_symbol_text): Ditto. + * symtab.c (lookup_partial_symbol): Use + SYMBOL_MATCHES_NATURAL_NAME, not SYMBOL_MATCHES_NAME. Delete + unhelpful comment. + (lookup_block_symbol): Use SYMBOL_MATCHES_NATURAL_NAME, not + SYMBOL_MATCHES_NAME. + Fix for PR c++/33. + +2003-03-03 David Carlton <carlton@math.stanford.edu> + + * symtab.h (SYMBOL_MATCHES_REGEXP): Delete. + * symtab.c (search_symbols): Replace uses of SYMBOL_MATCHES_REGEXP + by regexp matching against SYMBOL_NATURAL_NAME. + +2003-03-03 David Carlton <carlton@math.stanford.edu> + + * linespec.c (find_method): Extract code into collect_methods. + (collect_methods): New. + +2003-03-02 Mark Kettenis <kettenis@gnu.org> + + * i386bsd-tdep.c (i386bsd_sigcontext_addr): Use get_next_frame and + get_frame_base. + + * i386-tdep.c (i386_pe_skip_trampoline_code): Replace usage of + DEPRECATED_SYMBOL_NAME with SYMBOL_LINKAGE_NAME. + +2003-03-02 Stephane Carrez <stcarrez@nerim.fr> + + * arch-utils.c (generic_register_byte): Fix to use the loop index + and not regnum when summing the size of all registers up to regnum. + +2003-03-01 Andrew Cagney <cagney@redhat.com> + + * gdbarch.sh (DEPRECATED_FRAME_INIT_SAVED_REGS): Rename + FRAME_INIT_SAVED_REGS. + * gdbarch.h, gdbarch.c: Regenerate. + * stack.c (frame_info): Update. + * sh-tdep.c (sh_find_callers_reg, sh64_get_saved_pr): Update. + (sh_init_extra_frame_info, sh64_init_extra_frame_info): Update. + (sh64_get_saved_register, sh_pop_frame, sh64_pop_frame): Update. + * ns32k-tdep.c (ns32k_pop_frame): Update. + * mips-tdep.c (mips_pop_frame): Update. + * m68hc11-tdep.c (m68hc11_pop_frame): Update. + * ia64-tdep.c (ia64_frame_chain): Update. + (ia64_frame_saved_pc, ia64_get_saved_register): Update. + (ia64_frameless_function_invocation): Update. + (ia64_init_extra_frame_info): Update. + (ia64_pop_frame_regular): Update. + * frame.h (struct frame_info): Update comment. + (DEPRECATED_FRAME_INIT_SAVED_REGS): Rename macro. + * frame.c (frame_saved_regs_register_unwind): Update. + (frame_saved_regs_register_unwind): Update. + (deprecated_generic_get_saved_register): Update. + * cris-tdep.c: Update comment. + * config/sparc/tm-sparc.h (DEPRECATED_FRAME_INIT_SAVED_REGS): + Rename macro. + * xstormy16-tdep.c (xstormy16_gdbarch_init): Update. + * x86-64-tdep.c (x86_64_init_abi): Update. + * vax-tdep.c (vax_gdbarch_init): Update. + * v850-tdep.c (v850_gdbarch_init): Update. + * sparc-tdep.c (sparc_gdbarch_init): Update. + * sh-tdep.c (sh_gdbarch_init): Update. + * s390-tdep.c (s390_gdbarch_init): Update. + * rs6000-tdep.c (rs6000_gdbarch_init): Update. + * ppc-linux-tdep.c (ppc_linux_init_abi): Update. + * ns32k-tdep.c (ns32k_gdbarch_init): Update. + * mn10300-tdep.c (mn10300_gdbarch_init): Update. + * mips-tdep.c (mips_gdbarch_init): Update. + * mcore-tdep.c (mcore_gdbarch_init): Update. + * m68k-tdep.c (m68k_gdbarch_init): Update. + * m68hc11-tdep.c (m68hc11_gdbarch_init): Update. + * ia64-tdep.c (ia64_gdbarch_init): Update. + * i386-tdep.c (i386_gdbarch_init): Update. + * frv-tdep.c (frv_gdbarch_init): Update. + * avr-tdep.c (avr_gdbarch_init): Update. + * arm-tdep.c (arm_gdbarch_init): Update. + * alpha-tdep.c (alpha_gdbarch_init): Update. + +2003-03-01 Andrew Cagney <cagney@redhat.com> + + * main.c (captured_main): Add OPT_WINDOWS and OPT_NOWINDOWS to + option enum and switch. When no windows, set the interpreter to + INTERP_CONSOLE. + +2003-03-01 Andrew Cagney <cagney@redhat.com> + + * main.c (captured_main): Replace magic option characters with an + enum. + +2003-03-01 Andrew Cagney <cagney@redhat.com> + + * gdbarch.sh (DEPRECATED_INIT_EXTRA_FRAME_INFO): Rename + INIT_EXTRA_FRAME_INFO. + * gdbarch.h, gdbarch.c: Regenerate. + * arm-tdep.c: Update comments. + * sh-tdep.c, mcore-tdep.c, m68hc11-tdep.c: Ditto. + * i386-interix-tdep.c, hppa-tdep.c, h8300-tdep.c: Ditto. + * frame.h, avr-tdep.c: Ditto. + * frame.c (get_prev_frame): DEPRECATED_INIT_EXTRA_FRAME_INFO. + (create_new_frame, legacy_get_prev_frame): Ditto. + * config/sparc/tm-sparc.h (DEPRECATED_INIT_EXTRA_FRAME_INFO): Rename. + * config/pa/tm-hppa.h (DEPRECATED_INIT_EXTRA_FRAME_INFO): Rename. + * xstormy16-tdep.c (xstormy16_gdbarch_init): Initialize + deprecated_init_extra_frame_info instead of init_extra_frame_info. + * x86-64-tdep.c (x86_64_init_abi): Ditto. + * v850-tdep.c (v850_gdbarch_init): Ditto. + * sparc-tdep.c (sparc_gdbarch_init): Ditto. + * sh-tdep.c (sh_gdbarch_init): Ditto. + * s390-tdep.c (s390_gdbarch_init): Ditto. + * ppc-linux-tdep.c (ppc_linux_init_abi): Ditto. + * mn10300-tdep.c (mn10300_gdbarch_init): Ditto. + * mips-tdep.c (mips_gdbarch_init): Ditto. + * mcore-tdep.c (mcore_gdbarch_init): Ditto. + * m68hc11-tdep.c (m68hc11_gdbarch_init): Ditto. + * ia64-tdep.c (ia64_gdbarch_init): Ditto. + * i386-interix-tdep.c (i386_interix_init_abi): Ditto. + * hppa-tdep.c (hppa_gdbarch_init): Ditto. + * h8300-tdep.c (h8300_gdbarch_init): Ditto. + * frv-tdep.c (frv_gdbarch_init): Ditto. + * cris-tdep.c (cris_gdbarch_init): Ditto. + * avr-tdep.c (avr_gdbarch_init): Ditto. + * arm-tdep.c (arm_gdbarch_init): Ditto. + * alpha-tdep.c (alpha_gdbarch_init): Ditto. + * rs6000-tdep.c (rs6000_gdbarch_init): Ditto. + +2003-03-01 Andrew Cagney <cagney@redhat.com> + + * gdbarch.sh (register_type): New function with predicate. + (REGISTER_VIRTUAL_TYPE): Change to function with predicate. + * gdbarch.h, gdbarch.c: Re-generate. + * arch-utils.c (generic_register_byte): Use generic_register_size. + (generic_register_size): When available, use + gdbarch_register_type. + * regcache.c (init_regcache_descr): When available, initialize the + register type array using gdbarch_register_type. If the + architecture supplies gdbarch_register_type, do not use the legacy + regcache layout. + * d10v-tdep.c (d10v_register_type): Replace + d10v_register_virtual_type. + (d10v_gdbarch_init): Set register_type instead of + register_virtual_type. + +2003-03-01 Andrew Cagney <cagney@redhat.com> + + * Makefile.in (ax-gdb.o): Update dependencies. + * ax-gdb.c: Include "regcache.h". + (gen_expr): Use register_type instead of REGISTER_VIRTUAL_TYPE. + * findvar.c (value_of_register): Ditto. + * infcmd.c (default_print_registers_info): Ditto. + +2003-03-01 Mark Kettenis <kettenis@gnu.org> + + * i386-linux-tdep.c (find_minsym_and_objfile): Replace usage of + DEPRECATED_SYMBOL_NAME with SYMBOL_LINKAGE_NAME. + +2003-03-01 Mark Kettenis <kettenis@gnu.org> + + * i386-linux-tdep.c (find_minsym_and_objfile): Use strcmp instead + of STREQ. + +2003-02-28 Daniel Jacobowitz <drow@mvista.com> + + * Makefile.in (dwarf2loc.o): Update dependencies. + * ax-gdb.c (gen_var_ref): Handle LOC_COMPUTED and LOC_COMPUTED_ARG. + * dwarf2expr.c (read_uleb128, read_sleb128): Make non-static. + * dwarf2expr.h (read_uleb128, read_sleb128): Add prototypes. + * dwarf2loc.c: Include "ax.h" and "ax-gdb.h". + (locexpr_tracepoint_var_ref): New function. + (dwarf2_locexpr_funcs): Add locexpr_tracepoint_var_ref. + +2003-02-28 Andrew Cagney <cagney@redhat.com> + + * regcache.c (register_size): New function. + * regcache.h (register_size): Declare + * d10v-tdep.c: Use register_size instead of REGISTER_RAW_SIZE, use + max_register_size instead of MAX_REGISTER_RAW_SIZE. + +2003-02-28 David Carlton <carlton@math.stanford.edu> + + * linespec.c (decode_compound): Extract code into find_method. + (find_method): New. + +2003-02-28 J. Brobecker <brobecker@gnat.com> + + * Makefile.in: Add rules to build and link in observer.o. + +2003-02-27 J. Brobecker <brobecker@gnat.com> + + * observer.c: Minor comments edits. + +2003-02-27 J. Brobecker <brobecker@gnat.com> + + * observer.h, observer.c: New file. + +2003-02-27 Andrew Cagney <cagney@redhat.com> + + * arm-tdep.c (gdb_print_insn_arm): Rename _bfd to just bfd. + +2003-02-27 Stephane Carrez <stcarrez@nerim.fr> + + * m68hc11-tdep.c (M6811_OP_LDX_EXT, M6811_OP_STS_EXT): New defines. + (M6812_OP_STS_EXT): Likewise. + (m6811_prologue): Use the above to recognize prologue. + (m6812_prologue): Likewise. + +2003-02-27 David Carlton <carlton@math.stanford.edu> + + * symfile.c (compare_symbols): Use SYMBOL_NATURAL_NAME, not + SYMBOL_PRINT_NAME. + (compare_psymbols): Ditto. + * symtab.c (lookup_partial_symbol, lookup_block_symbol): Ditto. + +2003-02-27 Michael Snyder <msnyder@redhat.com> + + * f-lang.c (build_fortran_types): New function. + (_initialize_f_language): Gdbarch-register built-in fortran types. + * doublest.c (extract_floating): Fix warning text. + +2003-02-27 Andrew Cagney <cagney@redhat.com> + + * gdbarch.sh (DEPRECATED_PUSH_DUMMY_FRAME): Procedure with + predicate. Replaces PUSH_DUMMY_FRAME. + * gdbarch.h, gdbarch.c: Regnerate. + * valops.c (hand_function_call): Update. Call + generic_push_dummy_frame directly. + * vax-tdep.c (vax_gdbarch_init): Update. + * sparc-tdep.c (sparc_gdbarch_init): Update. + * ns32k-tdep.c (ns32k_gdbarch_init): Update. + * m68k-tdep.c (m68k_gdbarch_init): Update. + * hppa-tdep.c (hppa_gdbarch_init): Update. + * alpha-tdep.c (alpha_gdbarch_init): Update. + * config/sparc/tm-sparc.h (DEPRECATED_PUSH_DUMMY_FRAME): Update. + * config/pa/tm-hppa.h (DEPRECATED_PUSH_DUMMY_FRAME): Update. + * inferior.h (PUSH_DUMMY_FRAME): Delete definition. + * xstormy16-tdep.c (xstormy16_gdbarch_init): Don't set + push_dummy_frame to generic_push_dummy_frame. + * v850-tdep.c (v850_gdbarch_init): Ditto. + * sh-tdep.c (sh_gdbarch_init): Ditto. + * s390-tdep.c (s390_gdbarch_init): Ditto. + * rs6000-tdep.c (rs6000_gdbarch_init): Ditto. + * mn10300-tdep.c (mn10300_gdbarch_init): Ditto. + * mips-tdep.c (mips_gdbarch_init): Ditto. + * mcore-tdep.c (mcore_gdbarch_init): Ditto. + * m68hc11-tdep.c (m68hc11_gdbarch_init): Ditto. + * ia64-tdep.c (ia64_gdbarch_init): Ditto. + * i386-tdep.c (i386_gdbarch_init): Ditto. + * h8300-tdep.c (h8300_gdbarch_init): Ditto. + * frv-tdep.c (frv_gdbarch_init): Ditto. + * d10v-tdep.c (d10v_gdbarch_init): Ditto. + * cris-tdep.c (cris_gdbarch_init): Ditto. + * avr-tdep.c (avr_gdbarch_init): Ditto. + * arm-tdep.c (arm_gdbarch_init): Ditto. + +2003-02-26 Kevin Buettner <kevinb@redhat.com> + + * mips-tdep.c (show_mips_abi): New function. + (_initialize_mips_tdep): Use show_mips_abi() to implement the + command ``show mips abi''. + +2003-02-26 Jeff Johnston <jjohnstn@redhat.com> + + From Elena Zannoni <ezannoni@redhat.com> + * dbxread.c (process_one_symbol): Only record line 0 if one or + more sline entries have been seen for the function. + +2003-02-26 Michael Chastain <mec@shout.net> + + * configure: Regenerate with autoconf 000227. + +2003-02-26 Michael Chastain <mec@shout.net> + + Close PR build/660. + * PROBLEMS (i[3456]86-*-linux*): Note explicit error message + for old libc5/glibc. + * gdb_thread_db.h: Die if not HAVE_UINTPTR_T. + +2003-02-26 Kris Warkentin <kewarken@qnx.com> + + * defs.h (gdb_osabi): Add GDB_OSABI_QNXNTO. + * osabi.c (gdb_osabi_names): Add "QNX Neutrino". + +2003-02-26 Michael Chastain <mec@shout.net> + + * configure.in: New variable HAVE_UINTPTR_T. + * configure, config.in: Regenerated. + +2003-02-26 Daniel Jacobowitz <drow@mvista.com> + + Fix PR build/1097. + * utils.c (gdb_realpath): Move closing brace outwards one #endif. + +2003-02-25 Andrew Cagney <cagney@redhat.com> + + * frame.c (get_prev_frame): Add comment on check for + inside_entry_func. Only check for inside_entry_file when not a + dummy and not a sentinel. Check that the new frame is not inner + to the old frame. + +2003-02-25 Andrew Cagney <cagney@redhat.com> + + * frame.c (frame_debug): New variable. + (_initialize_frame): Add "set/show debug frame" command. + (get_prev_frame): When frame_debug, print reason why unwind + failed. + +2003-02-25 Michael Chastain <mec@shout.net> + + * PROBLEMS (i[3456]86-*-linux*): Require glibc 2.1.3 or later + to avoid uintptr_t definition problems. + +2003-02-25 David Carlton <carlton@math.stanford.edu> + + * symtab.h (SYMBOL_NATURAL_NAME): New macro. + (SYMBOL_LINKAGE_NAME): Ditto. + (SYMBOL_PRINT_NAME): Use SYMBOL_NATURAL_NAME and + SYMBOL_LINKAGE_NAME. + (struct general_symbol_info): Expand comment. + (DEPRECATED_SYMBOL_NAME): Rename from SYMBOL_NAME. + (SYMBOL_MATCHES_NAME): Use DEPRECATED_SYMBOL_NAME. + (SYMBOL_MATCHES_REGEXP): Ditto. + * symtab.c (symbol_natural_name): New function. + * objfiles.h: Replace all uses of SYMBOL_NAME by + DEPRECATED_SYMBOL_NAME. + * xcoffread.c, valops.c, typeprint.c, tracepoint.c: Ditto. + * symtab.c, symmisc.c, symfile.c, stack.c, stabsread.c: Ditto. + * somsolib.c, sol-thread.c, rs6000-tdep.c, p-valprint.c: Ditto. + * printcmd.c, objfiles.c, objc-lang.c, mipsread.c: Ditto. + * minsyms.c, mdebugread.c, linespec.c, jv-lang.c: Ditto. + * i386-tdep.c, i386-linux-tdep.c, hpread.c, hppa-tdep.c: Ditto. + * gnu-v2-abi.c, f-valprint.c, findvar.c, expprint.c: Ditto. + * dwarfread.c, dwarf2read.c, dbxread.c, c-valprint.c: Ditto. + * cp-valprint.c, coffread.c, buildsym.c, breakpoint.c: Ditto. + * blockframe.c, ax-gdb.c, arm-linux-tdep.c, ada-lang.c: Ditto. + * ada-exp.y: Ditto. + * ada-exp.y: Update copyright. + * sol-thread.c, mipsread.c, jv-lang.c, f-valprint.c: Ditto. + * cp-valprint.c: Ditto. + +2003-02-25 Jeff Johnston <jjohnstn@redhat.com> + + * infptrace.c (detach): Do not flag error if ptrace detach fails + and errno is set to ESRCH. + +2003-02-24 Andrew Cagney <cagney@redhat.com> + + * infptrace.c (udot_info): Change type of udot_off to long. Use + paddr when printing udot_off's value. + +2003-02-24 David Carlton <carlton@math.stanford.edu> + + * symtab.c (make_symbol_overload_list): Only read in partial + symtabs containing a matching partial symbol. + +2003-02-24 David Carlton <carlton@math.stanford.edu> + + * symtab.c (lookup_partial_symbol): Use strcmp_iw_ordered to + do the comparison, not strcmp. + * symfile.c (compare_psymbols): Ditto. + * defs.h: Declare strcmp_iw_ordered. + * utils.c (strcmp_iw_ordered): New function. + +2003-02-24 Jim Blandy <jimb@redhat.com> + + * MAINTAINERS (GNU/Linux/x86, linespec, breakpoints, Scheme + support, shared libs): Remove my name from here, to better reflect + reality. + +2003-02-24 Kris Warkentin <kewarken@qnx.com> + + * target.h: (HAVE_CONTINUABLE_WATCHPOINT): Define. + (target_ops): Add to_have_continuable_watchpoint. + * target.c (update_current_target): Add INHERIT line for + to_have_continuable_watchpoint. + * infrun.c: Remove HAVE_CONTINUABLE_WATCHPOINT defines. + * config/i386/nm-i386.h, config/i386/nm-i386sco5.h, + config/i386/nm-i386sol2.h, config/s390/nm-linux.h, + config/sparc/nm-sun4sol2.h: HAVE_CONTINUABLE_WATCHPOINT defined as 1. + +2003-02-24 Elena Zannoni <ezannoni@redhat.com> + + * MAINTAINERS (Core): Drop main.c and top.c. Clarify event loop + maintainership. + +2003-02-24 Kris Warkentin <kewarken@qnx.com> + + * solib.c (solib_open): Call target defined search function after + failing with solib-search-path. + * solist.h (target_so_ops): Add find_and_open_solib function hook and + create define TARGET_SO_FIND_AND_OPEN_SOLIB. + +2003-02-24 Kris Warkentin <kewarken@qnx.com> + + * MAINTAINERS: Add myself to Write After section. + +2003-02-23 Stephane Carrez <stcarrez@nerim.fr> + + * m68hc11-tdep.c (m68hc11_gdbarch_init): long double is 64-bit wide. + +2003-02-22 Stephane Carrez <stcarrez@nerim.fr> + + * m68hc11-tdep.c (m68hc11_init_reggroups): New function. + (m68hc11_add_reggroups): New function. + (m68hc11_register_reggroup_p): New to register hard/soft reggroups. + (m68hc11_gdbarch_init): Install the reggroups. + (_initialize_m68hc11_tdep): Initialize them. + +2003-02-21 James E Wilson <wilson@tuliptree.org> + + * MAINTAINERS: Update my email address. + +2003-02-21 David Carlton <carlton@math.stanford.edu> + + * arm-tdep.c (arm_gdbarch_init): Add break after default label. + +2003-02-21 Daniel Jacobowitz <drow@mvista.com> + + Based on a patch from Daniel Berlin (dberlin@dberlin.org). + * symtab.h: Add opaque declarations of struct axs_value and + struct agent_expr. + (enum address_class): Add LOC_COMPUTED and LOC_COMPUTED_ARG. + (struct location_funcs): New type. + (struct symbol): Add "loc" to aux_value. + (SYMBOL_LOCATION_BATON, SYMBOL_LOCATION_FUNCS): New macros. + * dwarf2read.c: Include "dwarf2expr.h". + (dwarf2_symbol_mark_computed): New function. + (read_func_scope): Use it. + (var_decode_location): New function. + (new_symbol): Use it. + * dwarf2expr.c, dwarf2expr.h, dwarf2loc.c, dwarf2loc.h: New files. + + * Makefile.in (SFILES): Add dwarf2loc.c and dwarf2expr.c. + (dwarf2expr_h, dwarf2loc_h): New variables. + (COMMON_OBS): Add dwarf2expr.o and dwarf2loc.o. + (dwarf2expr.o, dwarf2loc.o): New rules. + (dwarf2read.o): Add $(dwarf2expr_h) and $(dwarf2loc_h). + * buildsym.c (finish_block): Handle LOC_COMPUTED and + LOC_COMPUTED_ARG. + * findvar.c (symbol_read_needs_frame, read_var_value): Likewise. + * m2-exp.y (yylex): Likewise. + * printcmd.c (address_info, print_frame_args): Likewise. + * stack.c (print_block_frame_locals, print_frame_arg_vars): Likewise. + * symmisc.c (print_symbol, print_partial_symbols): Likewise. + * ada-lang.c (ada_resolve_subexp, symtab_for_sym) + (ada_add_block_symbols, fill_in_ada_prototype): Likewise. + * symtab.c (lookup_block_symbol): Likewise. + +2003-02-20 Adam Fedor <fedor@gnu.org> + + * symtab.h: Remove objc_specific struct + (SYMBOL_OBJC_DEMANGLED_NAME): Remove. + * symtab.c (symbol_init_language_specific, symbol_demangled_name): + Have language_objc use cplus_specific struct. + +2003-02-20 Tom Tromey <tromey@redhat.com> + + * jv-valprint.c (java_value_print): Look at TYPE_TAG_NAME, not + TYPE_NAME, when printing a String value. PR java/1075. + +2003-02-20 Adam Fedor <fedor@gnu.org> + + * objc-lang.h (find_methods): Remove declaration. + * objc-lang.c (find_methods): Make static. + +2003-02-20 Christopher Faylor <cgf@redhat.com> + + * win32-nat.c (get_image_name): Check return value from + ReadProcessMemory. + (child_xfer_memory): Ditto. + +2003-02-20 Alexandre Oliva <aoliva@redhat.com> + + * configure.in (TARGET_SYSTEM_ROOT): Set default to + ${exec_prefix}/${target_alias}/sys-root. Match explicit + '${exec_prefix}' (in addition to the expansion thereof) as + relocatable. + * configure: Rebuilt. + +2003-02-20 David Carlton <carlton@math.stanford.edu> + + * symtab.c (search_symbols): Revert the search_symbols part of my + 2002-12-23 patch. Add comment. + +2002-02-20 Daniel Jacobowitz <drow@mvista.com> + + * coffread.c (coff_symfile_read): Clean up minimal symbols earlier. + * dbxread.c (elfstab_build_psymtabs): Don't call + install_minimal_symbols. + (stabsect_build_psymtabs): Likewise. + * elfread.c (elf_symfile_read): Call install_minimal_symbols + earlier. + * somread.c (som_symfile_read): Call install_minimal_symbols + and do_cleanups earlier. + * nlmread.c (nlm_symfile_read): Likewise. + * mdebugread.c (elfmdebug_build_psymtabs): Call + install_minimal_symbols and make appropriate cleanups. + +2003-02-20 Kevin Buettner <kevinb@redhat.com> + + * solib.c (reload_shared_libraries): New function. + (_initialize_solib): Add callbacks for ``set solib-search-path'' + and ``set solib-absolute-prefix''. + +2003-02-20 David Carlton <carlton@math.stanford.edu> + + * symtab.h (SYMBOL_PRINT_NAME): Rename from SYMBOL_SOURCE_NAME; + expand comment. + * ada-lang.c (user_select_syms, ada_finish_decode_line_1): Replace + SYMBOL_PRINT_NAME with SYMBOL_SOURCE_NAME. + * ada-typeprint.c (ada_typedef_print): Ditto. + * ax-gdb.c (gen_var_ref): Ditto. + * breakpoint.c (print_one_breakpoint): Ditto. + * buildsym.c (finish_block): Ditto. + * c-valprint.c (c_val_print): Ditto. + * expprint.c (print_subexp): Ditto. + * findvar.c (locate_var_value): Ditto. + * infcmd.c (jump_command): Ditto. + * linespec.c (decode_line_2, decode_compound): Ditto. + * maint.c (maintenance_translate_address): Ditto. + * objc-lang.c (compare_selectors, compare_classes): Ditto. + * printcmd.c (build_address_symbolic, sym_info, print_frame_args): + Ditto. + * p-valprint.c (pascal_val_print): Ditto. + * stabsread.c (define_symbol): Ditto. + * stack.c (print_frame, frame_info, print_block_frame_locals) + (print_frame_arg_vars, return_command): Ditto. + * symfile.c (compare_symbols, compare_psymbols): Ditto. + * symmisc.c (print_symbol): Ditto. + * symtab.c (lookup_partial_symbol, lookup_block_symbol) + (compare_search_syms, print_symbol_info, print_msymbol_info) + (rbreak_command): Ditto. + * tracepoint.c (tracepoints_info): Ditto. + * typeprint.c (typedef_print): Ditto. + * valops.c (value_of_variable, hand_function_call): Ditto. + * cli/cli-cmds.c (edit_command, list_command): Ditto. + * ada-typeprint.c: Update Copyright. + * infcmd.c, objc-lang.c, p-valprint.c, symmisc.c: Ditto. + * tracepoint.c, cli/cli-cmds.c: Ditto. + +2003-02-20 Kevin Buettner <kevinb@redhat.com> + + * frame.c (generic_unwind_get_saved_register): Make non-static. + * frame.h (generic_unwind_get_saved_register): Declare. + * mips-tdep.c (read_next_frame_reg): Fetch register from + current regcache when frame is NULL. + (mips_init_extra_frame_info): Pass NULL explicitly for parameter + that must be NULL. + (mips_get_saved_register): Call generic_unwind_get_saved_register() + instead of frame_register_unwind(). + +2003-02-20 Andrew Cagney <ac131313@redhat.com> + + * remote-sim.c (gdbsim_insert_breakpoint) + (gdbsim_remove_breakpoint): Delete #ifdef SIM_HAS_BREAKPOINTS + code. + +2003-02-20 Andrew Cagney <ac131313@redhat.com> + + * remote.c (_initialize_remote): Add commands "set/show remote + hardware-watchpoint-limit" and "set/show remote + hardware-breakpoint-limit". + (remote_hw_watchpoint_limit): Initialize to -1. + (remote_hw_breakpoint_limit): Ditto. + (remote_check_watch_resources): Treat a limit of -1 as unlimited. + +2003-02-19 Raoul Gough <RaoulGough@yahoo.co.uk> + + * coff-pe-read.c: New file - support reading of minimal symbols from a + portable executable using the export table. + * coff-pe-read.h: New file. + * coffread.c: Include coff-pe-read.h. + (coff_symtab_read): Call read_pe_exported_syms iff no recognized + debugging symbols found. + * Makefile.in (SFILES): Add coff-pe-read.o. + (coff_pe_read_h): Define. + (COMMON_OBS): Add coff-pe-read.o. + (coffread.o): Add coff_pe_read_h dependency. + (coff-pe-read.o): New target. + +2003-02-19 David Carlton <carlton@math.stanford.edu> + + * Makefile.in (SFILES): Add block.c. + (block_h): New. + (COMMON_OBS): Add block.o. + (block.o): New. + (x86-64-tdep.o): Add $(block_h). + (values.o, valops.o, tracepoint.o, symtab.o, symmisc.o, symfile.o) + (stack.o, printcmd.o, p-exp.tab.o, parse.o, objfiles.o) + (objc-exp.tab.o, objc-lang.o, nlmread.o, mips-tdep.o, mdebugread.o) + (m2-exp.tab.o, linespec.o, jv-lang.o, jv-exp.tab.o, infcmd.o) + (f-valprint.o, findvar.o, f-exp.tab.o, expprint.o, coffread.o) + (c-exp.tab.o, buildsym.o, breakpoint.o, blockframe.o, ax-gdb.o) + (alpha-tdep.o, ada-lang.o, ada-exp.tab.o, mi-cmd-stack.o): Ditto. + * value.h: Add opaque declaration for struct block. + * parser-defs.h, objc-lang.h, buildsym.h, breakpoint.h: Ditto. + * ada-lang.h: Ditto. + * x86-64-tdep.c: #include "block.h" + * values.c, valops.c, tracepoint.c, symtab.c, symmisc.c: Ditto. + * symfile.c, stack.c, printcmd.c, p-exp.y, parse.c: Ditto. + * objfiles.c, objc-exp.y, objc-lang.c, nlmread.c: Ditto. + * mips-tdep.c, mdebugread.c, m2-exp.y, linespec.c: Ditto. + * jv-lang.c, jv-exp.y, infcmd.c, f-valprint.c: Ditto. + * findvar.c, f-exp.y, expprint.c, coffread.c, c-exp.y: Ditto. + * buildsym.c, breakpoint.c, blockframe.c, ax-gdb.c: Ditto. + * alpha-tdep.c, ada-lang.c, ada-exp.y: Ditto. + * blockframe.c (blockvector_for_pc_sect): Move to "block.c". + (blockvector_for_pc, block_for_pc_sect, block_for_pc): Ditto. + * symtab.c (block_function): Ditto. + (contained_in): Ditto. + * frame.h: Move block_for_pc and block_for_pc_sect declarations to + block.h. Add opaque declaration for struct block. + * symtab.h: Move block_function and contained_in declarations to + block.h. Add opaque declarations for struct block, struct + blockvector. + (struct block): Move to block.h. + (struct blockvector): Ditto. + (BLOCK_START, BLOCK_END, BLOCK_FUNCTION, BLOCK_SUPERBLOCK) + (BLOCK_GCC_COMPILED, BLOCK_HASHTABLE, BLOCK_NSYMS, BLOCK_SYM) + (BLOCK_BUCKETS, BLOCK_BUCKET, BLOCK_HASHTABLE_SIZE) + (ALL_BLOCK_SYMBOLS, BLOCK_SHOULD_SORT, BLOCKVECTOR_NBLOCKS) + (BLOCKVECTOR_BLOCK, GLOBAL_BLOCK, STATIC_BLOCK, FIRST_LOCAL_BLOCK): + Ditto. + * block.c: New file. + * block.h: New file. + +2003-02-19 Theodore A. Roth <troth@openavr.org> + + * avr-tdep.c (avr_extract_return_value): Remove function. + (avr_store_return_value): Remove function. + (avr_extract_struct_value_address): Remove function. + (avr_gdbarch_init): Remove set_gdbarch_deprecated_*() calls. + +2003-02-19 Andrew Cagney <ac131313@redhat.com> + + * rs6000-tdep.c: Include "gdb_assert.h". + (registers_e500): Add "acc" and "spefscr". + (PPC_GPRS_PSEUDO_REGS): Remove trailing comma. + (rs6000_gdbarch_init): Update initialization of ppc_gp0_regnum, + ppc_gplast_regnum, sp_regnum and fp_regnum. Check that gp0_regnum + really is "r0". + (registers_e500): Mark the "acc" as a 64 bit (from Jim Willson). + +2003-02-18 Keith Seitz <keiths@redhat.com> + + * Makefile.in: Add gdbtk-interps.c. + +2003-02-18 Kevin Buettner <kevinb@redhat.com> + + * sparc-tdep.c (sparc_frame_chain): Adjust return value. + * config/sparc/tm-sparc.h (init_frame_pc_noop): Declare. + +2003-02-18 Andrew Cagney <cagney@redhat.com> + + * symtab.h (struct objfile): Add opaque declaration. + +2003-02-18 Elena Zannoni <ezannoni@redhat.com> + + From Jim Ingham <jingham@apple.com>: + * dbxread.c (process_one_symbol): Use last_function_start rather + than function_start_offset to find the real beginning of the + current function. The latter is just the text section offset on + some systems, the former is always the real function start. + +2003-02-17 Andrew Cagney <cagney@redhat.com> + + * configure.in: Revert ${target} != ${host}. + +2003-02-17 Andrew Cagney <ac131313@redhat.com> + + * configure.in (Makefile): Use the test ${target} != ${host}, + instead of the absence of the "nm.h" file, to determine of the + configuration non-native. + * configure: Regenerate. + +2003-02-14 Elena Zannoni <ezannoni@redhat.com> + + From Brian Ford <ford@vss.fsi.com> + + * cli/cli-decode.c (lookup_cmd_composition) [TUI]: Properly + conditionalize tui_active test. + (lookup_cmd_1): Ditto. + +2003-02-14 Mark Kettenis <kettenis@gnu.org> + + * configure.in: Add check for _etext. + * maint.c (maintenance_set_profile_cmd): Use etext if _etext isn't + available. + * config.in, configure: regenerated. + +2003-02-14 Daniel Jacobowitz <drow@mvista.com> + + * dwarf2read.c (dwarf2_get_pc_bounds): Offset addresses by base. + +2003-02-14 Andrew Cagney <ac131313@redhat.com> + + * main.c (tui_version): Delete variable. + (captured_main): When --tui, set interpreter_p to "tui" instead of + enabling tui_version. + * printcmd.c (display_command) [TUI]: Test tui_active instead of + tui_version. + * cli/cli-decode.c (lookup_cmd_composition): Ditto. + * cli/cli-cmds.c (disassemble_command): Ditto. + * defs.h (tui_version): Delete declaration. + * Makefile.in (SUBDIR_TUI_SRCS): Add "tui/tui-interp.c". + (tui-interp.o): Add rules. + (SUBDIR_TUI_OBS): Add "tui-interp.o". + +2003-02-14 Christopher Faylor <cgf@redhat.com> + + * win32-nat.c (register_loaded_dll): Correctly set address range for + just-loaded dll. + +2003-02-12 Jason Molenda (jmolenda@apple.com) + + * symmisc.c (print_objfile_statistics): Include information about + the number of psymtabs and symtabs in each object file. + +2003-02-13 Keith R Seitz <keiths@redhat.com> + + * main.h (struct captured_main_args): Add interpreter_p. + * main.c (captured_main): Initialize interpreter_p from context. + * gdb.c (main): Set interpreter_p argument. + * Makefile.in (gdb.o): Add dependency for interps.h. + +2003-02-12 Andrew Cagney <ac131313@redhat.com> + + * event-top.c (cli_command_loop): Delete declaration. + (_initialize_event_loop): Delete function setting event_loop_hook. + * event-top.h (cli_command_loop): Declare. Update copyright. + (EVENT_TOP_H): Define. Wrap header in #ifdef EVENT_TOP_H. + * interps.c (current_interp_command_loop): When event_loop_p, call + cli_command_loop. + +2003-02-12 Andrew Cagney <ac131313@redhat.com> + + * interps.h (interp_command_loop_ftype): Change return type to + void. + +2003-02-12 Michal Ludvig <mludvig@suse.cz> + + * x86-64-tdep.c (x86_64_extract_return_value) + (x86_64_store_return_value): Use regcache instead of regbuf. + (x86_64_gdbarch_init): Change related set_gdbarch_* functions. + * x86-64-linux-nat.c (fill_gregset): Use regcache. + +2003-02-11 Andrew Cagney <ac131313@redhat.com> + + * acinclude.m4 (no_tcl): SUBST TCL_CC_SEARCH_FLAGS. + * aclocal.m4: Regenerate. + * configure: Regenerate. + + * Makefile.in (TCL): Use TCL_CC_SEARCH_FLAGS instead of + TCL_LD_SEARCH_FLAGS. + +2003-02-10 Michal Ludvig <mludvig@suse.cz> + + * dwarf2cfi.c: Reindented. + +2003-02-09 Andrew Cagney <ac131313@redhat.com> + + * interps.c (clear_interpreter_hooks): Convert function definition + to ISO C. + +2003-02-07 David Carlton <carlton@math.stanford.edu> + + * gdb_mbuild.sh: Delete extra shift after parsing '-f'. + +2003-02-07 Kevin Buettner <kevinb@redhat.com> + + * gdbtypes.h (struct main_type): Move ``length'' field from here... + (struct type): ...to here. + (TYPE_LENGTH): Adjust to reflect different location of ``length'' + field. + * gdbtypes.c (make_qualified_type): Set length on newly created type. + (replace_type): Set length on all type variants for a given type. + +2003-02-07 Andrew Cagney <ac131313@redhat.com> + + * sol-thread.c, hpux-thread.c: Include "gdb_stat.h" instead of + <sys/stat.h>. + * Makefile.in (sol-thread.o, hpux-thread.o): Update dependencies. + +2003-02-06 Andrew Cagney <ac131313@redhat.com> + + * Makefile.in (symm-nat.o): Update dependencies. + (sparc-nat.o, procfs.o, proc-api.o, ppc-linux-nat.o): Ditto. + (lynx-nat.o, ia64-linux-nat.): Ditto. + * symm-nat.c, sparc-nat.c, procfs.c, proc-api.c: Include + "gdb_wait.h" instead of <wait.h> or <sys/wait.h>. + * ppc-linux-nat.c, lynx-nat.c, ia64-linux-nat.c: Ditto. + + * Makefile.in (inflow_h): Define. + (procfs.o, inflow.o, procfs.o): Update dependencies. + * inftarg.c (child_stop): Delete extern declaration of + inferior_process_group. Include "inflow.h". + * procfs.c (procfs_stop): Ditto. Include "inflow.h". + * inflow.c (PROCESS_GROUP_TYPE): Move definitions from here ... + * inflow.h (PROCESS_GROUP_TYPE): ... to here. New file. + (our_process_group, inferior_process_group): Extern declarations. + + * procfs.c: Include "gdb_assert.h". + + * linux-proc.c: Include "gdb_stat.h" instead of <sys/stat.h>. + * cp-valprint.c (cp_print_value_fields): Eliminate STREQN. + * jv-typeprint.c (java_type_print_base): Ditto. + * typeprint.c (typedef_print): Eliminate STREQ. + * cli/cli-script.c (define_command, define_command): Ditto. + * main.c (captured_main): Ditto. + * values.c (lookup_internalvar): Ditto. + * utils.c (safe_strerror, parse_escape): Eliminate assignment + within `if' conditional. + * linespec.c (decode_line_2): Ditto. + * cli/cli-dump.c (bfd_openr_with_cleanup): Ditto. + (bfd_openw_with_cleanup): Ditto. + +2003-02-07 Mark Kettenis <kettenis@gnu.org> + + * x86-64-tdep.c (x86_64_init_abi): Set extract_return_value to + legacy_extract_return_value and store_return_value to + legacy_return_value. + +2003-02-06 Raoul Gough <RaoulGough@yahoo.co.uk> + + * win32-nat.c (get_relocated_section_addrs): New function. Find + section load addresses for symbol handling in relocated DLLs. + (solib_symbols_add): Open a bfd and call get_relocated_section_addrs. + +2003-02-05 Fred Fish <fnf@intrinsity.com> + + * remote-e7000.c (e7000_drain_command): Fix precedence problem with + '=' and '!='. + * rdi-share/ardi.c (wait_for_debug_message): Fix precedence problem + with '&' and '=='. + (angel_RDI_info): Ditto. + * infttrace.c (threads_continue_all_but_one): Fix precedence problem + with '&' and '!='. + (threads_continue_all_with_signals): Ditto. + +2003-02-05 Jim Ingham <jingham@apple.com> + Keith Seitz <keiths@redhat.com> + Elena Zannoni <ezannoni@redhat.com> + Andrew Cagney <ac131313@redhat.com> + + * Makefile.in (SUBDIR_CLI_OBS): Add "cli-interp.o". + (SUBDIR_CLI_SRCS): Add "cli/cli-interp.c". + (SUBDIR_MI_OBS): Add "mi-interp.o". + (SUBDIR_MI_SRCS): Add "mi/mi-interp.c". + (SFILES): Add "interps.c". + (COMMON_OBS): Add "interps.o". + (interps_h, mi_main_h): Define. + (interps.o, cli-interp.o, mi-interp.o): Add dependencies. + (mi-main.o, main.o, event-top.o): Update dependencies. + * cli/cli-interp.c: New file. + * interps.h, interps.c: New files. + * top.c: (gdb_init): Don't install the default interpreter, handed + by captured_main. + * main.c: Include "interps.h". + (interpreter_p): Note that it should malloc'ed. + (captured_command_loop): Call current_interp_command_loop. + (captured_main): Initialize interpreter_p to INTERP_CONSOLE. Use + xfree and xstrdup when updating interpreter_p. Install the + default interpreter. Add hack to stop mi1's copyright notice + being encoded. + * event-top.h (gdb_setup_readline): Declare. + (gdb_disable_readline): Declare. + * event-top.c: Include "interps.h". + (display_gdb_prompt): Call current_interp_display_prompt_p. + (gdb_setup_readline): Initialize gdb_stdout, gdb_stderr, + gdb_stdlog, and gdb_stdtarg. + (_initialize_event_loop): Don't call gdb_setup_readline. + * cli-out.c (cli_out_set_stream): New function. + * cli-out.h (cli_out_set_stream): Declare. + +2003-02-06 Mark Kettenis <kettenis@gnu.org> + + * configure.tgt (i[3456]86-*-sysv4.2*, i[3456]86-*-sysv4*, + i[3456]86-*-sysv5*, i[3456]86-*-sco3.2v5*): Remove. These are all + handled fine by i[3456]86-*sco* and i[3456]86-sysv*. + * config/i386/i386sco5.mt, config/i386/i386v4.mt, + config/i386/i386v42mp.mt: Removed. + +2003-02-05 Mark Kettenis <kettenis@gnu.org> + + * configure.tgt (*-*-solaris*): Set gdb_osabi to + GDB_OSABI_SOLARIS. + +2003-02-05 Michael Chastain <mec@shout.net> + + * PROBLEMS (i[3456]86-*-linux*): Warn about binutils + 2.12.1 and earlier versions. + +2003-02-05 Andrew Cagney <ac131313@redhat.com> + + Remove orphaned hosts, targets and files. + * config/i386/gdbserve.mt, config/m68k/nm-apollo68b.h: Delete. + * config/m68k/nm-hp300bsd.h, config/m68k/tm-apollo68b.h: Delete. + * config/m68k/tm-es1800.h, config/m68k/tm-hp300bsd.h: Delete. + * config/m68k/tm-mac.h, config/m68k/xm-apollo68b.h: Delete. + * config/pa/hpux1020.mt, config/pa/hpux11.mt: Delete. + * config/pa/hpux11w.mt, config/powerpc/gdbserve.mt: Delete. + * config/powerpc/ppcle-eabi.mt, config/powerpc/ppcle-sim.mt: Delete. + * config/powerpc/tm-ppc-sim.h, config/sparc/sp64sim.mt: Delete. + * config/sparc/tm-sp64sim.h: Delete. + * configure.host: Delete strongarm-*-*, xscale-*-*, and arm*-*-* + hosts. + * configure.tgt: Delete i[3456]86-*-sco3.2v4*, and + mips*-dec-mach3* targets. + +2003-02-04 Michael Chastain <mec@shout.net> + + * NEWS: Fix typo: sepcifying -> specifying. + +2003-02-04 Michael Chastain <mec@shout.net> + + * dwarfread.c: Add documentation on the state of dwarf-1, + looking towards obsoletion. + +2003-02-03 Michael Chastain <mec@shout.net> + + * config/djgpp/fnchange.lst: Add gdb/testsuite/gdb.c++/pr-1023.cc, + gdb/testsuite/gdb.c++/pr-1023.exp. + +2003-02-04 Andrew Cagney <ac131313@redhat.com> + + * values.c: Delete code conditional on IS_TRAPPED_INTERNALVAR. + * TODO: Delete reference to IS_TRAPPED_INTERNALVAR. + + * utils.c (init_page_info): Delete reference to MPW in comments. + * main.c (captured_main): Delete #ifdef MPW. + +2003-02-04 Andrew Cagney <ac131313@redhat.com> + + * NEWS: Note that the m32r-*-elf* is obsolete. + * monitor.c (monitor_expect): Obsolete reference to m32r. + * configure.tgt: Mark m32r-*-elf* as obsolete. + * MAINTAINERS: Mark m32k as obsolete. + * m32r-rom.c: Obsolete file. + * config/m32r/m32r.mt: Obsolete file. + * config/m32r/tm-m32r.h: Obsolete file. + * m32r-stub.c: Obsolete file. + * m32r-tdep.c: Obsolete file. + +2003-02-04 Andrew Cagney <ac131313@redhat.com> + + * NEWS: Mention that the z8k-zilog-none is obsolete. + * MAINTAINERS: Mark z8k as obsolete. + * configure.tgt: Obsolete the z8k-*-coff* target. + * config/z8k/z8k.mt: Obsolete file. + * config/z8k/tm-z8k.h: Obsolete file. + * z8k-tdep.c: Obsolete file. + +2003-02-04 Andrew Cagney <ac131313@redhat.com> + + * NEWS: Mention that the mn10200-elf is obsolete. + * configure.tgt: Obsolete mn10200-*-* target. + * breakpoint.c (update_breakpoints_after_exec): Update comment to + mention that the mn10200 is obsolete. + * breakpoint.h: Ditto. + * MAINTAINERS: Mark the mn10200-elf as obsolete. + * config/mn10200/mn10200.mt: Obsolete file. + * config/mn10200/tm-mn10200.h: Obsolete file. + * mn10200-tdep.c: Obsolete file. + +2003-02-04 Andrew Cagney <ac131313@redhat.com> + + * MAINTAINERS: Mark h8500 as obsolete. + * configure.tgt (h8500-*-*): Mark h8500 code as obsolete. + * findvar.c (value_from_register): Ditto. + * h8500-tdep.c: Mark file as obsolete. + * config/h8500/h8500.mt: Ditto. + * config/h8500/tm-h8500.h: Ditto. + * NEWS: Mention that h8500 is obsolete. + +2003-02-04 David Carlton <carlton@math.stanford.edu> + + * objfiles.c (allocate_objfile): Always set name. Add comment at + start of function. + * jv-lang.c (get_dynamics_objfile): Add comment. + +2003-02-04 David Carlton <carlton@math.stanford.edu> + + * symtab.h (SYMBOL_LINKAGE_NAME): Delete. + * printcmd.c (build_address_symbolic): Replace uses of + SYMBOL_LINKAGE_NAME by equivalent uses of SYMBOL_SOURCE_NAME, + SYMBOL_NAME, and asm_demangle. + Update copyright. + +2003-02-04 David Carlton <carlton@math.stanford.edu> + + * linespec.c (decode_compound): Extract code into + lookup_prefix_sym. + (lookup_prefix_sym): New function. + +2003-02-04 David Carlton <carlton@math.stanford.edu> + + * gdbtypes.h: Delete INTEGER_COERCION_BADNESS, + FLOAT_COERCION_BADNESS. + * gdbtypes.c (rank_one_type): Replace all uses of + INTEGER_COERCION_BADNESS by INTEGER_CONVERSION_BADNESS. + +2003-02-04 Jim Blandy <jimb@redhat.com> + + * dwarf2read.c (dwarf2_locate_sections): When we find a macro info + section, let dwarf_macinfo_section point to it, not + dwarf_loc_section. + +2003-02-04 Daniel Jacobowitz <drow@mvista.com> + + Pointed out by Anton Blanchard <anton@samba.org>. + * ppc-linux-tdep.c (insn_is_sigreturn): New function. + (ppc_linux_at_sigtramp_return_path): Use it. + +2003-02-04 Daniel Jacobowitz <drow@mvista.com> + + * defs.h (streq): Add prototype. + * utils.c (streq): New function. + + * dwarf2read.c (new_symbol): Use SYMBOL_SET_NAMES instead of + SYMBOL_NAME and SYMBOL_INIT_DEMANGLED_NAME. + * mdebugread.c (new_symbol): Likewise. + * stabsread.c (define_symbol): Likewise. + * coffread.c (process_coff_symbol): Likewise. + * dwarfread.c (new_symbol): Likewise. + + * minsyms.c (prim_record_minimal_symbol_and_info): Use + SYMBOL_SET_NAMES instead of setting SYMBOL_NAME. Set the language + here. + (install_minimal_symbols): Don't set SYMBOL_LANGUAGE or call + SYMBOL_INIT_DEMANGLED_NAME. + * objfiles.c: Include "hashtab.h". + (allocate_objfile): Call htab_set_functions_ex for the + demangled_names_hash. + (free_objfile): Call htab_delete for the demangled_names_hash. + * objfiles.h (struct htab): Add declaration. + (struct objfile): Add demangled_names_hash. + * symfile.c: Include "hashtab.h". + (reread_symbols): Call htab_delete for the demangled_names_hash. + (add_psymbol_to_list): Use SYMBOL_SET_NAMES instead of putting + SYMBOL_NAME in the bcache. + * symtab.c: Include "hashtab.h". Update comments. + (create_demangled_names_hash, symbol_set_names): New functions. + (symbol_find_demangled_name): New function, broken out from + symbol_init_demangled_names. + (symbol_init_demangled_names): Use it. + * symtab.h (SYMBOL_INIT_DEMANGLED_NAME): Add missing parentheses. + (SYMBOL_SET_NAMES): New macro. + (symbol_set_names): Add prototype. + +2003-02-03 Jim Blandy <jimb@redhat.com> + + Use a single, consistent representation for an empty minimal + symbol table in an objfile. + * objfiles.c (terminate_minimal_symbol_table): New function. + (allocate_objfile): Call it. + * objfiles.h (terminate_minimal_symbol_table): New declaration. + (ALL_MSYMBOLS): No need to test whether (objfile)->msymbols is + non-NULL. + * minsyms.c (lookup_minimal_symbol_by_pc_section): To see whether + objfile has minimal symbols, compare minimal_symbol_count to zero, + instead of comparing msymbols with NULL. + * objfiles.c (have_minimal_symbols): Same. + * solib-sunos.c (solib_add_common_symbols): Call + terminate_minimal_symbol_table. + * symfile.c (reread_symbols): Same. + +2003-02-03 Kevin Buettner <kevinb@redhat.com> + + * s390-tdep.c (s390_address_class_type_flags) + (s390_address_class_type_flags_to_name) + (s390_address_class_name_to_type_flags): New functions. + (s390_gdbarch_init): Define ADDRESS_CLASS_TYPE_FLAGS_TO_NAME, + ADDRESS_CLASS_NAME_TO_TYPE_FLAGS, and ADDRESS_CLASS_TYPE_FLAGS. + +2003-02-03 Michael Snyder <msnyder@redhat.com> + + * arm-tdep.c: Fix spell-o in comment. + +2003-02-03 Michal Ludvig <mludvig@suse.cz> + + * dwarf2cfi.c (pointer_encoding): Added new parameter. + * dwarf2cfi.c, dwarf2read.c: Changed all warnings and + error messages to contain BFD filename. + +2003-02-02 Elena Zannoni <ezannoni@redhat.com> + + Fix PR gdb/742 gdb/743 gdb/877 + * disasm.c (dump_insns): Use make_cleanup_ui_out_tuple_begin_end. + (do_mixed_source_and_assembly): Use + make_cleanup_ui_out_tuple_begin_end and + make_cleanup_ui_out_tuple_begin_end. + (do_mixed_source_and_assembly): Ditto. + * thread.c (do_captured_list_thread_ids): Ditto. + * ui-out.h (ui_out_table_begin, ui_out_list_begin, + ui_out_tuple_begin, ui_out_table_end, ui_out_list_end, + ui_out_tuple_end): Delete prototypes. + * ui-out.c (ui_out_list_begin, ui_out_tuple_begin, + ui_out_list_end, ui_out_tuple_end): Delete. + + From Kevin Buettner <kevinb@redhat.com>: + * ui-out.h (make_cleanup_ui_out_table_begin_end): New function. + * ui-out.c (make_cleanup_ui_out_table_begin_end) + (do_cleanup_table_end): New functions. + * breakpoint.c (print_it_typical, print_one_breakpoint, mention): + Use cleanups to invoke_ui_out_tuple_end(). + (breakpoint_1): Use cleanup to invoke ui_out_table_end(). + * cli/cli-setshow.c (cmd_show_list): Use + make_cleanup_ui_out_tuple_begin_end. + +2003-02-02 Andrew Cagney <ac131313@redhat.com> + + * frame.c (frame_unwind_register): New function. + (frame_unwind_unsigned_register): Use. + (frame_unwind_signed_register): Use. + (frame_read_register): New function. + * frame.h (frame_unwind_register): Declare. + (frame_read_register): Declare. + + * d10v-tdep.c (d10v_frame_pop): Rewrite. Use regcache_cooked_write + and frame_unwind_register instead of read_memory, write_register + and deprecated_write_register_bytes. + +2003-02-02 Andrew Cagney <ac131313@redhat.com> + + * frame.h: Note that namelen can be negative. + * frame.c (frame_map_name_to_regnum): When LEN is negative, use + NAME's length. + + * NEWS: Mention that the d10v's `regs' command is deprecated. + * d10v-tdep.c (d10v_gdbarch_init): Set print_registers_info. + (d10v_print_registers_info): New function. + (show_regs): Call d10v_print_registers_info. + (_initialize_d10v_tdep): Mark "show regs" command as deprecated. + +2003-02-02 Mark Kettenis <kettenis@gnu.org> + + * stack.c (print_frame_info): Restore call to annotate_frame_begin + lost in the previous patch. + +2003-02-01 Andrew Cagney <ac131313@redhat.com> + + From 2002-11-09 Jason Molenda (jason-cl@molenda.com) + * stack.c (print_frame_info_base): Output complete FRAME tuple + for synthesized frames. + +2003-02-02 Andrew Cagney <ac131313@redhat.com> + + * mips-nat.c (zerobuf): Delete. + (fetch_inferior_registers): Alloc local zerobuf. + (fetch_core_registers): Alloc local zerobuf. + * d10v-tdep.c (show_regs): Don't allocate a dynamic array using + MAX_REGISTER_RAW_SIZE or MAX_REGISTER_VIRTUAL_SIZE. + * thread-db.c (thread_db_store_registers): Ditto. + * sh-tdep.c (sh_do_register): Ditto. + * rom68k-rom.c (rom68k_supply_one_register): Ditto. + * remote-sim.c (gdbsim_store_register): Ditto. + * remote-mips.c (mips_wait, mips_fetch_registers): Ditto. + * remote-e7000.c (fetch_regs_from_dump): Ditto. + * monitor.c (monitor_supply_register): Ditto. + * mipsv4-nat.c (supply_gregset, supply_fpregset): Ditto. + * mips-nat.c (fetch_inferior_registers): Ditto. + * m68klinux-nat.c (fetch_register): Ditto. + * lynx-nat.c (fetch_inferior_registers): Ditto. + (fetch_inferior_registers): Ditto. + * irix4-nat.c (supply_gregset, supply_fpregset): Ditto. + * hpux-thread.c (hpux_thread_fetch_registers): Ditto. + (hpux_thread_store_registers): Ditto. + * hppah-nat.c (fetch_register): Ditto. + * hppab-nat.c (fetch_register): Ditto. + * hppa-tdep.c (pa_register_look_aside): Ditto. + (pa_print_fp_reg, pa_strcat_fp_reg): Ditto. + * dve3900-rom.c (fetch_bitmapped_register): Ditto. + +2003-02-01 Andrew Cagney <ac131313@redhat.com> + + * gdbarch.sh: Explictly specify all method levels. When a + variable with an empty level, provide a non-multi-arch default. + (BELIEVE_PCC_PROMOTION_TYPE): Set level to empty. + * gdbarch.h: Re-generate. + * stabsread.c (BELIEVE_PCC_PROMOTION_TYPE): Delete. Always defined. + * config/m68k/tm-sun3.h (BELIEVE_PCC_PROMOTION_TYPE): Define as 1 + +2003-02-01 Andrew Cagney <ac131313@redhat.com> + + * defs.h (host_pointer_to_address): Delete declaration. + (address_to_host_pointer): Delete declaration. + * utils.c (host_pointer_to_address): Delete function. + (address_to_host_pointer): Delete function. + * procfs.c (procfs_address_to_host_pointer): New function. + * procfs.c (proc_set_watchpoint): Use. + (procfs_can_use_hw_breakpoint): Update comments. + * somsolib.c (hpux_address_to_host_pointer_hack): New function. + (som_solib_add): Use. + * hppa-tdep.c (hppa_pointer_to_address_hack): New function. + * hppa-tdep.c (unwind_command): Use. + +2003-02-01 Andrew Cagney <ac131313@redhat.com> + + * gdb_dirent.h: Mark up valid uses of <dirent.h>, d_namelen and + strlen d_name. + + * main.c (captured_main): Delete #ifdef ADDITIONAL_OPTIONS, + ADDITIONAL_OPTION_CASES, and ADDITIONAL_OPTION_HANDLER code. + (print_gdb_help): Delete #ifdef ADDITIONAL_OPTION_HELP code. + * stabsread.c (DBX_PARM_SYMBOL_CLASS): Delete macro. + (define_symbol): Update. + * symfile.c (generic_load): Remove references to nindy. + * symtab.c: Remove references to nindy. + +2003-02-01 Andrew Cagney <ac131313@redhat.com> + + * infcmd.c (print_float_info): Delete code conditional on + FLOAT_INFO. + * config/nm-lynx.h: Delete #undef FLOAT_INFO. Update copyright. + * config/m68k/nm-apollo68b.h: Ditto. + * config/i386/tm-ptx.h (FLOAT_INFO): Delete. Update copyright. + * config/ns32k/nm-nbsd.h (FLOAT_INFO): Ditto. + * config/i386/tm-symmetry.h (FLOAT_INFO): Ditto. + +2003-02-01 Mark Kettenis <kettenis@gnu.org> + + * config/i386/tm-i386os9k.h: Removed. + + * configure.host (i[3456]86-*-isc*): Set gdb_host to i386v. + Remove i[3456]86-*-sysv3.2* and i[3456]86-*-sysv32* entries since + they're identical to i[3456]86-*-sysv* now. + * config/i386/i386v32.mh: Removed. + * config/i386/xm-i386v32.h: Removed. + * config/i386/xm-i386sco.h (U_FPSTATE): Remove macro. + + * config/i386/i386mk.mt, config/i386/i386mk.mh: Removed. + + * config/i386/i386dgux.mh: Removed. + * configure.host (i[3456]86-*-dgux): Set gdb_host to i386v4. + + * configure.in: Fix typo. + * configure: Regenerated. + +2003-01-31 David Carlton <carlton@math.stanford.edu> + + * dwarf2read.c (dwarf2_locate_sections): Set + dwarf_ranges_section. + +2003-01-31 Andrew Cagney <ac131313@redhat.com> + + * objc-exp.y, c-exp.y, f-exp.y: Remove PTR casts. + * utils.c: Update comments documenting legitimate uses of PTR. + + * utils.c: Re-indent. + + * config/djgpp/fnchange.lst: Delete nindy files. + * nindy-share/ttyflush.c, nindy-share/stop.h: Delete files. + * nindy-share/nindy.c, nindy-share/env.h: Delete files. + * nindy-share/coff.h, nindy-share/block_io.h: Delete files. + * nindy-share/b.out.h, nindy-share/VERSION: Delete files. + * nindy-share/README, nindy-share/Onindy.c: Delete files. + * nindy-tdep.c, nindy-share/Makefile: Delete files. + * Makefile.in (init.c): Remove nindy references. + (saber_gdb): Delete rule. + (ALLDEPFILES): Delete hp300ux-nat.c, nindy-tdep.c, + nindy-share/Onindy.c, nindy-share/nindy.c, nindy-share/ttyflush.c, + and a68v-nat.c. + (hp300ux-nat.o, a68v-nat.o, ptx4-nat.o): Delete rules. + (Onindy.o, nindy.o, ttyflush.o, nindy-tdep.o): Delete rules. + (HFILES_NO_SRCDIR): Delete nindy-share/b.out.h, + nindy-share/block_io.h, nindy-share/coff.h, nindy-share/env.h, and + nindy-share/stop.h. + * hp300ux-nat.c, a68v-nat.c, ptx4-nat.c: Delete files. + * saber.suppress: Delete file. + +2003-01-31 Daniel Jacobowitz <drow@mvista.com> + + * dbxread.c (stabs_data): New static variable. + (fill_symbuf): Support an in-memory buffer for stabs data. + (stabs_seek): New function. + (dbx_psymtab_to_symtab): Relocate the stabs data if necessary. + (read_ofile_symtab): Use stabs_seek. + (elfstab_build_psymtabs): Take an asection* instead of + an offset and size. Relocate the stabs data if necessary. + Save the section* for dbx_psymtab_to_symtab. + * dwarf2read.c: Add section variables for each debug section. + (dwarf2_locate_sections): Fill them in. + (dwarf2_read_section): Take an asection* argument. + Relocate the section contents if necessary. + (dwarf2_build_psymtabs, dwarf2_build_psymtabs_easy): Update callers. + * dwarf2cfi.c (parse_frame_info): Take a section argument and pass + it to dwarf2_read_section. + (dwarf2_build_frame_info): Update callers. + * elfread.c (elf_symfile_read): Update call to + elfstab_build_psymtabs. + * gdb-stabs.h (struct dbx_symfile_info): Add stab_section. + (DBX_STAB_SECTION): New macro. + * stabsread.h (elfstab_build_psymtabs): Update prototype. + * symfile.c (symfile_dummy_outputs): New function. + (symfile_relocate_debug_section): New function. + * symfile.h (symfile_relocate_debug_section): Add prototype. + +2003-01-31 Richard Henderson <rth@redhat.com> + + * alpha-nat.c (REGISTER_PTRACE_ADDR): Merge into ... + (register_addr): ... here. Support ALPHA_UNIQUE_REGNUM. + (fetch_elf_core_registers): Support ALPHA_UNIQUE_REGNUM. + * alpha-tdep.c (alpha_register_name): Add "unique". + * alpha-tdep.h (ALPHA_NUM_REGS): Increment. + (ALPHA_UNIQUE_REGNUM): New. + * config/alpha/nm-linux.h (ALPHA_UNIQUE_PTRACE_ADDR): New. + +2003-01-31 Andrew Cagney <ac131313@redhat.com> + + * README: Remove reference to Ericsson 1800 monitor. + * Makefile.in (remote-es.o): Delete rule. + (ALLDEPFILES): Delete remote-es.c. + * remote-es.c: Delete file. + * config/m68k/es1800.mt: Delete file. + * config/djgpp/fnchange.lst: Update. + * configure.tgt: Delete m68*-ericsson-* target. + +2003-01-31 Adam Fedor <fedor@gnu.org> + + * infrun.c (handle_inferior_event): Rename 'tmp' to real_stop_pc. + Remove duplicate/shadowing variable of same name. + +2003-01-30 Jim Blandy <jimb@redhat.com> + + * symfile.c (find_separate_debug_file): Assert that the objfile's + directory name we compute ends with a slash, and then assume that + that's so everywhere we use it. + +2003-01-30 Daniel Jacobowitz <drow@mvista.com> + + * valops.c (value_assign): Flush frame cache after stores to memory + also. + +2003-01-30 Andrew Cagney <ac131313@redhat.com> + + * Makefile.in (mon960-rom.o): Delete rule. + * mon960-rom.c: Delete file. + +2003-01-30 Andrew Cagney <ac131313@redhat.com> + + * d10v-tdep.c: Include "frame-unwind.h". + (d10v_gdbarch_init): Append d10v_frame_p to the unwind predicate + list. + (next_addr, uses_frame): Delete. + (struct d10v_unwind_cache): Define. + (prologue_find_regs): Add struct d10v_unwind_cache info parameter. + Use info instead of next_addr and uses_frame globals. + (d10v_frame_init_saved_regs): Delete function. + (d10v_init_extra_frame_info): Delete function. + (d10v_gdbarch_init): Do not initialize init_extra_frame_info, + frame_init_saved_regs or pop_frame, frame_chain, frame_chain_valid, + init_frame_pc or frame_saved_pc. + (d10v_pop_frame): Delete function. + (do_d10v_pop_frame): Delete function. + (d10v_frame_chain): Delete function. + (d10v_frame_chain_valid): Delete function. + (d10v_frame_pc_unwind): New function. + (d10v_frame_id_unwind): New function. + (saved_regs_unwinder): New function. + (d10v_frame_register_unwind): New function. + (d10v_frame_pop): New function. + (d10v_frame_unwind): New variable. + (d10v_frame_p): New function. + (d10v_frame_saved_pc): Delete function. + * Makefile.in (d10v-tdep.o): Update dependencies. + +2003-01-30 J. Brobecker <brobecker@gnat.com> + + * config/pa/tm-hppa64.h (CALL_DUMMY_LOCATION): Remove #undef + causing some regressions due to a change in the default value + for this macro. + +2003-01-29 Richard Henderson <rth@redhat.com> + Elena Zannoni <ezannoni@redhat.com> + Daniel Jacobowitz <drow@mvista.com> + + Fix PR gdb/961. + * dwarf2read.c (dwarf_ranges_offset, dwarf_ranges_size): New + variables. + (RANGES_SECTION): New. + (dwarf_ranges_buffer): New variable. + (struct comp_unit_head): Add member "die". + (struct dwarf2_pinfo): Add dwarf_ranges_buffer, dwarf_ranges_size. + (DWARF_RANGES_BUFFER, DWARF_RANGES_SIZE): New. + (dwarf2_has_info): Init dwarf_ranges_offset and dwarf_ranges_size. + (dwarf2_locate_sections): Likewise. + (dwarf2_build_psymtabs): Read .debug_ranges. + (dwarf2_build_psymtabs_hard): Swap dwarf_ranges out. + (psymtab_to_symtab_1): Swap dwarf_ranges in. Set cu_header.die. + (dwarf2_get_pc_bounds): New cu_header argument; adjust all callers. + Look for DW_AT_ranges and return the bounding box. + +2003-01-29 Brian Ford <ford@vss.fsi.com> + + * win32-nat.c (cygwin_pid): Removed as unused. + (child_attach): Try fall back to Cygwin pid. + +2003-01-29 Jim Blandy <jimb@redhat.com> + + * objfiles.h (struct objfile): Doc fix. + +2003-01-29 Andrew Cagney <ac131313@redhat.com> + + * frame.c (frame_saved_regs_id_unwind): Assert FRAME_CHAIN_P. + (legacy_get_prev_frame): Assert FRAME_CHAIN_P. + (get_prev_frame): When FRAME_CHAIN_P, call legacy_get_prev_frame. + (frame_saved_regs_pc_unwind): Assert FRAME_SAVED_PC_P. + * gdbarch.sh (FRAME_CHAIN): Change to a function with predicate. + (FRAME_SAVED_PC): Change to a function with predicate. + * gdbarch.h, gdbarch.c: Re-generate. + +2003-01-28 Andrew Cagney <ac131313@redhat.com> + + * hppah-nat.c (child_pid_to_exec_file): Don't use boolean. + + * complaints.c (complain): Delete function. + * complaints.h (struct deprecated_complaint): Delete definition. + (complain): Delete declaration. + +2003-01-28 Kevin Buettner <kevinb@redhat.com> + + * mips-tdep.c (mips_init_extra_frame_info): Return early for + dummy frames. + +2003-01-27 Andrew Cagney <ac131313@redhat.com> + + * sentinel-frame.h, sentinel-frame.c: New files. + * Makefile.in (frame.o): Update dependencies. + (SFILES): Add sentinel-frame.c. + (sentinel_frame_h): Define. + (COMMON_OBS): Add sentinel-frame.o. + (sentinel-frame.o): Specify dependencies. + * frame.c: Include "sentinel-frame.h". + (frame_register_unwind): Rewrite assuming that there is always a a + ->next frame. + (frame_register, generic_unwind_get_saved_register): Ditto. + (frame_read_unsigned_register, frame_read_signed_register): Ditto. + (create_sentinel_frame, unwind_to_current_frame): New functions. + (get_current_frame): Rewrite using create_sentinel_frame and + unwind_to_current_frame. When possible, always create a frame. + (create_new_frame): Set next to the sentinel frame. + (get_next_frame): Rewrite. Don't go below the level 0 frame. + (deprecated_update_frame_pc_hack): Update the next frame's PC and + ID cache when necessary. + (frame_saved_regs_id_unwind): Use frame_relative_level. + (deprecated_generic_get_saved_register): Use frame_relative_level, + get_frame_saved_regs, get_frame_pc, get_frame_base and + get_next_frame. + (frame_saved_regs_register_unwind): Use get_frame_saved_regs and + frame_register. + +2003-01-27 Daniel Jacobowitz <drow@mvista.com> + + * gdb_indent.sh: Add -T bfd and -T asection to the indent arguments. + +2003-01-27 Daniel Jacobowitz <drow@mvista.com> + + * maint.c [! (HAVE_MONSTARTUP && HAVE__MCLEANUP)] + (maintenance_set_profile_cmd): Use error () instead of warning (). + +2003-01-27 Daniel Jacobowitz <drow@mvista.com> + + * configure.in: Check that -pg works if using --enable-profiling. + Check for monstartup and _mcleanup regardless of --enable-profiling. + * maint.c: Check for monstartup and _mcleanup before using them. + * config.in: Regenerated. + * configure: Regenerated. + +2003-01-24 Nick Clifton <nickc@redhat.com> + + * Add sh2e support: + + 2002-04-02 Elena Zannoni <ezannoni@redhat.com> + + * gdb/sh-tdep.c (sh_sh2e_register_name): New. + (sh2e_show_regs): New. + (sh_gdbarch_init): Handle bfd_mach_sh2e. + * config/sh/tm-sh.h: Added sh2e to comments. + +2003-01-23 Jim Blandy <jimb@redhat.com> + + * symfile.c (syms_from_objfile): Don't print the "(no debugging + symbols found)" message here; we haven't checked for a separate + debug info file yet, so we don't know yet. + (symbol_file_add_with_addrs_or_offsets): Print it here, after + we've looked everywhere. Also, there's no need to print a special + message when we're loading the separate debug info file: the one + symbol_file_add prints is fine. + +2003-01-23 Alexander Larsson <alexl@redhat.com> + Jim Blandy <jimb@redhat.com> + + Add support for executables whose debug info has been separated + out into a separate file, leaving only a link behind. + * objfiles.h (struct objfile): New fields: separate_debug_objfile + and separate_debug_objfile_backlink. + (put_objfile_before): New declaration. + * symfile.c: #include "filenames.h". + (symbol_file_add_with_addrs_or_offsets): If this objfile has its + debug info in a separate file, read that, too. Save the addrs + argument, so we can use it again to read the separated debug info; + syms_from_objfile modifies the table we pass it. + (reread_symbols): After re-reading an objfile, call + reread_separate_symbols to refresh its separate debug info + objfile, if it has one. + (reread_separate_symbols, find_separate_debug_file, + get_debug_link_info, separate_debug_file_exists): New functions. + (debug_file_directory): New global var. + (_initialize_symfile): Initialize debug_file_directory, and + provide the new `set debug-file-directory' command to let the user + change it. + * objfiles.c (free_objfile): If this objfile has its debug info in + a separate objfile, free that one too. If this is itself a + separate debug info objfile, clear our parent's backlink. + (put_objfile_before): New function. + * utils.c (gnu_debuglink_crc32): New function. + * defs.h (gnu_debuglink_crc32): New declaration. + * Makefile.in (symfile.o): Note dependency on "filenames.h". + * configure.in: Handle --with-separate-debug-dir config option. + * acinclude.m4 (AC_DEFINE_DIR): New macro. + * acconfig.h (DEBUGDIR): New macro. + * configure, aclocal.m4, config.in: Regenerated. + +2003-01-22 Jim Blandy <jimb@redhat.com> + + * symfile.c (symbol_file_add_with_addrs_or_offsets): New function, + like the old symbol_file_add, but taking new arguments: you can + now pass in either a `struct section_addr_info' list to say where + each section is loaded, or a `struct section_offsets' table. Pass + these new arguments through to syms_from_objfile as appropriate. + (symbol_file_add): Just call symbol_file_add_with_addrs_or_offsets, + with the appropriate quiescent values for the new arguments. + + * symfile.c: #include "gdb_assert.h". + (syms_from_objfile): Add the ability to pass in a section offset + table directly, as an alternative to the section_addr_info table. + Document arguments better. + (symbol_file_add): Pass extra arguments to syms_from_objfile. + * symfile.h (syms_from_objfile): Update declaration. + * rs6000-nat.c (objfile_symbol_add): Pass new arguments to + syms_from_objfile. + * Makefile.in (symfile.o): List dependency on $(gdb_assert_h). + +2003-01-22 Daniel Jacobowitz <drow@mvista.com> + + Original patch by Tom Tromey <tromey@cygnus.com> and + Jason Molenda <jmolenda@apple.com>. + * Makefile.in (PROFILE_CFLAGS): Substitute from configure. + (INTERNAL_LDFLAGS): Don't include PROFILE_CFLAGS. + * NEWS: Mention profiling. + * configure.in (--enable-gdbtk): Fix typo. + (--enable-profiling): New. Set PROFILE_CFLAGS. + * maint.c (maintenance_set_profile_cmd): Remove NOTYET. + Fill in function. + (profiling_state): New variable. + (mcleanup_wrapper): New function. + (_initialize_maint): Remove NOTYET, fix call to + add_setshow_boolean_cmd for "maint set profile". + * configure: Regenerated. + +2003-01-21 Martin M. Hunt <hunt@redhat.com> + + * Makefile.in (install-gdbtk): Install PNG images too. + +2003-01-21 Andrew Cagney <ac131313@redhat.com> + + * exec.c (text_start): Delete global variable. + (exec_file_attach): Make text_start local to the function. + * inferior.h (BEFORE_TEXT_END, AFTER_TEXT_END): Delete macros. + * valops.c (hand_function_call): Delete code that handles + BEFORE_TEXT_END and AFTER_TEXT_END. + * gdbarch.sh (CALL_DUMMY_LENGTH): Test call_dummy_length instead + of CALL_DUMMY_LOCATION. + * gdbarch.c: Regenerate. + * inferior.h (deprecated_pc_in_call_dummy_before_text_end) + (deprecated_pc_in_call_dummy_after_text_end): Delete declaration. + * blockframe.c (deprecated_pc_in_call_dummy_before_text_end) + (deprecated_pc_in_call_dummy_after_text_end): Delete functions. + (text_end): Delete extern declaration. + +2003-01-21 Andrew Cagney <ac131313@redhat.com> + + * frame.h (FRAME_OBSTACK_ZALLOC): Define. + * blockframe.c (backtrace_below_main): Move to "frame.c". + (frame_chain_valid): Delete check for backtrace_below_main. + (_initialize_blockframe): Delete initialization, move ``set + backtrace-below-main'' command to "frame.c". + (do_flush_frames_sfunc): Delete function. + * frame.c: Include "command.h" and "gdbcmd.h". + (frame_type_from_pc): New function. + (create_new_frame): Use frame_type_from_pc. + (legacy_get_prev_frame): New function. + (get_prev_frame): Rewrite. When an old style frame, call + legacy_get_prev_frame. Otherwize, unwind the PC first. + (_initialize_frame): Add ``set backtrace-below-main'' command. + * Makefile.in (frame.o): Update dependencies. + +2003-01-19 Andrew Cagney <ac131313@redhat.com> + + * config/pa/tm-hppa.h (DEPRECATED_DO_REGISTERS_INFO): Rename + DEPRECATED_REGISTERS_INFO. + +2003-01-19 Andrew Cagney <ac131313@redhat.com> + + * MAINTAINERS: Replace `Blanket Write Privs' with `Global + Maintainers'. Update `Various Maintainers'. + +2003-01-19 Andrew Cagney <ac131313@redhat.com> + + * frame.c (frame_saved_regs_pop): Assert POP_FRAME_P. + * gdbarch.sh (POP_FRAME): Change to function with predicate. + Suppress actual parameters when `-'. + * gdbarch.h, gdbarch.c: Regenerate. + +2003-01-19 Andrew Cagney <ac131313@redhat.com> + + * d10v-tdep.c (d10v_frame_saved_pc, d10v_frame_chain): Restore + code handling dummy frames. + +2003-01-19 Andrew Cagney <ac131313@redhat.com> + + * frame-unwind.h (frame_unwind_pop_ftype): Declare. + (struct frame_unwind): Add field pop. + * frame.h (frame_pop): Declare. + * frame.c (frame_saved_regs_pop): New function. + (trad_frame_unwinder): Add frame_saved_regs_pop. + (frame_pop): New function. + * dummy-frame.c (dummy_frame_pop): New function. + (discard_innermost_dummy): New function. + (generic_pop_dummy_frame): Use discard_innermost_dummy. + (dummy_frame_unwind): Add dummy_frame_pop. + * infrun.c (normal_stop): Call frame_pop instead of POP_FRAME. + * valops.c (hand_function_call): Ditto. + * stack.c (return_command): Ditto. + +2003-01-18 Andrew Cagney <ac131313@redhat.com> + + * cris-tdep.c: Fix function declaration indentation. + * dwarfread.c, gdbcore.h, gdbtypes.h, i386v-nat.c: Ditto. + * mips-tdep.c, monitor.h, parse.c, proc-utils.h: Ditto. + * rs6000-nat.c, ser-go32.c, somread.c, stabsread.c: Ditto. + * symfile.h, symtab.h, target.c, target.h, value.h: Ditto. + * xcoffread.c, config/pa/tm-hppa.h: Ditto. + * config/sparc/tm-sp64.h, config/sparc/tm-sparc.h: Ditto. + +2003-01-18 Michael Chastain <mec@shout.net> + + * README (Unpacking and Installation -- quick overview): + Warn against ".../gdb-5.3/gdb/configure". + +2003-01-18 Andrew Cagney <ac131313@redhat.com> + + * dummy-frame.h (dummy_frame_id_unwind): Delete declaration. + (dummy_frame_pc_unwind, dummy_frame_register_unwind): Ditto. + (struct frame_unwind): Declare opaque. + (dummy_frame_p): Declare function. + * dummy-frame.c (dummy_frame_id_unwind): Make static. + (dummy_frame_pc_unwind, dummy_frame_register_unwind): Ditto. + * dummy-frame.c: Include "frame-unwind.h". + (dummy_frame_p): New function. + (dummy_frame_unwind): New variable. + * frame.c: Include "frame-unwind.h". + (frame_pc_unwind, frame_id_unwind, frame_register_unwind): Update + to use the new unwind field. + (set_unwind_by_pc): Delete function. + (create_new_frame, get_prev_frame): Set unwind field using + frame_unwind_find_by_pc. + (trad_frame_unwind, trad_frame_unwinder): New variables. + * frame.h (trad_frame_unwind): Declare variable. + (frame_id_unwind_ftype): Delete declaration. + (frame_pc_unwind_ftype, frame_register_unwind_ftype): Ditto. + (struct frame_unwind): Declare opaque. + (struct frame_info): Replace the fields id_unwind, pc_unwind and + register_unwind with a single unwind pointer. + * frame-unwind.h, frame-unwind.c: New files. + * Makefile.in (SFILES): Add frame-unwind.c. + (frame_unwind_h): Define. + (COMMON_OBS): Add frame-unwind.o. + (frame-unwind.o): Specify dependencies. + (frame.o, dummy-frame.o): Update dependencies. + +2003-01-18 Andrew Cagney <ac131313@redhat.com> + + * ada-valprint.c: Eliminate PTR. + * breakpoint.c, corelow.c, cris-tdep.c, dbxread.c: Ditto. + * defs.h, dve3900-rom.c, dwarf2read.c, dwarfread.c: Ditto. + * exec.c, hppa-tdep.c, hpread.c, infcmd.c, mdebugread.c: Ditto. + * objfiles.c, objfiles.h, ocd.c, remote-es.c: Ditto. + * remote-mips.c, remote-sds.c, remote-vx.c: Ditto. + * solib-svr4.c, solib.c, stack.c, symfile.c, symfile.h: Ditto. + * symmisc.c, v850ice.c, xcoffread.c, cli/cli-script.c: Ditto. + +2003-01-17 Andrew Cagney <ac131313@redhat.com> + + * main.c (captured_main): Don't use PTR. + * cp-valprint.c (cp_print_class_method): Replace STREQ with strcmp. + * gdbtypes.c (lookup_primitive_typename): Ditto. + (lookup_struct_elt_type): Ditto. + * f-valprint.c (info_common_command): Ditto. + (list_all_visible_commons): Ditto. + * jv-typeprint.c (java_type_print_base): Ditto. + + * config/djgpp/fnchange.lst: Rename mi1-var-block.exp, + mi1-var-child.exp, mi1-var-cmd.exp and mi1-var-display.exp. + Rename opcodes/iq2000-desc.c and opcodes/iq2000-dis.c. Rename + i386-interix-nat.c and i386-interix-tdep.c. Rename + m68klinux-nat.c and m68klinux-tdep.c. Rename + config/mips/tm-linux.h and config/mips/tm-linux64.h. Rename + bfd/po/.cvsignore and opcodes/po/.cvsignore. Rename + gdb/objc-exp.tab.c and gdb/ada-exp.tab.c + * main.c (captured_main): Use xfree, not free. + +2003-01-16 Andrew Cagney <ac131313@redhat.com> + + * frame.h (frame_id_unwind_ftype): Change type so that the frame's + ID back using a parameter. + * frame.c (frame_id_unwind): Update call. + (frame_saved_regs_id_unwind): Update. + * dummy-frame.c (dummy_frame_id_unwind): Update function. + * dummy-frame.h (struct frame_id): Add opaque declaration. + (dummy_frame_id_unwind): Update declaration. + +2003-01-15 Andrew Cagney <ac131313@redhat.com> + + * sparc-tdep.c: Delete reference to PRINT_REGISTER_HOOK. + +2003-01-15 Stephen P. Smith <ischis2@cox.net> + + * MAINTAINERS (Stephen P. Smith): Updated email address. + +2003-01-14 Elena Zannoni <ezannoni@redhat.com> + + Fix PR gdb/898 + * breakpoint.c (until_break_command): Add new argument. Use it to + decide whether to stop only at the current frame or not. + * breakpoint.h (until_break_command): Update prototype. + * infcmd.c (until_command): Add new argument to until_break_command + call. + (advance_command): New function. + (_initialize_infcmd): Update help string for 'until' command. + Add new 'advance' command. + +2003-01-14 David Carlton <carlton@math.stanford.edu> + + * linespec.c (decode_line_1): Normalize comments. + (set_flags): Ditto. + (locate_first_half): Ditto. + (decode_compound): Ditto. + (symtab_from_filename): Ditto. + (decode_all_digits): Ditto. + (decode_dollar): Ditto. + (find_methods): Ditto. + (find_toplevel_char): Ditto. + +2003-01-13 Andrew Cagney <ac131313@redhat.com> + + * ax-gdb.c, c-valprint.c, charset.c, corefile.c: Update copyright. + * demangle.c, disasm.c, dwarf2cfi.c, dwarfread.c: Update copyright. + * elfread.c, eval.c, expprint.c, expression.h: Update copyright. + * f-typeprint.c, findvar.c, gcore.c, gdb_mbuild.sh: Update copyright. + * gdbtypes.h, gnu-v2-abi.c, inferior.h, inftarg.c: Update copyright. + * language.c, language.h, m32r-tdep.c: Update copyright. + * mn10200-tdep.c, scm-lang.c, scm-lang.h: Update copyright. + * somsolib.c, somsolib.h, symfile.c, symtab.h: Update copyright. + * thread-db.c, typeprint.c, utils.c, valarith.c: Update copyright. + * values.c, win32-nat.c, x86-64-linux-nat.c: Update copyright. + * x86-64-linux-tdep.c, z8k-tdep.c: Update copyright. + * cli/cli-decode.h, config/h8500/tm-h8500.h: Update copyright. + +2003-01-13 Elena Zannoni <ezannoni@redhat.com> + + * stabsread.h (process_later, resolve_cfront_continuation): + Obsolete. + Update copyright years. + * buildsym.c (start_subfile): Obsolete comment pertinent to Cfront. + Update copyright year. + * dbxread.c(struct cont_elem): Obsolete. + (process_later, process_now): Obsolete functions. + (read_dbx_symtab, read_ofile_symtab): Obsolete cfront support. + Update copyright year. + * gdbtypes.c (INIT_EXTRA, ADD_EXTRA): Obsolete macros. + (add_name, add_mangled_type, cfront_mangle_name): Obsolete functions. + * mdebugread.c (parse_type): Obsolete comment pertinent to Cfront. + (parse_partial_symbols): Obsolete cfront support. + * stabsread.c + (CFRONT_VISIBILITY_PRIVATE,CFRONT_VISIBILITY_PUBLIC): Obsolete + macros. + (get_substring, get_cfront_method_physname, msg_unknown_complaint, + read_cfront_baseclasses, read_cfront_member_functions, + resolve_cfront_continuation,read_cfront_static_fields, + copy_cfront_struct_fields): Obsolete functions. + (define_symbol, read_one_struct_field): Obsolete cfront support. + * xcoffread.c (scan_xcoff_symtab): Obsolete CFront support. + Update Copyright year. + +2003-01-13 Elena Zannoni <ezannoni@redhat.com> + + * stack.c (print_frame_info, print_stack_frame_base_stub, + print_stack_frame_base, show_and_print_stack_frame_stub, + show_and_print_stack_frame, print_only_stack_frame_stub, + print_only_stack_frame): Delete functions. + (print_stack_frame_stub): Call print_frame_info instead of + print_frame_info_base. + (print_frame_info_base): Rename to print_frame_info. + (backtrace_command_1): Call print_frame_info, instead of + print_frame_info_base. + (current_frame_command): Call print_stack_frame, instead of + print_only_stack_frame. + (frame_command): Call print_stack_frame, instead of + show_and_print_stack_frame. + (up_command): Ditto. + (down_command): Ditto. + * frame.h (print_only_stack_frame): Delete prototype. + * infrun.c (normal_stop): Call print_stack_frame, instead of + show_and_print_stack_frame. + * thread.c (info_threads_command): Call print_stack_frame, instead + of print_only_stack_frame. + +2003-01-13 Andrew Cagney <ac131313@redhat.com> + + * README (Graphical interface to GDB): Update URL. Point at + gdb/links/. + + * gdb_indent.sh: Update to version 2.2.9. Warn when not exact + version match. + +2003-01-13 Daniel Jacobowitz <drow@mvista.com> + + * symtab.c (find_pc_sect_line): Don't consider end-of-function + lines. + +2003-01-13 Daniel Jacobowitz <drow@mvista.com> + + * thread-db.c (attach_thread): Prototype. + (struct private_thread_info): Remove lwpid. Add thread handle (th), + thread information (ti), and valid flags (th_valid, ti_valid). + (attach_thread): Move target_pid_to_str call to after the thread + is added to GDB's list. Initialize the cache. + (thread_get_info_callback, thread_db_map_id2thr) + (thread_db_get_info): New functions. + (thread_from_lwp, lwp_from_thread, thread_db_fetch_registers) + (thread_db_store_registers, thread_db_thread_alive) + (thread_db_get_thread_local_address): Use them. + (thread_db_pid_to_str): Likewise. Return "Missing" instead + of calling error() for threads in unknown state. + + (clear_lwpid_callback): New function. + (thread_db_resume): Use it to clear the cache. + +2003-01-13 Daniel Jacobowitz <drow@mvista.com> + + * lin-lwp.c (struct private_thread_info, find_lwp_callback): Remove. + (resume_callback): Remove dead code. + +2003-01-13 Andrew Cagney <ac131313@redhat.com> + + * gdbarch.sh (FRAME_INIT_SAVED_REGS): Change to function with + predicate. + * gdbarch.h, gdbarch.c: Regenerate. + * stack.c (frame_info): Only initialize the saved registers when + FRAME_INIT_SAVED_REGS_P. + * frame.c (frame_saved_regs_register_unwind): Assert + FRAME_INIT_SAVED_REGS_P. + (deprecated_generic_get_saved_register): Ditto. + +2003-01-13 Daniel Jacobowitz <drow@mvista.com> + + * source.c (openp): Squelch warning about "filename". + +2003-01-13 Daniel Jacobowitz <drow@mvista.com> + + * source.c (openp): If the file does not exist don't necessarily + search the path. + +2003-01-13 Daniel Jacobowitz <drow@mvista.com> + + Fix PR gdb/872. + * gdbtypes.c (init_type): Mark "char" as TYPE_FLAG_NOSIGN. + (integer_types_same_name_p): New function. + (rank_one_type): Use it. + * stabsread.c (read_range_type): Mark "char" as TYPE_FLAG_NOSIGN. + +2003-01-13 Daniel Jacobowitz <drow@mvista.com> + + * Makefile.in (TARGET_SYSTEM_ROOT, TARGET_SYSTEM_ROOT_DEFINE): New + variables. + (main.o): Custom rule which uses $(TARGET_SYSTEM_ROOT_DEFINE). + * configure.in: Add --with-sysroot. + * configure: Regenerated. + * main.c (gdb_sysroot): New variable. + (captured_main): Initialize gdb_sysroot. + * defs.h (gdb_sysroot): New extern declaration. + * solib.c (_initialize_solib): Initialize solib_absolute_prefix. + +2003-01-12 Michael Chastain <mec@shout.net> + + * config/djgpp/fnchange.lst: add gdb/ChangeLog-2002. + +2003-01-12 Michael Chastain <mec@shout.net> + + * top.c (print_gdb_version): Bump copyright year to 2003. + +2003-01-12 David Carlton <carlton@bactrian.org> + + * linespec.c (symtab_from_filename): Rename variable 's' to + 'file_symtab'. + +2003-01-12 Andrew Cagney <ac131313@redhat.com> + + * d10v-tdep.c (d10v_init_extra_frame_info): Remove checks for a + dummy frame. + (d10v_frame_saved_pc, d10v_frame_chain): Ditto. + +2003-01-12 Andrew Cagney <ac131313@redhat.com> + + * d10v-tdep.c: Include "gdb_assert.h". + (d10v_store_return_value): Rewrite to match current interface. + (d10v_extract_struct_value_address): Ditto. + (d10v_extract_return_value): Ditto. + (d10v_gdbarch_init): Set store_restore_value, + extract_struct_value_address and extract_return_value. + +2003-01-12 J. Brobecker <brobecker@gnat.com> + + * hpread.c (set_namestring): New procedure replacing the + SET_NAMESTRING macro. + (hpread_build_psymtabs): Replace calls to SET_NAMESTRING + by calls to set_namestring. + +2003-01-11 J. Brobecker <brobecker@gnat.com> + + * hpread.c (SET_NAMESTRING): Remove an incorrect cast to fix + a compilation warning. + (hpread_process_one_debug_symbol): Likewise. + +2003-01-10 David Carlton <carlton@math.stanford.edu> + + * linespec.c (decode_line_1): Rename variable 's' to + 'file_symtab'. + (decode_all_digits): Rename argument 's' to 'file_symtab'. + (decode_dollar): Ditto. + (decode_variable): Ditto. + (symbol_found): Ditto. + +2003-01-09 Michael Chastain <mec@shout.net> + + * config/djgpp/fnchange.lst: update file list for testsuite/gdb.c++. + +2003-01-07 Corinna Vinschen <vinschen@redhat.com> + + * win32-nat.c (set_process_privilege): New function. + (child_attach): Call set_process_privilege() to enable the + SE_DEBUG_NAME user privilege if available in process token. + +2003-01-10 J. Brobecker <brobecker@gnat.com> + + * hpread.c (hpread_process_one_debug_symbol): Fix a small + compilation error in the previous revision. + +2003-01-09 David Carlton <carlton@math.stanford.edu> + + * linespec.c: Update copyright. + +2003-01-09 Daniel Jacobowitz <drow@mvista.com> + + * lin-lwp.c (child_wait): Ignore exit statuses for processes other + than inferior_ptid. + (lin_lwp_wait): Ignore exit statuses for unknown LWPs. + +2003-01-09 Andrew Cagney <ac131313@redhat.com> + + * frame.h (frame_obstack_zalloc): Replace frame_obstack_alloc. + Update comments. + * frame.c (frame_obstack_zalloc): Replace frame_obstack_alloc. + (frame_saved_regs_zalloc): Update. + (frame_saved_regs_register_unwind): Update. + (create_new_frame): Update. + (get_prev_frame): Update. + (frame_extra_info_zalloc): Update. + (deprecated_get_frame_saved_regs): Update. + * dwarf2cfi.c (cfi_init_extra_frame_info): Update. + * cris-tdep.c: Update comment. + + * somsolib.h: Fix function indentation. + * disasm.c, buildsym.c, buildsym.h: Eliminate PTR. + * gnu-v2-abi.c, f-typeprint.c, x86-64-linux-tdep.c: Eliminate STREQ. + * demangle.c, ax-gdb.c, c-valprint.c: Eliminate STREQ. + * alpha-osf1-tdep.c, corefile.c: Eliminate STREQ. + * somsolib.c, inftarg.c: Remove assignment in if conditional. + + * infrun.c (follow_fork): Use ISO C definition. + * expprint.c (print_subexp): Use xfree instead of free. + * charset.c: Include "gdb_string.h" instead of <string.h>. + (register_iconv_charsets): Use ISO C definition. + (host_charset, target_charset): Ditto. + * Makefile.in (charset.o): Update dependencies. + (mi-cmd-env.o): Update dependencies. + +2003-01-08 Andrew Cagney <cagney@redhat.com> + + * alpha-linux-tdep.c (alpha_linux_sigcontext_addr): Use + get_frame_base. + +2003-01-08 Andrew Cagney <ac131313@redhat.com> + + * gdb_mbuild.sh: Add --keep option. When specified, keep the + build directories. Save edited gdb output in Mbuild.log. If a + build fails, remove any final GDB executable. + +2003-01-08 Andrew Cagney <ac131313@redhat.com> + + * gdb_mbuild.sh: Edit the output of `maint print architecture' + replacing hex constants with function names and stripping leading + file name directory prefixes. + +2003-01-08 Andrew Cagney <cagney@redhat.com> + + * gcore.c, i386-linux-tdep.c: Use get_frame_pc, get_next_frame and + get_frame_base. + +2003-01-08 David Carlton <carlton@math.stanford.edu> + + * linespec.c (decode_line_1): Move code into decode_variable. + (decode_variable): New function. + +2003-01-08 Andrew Cagney <ac131313@redhat.com> + + * mn10300-tdep.c (analyze_dummy_frame): Fix typo. + +2003-01-08 Andrew Cagney <cagney@redhat.com> + + * cris-tdep.c (cris_frame_init_saved_regs): Use + get_frame_saved_regs and SIZEOF_FRAME_SAVED_REGS when copying a + saved_regs buffer. + * sh-tdep.c (sh_nofp_frame_init_saved_regs): Ditto. + (sh64_nofp_frame_init_saved_regs): Ditto. + (sh_fp_frame_init_saved_regs): Ditto. + * arm-tdep.c: Use deprecated_set_frame_saved_regs_hack. + * mips-tdep.c (mips_init_extra_frame_info): Ditto. + * mcore-tdep.c (analyze_dummy_frame): Ditto. + * mn10300-tdep.c (analyze_dummy_frame): Ditto. + +2003-01-08 Daniel Jacobowitz <drow@mvista.com> + + * minsyms.c (lookup_minimal_symbol): Update comment. + (lookup_minimal_symbol_text): Update comment. Use the hash table. + (lookup_minimal_symbol_solib_trampoline): Likewise. + +2003-01-08 Andrew Cagney <cagney@redhat.com> + + * d10v-tdep.c (d10v_init_extra_frame_info): Use + frame_relative_level. + + * alpha-tdep.c: Use get_frame_extra_info. + * arm-tdep.c, avr-tdep.c, cris-tdep.c, d10v-tdep.c: Ditto. + * h8300-tdep.c, ia64-tdep.c, m68hc11-tdep.c, mcore-tdep.c: Ditto. + * mips-tdep.c, mn10300-tdep.c, s390-tdep.c, sh-tdep.c: Ditto. + * sparc-tdep.c, xstormy16-tdep.c: Ditto. + + * alpha-tdep.c: Use get_next_frame. + * arm-tdep.c, avr-tdep.c, cris-tdep.c, d10v-tdep.c: Ditto. + * dwarf2cfi.c, h8300-tdep.c, i386-tdep.c, ia64-tdep.c: Ditto. + * m68hc11-tdep.c, m68k-tdep.c, mcore-tdep.c: Ditto. + * mips-tdep.c, mn10200-tdep.c, mn10300-tdep.c: Ditto. + * ns32k-tdep.c, s390-tdep.c, sh-tdep.c, sparc-tdep.c: Ditto. + * v850-tdep.c, vax-tdep.c, x86-64-linux-tdep.c: Ditto. + * xstormy16-tdep.c: Ditto. + +2003-01-07 Andrew Cagney <cagney@redhat.com> + + * alpha-tdep.c: Use get_frame_base. + * arm-tdep.c, avr-tdep.c, cris-tdep.c, d10v-tdep.c: Ditto. + * h8300-tdep.c, i386-tdep.c, ia64-tdep.c, m68hc11-tdep.c: Ditto. + * m68k-tdep.c, mcore-tdep.c, mips-tdep.c, mn10200-tdep.c: Ditto. + * mn10300-tdep.c, ns32k-tdep.c, s390-tdep.c, sh-tdep.c: Ditto. + * sparc-tdep.c, v850-tdep.c, vax-tdep.c: Ditto. + * x86-64-linux-tdep.c, xstormy16-tdep.c: Ditto. + * config/h8500/tm-h8500.h, config/mn10200/tm-mn10200.h: Ditto. + * config/sparc/tm-sparc.h: Ditto. + +2003-01-07 Andrew Cagney <cagney@redhat.com> + + * frame.c (deprecated_get_frame_context): New function. + (deprecated_set_frame_context): New function. + * frame.h (deprecated_get_frame_context): Declare. + (deprecated_set_frame_context): Declare. + * dwarf2cfi.c (UNWIND_CONTEXT): Use deprecated_get_frame_context. + (cfi_init_extra_frame_info): Use deprecated_set_frame_context. + +2003-01-07 Andrew Cagney <cagney@redhat.com> + + * frame.c (deprecated_set_frame_next_hack): New function. + (deprecated_set_frame_prev_hack): New function. + * frame.h (deprecated_set_frame_next_hack): Declare. + (deprecated_set_frame_prev_hack): Declare. + * mcore-tdep.c (analyze_dummy_frame): Use + deprecated_set_frame_next_hack and deprecated_set_frame_prev_hack. + * mn10300-tdep.c (analyze_dummy_frame): Ditto. + +2003-01-07 David Carlton <carlton@math.stanford.edu> + + * linespec.c (decode_line_1): Move code into decode_dollar. + (decode_dollar): New function. + +2003-01-07 Andrew Cagney <cagney@redhat.com> + + * arm-tdep.c (arm_init_extra_frame_info): Use + deprecated_update_frame_base_hack. + * xstormy16-tdep.c (xstormy16_scan_prologue): Ditto. + * mn10300-tdep.c (analyze_dummy_frame): Ditto. + (fix_frame_pointer): Ditto. + (mn10300_analyze_prologue): Ditto. + +2003-01-07 Andrew Cagney <cagney@redhat.com> + + * xstormy16-tdep.c (xstormy16_init_extra_frame_info): Allocate + extra_info using frame_extra_info_zalloc. + * sparc-tdep.c (sparc_init_extra_frame_info): Ditto. + * sh-tdep.c (sh_init_extra_frame_info): Ditto. + (sh64_init_extra_frame_info): Ditto. + * mn10300-tdep.c (mn10300_init_extra_frame_info): Ditto. + * s390-tdep.c (s390_init_extra_frame_info): Ditto. + * mips-tdep.c (mips_init_extra_frame_info): Ditto. + * mcore-tdep.c (mcore_init_extra_frame_info): Ditto. + * frv-tdep.c (frv_init_extra_frame_info): Ditto. + * m68hc11-tdep.c (m68hc11_init_extra_frame_info): Ditto. + * ia64-tdep.c (ia64_init_extra_frame_info): Ditto. + * h8300-tdep.c (h8300_init_extra_frame_info): Ditto. + * d10v-tdep.c (d10v_init_extra_frame_info): Ditto. + * cris-tdep.c (cris_init_extra_frame_info): Ditto. + * arm-tdep.c (arm_init_extra_frame_info): Ditto. + * alpha-tdep.c (alpha_init_extra_frame_info): Ditto. + + * mn10300-tdep.c (analyze_dummy_frame): Use + deprecated_set_frame_extra_info_hack. + * mcore-tdep.c (analyze_dummy_frame): Ditto. + +2003-01-07 J. Brobecker <brobecker@gnat.com> + + * mdebugread.c (parse_symbol): Skip stProc entries which storage + class is not scText. These do not define "real" procedures. + (parse_partial_symbols): Likewise. + +2003-01-06 Michael Snyder <msnyder@redhat.com> + + * lin-lwp.c: Added or elaborated on "debug lin-lwp" info. + +2003-01-06 Andrew Cagney <ac131313@redhat.com> + + * frame.h (deprecated_frame_xmalloc_with_cleanup): Declare. + * frame.c (deprecated_frame_xmalloc_with_cleanup): New function. + * arm-tdep.c (arm_frame_chain): Allocate caller_fi using + deprecated_frame_xmalloc_with_cleanup. + * m32r-tdep.c (m32r_virtual_frame_pointer): Allocate `fi' using + deprecated_frame_xmalloc. + * mcore-tdep.c (analyze_dummy_frame): Ditto for dummy. + * mn10200-tdep.c (mn10200_frame_chain): Ditto for dummy_frame. + +2003-01-06 Andrew Cagney <cagney@redhat.com> + + * x86-64-linux-tdep.c: Include "osabi.h". + * Makefile.in (x86-64-linux-tdep.o): Update dependencies. + + * sparc-tdep.c (sparc_dump_tdep): Fix typo, match -> mach. + +2003-01-06 Andrew Cagney <cagney@redhat.com> + + * MAINTAINERS (Target Instruction Set Architectures): Update + arm-elf. Can be built with -Werror, has been multiarched. + + * value.h (unpack_long): Make buffer parameter constant. + (unpack_double, unpack_pointer, unpack_field_as_long): Ditto. + * scm-lang.h (scm_parse): Ditto. + * defs.h (extract_typed_address, extract_address): Ditto. + (extract_long_unsigned_integer): Ditto. + * inferior.h (unsigned_pointer_to_address): Ditto. + (signed_pointer_to_address): Ditto. + * gdbarch.sh (POINTER_TO_ADDRESS): Ditto. + * gdbarch.h, gdbarch.c: Regenerate. + * findvar.c (extract_long_unsigned_integer): Update. + (extract_address): Update. + (extract_typed_address): Update. + (unsigned_pointer_to_address): Update. + * values.c (unpack_long): Update. + (unpack_double): Update. + (unpack_pointer): Update. + (unpack_field_as_long): Update. + * d10v-tdep.c (d10v_pointer_to_address): Update. + * avr-tdep.c (avr_pointer_to_address): Update. + * scm-lang.c (scm_unpack): Update. + * findvar.c (signed_pointer_to_address): Update. + +2003-01-06 Michal Ludvig <mludvig@suse.cz> + + * x86-64-linux-nat.c (i386_sse_regnum_p): Deleted. Not needed anymore + since it is in i386-tdep.c. + +2003-01-06 J. Brobecker <brobecker@gnat.com> + + * alpha-tdep.c (alpha_gdbarch_init): Fix a small compilation + failure introduced in the previous change. + +2003-01-05 Michael Chastain <mec@shout.net> + + * README: Remove references to deleted remote-*.c files: + remote-adapt.c, remote-eb.c, remote-mm.c, remote-nindy.c, + remote-nrom.c, remote-os9k.c, remote-udi.c. + +2003-01-05 Mark Kettenis <kettenis@gnu.org> + + * i386-tdep.c (i386_get_longjmp_target): Make usable on x86-64. + * x86-64-tdep.c (x86_64_init_abi): Remove FIXME about + i386_get_longjmp_target. + +2003-01-05 Andrew Cagney <ac131313@redhat.com> + + * arm-tdep.c (prologue_cache): Change to a pointer. + (_initialize_arm_tdep): Allocate prologue_cache. + (check_prologue_cache): Update. + (save_prologue_cache): Update. + (arm_gdbarch_init): Update. + +2003-01-04 Daniel Jacobowitz <drow@mvista.com> + + * stabsread.c (update_method_name_from_physname): Call complaint() + instead of error. + +2003-01-04 Daniel Jacobowitz <drow@mvista.com> + + * arm-tdep.c (arm_frame_chain_valid): Remove unnecessary test. + * d10v-tdep.c (d10v_frame_chain_valid): Remove unnecessary tests. + * hppa-tdep.c (hppa_frame_chain_valid): Remove unnecessary test. + + * blockframe.c: Include "gdbcmd.h" and "command.h". + (backtrace_below_main): New variable. + (file_frame_chain_valid, func_frame_chain_valid) + (nonnull_frame_chain_valid, generic_file_frame_chain_valid) + (generic_func_frame_chain_valid): Remove functions. + (frame_chain_valid, do_flush_frames_sfunc): New functions. + (_initialize_blockframe): New function. + * Makefile.in (blockframe.o): Update dependencies. + * frame.c (frame_saved_regs_id_unwind, get_prev_frame): Remove FIXME + comment. Call frame_chain_valid (). + * frame.h: Remove old prototypes. Add prototype for + frame_chain_valid and update comments to match. + * gdbarch.sh: Change FRAME_CHAIN_VALID into a predicated function. + Remove old comment. + * gdbarch.h: Regenerated. + * gdbarch.c: Regenerated. + + * alpha-tdep.c (alpha_gdbarch_init): Don't call + set_gdbarch_frame_chain_valid. + * avr-tdep.c (avr_gdbarch_init): Likewise. + * cris-tdep.c (cris_gdbarch_init): Likewise. + * frv-tdep.c (frv_gdbarch_init): Likewise. + * h8300-tdep.c (h8300_gdbarch_init): Likewise. + * i386-tdep.c (i386_svr4_init_abi): Likewise. + (i386_nw_init_abi): Likewise. + (i386_gdbarch_init): Likewise. + * ia64-tdep.c (ia64_gdbarch_init): Likewise. + * m68hc11-tdep.c (m68hc11_gdbarch_init): Likewise. + * m68k-tdep.c (m68k_gdbarch_init): Likewise. + * mcore-tdep.c (mcore_gdbarch_init): Likewise. + * mips-tdep.c (mips_gdbarch_init): Likewise. + * mn10300-tdep.c (mn10300_gdbarch_init): Likewise. + * ns32k-tdep.c (ns32k_gdbarch_init): Likewise. + * ppcnbsd-tdep.c (ppcnbsd_init_abi): Likewise. + * rs6000-tdep.c (rs6000_gdbarch_init): Likewise. + * s390-tdep.c (s390_gdbarch_init): Likewise. + * sh-tdep.c (sh_gdbarch_init): Likewise. + * sparc-tdep.c (sparc_gdbarch_init): Likewise. + * v850-tdep.c (v850_gdbarch_init): Likewise. + * vax-tdep.c (vax_gdbarch_init): Likewise. + * x86-64-tdep.c (x86_64_init_abi): Likewise. + + * config/m32r/tm-m32r.h (FRAME_CHAIN_VALID): Don't define. + * config/m68k/tm-apollo68b.h (FRAME_CHAIN_VALID): Likewise. + * config/m68k/tm-m68kv4.h (FRAME_CHAIN_VALID): Likewise. + * config/m68k/tm-monitor.h (FRAME_CHAIN_VALID): Likewise. + * config/m68k/tm-os68k.h (FRAME_CHAIN_VALID): Likewise. + * config/m68k/tm-vx68.h (FRAME_CHAIN_VALID): Likewise. + * config/mn10200/tm-mn10200.h (FRAME_CHAIN_VALID): Likewise. + * config/sparc/tm-sparclite.h (FRAME_CHAIN_VALID): Likewise. + +2002-01-04 Daniel Jacobowitz <drow@mvista.com> + + * Makefile.in (acconfig_h): Remove incorrect macro. + (config_h): Define. + (osabi.o): Update dependencies. + * configure.tgt: Set gdb_osabi based on target triplet. + * configure.in: Define GDB_OSABI_DEFAULT based on gdb_osabi. + * configure: Regenerated. + * config.in: Regenerated. + * osabi.c: Include "arch-utils.h", "gdbcmd.h", and "command.h". + (GDB_OSABI_DEFAULT): Define if not already defined. + (user_osabi_state, user_selected_osabi, gdb_osabi_available_names) + (set_osabi_string): New variables. + (gdbarch_register_osabi): Add new OS ABI to + gdb_osabi_available_names. + (gdbarch_lookup_osabi): Honor specified and default OS ABIs. + (set_osabi, show_osabi): New functions. + (_initialize_gdb_osabi): Add "set osabi" and "show osabi" commands. + +2003-01-04 Daniel Jacobowitz <drow@mvista.com> + + * arch-utils.c (gdbarch_info_init): Set osabi to + GDB_OSABI_UNINITIALIZED. + * gdbarch.sh: Add osabi to struct gdbarch and to struct + gdbarch_info. Include "osabi.h" in gdbarch.c. Check osabi + in gdbarch_list_lookup_by_info and in gdbarch_update_p. + * gdbarch.c: Regenerated. + * gdbarch.h: Regenerated. + * osabi.c (gdbarch_lookup_osabi): Return GDB_OSABI_UNINITIALIZED if + there's no BFD. + (gdbarch_init_osabi): Remove osabi argument; use info.osabi. + * osabi.h (enum gdb_osabi): Move to defs.h. + (gdbarch_init_osabi): Update prototype. + * defs.h (enum gdb_osabi): Moved here. + * Makefile.in: Update dependencies. + + * alpha-tdep.h: Don't include "osabi.h". + (struct gdbarch_tdep): Remove osabi member. + * alpha-tdep.c: Include "osabi.h". + (alpha_gdbarch_init): Don't call gdbarch_lookup_osabi. Don't + iterate over arches. Update call to gdbarch_init_osabi. + (alpha_dump_tdep): Don't dump osabi. + * alpha-linux-tdep.c: Include "osabi.h". + * alpha-osf1-tdep.c: Include "osabi.h". + * alphafbsd-tdep.c: Include "osabi.h". + * alphanbsd-tdep.c: Include "osabi.h". + + * arm-tdep.h: Don't include "osabi.h". + (struct gdbarch_tdep): Remove osabi member. + * arm-tdep.c: Include "osabi.h". + (arm_gdbarch_init): Don't call gdbarch_lookup_osabi. Don't + iterate over arches. Update call to gdbarch_init_osabi. + (arm_dump_tdep): Don't dump osabi. + * arm-linux-tdep.c: Include "osabi.h". + * armnbsd-tdep.c: Include "osabi.h". + + * hppa-tdep.c (hppa_gdbarch_init): Don't call gdbarch_lookup_osabi. + Update call to gdbarch_init_osabi. + + * i386-tdep.h: Don't include "osabi.h". + (struct gdbarch_tdep): Remove osabi member. + * i386-tdep.c: Include "osabi.h". + (i386_gdbarch_init): Don't call gdbarch_lookup_osabi. Don't + iterate over arches. Update call to gdbarch_init_osabi. + (i386_dump_tdep): Don't dump osabi. + * i386-linux-tdep.c: Include "osabi.h". + * i386-sol2-tdep.c: Include "osabi.h". + * i386bsd-tdep.c: Include "osabi.h". + * i386gnu-tdep.c: Include "osabi.h". + * i386ly-tdep.c: Include "osabi.h". + * i386nbsd-tdep.c: Include "osabi.h". + * i386obsd-tdep.c: Include "osabi.h". + + * mips-tdep.c (struct gdbarch_tdep): Remove osabi member. + (mips_gdbarch_init): Don't call gdbarch_lookup_osabi. Don't + check osabi when iterating over arches. Update call to + gdbarch_init_osabi. + (mips_dump_tdep): Don't dump osabi. + + * ns32k-tdep.h: Don't include "osabi.h". + (struct gdbarch_tdep): Remove. + * ns32k-tdep.c (ns32k_gdbarch_init): Don't call + gdbarch_lookup_osabi. Don't iterate over arches. Don't + allocate tdep. Update call to gdbarch_init_osabi. + (ns32k_dump_tdep): Remove. + (_initialize_ns32k_tdep): Update call to gdbarch_register. + * ns32knbsd-tdep.c: Include "osabi.h". + + * ppc-tdep.h: Don't include "osabi.h". + (struct gdbarch_tdep): Remove osabi member. + * rs6000-tdep.c: Include "osabi.h". + (rs6000_gdbarch_init): Don't call gdbarch_lookup_osabi. Don't check + osabi when iterating over arches. Update call to + gdbarch_init_osabi. + (rs6000_dump_tdep): Don't dump osabi. + * ppc-linux-tdep.c: Include "osabi.h". + * ppcnbsd-tdep.c: Include "osabi.h". + + * sh-tdep.h: Don't include "osabi.h". + (struct gdbarch_tdep): Remove osabi member. + * sh-tdep.c: Include "osabi.h". + (sh_gdbarch_init): Don't call gdbarch_lookup_osabi. Don't + iterate over arches. Update call to gdbarch_init_osabi. + (sh_dump_tdep): Don't dump osabi. + * shnbsd-tdep.c: Include "osabi.h". + + * sparc-tdep.c: Include "osabi.h". + (sparc_gdbarch_init): Don't call gdbarch_lookup_osabi. Don't + iterate over arches. Update call to gdbarch_init_osabi. + (sparc_dump_tdep): Don't dump osabi. Do dump the rest of the + tdep structure. + + * vax-tdep.h: Don't include "osabi.h". + (struct gdbarch_tdep): Remove. + * vax-tdep.c: Include "osabi.h". + (vax_gdbarch_init): Don't call gdbarch_lookup_osabi. Don't + iterate over arches. Don't allocate tdep. Update call + to gdbarch_init_osabi. + (vax_dump_tdep): Remove. + (_initialize_vax_tdep): Update call to gdbarch_register. + +2003-01-04 Daniel Jacobowitz <drow@mvista.com> + + * breakpoint.c (insert_breakpoints): Skip disabled breakpoints + entirely. + (breakpoint_re_set_one): Don't fetch the value for a disabled + watchpoint. + +2003-01-04 Daniel Jacobowitz <drow@mvista.com> + + * buildsym.h (processing_hp_compilation): Remove obsolete variable. + * gdbarch.sh Remove include of "value.h" in gdbarch.h. + (COERCE_FLOAT_TO_DOUBLE): Remove. + * gdbarch.c: Regenerate. + * gdbarch.h: Regenerate. + * Makefile.in: Remove value_h from gdbarch_h. + * valops.c (coerce_float_to_double): New variable. + (default_coerce_float_to_double): Remove. + (standard_coerce_float_to_double): Remove. + (value_arg_coerce): Use coerce_float_to_double. + (_initialize_valops): Add "set coerce-float-to-double". + * value.h (default_coerce_float_to_double): Remove prototype. + (standard_coerce_float_to_double): Remove prototype. + + * hpread.c (hpread_process_one_debug_symbol): Mark C++ functions as + prototyped. + * mdebugread.c (parse_symbol): Likewise. + * stabsread.c (define_symbol): Mark all functions as prototyped. + + * hppa-tdep.c (hppa_coerce_float_to_double): Remove. + * alpha-tdep.c (alpha_gdbarch_init): Remove call to + set_gdbarch_coerce_float_to_double. + * arm-tdep.c (arm_gdbarch_init): Likewise. + * frv-tdep.c (frv_gdbarch_init): Likewise. + * h8300-tdep.c (h8300_gdbarch_init): Likewise (commented out). + * i386-sol2-tdep.c (i386_sol2_init_abi): Likewise. + * mips-tdep.c (mips_gdbarch_init): Likewise. + (mips_coerce_float_to_double): Remove. + * rs6000-tdep.c (rs6000_gdbarch_init): Likewise. + (rs6000_coerce_float_to_double): Remove. + * s390-tdep.c (s390_gdbarch_init): Likewise. + * sh-tdep.c (sh_gdbarch_init): Likewise. + (sh_coerce_float_to_double): Remove. + * sparc-tdep.c (sparc_gdbarch_init): Likewise. + (sparc_coerce_float_to_double): Remove. + * v850-tdep.c (v850_gdbarch_init): Likewise. + * xstormy16-tdep.c (xstormy16_gdbarch_init): Likewise. + * config/m32r/tm-m32r.h (COERCE_FLOAT_TO_DOUBLE): Remove. + * config/pa/tm-hppa.h: (COERCE_FLOAT_TO_DOUBLE): Remove. + (hppa_coerce_float_to_double): Remove prototype. + * config/sparc/tm-sparc.h (COERCE_FLOAT_TO_DOUBLE): Remove. + +2003-01-04 Daniel Jacobowitz <drow@mvista.com> + + * regformats/reg-m68k.dat: Remove fpcode and fpflags. + +2003-01-04 Daniel Jacobowitz <drow@mvista.com> + + Suggested by Stewart Brown <sb24@avaya.com>: + * c-typeprint.c (c_type_print_varspec_prefix): Pass value of show + in recursive calls. Handle TYPE_CODE_TYPEDEF. + (c_type_print_varspec_suffix): Likewise. + +2003-01-04 Mark Kettenis <kettenis@gnu.org> + + * configure.in: Don't set and AC_SUBST SUBDIRS. + * configure: Regenerated. + + * configure.in: Remove code dealing with shared libraries. + * Makefile.in: Remove HLDFLAGS and HLDENV. + * configure: Regenerated. + +2003-01-04 Andrew Cagney <ac131313@redhat.com> + + * frame.c (deprecated_frame_xmalloc): New function. + (deprecated_set_frame_saved_regs_hack): New function. + (deprecated_set_frame_extra_info_hack): New function. + * frame.h (deprecated_frame_xmalloc): Declare. + (deprecated_set_frame_saved_regs_hack): Declare. + (deprecated_set_frame_extra_info_hack): Declare. + +2003-01-04 Mark Kettenis <kettenis@gnu.org> + + * configure.in: Move code that provides the --enable-gdbtk option + right after the code that handles the --enable-tui option, and + polish it somewhat. + * configure: Regenerated. + + * configure.in: Call AC_GNU_SOURCE. Check for pread64 using + AC_CHECK_FUNCS and remove the old check for pread64. + * acinclude.m4 (AC_GNU_SOURCE): New macro. + * acconfig.h (_GNU_SOURCE): Add. + (HAVE_PREAD64): Remove. + * configure, aclocal.m4, config.in: Regenerated. + +2003-01-03 Andrew Cagney <ac131313@redhat.com> + + * alpha-tdep.c: Use get_frame_saved_regs. + * arm-tdep.c, avr-tdep.c, cris-tdep.c, d10v-tdep.c: Ditto. + * h8300-tdep.c, i386-tdep.c, ia64-tdep.c, m68hc11-tdep.c: Ditto. + * m68k-tdep.c, mcore-tdep.c, mips-tdep.c, mn10300-tdep.c: Ditto. + * ns32k-tdep.c, s390-tdep.c, sh-tdep.c, v850-tdep.c: Ditto. + * vax-tdep.c, xstormy16-tdep.c: Ditto. + +2003-01-03 Mark Kettenis <kettenis@gnu.org> + + * configure.in: Remove all use of the SUBDIRS variable; add + directories using the AC_CONFIG_SUBDIRS macro instead. Polish + code providing the --enable-multi-ice option, and move it right in + front of the code that checks whether gdbserver is supported. + Polish that too. + * configure: Regenerated. + * Makefile.in (SUBDIRS): Substitute @subdirs@ instead of + @SUBDIRS@. + +2003-01-03 Andrew Cagney <cagney@redhat.com> + + * alpha-tdep.c: Use deprecated_update_frame_base_hack. + * avr-tdep.c, cris-tdep.c: Ditto. + * mcore-tdep.c, mips-tdep.c, mn10200-tdep.c: Ditto. + * sh-tdep.c, sparc-tdep.c, v850-tdep.c: Ditto. + +2003-01-03 Mark Kettenis <kettenis@gnu.org> + + * configure.in: Remove --enable-netrom option. + * configure: Regenerated. + +2003-01-03 Mark Kettenis <kettenis@gnu.org> + + * cli/cli-decode.h: Don't include "gdb_regex.h"; provide a forward + declaration for `struct re_pattern_buffer' instead. + * Makefile.in (cli_decode_h): Remove $(gdb_regex_h). + +2003-01-03 J. Brobecker <brobecker@gnat.com> + + * mdebugread.c (parse_symbol): Count until the stEnd matching + the structure name. + +2003-01-02 Mark Kettenis <kettenis@gnu.org> + + * configure.in: Remove --with-cpu option. + subscripts. Remove evil changequotes here. + * acconfig.h (TARGET_CPU_DEFAULT): Remove. + * config.in, configure: Regenerated. + + * acconfig.h (DEFAULT_BFD_ARCH, DEFAULT_BFD_VEC): Remove. + * configure.in: Cleanup section that sources GDB and BFD configure + subscripts. Remove evil changequotes here. + * config.in, configure: Regenerated. + +2003-01-02 Andrew Cagney <ac131313@redhat.com> + + * arm-tdep.c: Use get_frame_pc and deprecated_update_frame_pc_hack + frame accessor methods. + * alpha-tdep.c, avr-tdep.c, cris-tdep.c, d10v-tdep.c: Ditto. + * dwarf2cfi.c, h8300-tdep.c, i386-tdep.c, ia64-tdep.c: Ditto. + * m68hc11-tdep.c, m68k-tdep.c, mcore-tdep.c, mips-tdep.c: Ditto. + * mn10200-tdep.c, mn10300-tdep.c, ns32k-tdep.c: Ditto. + * s390-tdep.c, sh-tdep.c, sparc-tdep.c, v850-tdep.c: Ditto. + * vax-tdep.c, x86-64-linux-tdep.c, xstormy16-tdep.c: Ditto. + * z8k-tdep.c: Ditto. + +2003-01-02 Mark Kettenis <kettenis@gnu.org> + + * configure.in: Remove UI_OUT configuration code. + * ada-lang.c: Update assuming UI_OUT is always true. + * Makefile.in (UIOUT_CFLAGS): Remove. + * configure: Regenerated. + * TODO: Remove blurb about elimination of -DUI_OUT. + + * configure.in: Move code that provides the --enable-gdbcli, + --enable-gdbmi options right before the code that handles the + --enable-tui option. Polish a bit. + * configure: Regenerated. + + * configure.in: Rewrite check for GNU regex and the + --without-included regex option, and move it into the "Checks for + library functions" section. This makes us use the system regex + again by default on systems with version 2 of the GNU C library. + This was apparently broken. + * gdb_regex.h [!USE_INCLUDED_REGEX] (_REGEX_RE_COMP): Define. + * acconfig.h (USE_INCLUDED_REGEX): Remove. + * config.in, configure: Regenerated. + + * configure.in: Move code that provides the --enable-tui option + before the "Checks for libraries" section. Polish the code + somewhat and set need_curses to yes if we build the TUI. Rewrite + code that looks for a library providing termcap functionality to + match more closely what's done in the Readline library, and move + it into to the "Checks for libraries" section. + * configure: Regenerated. + * Makefile.in (TERMCAP): Remove variable. + * config/i386/go32.mh (TERMCAP): Remove variable. + +2003-01-02 Andrew Cagney <ac131313@redhat.com> + + * MAINTAINERS: Mention gdb_mbuild.sh. + * gdb_mbuild.sh: Rewrite. + +2003-01-02 Mark Kettenis <kettenis@gnu.org> + + * configure.in: Fix typo in last change. + * config.in, configure: Regenerated. + +2003-01-02 Andrew Cagney <ac131313@redhat.com> + + * valarith.c (value_binop): Delete obsolete code and comments. + * configure.host: Ditto. + * buildsym.h (make_blockvector): Ditto. + * buildsym.c (make_blockvector): Ditto. + * defs.h (enum language): Ditto. + (chill_demangle): Ditto. + * elfread.c (elf_symtab_read): Ditto. + * dwarfread.c (CHILL_PRODUCER): Ditto. + (set_cu_language): Ditto. + (handle_producer): Ditto. + * expprint.c (print_subexp): Ditto. + * gdbtypes.c (chill_varying_type): Ditto. + * gdbtypes.h (builtin_type_chill_bool): Ditto. + (builtin_type_chill_char, builtin_type_chill_long): Ditto. + (builtin_type_chill_ulong, builtin_type_chill_real): Ditto. + (chill_varying_type): Ditto. + * language.h (_LANG_chill): Ditto. + * language.c (binop_result_type, integral_type): Ditto. + (character_type, string_type, structured_type): Ditto. + (lang_bool_type, binop_type_check): Ditto. + * stabsread.h (os9k_stabs): Ditto. + * stabsread.c (os9k_type_vector, dbx_lookup_type): Ditto. + (define_symbol, read_type, read_struct_fields): Ditto. + (read_array_type, read_enum_type, read_huge_number): Ditto. + (read_range_type, start_stabs): Ditto. + * symfile.c (init_filename_language_table): Ditto. + (add_psymbol_with_dem_name_to_list): Ditto. + * symtab.c (symbol_init_language_specific): Ditto. + (symbol_init_demangled_name, symbol_demangled_name): Ditto. + * symtab.h (struct general_symbol_info): Ditto. + (SYMBOL_CHILL_DEMANGLED_NAME): Ditto. + * typeprint.c (typedef_print): Ditto. + * utils.c (fprintf_symbol_filtered): Ditto. + * valops.c (value_cast, search_struct_field, value_slice): Delete + obsolete code. + (varying_to_slice): Delete function. + * value.h (COERCE_VARYING_ARRAY): Delete obsolete macro contents. + (varying_to_slice): Delete declaration. + * MAINTAINERS: Update. + +2003-01-02 Mark Kettenis <kettenis@gnu.org> + + * configure.in: Reorganize "Checks for library functions section" + a bit. Remove check for `btowc' and `isascii' functions. + * configure: Regenerated. + + * acconfig.h (_MSE_INT_H): Remove. + * configure.in: Create "Checks for header files" section, and move + appropriate tests there. Don't check for objlist.h, wchar.h, + wctype.h and asm/debugreg.h. Rewrite Solaris 2.[78] <curses.h> + misdetection fix. Also add "Checks for types", "Checks for + compiler characteristics" and "Checks for library functions" + sections. + * config.in, configure: Regenerated. + + * configure.in: Create "Checks for programs" section, and move + appropriate tests there. + +2003-01-01 Mark Kettenis <kettenis@gnu.org> + + * configure.in: Create "Checks for libraries" section, and move + appropriate tests there. Cleanup check for wctype in libw. Use + AC_SEARCH_LIBS to see whether we need libsocket. + * configure: Regenerated. + +For older changes see ChangeLog-2002 + +Local Variables: +mode: change-log +left-margin: 8 +fill-column: 74 +version-control: never +End: diff --git a/gdb/config/sparc/linux64.mh b/gdb/config/sparc/linux64.mh new file mode 100644 index 00000000000..c1472de8de8 --- /dev/null +++ b/gdb/config/sparc/linux64.mh @@ -0,0 +1,11 @@ +# Host: GNU/Linux UltraSPARC +NAT_FILE= nm-linux.h +NATDEPFILES= sparc-nat.o sparc64-nat.o sparc-sol2-nat.o sparc64-linux-nat.o \ + corelow.o core-regset.o \ + fork-child.o infptrace.o inftarg.o \ + proc-service.o thread-db.o lin-lwp.o \ + linux-proc.o gcore.o linux-nat.o + +# The dynamically loaded libthread_db needs access to symbols in the +# gdb executable. +LOADLIBES = -ldl -rdynamic diff --git a/gdb/config/sparc/linux64.mt b/gdb/config/sparc/linux64.mt new file mode 100644 index 00000000000..4121314318b --- /dev/null +++ b/gdb/config/sparc/linux64.mt @@ -0,0 +1,5 @@ +# Target: GNU/Linux UltraSPARC +TDEPFILES= sparc64-tdep.o sparc64-sol2-tdep.o sparc64-linux-tdep.o \ + sparc-tdep.o sparc-sol2-tdep.o sparc-linux-tdep.o \ + solib.o solib-svr4.o solib-legacy.o +TM_FILE= tm-linux.h diff --git a/gdb/config/sparc/nm-sol2.h b/gdb/config/sparc/nm-sol2.h new file mode 100644 index 00000000000..bc9de3fdf80 --- /dev/null +++ b/gdb/config/sparc/nm-sol2.h @@ -0,0 +1,65 @@ +/* Native-dependent definitions for Solaris SPARC. + + Copyright 2003 Free Software Foundation, Inc. + + This file is part of GDB. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ + +#ifndef NM_SOL2_H +#define NM_SOL2_H + +#define GDB_GREGSET_T prgregset_t +#define GDB_FPREGSET_T prfpregset_t + +/* Shared library support. */ + +#include "solib.h" + +/* Hardware wactchpoints. */ + +/* Solaris 2.6 and above can do HW watchpoints. */ +#ifdef NEW_PROC_API + +#define TARGET_HAS_HARDWARE_WATCHPOINTS + +/* The man page for proc(4) on Solaris 2.6 and up says that the system + can support "thousands" of hardware watchpoints, but gives no + method for finding out how many; It doesn't say anything about the + allowed size for the watched area either. So we just tell GDB + 'yes'. */ +#define TARGET_REGION_SIZE_OK_FOR_HW_WATCHPOINT(SIZE) 1 + +/* When a hardware watchpoint fires off the PC will be left at the + instruction following the one which caused the watchpoint. It will + *NOT* be necessary for GDB to step over the watchpoint. */ +#define HAVE_CONTINUABLE_WATCHPOINT 1 + +extern int procfs_stopped_by_watchpoint (ptid_t); +#define STOPPED_BY_WATCHPOINT(W) \ + procfs_stopped_by_watchpoint(inferior_ptid) + +/* Use these macros for watchpoint insertion/deletion. TYPE can be 0 + (write watch), 1 (read watch), 2 (access watch (read/write). */ + +extern int procfs_set_watchpoint (ptid_t, CORE_ADDR, int, int, int); +#define target_insert_watchpoint(ADDR, LEN, TYPE) \ + procfs_set_watchpoint (inferior_ptid, ADDR, LEN, TYPE, 1) +#define target_remove_watchpoint(ADDR, LEN, TYPE) \ + procfs_set_watchpoint (inferior_ptid, ADDR, 0, 0, 0) + +#endif /* NEW_PROC_API */ + +#endif /* nm-sol2.h */ diff --git a/gdb/config/sparc/obsd.mt b/gdb/config/sparc/obsd.mt new file mode 100644 index 00000000000..800cb048eac --- /dev/null +++ b/gdb/config/sparc/obsd.mt @@ -0,0 +1,4 @@ +# Target: OpenBSD/sparc +TDEPFILES= sparc-tdep.o sparcnbsd-tdep.o sparcobsd-tdep.o nbsd-tdep.o \ + corelow.o solib.o solib-svr4.o +TM_FILE= tm-nbsd.h diff --git a/gdb/config/sparc/obsd64.mt b/gdb/config/sparc/obsd64.mt new file mode 100644 index 00000000000..a69281754c4 --- /dev/null +++ b/gdb/config/sparc/obsd64.mt @@ -0,0 +1,5 @@ +# Target: OpenBSD/sparc64 +TDEPFILES= sparc64-tdep.o sparc64nbsd-tdep.o sparc64obsd-tdep.o \ + sparc-tdep.o sparcnbsd-tdep.o nbsd-tdep.o \ + corelow.o solib.o solib-svr4.o +TM_FILE= tm-nbsd.h diff --git a/gdb/config/sparc/sol2-64.mt b/gdb/config/sparc/sol2-64.mt new file mode 100644 index 00000000000..92f848929fe --- /dev/null +++ b/gdb/config/sparc/sol2-64.mt @@ -0,0 +1,3 @@ +# Target: Solaris UltraSPARC +TDEPFILES= sparc64-tdep.o sparc64-sol2-tdep.o sparc-tdep.o sparc-sol2-tdep.o +TM_FILE= tm-sol2.h diff --git a/gdb/config/sparc/sol2.mh b/gdb/config/sparc/sol2.mh new file mode 100644 index 00000000000..735b9ee8096 --- /dev/null +++ b/gdb/config/sparc/sol2.mh @@ -0,0 +1,6 @@ +# Host: Solaris SPARC & UltraSPARC +NAT_FILE= nm-sol2.h +NATDEPFILES= sparc-sol2-nat.o \ + corelow.o core-regset.o fork-child.o gcore.o \ + procfs.o proc-api.o proc-events.o proc-flags.o proc-why.o \ + solib.o solib-svr4.o solib-legacy.o diff --git a/gdb/config/sparc/sol2.mt b/gdb/config/sparc/sol2.mt new file mode 100644 index 00000000000..4037956317c --- /dev/null +++ b/gdb/config/sparc/sol2.mt @@ -0,0 +1,3 @@ +# Target: Solaris SPARC +TDEPFILES= sparc-tdep.o sparc-sol2-tdep.o +TM_FILE= tm-sol2.h diff --git a/gdb/config/sparc/sparc.mt b/gdb/config/sparc/sparc.mt new file mode 100644 index 00000000000..ea78c97af55 --- /dev/null +++ b/gdb/config/sparc/sparc.mt @@ -0,0 +1,2 @@ +# Target: SPARC +TDEPFILES= sparc-tdep.o diff --git a/gdb/config/sparc/sparc64.mt b/gdb/config/sparc/sparc64.mt new file mode 100644 index 00000000000..b1082be4956 --- /dev/null +++ b/gdb/config/sparc/sparc64.mt @@ -0,0 +1,2 @@ +# Target: UltraSPARC +TDEPFILES= sparc-tdep.o sparc64-tdep.o diff --git a/gdb/config/sparc/tm-sol2.h b/gdb/config/sparc/tm-sol2.h new file mode 100644 index 00000000000..d111c1a7768 --- /dev/null +++ b/gdb/config/sparc/tm-sol2.h @@ -0,0 +1,40 @@ +/* Target-dependent definitions for Solaris SPARC. + + Copyright 2003 Free Software Foundation, Inc. + + This file is part of GDB. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ + +#ifndef TM_SOL2_H +#define TM_SOL2_H + +#define GDB_MULTI_ARCH GDB_MULTI_ARCH_TM + +/* The Sun compilers (Sun ONE Studio, Forte Developer, Sun WorkShop, + SunPRO) compiler puts out 0 instead of the address in N_SO stabs. + Starting with SunPRO 3.0, the compiler does this for N_FUN stabs + too. */ +#define SOFUN_ADDRESS_MAYBE_MISSING + +/* The Sun compilers also do "globalization"; see the comment in + sparc-tdep.c for more information. */ +extern char *sparc_stabs_unglobalize_name (char *name); +#define STATIC_TRANSFORM_NAME(name) \ + sparc_stabs_unglobalize_name (name) +#define IS_STATIC_TRANSFORM_NAME(name) \ + ((name) != sparc_stabs_unglobalize_name (name)) + +#endif /* tm-sol2.h */ diff --git a/gdb/config/sparc/tm-vxworks.h b/gdb/config/sparc/tm-vxworks.h new file mode 100644 index 00000000000..7b0474847c6 --- /dev/null +++ b/gdb/config/sparc/tm-vxworks.h @@ -0,0 +1,31 @@ +/* Target-dependent defenitions for VxWorks SPARC. + + Copyright 1993, 1999, 2004 Free Software Foundation, Inc. + Contributed by Cygnus Support. + + This file is part of GDB. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. */ + +#ifndef TM_VXWORKS_H +#define TM_VXWORKS_H + +#define GDB_MULTI_ARCH GDB_MULTI_ARCH_TM + +/* Get generic VxWorks definitions. */ +#include "config/tm-vxworks.h" + +#endif /* tm-vxworks.h */ diff --git a/gdb/config/sparc/vxworks.mt b/gdb/config/sparc/vxworks.mt new file mode 100644 index 00000000000..175f92ed981 --- /dev/null +++ b/gdb/config/sparc/vxworks.mt @@ -0,0 +1,4 @@ +# Target: VxWorks SPARC +TDEPFILES= sparc-tdep.o \ + remote-vx.o remote-vxsparc.o xdr_ld.o xdr_ptrace.o xdr_rdb.o +TM_FILE= tm-vxworks.h diff --git a/gdb/mi/ChangeLog-1999-2003 b/gdb/mi/ChangeLog-1999-2003 new file mode 100644 index 00000000000..4821597f8d6 --- /dev/null +++ b/gdb/mi/ChangeLog-1999-2003 @@ -0,0 +1,2180 @@ +2003-11-06 Andrew Cagney <cagney@redhat.com> + + * mi-cmd-var.c (mi_cmd_var_set_format): Replace STREQN with + strncmp. + +2003-10-24 Andrew Cagney <cagney@redhat.com> + + * tui-out.c: Fix "fortunatly"[sic]. + +2003-10-02 Andrew Cagney <cagney@redhat.com> + + * mi-main.c: Rename REGISTER_RAW_SIZE to + DEPRECATED_REGISTER_RAW_SIZE. + +2003-09-30 Andrew Cagney <cagney@redhat.com> + + * mi-main.c: Rename REGISTER_VIRTUAL_SIZE to + DEPRECATED_REGISTER_VIRTUAL_SIZE. + +2003-09-17 Andrew Cagney <cagney@redhat.com> + + * mi-main.c: Rename REGISTER_BYTE to DEPRECATED_REGISTER_BYTE. + +2003-09-10 Elena Zannoni <ezannoni@redhat.com> + + * mi-main.c (mi_setup_architecture_data): Don't use + DEPRECATED_REGISTER_BYTES because some architecture don't set it + and its default is 0. + +2003-08-08 Andrew Cagney <cagney@redhat.com> + + * mi-main.c (captured_mi_execute_command): Add "mi2" and "mi3" to + interpreters that hack around CLI. + * mi-interp.c (mi3_command_loop): New function. + (mi_interpreter_resume): Check for "mi3", default to "mi2". + +2003-08-07 Andrew Cagney <cagney@redhat.com> + + * mi-interp.c (_initialize_mi_interp): Register "mi2" and "mi3". + Make "mi" select "mi2". + +2003-08-05 Andrew Cagney <cagney@redhat.com> + + * mi-cmd-env.c (env_execute_cli_command): Use an explicit "%s %s" + when constructing the run command. + (mi_cmd_env_cd, mi_cmd_env_path, mi_cmd_env_dir): Simplify command + string removing the "%s". + +2003-08-04 Andrew Cagney <cagney@redhat.com> + + * mi-cmds.h (struct mi_cli): Define. + (struct mi_cmd): Change type of "cli" to "struct mi_cli". + * mi-cmds.c (mi_cmds): Update table. + * mi-parse.c (mi_parse): Update. + * mi-main.c (mi_execute_cli_command): Add "args_p" parameter, make + others constant. + (mi_cmd_execute): Update call. + (captured_mi_execute_command): Ditto. + +2003-08-04 David Carlton <carlton@kealia.com> + + * mi-main.c (mi_error_last_message): Add "%s" second argument to + xasprintf call. + +2003-06-28 Daniel Jacobowitz <drow@mvista.com> + + * mi-out.c (mi_ui_out_impl): Add NULL for redirect member. + +2003-06-17 Daniel Jacobowitz <drow@mvista.com> + + * mi-cmds.c (mi_cmds): Add "-target-disconnect". + +2003-06-11 David Carlton <carlton@bactrian.org> + + * mi-cmd-stack.c: Include dictionary.h. + (list_args_or_locals): Update use of ALL_BLOCK_SYMBOLS. + +2003-06-11 Andrew Cagney <cagney@redhat.com> + + * mi-main.c (get_register): Replace REGISTER_CONVERTIBLE with + DEPRECATED_REGISTER_CONVERTIBLE. + +2003-06-08 Andrew Cagney <cagney@redhat.com> + + * mi-parse.c (_initialize_mi_parse): Delete function. + * mi-main.c: Include "mi-main.h". + * mi-interp.c (_initialize_mi_interp): Add declaration. + * mi-cmd-stack.c: Include "stack.h". + (select_frame_command_wrapper): Delete extern declaration. + (mi_cmd_stack_select_frame): Replace select_frame_command_wrapper + with select_frame_command. + +2003-05-16 Andrew Cagney <cagney@redhat.com> + + * mi-main.c (mi_setup_architecture_data): + +2003-05-12 Elena Zannoni <ezannoni@redhat.com> + + * mi-mi-cmd-stack.c (list_args_or_locals): Rename VAR_NAMESPACE to + VAR_DOMAIN. + +2003-05-11 Andrew Cagney <cagney@redhat.com> + + * mi-symbol-cmds.c: Rename "mi-cmd-symbol.c", avoid 8.3 problem. + +2003-05-08 Andrew Cagney <cagney@redhat.com> + + * mi-main.c (register_changed_p): Use MAX_REGISTER_SIZE instead of + MAX_REGISTER_RAW_SIZE. + +2003-05-08 Andrew Cagney <cagney@redhat.com> + + * mi-main.c (get_register): Use MAX_REGISTER_SIZE. + +2003-05-05 Andrew Cagney <cagney@redhat.com> + + * mi-main.c (mi_cmd_data_write_register_values): Replace + REGISTER_SIZE with DEPRECATED_REGISTER_SIZE. + +2003-05-03 J. Brobecker <brobecker@gnat.com> + + From Thierry Schneider <tpschneider1@yahoo.com>: + * mi-cmds.h (mi_cmd_symbol_list_lines): Add declaration. + * mi-cmds.c (mi_cmds): Add entry for new MI command. + * mi-cmd-symbol.c (mi_cmd_symbol_list_lines): New source file + for all symbol-related commands. + +2003-04-02 Bob Rossi <bob_rossi@cox.net> + + * mi-cmd-file.c: New file to implement mi file commands. + * mi-getopt.c (mi_valid_noargs): Added mi_valid_noargs to verify + if a set of parameters passed to an MI function has no arguments + * mi-getopt.h (mi_valid_noargs): Declare. + * mi-cmds.c (mi_cmds): Added -file-list-exec-source-file command. + * mi-cmds.h (mi_cmd_file_list_exec_source_file): Declare. + +2003-03-27 Andrew Cagney <cagney@redhat.com> + + * gdbmi.texinfo: Delete file. Contents moved to + ../doc/gdb.texinfo. + +2003-03-12 Andrew Cagney <cagney@redhat.com> + + * mi-main.c (get_register): Use frame_register instead of + get_saved_register. + +2003-03-08 Andrew Cagney <cagney@redhat.com> + + * mi-out.c: Update copyright. + (mi_out_data): Define typedef. Use instead of ui_out_data. + +2003-03-01 Andrew Cagney <cagney@redhat.com> + + * mi-main.c (get_register): Use register_type instead of + REGISTER_VIRTUAL_TYPE. + +2003-02-25 David Carlton <carlton@math.stanford.edu> + + * mi-cmd-stack.c: Replace all instances of SYMBOL_NAME with + DEPRECATED_SYMBOL_NAME. Update copyright. + +2003-02-21 Daniel Jacobowitz <drow@mvista.com> + + * mi-cmd-stack.c (list_args_or_locals): Handle LOC_COMPUTED and + LOC_COMPUTED_ARG. + +2003-02-19 David Carlton <carlton@math.stanford.edu> + + * mi-cmd-stack.c: #include "block.h" + +2003-02-09 Andrew Cagney <ac131313@redhat.com> + + * mi-interp.c (mi_remove_notify_hooks): Convert function + definition to ISO C. + +2003-02-06 Andrew Cagney <ac131313@redhat.com> + + * mi-cmd-env.c: Include "gdb_stat.h" instead of <sys/stat.h>. + +2003-02-04 Jim Ingham <jingham@apple.com> + Keith Seitz <keiths@redhat.com> + Elena Zannoni <ezannoni@redhat.com> + Andrew Cagney <ac131313@redhat.com> + + * mi-main.h: New file. + * mi-interp.c: New file. + * mi-main.c: Include "interps.h". + (mi_error_message): Make global. + (mi_input): Delete static function, moved to "mi-interp.c". + (mi_execute_command, mi_execute_command_wrapper): Ditto. + (mi_command_loop, mi1_command_loop, mi2_command_loop): Ditto. + (mi_load_progress): Make non-static. + (mi_error_last_message): New function. + (captured_mi_execute_command): If the interpreter changed, don't + print anything. + (mi_load_progress): Use current_interp_named_p. + (mi_init_ui): Delete function. + (_initialize_mi_main): Don't install the mi interpreter, handled + by "mi-interp.c". + (mi_exec_async_cli_cmd_continuation): Make static. + * mi-console.h (mi_console_file_new): Add `quote' parameter. + * mi-console.c (struct mi_console_file): Add `quote'. + (mi_console_file_new): Add `quote' parameter. Initialize `quote'. + (mi_console_raw_packet): Only quote the output when `quote'. + * mi-cmds.h (mi_cmd_interpreter_exec): Declare. + (mi_error_message, mi_error_last_message): Declare. + (mi_execute_command): Declare. + * mi-cmds.c: Add `interpreter-exec' command. + +2003-02-04 Andrew Cagney <ac131313@redhat.com> + + From Keith Seitz <keiths@redhat.com>: + * gdbmi.texinfo (GDB/MI Miscellaneous Commands): Document the + interpreter-exec command. + +2003-02-02 Andrew Cagney <ac131313@redhat.com> + + From 2002-11-10 Jason Molenda (jason-cl@molenda.com): + * mi-cmd-var.c (mi_cmd_var_list_children): CHILDREN field is + now a list; still a tuple when in mi1. + * gdbmi.texinfo: Update var-list-children example. + +2003-01-13 Andrew Cagney <ac131313@redhat.com> + + * mi-cmd-env.c: Update copyright. + +2003-01-13 Elena Zannoni <ezannoni@redhat.com> + + * mi-main.c (mi_cmd_exec_return): Use print_stack_frame instead of + show_and_print_stack_frame. + +2003-01-09 Andrew Cagney <ac131313@redhat.com> + + * mi-cmd-env.c: Include "gdb_string.h" instead of <string.h>. + Move all includes to after "defs.h". + +2002-12-13 Jeff Johnston <jjohnstn@redhat.com> + + * mi-cmds.c (-environment-directory) Change to use mi_cmd_env_dir, + (-environment-cd): Change to use mi_cmd_env_cd,. + (-environment-pwd): Change to use mi_cmd_env_pwd. + (-environment-path): Change to use mi_cmd_env_path. + * mi-cmds.h (mi_cmd_env_cd, mi_cmd_env_dir): New prototypes. + (mi_cmd_env_path, mi_cmd_env_pwd): Ditto. + * mi-cmd-env.c: New file. Part of fix for PR gdb/741. + * gdbmi.texinfo (environment-cd): Update output and example. + (environment-pwd): Ditto. + (environment-dir): Update output, description, and examples. + (environment-path): Ditto. + +2002-11-29 Andrew Cagney <ac131313@redhat.com> + + * mi/mi-cmd-stack.c, mi/mi-main.c: Update to use + deprecated_selected_frame. + +2002-11-13 Andrew Cagney <ac131313@redhat.com> + + * mi-main.c (mi_cmd_data_write_register_values): Use + deprecated_write_register_bytes instead of write_register_bytes. + +2002-11-11 Jeff Johnston <jjohnstn@redhat.com> + + * gdbmi.texinfo (-var-assign): Add comments about interaction + with -var-update and add an example. Part of fix for gdb/702. + +2002-11-08 Jeff Johnston <jjohnstn@redhat.com> + + * mi-main.c (mi_command_loop): Initialize raw_stdout and gdb_stdout + only if mi version is <= 1. + (mi_init_ui): Initialize raw_stdout and gdb_stdout if mi version + is > 1 so startup message is treated as console output. This is + part of fix for PR gdb/604. + +2002-11-06 Jeff Johnston <jjohnstn@redhat.com> + + * mi-cmd-var.c (mi_cmd_var_create): Change the function used to + parse the frame addr from parse_and_eval_address() to + string_to_core_addr(). This is a fix for PR gdb/494. + +2002-10-23 Jeff Johnston <jjohnstn@redhat.com> + + * mi-cmd-var.c: Change all remaining occurrences of ui_out_tuple_begin + to make_cleanup_ui_out_tuple_begin_end. Change all remaining + occurrences of ui_out_list_begin to make_cleanup_ui_out_list_begin_end. + Use do_cleanups instead of ui_out_list_end or ui_out_tuple_end. This + is a fix for PR gdb/680. + * mi-cmd-stack.c: Ditto. + * mi-main.c: Ditto. + +2002-10-22 Keith Seitz <keiths@redhat.com> + + * mi-main.c (mi_cmd_thread_select): Only return MI_CMD_CAUGHT_ERROR + when we really did catch an error(). If we got GDB_RC_FAIL, return + MI_CMD_ERROR instead. + +2002-10-03 Jeff Johnston <jjohnstn@redhat.com> + + * gdbmi.texinfo: Fix examples that show frames to remove + extraneous blank in level field. Part of fix for PR gdb/192. + +2002-10-03 Jeff Johnston <jjohnstn@redhat.com> + + * mi-cmd-var.c (mi_cmd_var_update): Fix for PR gdb/672. For m2, + output list begin and end for "changelist" rather than tuple begin/end. + (varobj_update_one): For m2, add tuple begin and end for varobj + update output. + +2002-10-02 Elena Zannoni <ezannoni@redhat.com> + + * mi-main.c (mi_cmd_exec_return): Don't use + return_command_wrapper, use return_command instead. + (mi_cmd_exec_interrupt): Don't use + interrupt_target_command_wrapper, use interrupt_target_command + instead. + (return_command_wrapper, interrupt_target_command_wrapper): + Delete. + Include frame.h. + +2002-10-01 Andrew Cagney <ac131313@redhat.com> + + * mi-main.c (mi2_command_loop): New function. + (mi0_command_loop): Delete function. + (_initialize_mi_main): Recognize, and default to, "mi2". Do not + recognize "mi0". + * mi-out.c (mi_table_begin): Remove mi0 code. + (mi_table_body, mi_table_end): Ditto. + (mi_table_header, mi_open, mi_close): Ditto. + +2002-09-29 Andrew Cagney <ac131313@redhat.com> + + * mi-out.c (mi_version): New function. + * mi-out.h (mi_version): Declare. + +2002-09-27 Andrew Cagney <ac131313@redhat.com> + + From 2002-07-12 Mo DeJong <supermo@bayarea.net> + * gdbmi.texinfo (var-evaluate-expression): Note that + var-list-children must be invoked before child variable + values can be evaluated. + +2002-09-26 Elena Zannoni <ezannoni@redhat.com> + + * mi-cmd-disas.c (dump_insns): Add text only output for CLI. + (do_mixed_source_and_assembly): Ditto. + +2002-09-11 Keith Seitz <keiths@redhat.com> + + * mi-main.c (mi_cmd_data_list_register_names): Use cleanups + for the uiout list. Do the cleanups when returning an error. + (mi_cmd_data_list_changed_registers): Ditto. + (mi_cmd_data_list_register_values): Use cleanups for the uiout list + and tuples. Do the cleanups when returning errors. + +2002-07-29 Andrew Cagney <ac131313@redhat.com> + + * mi-cmd-var.c: Include "gdb_string.h". + * mi-cmd-disas.c: Ditto. + +2002-06-17 Keith Seitz <keiths@redhat.com> + + * gdbmi.texinfo: Update command examples with real MI behavior. + +2002-05-20 Keith Seitz <keiths@redhat.com> + + * mi-main.c (captured_mi_execute_command): Add uiout parameter. + "data" is now a structure which is used to pass data to/from this + function to mi_execute_command. + Modify function to comply with requirements from catch_exceptions. + Store real return result and command's return result in data. + (mi_execute_command): Use catch_exceptions. + Use enum to handle actions to be performed instead of overloading + catch_errors return result and the mi return result. + +2002-04-14 Andrew Cagney <ac131313@redhat.com> + + * mi-main.c (mi_cmd_exec_return): + +2002-04-09 Andrew Cagney <ac131313@redhat.com> + + * mi-main.c (register_changed_p): Use frame_register_read instead + of read_relative_register_raw_bytes. + (get_register): Delete out-of-date comment. + +2002-04-07 Elena Zannoni <ezannoni@redhat.com> + + * mi-cmd-disas.c: Run through indent. + +2002-04-07 Elena Zannoni <ezannoni@redhat.com> + + * mi-cmd-disas.c (dump_insns): New function. + (do_mixed_source_and_assembly): New function. + (do_assembly_only): New function. + (do_disassembly): New function. + (mi_cmd_disassemble): Rewrite using smaller, more modular + functions. + +2002-04-05 Jim Blandy <jimb@redhat.com> + + * mi-cmd-stack.c (list_args_or_locals): Pass new arg to + get_frame_block. (See entry in gdb/ChangeLog.) + +2002-04-05 Elena Zannoni <ezannoni@redhat.com> + + * mi-cmd-disas.c (mi_cmd_disassemble): Use TARGET_PRINT_INSN + instead of tm_print_insn. + Update copyright year. + +2002-04-04 Daniel Jacobowitz <drow@mvista.com> + + * mi-cmd-disas.c (mi_cmd_disassemble): Skip end-of-function + markers in the line table. + +2002-03-15 Andrew Cagney <ac131313@redhat.com> + + * mi-main.c (XMALLOC): Delete macro. + * mi-out.c (XMALLOC): Ditto. + * mi-parse.c (XMALLOC): Ditto. + * mi-console.c (XMALLOC): Ditto. + * mi-cmd-var.c (XMALLOC): Ditto. + * mi-cmd-break.c (XMALLOC): Ditto. + + * mi/mi-cmd-var.c, mi/mi-console.c, mi/mi-out.c: Update copyright + * mi/mi-parse.c: Ditto. + +2002-02-24 Andrew Cagney <ac131313@redhat.com> + + From wiz at danbala: + * gdbmi.texinfo: Fix grammar and typos. + Fix PR gdb/287. + +2002-02-03 Jim Blandy <jimb@redhat.com> + + * mi-cmd-stack.c (list_args_or_locals): Move declaration of + print_me inside the loop body, so it gets re-initialized every + iteration. The cases for the different symbol kinds leave + print_me unchanged if they don't want the symbol printed. + +2002-01-22 Andrew Cagney <ac131313@redhat.com> + + * gdbmi.texinfo: Remove makeinfo 3.12 hacks. + +2002-01-21 Andrew Cagney <ac131313@redhat.com> + + * mi-cmd-stack.c: Remove #else clause of #ifdef UI_OUT. + * mi-cmd-break.c: Ditto. + * mi-main.c: Ditto. + +2001-12-30 Eli Zaretskii <eliz@is.elta.co.il> + + * gdbmi.texinfo: Fix the application of GFDL in the Copyright notice. + +2001-10-12 Daniel Jacobowitz <drow@mvista.com> + + * mi-cmd-stack.c (list_args_or_locals): Use ALL_BLOCK_SYMBOLS. + +2001-09-18 Andrew Cagney <ac131313@redhat.com> + + * mi-main.c (mi_cmd_thread_select): Pass uiout to + gdb_thread_select. + (mi_cmd_thread_list_ids): Pass uiout to gdb_list_thread_ids. + + * mi-cmd-break.c (breakpoint_notify): Pass uiout to + gdb_breakpoint_query. + +2001-08-17 Keith Seitz <keiths@redhat.com> + + * mi-cmd-var.c (varobj_update_one): Update call to + varobj_update to reflect recent api change. + +2001-07-26 Andrew Cagney <ac131313@redhat.com> + + * mi-main.c: Include "gdb.h". + * mi-cmd-break.c: Include "gdb.h". + +2001-07-12 Andrew Cagney <ac131313@redhat.com> + + * mi-main.c (mi_execute_command): Flush output after ``(gdb)'' + prompt. Bug reported by David Whedon. + (mi_execute_async_cli_command): Ditto. + (mi_exec_async_cli_cmd_continuation): Ditto. + (mi_command_loop): Ditto. + +2001-07-10 Mark Kettenis <kettenis@gnu.org> + + * mi-out.c (mi_out_new): Initialize suppress_ouput field of newly + created `struct ui_out_data'. + +2001-07-09 Kevin Buettner <kevinb@redhat.com> + + * mi-main.c (register_changed_p, get_register): Use alloca() + to allocate space previously allocated via gcc's + variable-length array extension. + (mi_cmd_data_write_register_values, mi_cmd_data_write_memory): + Change type of ``buffer'' to ``void *''. Don't cast return value + from xmalloc(). Add a cleanup to free the xmalloc'd buffer. + +2001-07-07 Andrew Cagney <ac131313@redhat.com> + + * mi-main.c (mi_cmd_data_evaluate_expression): Replace value_ptr + with `struct value *'. + +2001-07-08 Kevin Buettner <kevinb@redhat.com> + + * mi-out.c (mi_table_header, mi_field_int, mi_field_skip) + (mi_field_string) Make function declarators match earlier + declarations. + +2001-07-04 Andrew Cagney <ac131313@redhat.com> + + * mi-out.c (mi_ui_out_impl): Initialize is_mi_like_p to one. + +2001-06-27 Andrew Cagney <ac131313@redhat.com> + + * mi-out.c (mi_table_begin): Include nr_cols and nr_rows in mi1 + table output. + * mi-out.c (mi_table_begin): Only suppress output when mi0. Change + the header to a list. + (mi_table_body): For mi1, close the header list and open a table + body list. + (mi_table_end): For mi1, close the body list. + (mi_table_header): For mi1, output a tuple containing all the + header information. + (mi_open, mi_close): Reverse logic of mi_version test. + * gdbmi.texinfo (GDB/MI Breakpoint Table Commands): Update. + +2001-06-26 Andrew Cagney <ac131313@redhat.com> + + * gdbmi.texinfo (GDB/MI Output Syntax): Delete reference to query + packet. + +2001-06-26 Andrew Cagney <ac131313@redhat.com> + + * mi-cmd-stack.c (list_args_or_locals): Output a list of "args" or + "locals" entries. + * gdbmi.texinfo (stack-list-locals, stack-list-arguments) + (exec-interrupt, target-select, thread-select): Update + documentation. + +2001-06-26 Andrew Cagney <ac131313@redhat.com> + + * mi-cmd-stack.c (mi_cmd_stack_list_frames): Output a list of + "stack" entries. + (mi_cmd_stack_list_args): Ditto for "stack-args". + * gdbmi.texinfo (stack-list-frames, stack-list-arguments): Update + documentation. + (GDB/MI Stack Manipulation Commands): Fix section title. Was + Stack Manipulation Commands in GDB/MI. + +2001-06-25 Andrew Cagney <ac131313@redhat.com> + + * gdbmi.texinfo: Update output examples that contain stop reason + output, change the args=.... to a list. + (exec-return): Ditto. + +2001-06-25 Andrew Cagney <ac131313@redhat.com> + + * mi-main.c (mi_cmd_data_read_memory): Output the memory contents + - memory and data - as a list. + * gdbmi.texinfo (data-read-memory): Update documentation. + +2001-06-25 Andrew Cagney <ac131313@redhat.com> + + * mi-main.c (mi_cmd_data_list_register_values): Output a list of + register values. + * gdbmi.texinfo (data-list-register-values): Update documentation. + +2001-06-25 Andrew Cagney <ac131313@redhat.com> + + * mi-main.c (mi_cmd_data_list_register_names): Output a list of + register names. + (mi_cmd_data_list_register_names): Include the pseudo registers. + (mi_cmd_data_list_register_names): Don't leave holes in the list, + output "" for NULL registers. + * gdbmi.texinfo (data-list-register-names): Update documentation. + +2001-06-23 Andrew Cagney <ac131313@redhat.com> + + * mi-main.c (mi_cmd_data_list_changed_registers): Output a list of + register numbers. + * gdbmi.texinfo (data-list-changed-registers): Update + documentation. + +2001-06-23 Andrew Cagney <ac131313@redhat.com> + + * gdbmi.texinfo (data-disassemble): Update documentation of + output. Produces a list of instructions and a list of source + lines. + +2001-06-22 Andrew Cagney <ac131313@redhat.com> + + * mi-cmd-disas.c (mi_cmd_disassemble): For "-data-disassemble", + output a list instead of a tupple. + +2001-06-21 Andrew Cagney <ac131313@redhat.com> + + * mi-out.c (struct ui_out_data): Replace field first_header with + suppress_output. + (mi_begin, mi_end): Check suppress_header. + (mi_field_int, mi_field_skip): Ditto. + (mi_field_string, mi_field_fmt): Ditto. + (mi_table_begin): When nr_rows is zero, set suppress_header else, + output the start of the header. + (mi_table_body): Clear suppress header. + +2001-06-21 Andrew Cagney <ac131313@redhat.com> + + * mi-out.c (mi_open): For lists, when mi_version > 0, use ``[''. + (mi_close): Ditto for ``]''. + +2001-06-20 Andrew Cagney <ac131313@redhat.com> + + * mi-out.c (mi_table_header): Add parameter ``col_name''. + +2001-06-18 Andrew Cagney <ac131313@redhat.com> + + * mi-out.c: Include "gdb_assert.h". + (mi_table_begin): Add parameter ``nr_rows''. + +2001-06-18 Andrew Cagney <ac131313@redhat.com> + + * mi-main.c: Use strncmp as the "mi" test. Allow "mi", "mi0" and + "mi1". + (mi_command_loop): Add parameter mi_version, pass to mi_out_new. + (mi1_command_loop, mi0_command_loop): New functions. + (_initialize_mi_main): Recognize "mi", "mi0" and "mi1". + * mi-out.c (mi_out_new): Add parameter mi_version. + (struct ui_out_data): Add field mi_version. + * mi-out.h (mi_out_new): Update. + +2001-06-07 Andrew Cagney <ac131313@redhat.com> + + * gdbmi.texinfo (GDB/MI Output Syntax): Add tuples and lists to + syntax. + (GDB/MI Draft Changes to Output Syntax): Delete section. + +Mon Jun 11 17:22:25 2001 Andrew Cagney <cagney@b1.cygnus.com> + + * mi-out.c: Fix typo. s/supress/suppress/. + +2001-06-09 Andrew Cagney <ac131313@redhat.com> + + * mi-out.c (mi_table_end, mi_table_begin, mi_begin, mi_end): Move + supress_field_separator updates from here. + (mi_open, mi_close): To here. + (mi_open): Add parameter name. Output a field_separator. + (mi_table_begin): Update. + (mi_table_header): Update. + (mi_begin): Update. + +2001-06-09 Andrew Cagney <ac131313@redhat.com> + + * mi-out.c (mi_table_begin): Make char* parameters constant. + (mi_table_header): Ditto. + (mi_field_int): Ditto. + (mi_field_skip): Ditto. + (mi_field_string): Ditto. + (mi_field_fmt): Ditto. + (mi_text): Ditto. + (mi_message): Ditto. + +2001-05-12 Andrew Cagney <ac131313@redhat.com> + + * mi-out.c (mi_close, mi_open): Output ``[]'' when a list. + +Fri May 11 13:55:07 2001 Andrew Cagney <cagney@b1.cygnus.com> + + * mi-cmd-var.c: Replace ui_out_list_begin, ui_out_list_end and + make_cleanup_ui_out_list_end with ui_out_tupple_begin, + ui_out_tupple_end and make_cleanup_ui_out_tupple_begin_end. + * mi-cmd-stack.c: Ditto. + * mi-cmd-disas.c: Ditto. + * mi-main.c: Ditto. + +2001-05-10 Andrew Cagney <ac131313@redhat.com> + + * mi-out.c (mi_open, mi_close): Replace list_open and list_close. + (mi_table_begin): Update. + (mi_table_header): Update. + (mi_begin): Update. + (mi_table_body): Update. + (mi_table_end): Update. + (mi_end): Update. + +Thu May 10 16:28:13 2001 Andrew Cagney <cagney@b1.cygnus.com> + + * mi-main.c (mi_execute_async_cli_command): Always initialize + old_cleanups. + +2001-05-08 Andrew Cagney <ac131313@redhat.com> + + * mi-out.c (mi_begin, mi_end): Replace mi_list_begin and + mi_list_end. + (mi_ui_out_impl): Update. + +2001-03-28 Andrew Cagney <ac131313@redhat.com> + + * mi-main.c (mi_cmd_data_read_memory): Use xcalloc. + +2001-03-26 Eli Zaretskii <eliz@is.elta.co.il> + + * gdbmi.texinfo: Update copyright. Change Permissions to GFDL. + +2001-03-20 Andrew Cagney <ac131313@redhat.com> + + * mi-cmd-disas.c (mi_cmd_disassemble): Initialize ``file_string'' + and ``line_num''. Consolidate declaration of argument variables. + +2001-03-19 Andrew Cagney <ac131313@redhat.com> + + * mi-out.h: Remove #ifdef __STDC__. + +2001-03-08 Andrew Cagney <ac131313@redhat.com> + + * mi-main.c (mi_cmd_data_list_register_names): Use NUM_REGS, not + ARCH_NUM_REGS. + (mi_cmd_data_list_changed_registers): Ditto. + (mi_cmd_data_list_register_values): Ditto. + (mi_cmd_data_write_register_values): Ditto. + +2001-03-06 Kevin Buettner <kevinb@redhat.com> + + * gdbmi.texinfo, mi-cmd-disas.c, mi-cmd-stack.c, mi-cmd-var.c, + mi-cmds.c, mi-cmds.h, mi-console.c, mi-console.h, mi-getopt.c, + mi-getopt.h, mi-out.c, mi-out.h, mi-parse.c, mi-parse.h: + Update/correct copyright notices. + +Wed Feb 7 19:50:37 2001 Andrew Cagney <cagney@redhat.com> + + * mi-getopt.c: Add __FILE__ and __LINE__ parameter to calls to + internal_error. + * mi-console.c: Ditto. + * mi-cmds.c: Ditto. + * mi-cmd-break.c: Ditto. + +2001-01-27 Fernando Nasser <fnasser@redhat.com> + + From Momchil Velikov <velco@fadata.bg> + * mi-cmd-disas.c (gdb_dis_asm_read_memory): Add missing memory + attributes argument in the call to `xfer_memory'. + +2000-12-14 Kevin Buettner <kevinb@redhat.com> + + * mi-cmd-disas.c, mi-cmd-var.c, mi-console.c, mi-main.c, + mi-parse.c: Replace occurrences of free() with xfree(). + +Fri Nov 17 16:07:23 2000 Andrew Cagney <cagney@b1.cygnus.com> + + * mi-main.c: Replace asprintf with xasprintf. + * mi-cmd-var.c (mi_cmd_var_create): Ditto. + +2000-10-16 Eli Zaretskii <eliz@is.elta.co.il> + + * gdbmi.texinfo (GDB/MI Variable Objects): Dimensions of + multitable changed to "@columnfractions .4 .6". Suggested by + Dmitry Sivachenko <dima@Chg.RU>. + +2000-08-23 Eli Zaretskii <eliz@is.elta.co.il> + + * gdbmi.texinfo: Change flathead -> @sc{gdb/mi}. + Fix typos and markup mistakes (from Dmitry S. + Sivachenko <dima@Chg.RU>). + +2000-07-24 Eli Zaretskii <eliz@is.elta.co.il> + + * gdbmi.texinfo: Change GDB -> @value{GDBN}, and + (gdb) -> (@value{GDBP}). Fix a few typos and some markup. From + Dmitry S. Sivachenko <dima@Chg.RU>. + +Tue May 16 14:13:41 2000 Andrew Cagney <cagney@b1.cygnus.com> + + * mi-main.c (mi_cmd_execute): Use free_current_contents. + (free_and_reset): Delete. + +Mon May 15 16:17:56 2000 Andrew Cagney <cagney@b1.cygnus.com> + + * mi-main.c (mi_cmd_data_assign, mi_cmd_data_evaluate_expression), + mi-cmd-var.c (mi_cmd_var_create, mi_cmd_var_delete): Delete + make_cleanup_func casts. Not needed. + +2000-05-07 Eli Zaretskii <eliz@is.elta.co.il> + + * gdbmi.texinfo: Lots of typos and grammar fixes from Brian + Youmans <3diff@flib.gnu.ai.mit.edu>. + +Wed Apr 26 18:35:19 2000 Andrew Cagney <cagney@b1.cygnus.com> + + * gdbmi.texinfo (GDB/MI Output Syntax v2.0): Convert Draft 2.0 + Output Syntax into a new section. Cross reference. + (menu): Fix tipo. GDB/MI Compatibility with CLI. + +2000-04-23 Eli Zaretskii <eliz@is.elta.co.il> + + * gdbmi.texinfo: Lots of changes, to include this document as part + of the GDB manual. + +2000-03-13 James Ingham <jingham@leda.cygnus.com> + + * mi-cmd-var.c (mi_cmd_var_create): Add special frame cookie "@" + to indicate an "USE_CURRENT_FRAME" variable. + (varobj_update_one): Add "in_scope" and "type_changed" to the + result. + +2000-03-06 Elena Zannoni <ezannoni@kwikemart.cygnus.com> + + * mi-cmds.h: Export mi_cmd_data_write_register_values. + + * mi-cmds.c (mi_cmds): Implement data-write-register-values with + mi_cmd_data_write_register_values. + + * mi-main.c (mi_cmd_data_write_register_values): New + function. Write a value into a register. + +2000-03-06 Elena Zannoni <ezannoni@kwikemart.cygnus.com> + + * gdbmi.texinfo: Update data-disassemble documentation. + +2000-03-01 Elena Zannoni <ezannoni@kwikemart.cygnus.com> + + * mi-cmd-disas.c (mi_cmd_disassemble): Use + ui_out_field_core_addr() instead of print_address_numeric(), to + maintain consistency throughout MI. + +Wed Feb 23 17:09:39 2000 Andrew Cagney <cagney@b1.cygnus.com> + + * mi-cmd-break.c, mi-cmd-disas.c, mi-cmd-stack.c, mi-cmd-var.c, + mi-cmds.c, mi-cmds.h, mi-console.c, mi-console.h, mi-getopt.c, + mi-getopt.h, mi-main.c, mi-out.c, mi-out.h, mi-parse.c, + mi-parse.h: Update copyright information. + +Wed Feb 23 13:31:16 2000 Andrew Cagney <cagney@b1.cygnus.com> + + * mi-cmd-disas.c (gdb_dis_asm_read_memory): Change LEN to unsigned + long. Match ../include/dis-asm.h change. + +Wed Feb 23 10:30:55 2000 Andrew Cagney <cagney@b1.cygnus.com> + + * gdbmi.texinfo: Update copyright - FSF. Update version + information. + + mi-cmd-break.c, mi-cmd-disas.c, mi-cmd-stack.c, mi-cmd-var.c, + mi-cmds.h, mi-main.c, mi-parse.c, mi-parse.h: Re-format using GNU + indent. + +2000-02-21 Elena Zannoni <ezannoni@kwikemart.cygnus.com> + + * mi-main.c: Add include of gdbcore.h for write_memory() + prototype. + +2000-02-18 Elena Zannoni <ezannoni@kwikemart.cygnus.com> + + * mi-cmd-disas.c (mi_cmd_disassemble): Change syntax of + command. Now use options. + Instead of printing the symbolic address of instructions via + print_address_symbolic(), use build_address_symbolic() and format + properly for output. + (gdb_do_disassmble): Delete. + +2000-02-18 Elena Zannoni <ezannoni@kwikemart.cygnus.com> + + * mi-cmd-disas.c (mi_cmd_disassemble): + +2000-02-17 Elena Zannoni <ezannoni@kwikemart.cygnus.com> + + * mi-main.c (mi_cmd_data_write_memory): New function. Write a + value into target memory. + + * mi-cmds.h (mi_cmd_data_write_memory): Export. + + * mi-cmds.c (mi_cmds): Hook up data-write-memory to + mi_cmd_data_write_memory(). + +2000-02-17 Elena Zannoni <ezannoni@kwikemart.cygnus.com> + + * mi-main.c (mi_cmd_target_download): Correct error message to + report right function name. + (mi_cmd_target_select): Add doing exec cleanups at end. + (mi_cmd_data_read_memory): Correct typo. + (mi_cmd_execute): Do not simply free last_async_command, but reset + it to NULL as well. + (free_and_reset): New function, free the argument and set it to + NULL. + (mi_cmd_target_select_continuation): Delete prototype. + +Tue Feb 1 00:17:12 2000 Andrew Cagney <cagney@b1.cygnus.com> + + * mi-cmd-disas.c, mi-cmds.h, mi-console.c, mi-console.h, + mi-main.c, mi-out.c, mi-out.h: Update to reflect rename of + gdb-file / GDB_FILE to ui-file / ``struct ui_file''. + +Mon Jan 31 18:33:28 2000 Andrew Cagney <cagney@b1.cygnus.com> + + * mi-main.c (mi_command_loop): Delete reference to + fputs_unfiltered_hook. + +2000-01-27 Elena Zannoni <ezannoni@kwikemart.cygnus.com> + + * mi-cmds.c (mi_cmds): Update entries for + mi_cmd_data_list_register_names, + mi_cmd_data_list_changed_registers, + mi_cmd_data_list_register_values. + + * mi-cmds.h (mi_cmd_data_list_register_names, + mi_cmd_data_list_changed_registers, + mi_cmd_data_list_register_values): Update to mi_cmd_argv_ftype. + + * mi-main.c (mi_cmd_data_list_register_names, + mi_cmd_data_list_changed_registers, + mi_cmd_data_list_register_values): Update to use argc, argv + parameters. + +2000-01-27 Elena Zannoni <ezannoni@kwikemart.cygnus.com> + + * mi-main.c (mi_cmd_data_read_memory): Correct the computation of + next-row. + +2000-01-27 Fernando Nasser <fnasser@totem.to.cygnus.com> + + * mi-cmd-var.c (mi_cmd_var_create): Test for NULL type. + (mi_cmd_var_set_format, mi_cmd_var_show_format, + mi_cmd_var_info_num_children, mi_cmd_var_list_children, + mi_cmd_var_info_type, mi_cmd_var_info_expression, + mi_cmd_var_show_attributes, mi_cmd_var_evaluate_expression, + mi_cmd_var_assign, mi_cmd_var_update): Prevent possibility of memory + leak on error. + +2000-01-27 Fernando Nasser <fnasser@totem.to.cygnus.com> + + * mi-out.c (mi_field_string): Test for NULL string pointer. + +2000-01-17 Elena Zannoni <ezannoni@kwikemart.cygnus.com> + + * mi-cmd-stack.c (mi_cmd_stack_list_frames): Call + print_frmae_info() with the correct arguments. + + * mi-main.c (mi_cmd_exec_return): Call + show_and_print_stack_frame() with LOC_AND_ADDRESS, so it does the + right thing. Update Copyright. + +2000-01-13 Elena Zannoni <ezannoni@kwikemart.cygnus.com> + + * mi-main.c: Move disassemble commands from here. + + * mi-cmd-disas.c: To here. New file. + +2000-01-13 Elena Zannoni <ezannoni@kwikemart.cygnus.com> + + * mi-cmd-stack.c: Remove include of mi-out.h. + + * mi-main.c (mi_cmd_disassemble): Update function to use argc/argv + interface. + + * mi-cmds.h: Ditto. + + * mi-cmds.c: Ditto. + +2000-01-12 Elena Zannoni <ezannoni@kwikemart.cygnus.com> + + * gdbmi.texinfo: Update stack commands descriptions. + Add thread commands descriptions and examples. + + * mi-main.c (mi_cmd_thread_list_ids): Fix typo. + +2000-01-12 Elena Zannoni <ezannoni@kwikemart.cygnus.com> + + * mi-main.c (mi_cmd_thread_list_ids): New function, print a list + of currently known threads ids, and the total number of threads. + (mi_cmd_thread_select): New function. Switch current thread. + + * mi-cmds.c (mi_cmds): Implement thread-list-ids by + mi_cmd_thread_list_ids, and thread-select by mi_cmd_thread_select. + + * mi-cmds.h (mi_cmd_thread_select, mi_cmd_thread_list_ids): Export. + +2000-01-11 Elena Zannoni <ezannoni@kwikemart.cygnus.com> + + * mi-main.c: Move stack commands from here. + + * mi-cmd-stack.c: To here. New file. + +2000-01-07 Elena Zannoni <ezannoni@kwikemart.cygnus.com> + + * mi-main.c (list_args_or_locals): Add a new paramter, the frame + for which to display args or locals. Don't use selected_frame + anymore, use the new parameter instead. Return void instead of + mi_cmd_result, let callers do so. + (mi_cmd_stack_list_args): Change interface. Now accept low and + high frame numbers to display args for a range of frames. Without + these two, display args for the whole stack. + (mi_cmd_stack_list_locals): Adapt to new interface for + list_args_or_locals. + +2000-01-06 Elena Zannoni <ezannoni@kwikemart.cygnus.com> + + * mi-main.c (mi_cmd_stack_info_depth, mi_cmd_stack_list_args, + mi_cmd_stack_list_frames, mi_cmd_stack_list_locals, + mi_cmd_stack_select_frame): Change to use argv type of parameters. + + * mi-cmds.c (mi_cmds): Change stack-info-depth, + stack-list-arguments, stack-list-frames, stack-list-locals, + stack-select-frame to use argv parameters. + + * mi-cmds.h (mi_cmd_stack_info_depth, mi_cmd_stack_list_args, + mi_cmd_stack_list_frames, mi_cmd_stack_list_locals, + mi_cmd_stack_select_frame): Update definitions. + +Tue Jan 4 12:38:54 2000 Andrew Cagney <cagney@b1.cygnus.com> + + * mi-main.c (mi_command_loop): Force the MI interface to use seven + bit strings. + * gdbmi.texinfo: Make it clear that a quoted C string is seven + bit. + +Thu Dec 30 14:15:22 1999 Andrew Cagney <cagney@b1.cygnus.com> + + * mi-getopt.c (mi_getopt): Rewrite. Allow long options. + * mi-getopt.h (struct mi_opt): Declare. + (mi_getopt): Update. + + * mi-main.c (mi_cmd_data_read_memory), mi-cmd-break.c + (mi_cmd_break_insert, mi_cmd_break_watch): Update. + +Wed Dec 29 23:38:35 1999 Andrew Cagney <cagney@b1.cygnus.com> + + * mi-cmd-break.c (mi_cmd_break_insert): Add support for -c + <condition>, -i <ignore-count> and -p <thread>. + (breakpoint_notify): New function. + (mi_cmd_break_insert): Wrap GDB call with callback hooks so that + MI is notified when ever a breakpoint is created. + + * gdbmi.texinfo: Update. + +Fri Dec 24 11:23:22 1999 Andrew Cagney <cagney@b1.cygnus.com> + + * mi-main.c (gdb_do_disassemble): Strip out more useless #ifdef + UI_OUTs. + +1999-12-23 Elena Zannoni <ezannoni@kwikemart.cygnus.com> + + * mi-main.c (gdb_do_disassemble): Fix output. Lines that have no + assembly instructions must still be outputted, to keep the source + line numbering correct. + Remove #ifdef UI_OUT's, they are useless. + +1999-12-17 Elena Zannoni <ezannoni@kwikemart.cygnus.com> + + * mi-main.c (gdb_do_disassemble): Don't print a new list in mixed + mode, every time. Just do it when we actually encounter a new + source line. + +1999-12-17 Fernando Nasser <fnasser@totem.to.cygnus.com> + + * mi-cmd-var.c (mi_cmd_var_list_children): Add test for C++ pseudo + variable objects (private, public, protected) as these do not have + a type and the -var-list-children operation was dumping core. + +Fri Dec 17 20:23:33 1999 Andrew Cagney <cagney@b1.cygnus.com> + + * gdbmi.texinfo: Document recommended syntax for options. + + * mi-main.c (mi_cmd_data_read_memory): Add support for ``-o + <offset>''. + * gdbmi.texinfo: Document. + +Wed Dec 15 17:43:08 1999 Andrew Cagney <cagney@b1.cygnus.com> + + * mi-getopt.h (mi_getopt): Change optarg to a char pointer. Check + optind. + * mi-cmd-break.c (mi_cmd_break_insert): Update. + + * mi-main.c (mi_cmd_data_read_memory): Add fields "next-row-addr", + "prev-row-addr", "next-page-addr", "prev-page-addr" and a per row + "addr". + * gdbmi.texinfo: Update. + +Wed Dec 15 01:05:40 1999 Andrew Cagney <cagney@b1.cygnus.com> + + * mi-cmds.h (mi_cmd_result): Add MI_CMD_CAUGHT_ERROR for when the + error is caught. + + * mi-main.c (captured_mi_execute_command): When + MI_CMD_CAUGHT_ERROR return 0 rethrowing the eror. + +1999-12-13 Elena Zannoni <ezannoni@kwikemart.cygnus.com> + + * mi-cmd-break.c (mi_cmd_break_insert): Remove unused var. + + * mi-cmd-var.c (mi_cmd_var_update): Remove unused variables. + +Mon Dec 13 18:43:36 1999 Andrew Cagney <cagney@b1.cygnus.com> + + * mi-parse.c (mi_parse): Quote the command when printing it. + (mi_parse_argv): Fix handling of quoted strings. Was not + de-quoting them. + (mi_parse_argv): Make static. + +Mon Dec 13 18:30:03 1999 Andrew Cagney <cagney@b1.cygnus.com> + + * mi-cmds.h (mi_cmd_break_insert, mi_cmd_break_watch): Change type + to mi_cmd_argv_ftype. + * mi-cmds.c (mi_cmds): Update. + * mi-cmd-break.c (mi_cmd_break_insert, mi_cmd_break_watch): Change + to new style of arguments with argc and argv. Parse arguments + using mi_getopt. + + * mi-cmd-break.c (mi_cmd_break_insert): Wrap body in #ifdef UI_OUT + to avoid non-ui compile problems. + +Mon Dec 13 15:08:36 1999 Andrew Cagney <cagney@b1.cygnus.com> + + * mi-getopt.h, mi-getopt.c: New files. Similar to getopt but with + well defined semantics. + +Mon Dec 13 14:22:21 1999 Andrew Cagney <cagney@b1.cygnus.com> + + * mi-main.c (mi_cmd_break_insert, mi_cmd_break_watch, enum + wp_type, enum bp_type): Move from here. + * mi-cmd-break.c: To here. New file. + (mi_cmd_break_insert, mi_cmd_break_insert, mi_cmd_break_watch): + Use error to report problems. + +1999-12-09 Elena Zannoni <ezannoni@kwikemart.cygnus.com> + + * gdbmi.texinfo: Update description of exec-interrupt. + + * mi-main.c (mi_cmd_exec_interrupt): If the program is not + executing, don't try to interrupt it, but error out instead. Make + sure previous_async_command is not null before duplicating it into + last_async_command. + + * gdbmi.texinfo: Add examples for data-evaluate-expression. + +1999-12-08 Elena Zannoni <ezannoni@kwikemart.cygnus.com> + + * mi-cmd-var.c (mi_cmd_var_assign, mi_cmd_var_create, + mi_cmd_var_delete, mi_cmd_var_evaluate_expression, + mi_cmd_var_info_expression, mi_cmd_var_info_num_children, + mi_cmd_var_info_type, mi_cmd_var_list_children, + mi_cmd_var_set_format, mi_cmd_var_show_attributes, + mi_cmd_var_show_format, mi_cmd_var_update): Change to use new + style of arguments with argc and argv. + (next_arg): Delete. + (which_var): Delete. + + * mi-cmds.c (mi_cmds): Update entries for mi_cmd_var_assign, + mi_cmd_var_create, mi_cmd_var_delete, + mi_cmd_var_evaluate_expression, mi_cmd_var_info_expression, + mi_cmd_var_info_num_children, mi_cmd_var_info_type, + mi_cmd_var_list_children, mi_cmd_var_set_format, + mi_cmd_var_show_attributes, mi_cmd_var_show_format, + mi_cmd_var_update. + + * mi-cmds.h (mi_cmd_var_assign, mi_cmd_var_create, + mi_cmd_var_delete, mi_cmd_var_evaluate_expression, + mi_cmd_var_info_expression, mi_cmd_var_info_num_children, + mi_cmd_var_info_type, mi_cmd_var_list_children, + mi_cmd_var_set_format, mi_cmd_var_show_attributes, + mi_cmd_var_show_format, mi_cmd_var_update): Update declarations. + +1999-12-08 Elena Zannoni <ezannoni@kwikemart.cygnus.com> + + * gdbmi.texinfo: Comment out -data-assign command. * mi-main.c + (mi_cmd_data_assign): Do not use, comment out. * mi-cmds.h + (mi_cmd_data_assign): Remove. * mi-cmds.c: Remove -data-assign + command from MI interface. + +1999-12-07 Elena Zannoni <ezannoni@kwikemart.cygnus.com> + + * mi-parse.c (mi_parse): Add '\n' at end of error messages, so + that prompt comes out on new line. + + * gdbmi.texinfo: Update disassembly command output. + +1999-12-06 Elena Zannoni <ezannoni@kwikemart.cygnus.com> + + * mi-main.c (gdb_do_disassemble): Update output for UI_OUT case. + +1999-12-02 Elena Zannoni <ezannoni@kwikemart.cygnus.com> + + * gdbmi.texinfo: Update exec-until output, including the reason + for stopping. + +Thu Dec 2 17:17:22 1999 Andrew Cagney <cagney@b1.cygnus.com> + + * mi-cmds.c: Include <string.h> for memset. + +1999-12-01 Elena Zannoni <ezannoni@kwikemart.cygnus.com> + + * mi-main.c (mi_cmd_exec_return): ifdef the references to + return_command_wrapper(). + +1999-12-01 Elena Zannoni <ezannoni@kwikemart.cygnus.com> + + * mi-main.c (mi_cmd_gdb_exit, mi_cmd_exec_interrupt, + mi_cmd_target_select, mi_execute_async_cli_command, + mi_exec_async_cli_cmd_continuation, mi_load_progress): Don't print + last_async_command if it is NULL. + (mi_cmd_exec_return): + +1999-12-01 Elena Zannoni <ezannoni@kwikemart.cygnus.com> + + * mi-main.c (mi_cmd_exec_return): Reimplement using + return_command() instead of mi_execute_async_cli_command(). + +1999-12-01 Elena Zannoni <ezannoni@kwikemart.cygnus.com> + + * mi-cmds.h: Export mi_cmd_data_assign and + mi_cmd_data_evaluate_expression. + + * mi-cmds.c (mi_cmds): Hook data-assign to mi_cmd_data_assign and + data-evaluate-expression to mi_cmd_data_evaluate_expression. + + * mi-main.c (mi_cmd_data_assign): New function. Implement + data-assign command. + (mi_cmd_data_evaluate_expression): New function. Implement + data-evaluate-expression command. + +1999-12-01 Elena Zannoni <ezannoni@kwikemart.cygnus.com> + + * gdbmi.texinfo: Fix some texinfo formatting errors. + +1999-12-01 Elena Zannoni <ezannoni@kwikemart.cygnus.com> + + * gdbmi.texinfo: Update data-list-register-values description. + + * mi-cmds.h: Export mi_cmd_data_list_register_values. + + * mi-cmds.c (mi_cmds): Hook data-list-register-values to + mi_cmd_data_list_register_values. + + * mi-main.c (mi_cmd_data_list_register_values): New + function. Implements the -data-list-register-values command. + (get_register): New function. Output the contents of a given + register. + +Wed Dec 1 20:27:22 1999 Andrew Cagney <cagney@b1.cygnus.com> + + * mi-main.c (mi_execute_async_cli_command): Append missing "\n" + for synchronous stopped message. + +1999-11-30 James Ingham <jingham@leda.cygnus.com> + + * gdbmi.texinfo: Fix obvious typo in @end statement. + +Wed Dec 1 12:36:27 1999 Andrew Cagney <cagney@b1.cygnus.com> + + * mi-cmd-var.c: Include "value.h". + * mi-console.c: Include <string.h>. + +Wed Dec 1 00:21:03 1999 Andrew Cagney <cagney@b1.cygnus.com> + + * mi-main.c (captured_mi_execute_command): For a CLI command, pass + "%s" to mi_execute_cli_command to stop core dumps. + (captured_mi_execute_command): Echo CLI commands on gdb_stdlog. + +Wed Dec 1 00:10:07 1999 Andrew Cagney <cagney@b1.cygnus.com> + + * gdbmi.texinfo: Explain NR-BYTES and ADDR. + +Tue Nov 30 23:31:57 1999 Andrew Cagney <cagney@b1.cygnus.com> + + * mi-cmd-var.c (mi_cmd_var_create, mi_cmd_var_delete, + mi_cmd_var_set_format, mi_cmd_var_show_format, + mi_cmd_var_info_num_children, mi_cmd_var_list_children, + mi_cmd_var_info_type, mi_cmd_var_info_expression, + mi_cmd_var_show_attributes, mi_cmd_var_evaluate_expression, + mi_cmd_var_assign, mi_cmd_var_update, varobj_update_one, next_arg, + which_var): New file. Move varobj commands to here from + mi-main.c. + + * mi-console.h, mi-console.c (mi_console_file_new, + mi_console_file_delete, mi_console_file_fputs, + mi_console_raw_packet, mi_console_file_flush): New files. Move + mi_console_file to here from mi-main.c. + +Tue Nov 30 19:37:25 1999 Andrew Cagney <cagney@b1.cygnus.com> + + * mi-main.c (captured_mi_execute_command): Use fputstr_unfiltered + when printing error messages. + (mi_cmd_execute): Ditto. + +1999-11-29 Elena Zannoni <ezannoni@kwikemart.cygnus.com> + + * gdbmi.texinfo: Describe -data-list-changed-registers, + -data-list-register-names. Add examples for + -exec-next-instruction, exec-step-instruction, -exec-run, + -exec-until. Format examples for -data-read-memory. + update example for -target-download. + +1999-11-29 Elena Zannoni <ezannoni@kwikemart.cygnus.com> + + * gdbmi.texinfo: Remove mentioning of inaccurate watchpoint hit + count. + +Mon Nov 29 19:28:55 1999 Andrew Cagney <cagney@b1.cygnus.com> + + * mi-main.c (mi_execute_async_cli_command): Return ``enum + mi_cmd_cmd_result''. mi_cmd_exec_run, mi_cmd_exec_next, + 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): Update call. + (mi_execute_async_cli_command): When target is synchronous, fake + asynchronous behavour (ulgh). Allows tests to be run on built-in + simulator and native targets. + +Mon Nov 29 15:15:16 1999 Andrew Cagney <cagney@b1.cygnus.com> + + * mi-cmds.h (mi_cmd_gdb_exit), mi-cmds.c (mi_cmds), mi-main.c + (mi_cmd_gdb_exit): Change function signature to mi_cmd_argv_ftype. + +1999-11-28 Andew Cagney <cagney@rat-in-a-hat.cygnus.com> + + * mi-parse.c: Include <ctype.h> and <string.h> + +1999-11-26 Elena Zannoni <ezannoni@kwikemart.cygnus.com> + + * gdbmi.texinfo: Added watchpoint command descriptions and + examples. + + * mi-main.c (mi_load_progress): Add parameter for total sent so far. + Print it as well. + +Fri Nov 26 10:17:49 1999 Andrew Cagney <cagney@b1.cygnus.com> + + * gdbmi.texinfo (section Output Syntax): For lists, the <string> + part of a <result> is optional. Clarify syntax. + (appendix Proposed v2.0 Output Syntax): New section. Provide + record of discussion of possible changes to syntax. + +Wed Nov 24 19:41:35 1999 Andrew Cagney <cagney@b1.cygnus.com> + + * mi-main.c (mi_cmd_data_read_memory): Simplify. Fix coredump + when arguments were bad. + (mi_cmd_execute): Change parameter to ``struct mi_parse''. Handle + case of argv_func as well as args_func. + (captured_mi_execute_command): Update. + + * mi-cmds.c (struct mi_cmd): Add field for mi_cmd_argv_ftype. + (mi_cmds): Update mi_cmd_data_read_memory. + (mi_lookup): Return + + * mi-cmds.h (mi_cmd_args_ftype): Rename mi_cmd_ftype. Make all + functions of type this type. + (mi_cmd_argv_ftype): Declare. + (mi_cmd_data_read_memory): Change type to mi_cmd_argv_fytpe. + (struct mi_cmd): Move declaration to here from mi-cmds.c. + (mi_lookup): Return a pointer to ``struct mi_cmd''. + +Wed Nov 24 15:03:34 1999 Andrew Cagney <cagney@b1.cygnus.com> + + * mi-parse.c (mi_parse): Initialize TOKEN when a CLI command. + + * gdbmi.texinfo: Allow a <token> before a CLI command. + + * mi-parse.h (struct mi_parse): Declare. + (mi_parse): Change to return a ``struct mi_parse''. + (enum mi_command_type): Delete PARSE_ERROR. + + * mi-main.c (struct mi_execute_command_context): Delete. + (captured_mi_execute_command): Update + (mi_execute_command): Update. Check for mi_parse returning NULL. + +Wed Nov 24 12:57:14 1999 Andrew Cagney <cagney@b1.cygnus.com> + + * mi-parse.h: Remove const, from cmd parameter. Causes cascading + warnings. + +Wed Nov 24 15:03:34 1999 Andrew Cagney <cagney@b1.cygnus.com> + + * mi-parse.c (mi_parse): New function. Move parse code to here. + * mi-main.c (parse): From here. Delete. + +Wed Nov 24 12:57:14 1999 Andrew Cagney <cagney@b1.cygnus.com> + + * mi-parse.c, mi-parse.h: New files. Implement mi_parse_env. + +Wed Nov 24 11:24:05 1999 Andrew Cagney <cagney@b1.cygnus.com> + + * mi-out.c (mi_field_string): Make string parameter constant. + +1999-11-23 Elena Zannoni <ezannoni@kwikemart.cygnus.com> + + * mi-cmds.h (mi_cmd_target_download): Export. + + * mi-cmds.c (mi_cmds): Add mi_cmd_target_download. + + * mi-main.c: Include <sys/time.h>. + (mi_cmd_target_download): New function, implement the + target-download command. + (mi_load_progress): New function. Called via the + show_load_progress hook. Prints updates every 0.5 secs. + (mi_command_loop): Initialize the show_load_progress hook. + +1999-11-22 Elena Zannoni <ezannoni@kwikemart.cygnus.com> + + * mi-main.c (mi_cmd_exec_until): New function. Implement until + command. + (mi_cmd_exec_step_instruction): New function. Implement stepi + command. + (mi_cmd_exec_next_instruction): New function. Implement nexti + command. + + * mi-cmds.c (mi_cmds): Add mi_cmd_exec_step_instruction, + mi_cmd_exec_next_instruction, mi_cmd_exec_until. + + * mi-cmds.h (mi_cmd_exec_step_instruction, + mi_cmd_exec_next_instruction, mi_cmd_exec_until): Export. + +Tue Nov 23 00:30:37 1999 Andrew Cagney <cagney@b1.cygnus.com> + + * mi/gdbmi.texinfo: Document -data-read-memory. + + * mi-main.c (mi_cmd_data_read_memory): Fix off-by-one check of + argc. + (mi_cmd_data_read_memory): Label the output table with "memory". + +Thu Nov 18 18:15:53 1999 Andrew Cagney <cagney@b1.cygnus.com> + + * mi-main.c (mi_cmd_exec_interrupt, mi_cmd_break_insert, + mi_cmd_break_watch, mi_cmd_disassemble, mi_cmd_execute): Replace + strdup with xstrdup. + +Thu Nov 18 20:50:09 1999 Andrew Cagney <cagney@b1.cygnus.com> + + * mi-main.c (mi_cmd_data_read_memory): New function. Implement + data-read-memory. + + * mi-cmds.h, mi-cmds.c: Add mi_cmd_data_read_memory. + * mi-cmds.c (mi_cmds): Ditto. + +1999-11-11 Elena Zannoni <ezannoni@kwikemart.cygnus.com> + + * mi-cmds.h (mi_cmd_break_watch): Export. + + * mi-cmds.c (mi_cmds): Hook up break-watch to function + mi_cmd_break_watch. + + * mi-main.c (wp_type): New enumeration for the possible types of + watchpoints. + (mi_cmd_break_watch): New function, implements the break-watch + command. + +1999-11-11 Elena Zannoni <ezannoni@kwikemart.cygnus.com> + + * mi-main.c (mi_cmd_break_insert): Handle case in which the command is + just a -break-insert w/o args. + +Fri Nov 12 00:01:52 1999 Andrew Cagney <cagney@b1.cygnus.com> + + * mi-out.c (mi_field_string): Always quote the string. + +1999-11-10 Elena Zannoni <ezannoni@kwikemart.cygnus.com> + + * mi-cmds.h(mi_cmd_data_list_changed_registers, + mi_cmd_data_list_register_names): Export. + + * mi-cmds.c (mi_cmds): Hook up data-list-changed-registers to + mi_cmd_data_list_changed_registers and data-list-register-names to + mi_cmd_data_list_register_names. + + * mi-main.c (mi_cmd_data_list_changed_registers): New function, + implements the data-list-changed-registers command. + (mi_cmd_data_list_register_names): New function, implements the + data-list-register-names command. + (register_changed_p): New function. Decide whether the register + contents have changed. + (setup_architecture_data): New function. Initialize registers + memory. + (_initialize_mi_main): Call setup_architecture_data(), and + register_gdbarch_swap(). + +Wed Nov 10 18:35:08 1999 Andrew Cagney <cagney@b1.cygnus.com> + + * mi-main.c (mi_execute_command): Correctly quote error messages. + +Wed Nov 10 11:05:14 1999 Andrew Cagney <cagney@b1.cygnus.com> + + * mi/gdbmi.texinfo: Delete <stream-output>. Replaced by + <c-string>. + + * mi-main.c (mi_console_raw_packet): Always quote console output. + +Tue Nov 9 17:53:05 1999 Andrew Cagney <cagney@b1.cygnus.com> + + * mi-main.c (mi_console_file_new), mi-out.c (mi_out_new): Replace + the tui_file with a mem_file. Ya! + + * mi-out.c (do_write): New function, wrapper to gdb_file_write. + (mi_out_put): Pass do_write to gdb_file_put. + + * mi-main.c (mi_console_file_flush): Rewrite. Use + mi_console_raw_packet to send data to the console. + (mi_console_raw_packet): New function. Correctly + create quoted C string packets. + +1999-11-08 Elena Zannoni <ezannoni@kwikemart.cygnus.com> + + * mi-cmds.c (mi_cmds): Break-insert is now implemented by + mi_cmd_break_insert. + * mi-cmds.h (mi_cmd_break_insert): Export. + * mi-main.c (bp_type): New enumeration. + (mi_cmd_break_insert): New function. Implements all flavors of + breakpoint insertion. + +Mon Nov 8 17:49:17 1999 Andrew Cagney <cagney@b1.cygnus.com> + + * mi-main.c (mi_console_file_flush): Replace gdb_file_get_strbuf + with tui_file_get_strbuf. + +Fri Nov 5 17:06:07 1999 Andrew Cagney <cagney@b1.cygnus.com> + + * mi-main.c (mi_console_file_delete, mi_console_file_fputs, + mi_console_file_flush): Call internal_error instead of error. + +Thu Nov 4 19:53:32 1999 Andrew Cagney <cagney@b1.cygnus.com> + + * mi-main.c (captured_mi_execute_command): New function. + (mi_execute_command): Rewrite. Replace SET_TOP_LEVEL() with call + to captured_mi_execute_command via catch_errors. + +Thu Nov 4 20:33:58 1999 Andrew Cagney <cagney@b1.cygnus.com> + + * mi-main.c (clean): Delete. + (mi_command_loop): Delete extern declaration of + mi_execute_command. + +1999-10-28 Elena Zannoni <ezannoni@kwikemart.cygnus.com> + + * mi-main.c (mi_cmd_stack_select_frame): Conditionalize the body + on UI_OUT, because select_frame_command_wrapper is only defined if + UI_OUT is. + (mi_cmd_exec_interrupt): Conditionalize the body on UI_OUT, + because interrupt_target_command_wrapper is only defined if UI_OUT is. + + * mi-cmds.c (mi_cmds): Implement command exec-interrupt by + mi_cmd_exec_interrupt. + + * mi-main.c (mi_cmd_exec_interrupt): New function. Implements + exec-interrupt command. + (mi_cmd_execute): If the target is running save execution command + token in previous_async_command. If the command is not 'interrupt' + and the target is running, reject it. + (clean): New function. Free the arg and reset it to NULL. + + * mi-cmds.h (mi_cmd_exec_interrupt):Export. + +1999-10-28 Elena Zannoni <ezannoni@kwikemart.cygnus.com> + + * mi-cmds.c (mi_cmds): Implement command stack-select-frame by + mi_cmd_stack_select_frame. + + * mi-main.c (mi_cmd_stack_select_frame): New function. Implements + stack-select-frame command. + + * mi-cmds.h (mi_cmd_select_frame):Export. + +1999-10-26 Elena Zannoni <ezannoni@kwikemart.cygnus.com> + + * mi-cmds.c (mi_cmds): Implement commands stack-list-locals and + stack-list-arguments by mi_cmd_stack_list_locals and + mi_cmd_stack_list_args. + + * mi-main.c (mi_cmd_stack_list_locals): New function. Implements + stack-list-locals command. + (mi_cmd_stack_list_args): New function. Implements + stack-list-arguments command. + (list_args_or_locals): New function. Do all the work for the + listing of locals or arguments. + + * mi-cmds.h (mi_cmd_stack_list_args,mi_cmd_stack_list_locals) : + Export. + +1999-10-25 Elena Zannoni <ezannoni@kwikemart.cygnus.com> + + * mi-cmds.c (mi_cmds): Add new command stack-info-depth. + + * mi-main.c (mi_cmd_stack_info_depth): New function. Implements + the stack-info-depth command. + * mi-cmds.h (mi_cmd_stack_info_depth): Export. + + +1999-10-22 Elena Zannoni <ezannoni@kwikemart.cygnus.com> + + * mi-main.c (mi_execute_command): Handle MI_CMD_ERROR case + properly, for command that return error code and don't set + mi_error_message. + + * mi-cmds.c (mi_cmds): Hook stack-list-frames command to + mi_cmd_stack_list_frames function. + * mi-cmds.h (mi_cmd_stack_list_frames): Export. + + * mi-main.c (mi_execute_command): Deal with a return code of + MI_CMD_ERROR from the execution of mi commands. + (mi_error_message): Static string variable, to contain the error + message from mi commands. + (mi_cmd_stack_list_frames): New function. Prints a backtrace. + +1999-10-18 Elena Zannoni <ezannoni@kwikemart.cygnus.com> + + * mi-main.c (mi_cmd_disassemble): Handle the new command line + parameter that specifies the number of disassembly lines to be + displayed. + (gdb_do_disassemble): Add new parameter. Count the number of lines + that have been displayed, and stop when limit is reached. + +Wed Oct 13 18:04:13 1999 Andrew Cagney <cagney@b1.cygnus.com> + + * mi-main.c (mi_command_loop): Don't initialize ``flush_hook''. + +1999-10-13 Elena Zannoni <ezannoni@kwikemart.cygnus.com> + + * mi/gdbmi.texinfo: More reformatting of the grammars. + +1999-10-12 Elena Zannoni <ezannoni@kwikemart.cygnus.com> + + * mi/gdbmi.texinfo: More TeX formatting. + +1999-10-11 Elena Zannoni <ezannoni@kwikemart.cygnus.com> + + * mi/gdbmi.texinfo: First pass completed. All commands should have + some comments/info. + Escape '@' output special char. + Reformat for TeX. + +1999-10-08 Elena Zannoni <ezannoni@kwikemart.cygnus.com> + + * mi/gdbmi.texinfo: Filled in part of file command section, and + stack section. + +1999-10-07 Elena Zannoni <ezannoni@kwikemart.cygnus.com> + + * mi/gdbmi.texinfo: Filled in some sections about execution + commands. + +Tue Oct 5 15:27:28 1999 Andrew Cagney <cagney@b1.cygnus.com> + + * mi-cmds.h: Sort table + * mi-cmds.c: Ditto. + (MI_TABLE_SIZE): Increase to 251. + +1999-10-04 Fernando Nasser <fnasser@totem.to.cygnus.com> + + * mi-main.c (mi_cmd_var_create, mi_cmd_var_delete): Add missing + cleanups. + +1999-10-04 Fernando Nasser <fnasser@totem.to.cygnus.com> + + * mi-main.c (next_arg): Returns lenght as well. + (which_var, mi_cmd_var_create, mi_cmd_var_delete, + mi_cmd_var_set_format, mi_cmd_var_update): Do not modify the input + string, use allocated storage instead. + (mi_cmd_var_assign): Adjust call to next_arg() to include new + argument. + +1999-10-04 Fernando Nasser <fnasser@totem.to.cygnus.com> + + * mi-main.c (mi_execute_command): Fix handling of errors. + +1999-10-04 Fernando Nasser <fnasser@totem.to.cygnus.com> + + * mi-out.c (mi_out_new): Call tui_sfileopen() instead of + deprecated gdb_file_init_astream(). + * mi-main.c (mi_console_file_new): Ditto. + +Mon Oct 4 15:17:29 1999 Andrew Cagney <cagney@b1.cygnus.com> + + * mi-cmds.h: Sort function declarations. + (mi_lookup): Add extern. + + * mi-cmds.c (mi_lookup): Delete dead code. + (build_table): Call internal_error instead of error. + (build_table): Send trace output to gdb_stdlog. + +1999-10-01 Elena Zannoni <ezannoni@kwikemart.cygnus.com> + + * mi-main.c (mi_execute_async_cli_command): Don't do the cleanups + if target_executing is null. + +1999-09-28 Elena Zannoni <ezannoni@kwikemart.cygnus.com> + + * mi-main.c (async_p): Change var name to event_loop_p. + +Mon Sep 27 15:11:00 1999 Andrew Cagney <cagney@b1.cygnus.com> + + * mi-main.c (mi_execute_async_cli_command, mi_execute_command): + Replace target_has_async with function target_can_async_p. + +Sun Sep 26 00:12:52 1999 Andrew Cagney <cagney@b1.cygnus.com> + + * mi-main.c (mi_cmd_target_select_continuation): Delete function. + (mi_cmd_target_select): Simplify. target-connect is guarenteed to + be synchronous. + +Sun Sep 26 00:12:52 1999 Andrew Cagney <cagney@b1.cygnus.com> + + * mi-cmds.h (mi_cmd_ftype): Replace mi_impl_ftype. + (enum mi_cmd_result): Define. + * mi-cmds.c (struct mi_cmd): Update. + (mi_lookup): Update. + * mi-main.c (mi_cmd_execute): Update. + + * mi-main.c (mi_cmd_gdb_exit, mi_cmd_exec_run, mi_cmd_exec_next, + mi_cmd_exec_step, mi_cmd_target_select, mi_cmd_exec_continue, + mi_cmd_exec_return, mi_cmd_exec_finish, mi_cmd_disassemble, + mi_cmd_var_create, mi_cmd_var_delete, mi_cmd_var_set_format, + mi_cmd_var_show_format, mi_cmd_var_info_num_children, + mi_cmd_var_list_children, mi_cmd_var_info_type, + mi_cmd_var_info_expression, mi_cmd_var_show_attributes, + mi_cmd_var_evaluate_expression, mi_cmd_var_update): Update. + Return MI_CMD_DONE. + +1999-09-22 Fernando Nasser <fnasser@totem.to.cygnus.com> + + * mi-main.c (mi_cmd_var_create): Use paddr() to format address + on trace output. + +1999-09-21 Fernando Nasser <fnasser@totem.to.cygnus.com> + + * mi-main.c (mi_cmd_var_create): Test for varobjdebug before + printing trace and send it to gdb_stdlog. + +Mon Sep 20 13:41:04 1999 Andrew Cagney <cagney@b1.cygnus.com> + + * Makefile.in (mi-out.o): Add dependency list. + * mi-out.c: Include "mi-out.h". + +1999-09-18 Elena Zannoni <ezannoni@kwikemart.cygnus.com> + + * mi-main.c (_initialize_mi_main): Events on stadin are now + handled by stdin_event_handler. + +1999-09-17 Fernando Nasser <fnasser@totem.to.cygnus.com> + + * mi-cmds.c (mi_cmds): Add var-* commands. + +1999-09-17 Fernando Nasser <fnasser@totem.to.cygnus.com> + + * mi-main.c (mi_cmd_var_create, mi_cmd_var_delete, + mi_cmd_var_set_format, mi_cmd_var_show_format, + mi_cmd_var_info_num_children, mi_cmd_var_list_children, + mi_cmd_var_info_type, mi_cmd_var_info_expression, + mi_cmd_var_show_attributes, mi_cmd_var_evaluate_expression, + mi_cmd_var_assign, mi_cmd_var_update, varobj_update_one, + which_var, next_arg): New functions. Implement the -var-* + commands. + * mi-cmds.h: Add prototypes for the above. + +1999-09-14 Fernando Nasser <fnasser@totem.to.cygnus.com> + + * mi-cmds.c (mi_cmds): Add detach command. + +1999-09-09 Fernando Nasser <fnasser@totem.to.cygnus.com> + + * mi-cmds.c (lookup_table): Fix typo. + +1999-09-09 Fernando Nasser <fnasser@totem.to.cygnus.com> + + * mi-cmds.c (mi_cmds): Fix typo and missing command. + +1999-09-09 Fernando Nasser <fnasser@totem.to.cygnus.com> + + * mi-main.c: Properly align function prototypes. + (mi_cmd_target_select): Proper check for NULL value. + +1999-09-09 Fernando Nasser <fnasser@totem.to.cygnus.com> + + * mi-main.c (mi_execute_async_cli_command): Fix for native targets + that do not have async yet. + +1999-09-01 Elena Zannoni <ezannoni@kwikemart.cygnus.com> + + * mi-main.c (mi_cmd_disassemble): Remove unused var. + (gdb_do_disassemble): Ditto. + +1999-08-30 Elena Zannoni <ezannoni@kwikemart.cygnus.com> + + * mi-main.c: Replace all the occurrences of 'asynch' in variable + or function names with 'async' to make it consistent with the rest + of gdb. + +Mon Aug 30 18:16:39 1999 Andrew Cagney <cagney@b1.cygnus.com> + + * mi-main.c: #include <ctype.h> for isspace(). + +1999-08-27 Elena Zannoni <ezannoni@kwikemart.cygnus.com> + + * mi-main.c (gdb_do_disassemble): This function returns void, not + int. + +1999-08-26 Elena Zannoni <ezannoni@kwikemart.cygnus.com> + + * mi-main.c (mi_cmd_disassemble): Don't use atoi() on the high + address string, just treat it same as address low. + (gdb_do_disassemble): Parse high_address string before seeing if + it is zero. + +1999-08-25 Elena Zannoni <ezannoni@kwikemart.cygnus.com> + + * mi-main.c (mi_cmd_disassemble): New function to produce + disassembly output for mi. + (gdb_dis_asm_read_memory): New function. Read the disassembly from + the executable file, instead of target memory. + (compare_lines): New function. Compare order of disassembly lines. + (gdb_do_disassemble): New function. Do the real job of getting the + assembly code out. + + * mi-cmds.c (mi_cmds): Do data-disassemble mi command via the + mi_cmd_disassemble function. + + * mi-cmds.h: Export new function mi_cmd_disassemble. + +Wed Aug 25 15:58:31 1999 Andrew Cagney <cagney@b1.cygnus.com> + + * mi-main.c (mi_command_loop): Remove references to ui-hooks. + +1999-08-21 Elena Zannoni <ezannoni@kwikemart.cygnus.com> + + * mi-main.c (mi_execute_asynch_cli_command): Fix the incorrect + usage of strcat(): allocate enough space for the string. + +1999-08-13 Elena Zannoni <ezannoni@kwikemart.cygnus.com> + + From Christopher Faylor <cgf@cygnus.com> + * mi-main.c (mi_execute_command): Make sure we flush all the + output after each command. + +1999-08-10 Elena Zannoni <ezannoni@kwikemart.cygnus.com> + + * mi-main.c (_initialize_mi_main): Remove casting in call to + add_file_handler. + +Sun Aug 8 17:20:57 1999 Andrew Cagney <cagney@b1.cygnus.com> + + * mi-main.c (mi_cmd_target_select, mi_execute_asynch_cli_command): + Replace call to fatal with call to internal_error. + +1999-07-26 Fernando Nasser <fnasser@totem.to.cygnus.com> + + * mi-main.c (mi_cmd_execute): Add return code. + (mi_execute_command): Make appropriate changes when calling the + function mentioned above. + (mi_cmd_gdb_exit, mi_cmd_target_select, + mi_cmd_target_select_continuation, mi_execute_command, + mi_exec_asynch_cli_cmd, mi_exec_asynch_cli_cmd_continuation): + Print token, prefix, class and output (if any) in one single group + of statements. + (mi_execute_command, mi_cmd_execute): Fix error prefix. + (mi_cmd_execute): Use exec cleanup for token. + * mi-out.c (mi_out_rewind): New function. + * mi-out.h: Prototype for the above. + +1999-07-16 Fernando Nasser <fnasser@totem.to.cygnus.com> + + * mi-main.c (mi_cmd_gdb_exit): Use buffer for exit message. + (mi_cmd_execute): Route error messages to correct file. + (mi_execute_asynch_cli_command): Insert line feed after running + message. + +1999-07-16 Fernando Nasser <fnasser@totem.to.cygnus.com> + + * mi-out.h (mi_out_buffered): Add extern declaration. + * mi-out.c (mi_out_buffered): New function. Insert a string at the + current buffer position. + * mi-main.c (mi_cmd_target_select, mi_execute_command, + mi_cmd_execute, mi_execute_asynch_cli_command): Use the above + function instead of printing to raw_stdout. + (mi_cmd_target_select, mi_cmd_target_select_continuation, + mi_execute_command, mi_cmd_execute, mi_execute_cli_command, + mi_exec_asynch_cli_cmd_continuation): Fix handling of token and + prefix. + (mi_execute_cli_command): Remove parameter no longer needed. + +1999-07-15 Elena Zannoni <ezannoni@kwikemart.cygnus.com> + + * mi-main.c (mi_cmd_target_select_continuation): Print the numeric + token when we are connected. + (mi_execute_command): Don't print the token now, do it later. + (mi_execute_cli_command): Add a new parameter for the numeric + token. Print the token, the prefix and the class after the + command has executed, not before. + (mi_execute_asynch_cli_command): Don't print an extra blank line. + +1999-07-15 Fernando Nasser <fnasser@totem.to.cygnus.com> + + * mi-main.c (mi_gdb_exit): Add \n at the end. + +1999-07-15 Fernando Nasser <fnasser@totem.to.cygnus.com> + + * mi-main.c (mi_cmd_execute): New function. Dispatch a mi operation. + (mi_execute_command): Use the above. + +1999-07-15 Fernando Nasser <fnasser@totem.to.cygnus.com> + + * mi-main.c: Fix identation. + +1999-07-15 Elena Zannoni <ezannoni@kwikemart.cygnus.com> + + * mi-main.c: Include target.h and inferior.h. + (mi_cmd_target_select): New function to execute the target-select + mi operation. + (mi_cmd_target_select_continuation): New function. Continuation + for the target-select operation. + (mi_execute_command): In case of an MI command which requires + asynchronous execution, do not try to display the result now. If + the execution has to look synchronous don't display the "(gdb)" + prompt. + (mi_execute_asynch_cli_command): Invoke real asynchronous + commands, set up exec_cleanups, and continuations. + (mi_exec_asynch_cli_cmd_continuation): New function. Continuation + for all the MI execution commands except 'target-select'. + (mi_execute_command): Handle null commands by exiting gdb, instead + of core dumping. + + * mi-cmds.c (mi_cmds): Hook up -target-select operation to new mi + function. + + * mi-cmds.h (mi_cmd_target_select): Add extern declaration. + +Thu Jul 15 10:31:39 1999 Andrew Cagney <cagney@b1.cygnus.com> + + * mi-main.c (struct mi_console_file): Add field ``prefix''. + (mi_console_file_new): Add argument prefix. Initialize prefix + field. + (mi_console_file_flush): Use ``prefix'' instead of "~" as the + prefix string. + (mi_command_loop): Update stream output prefixes. gdb_stdout == + "~", gdb_stderr / gdb_stdlog == "&", gdb_stdtarg == "@". + +1999-07-13 Fernando Nasser <fnasser@totem.to.cygnus.com> + + * mi-main.c (ui_out_data): New field first_header. Fix output when + no breakpoints are found. + (mi_table_begin, mi_table_body, mi_table_header): Test for + first_header. + (mi_table_end): Test for supress_field_separator. + (mi_message): Remove messages from MI output. + +1999-06-30 Fernando Nasser <fnasser@totem.to.cygnus.com> + + * mi-cmds.c (mi_cmds[]): Delete gdb-cli operation. + * mi-main.c (parse): Remove ifdefs for cli commands parsing. + (mi-execute-command): Ditto. + +Mon Jun 28 13:06:52 1999 Andrew Cagney <cagney@b1.cygnus.com> + + * mi-out.h: New file. + (mi_out_new, mi_out_put): Move mi specific delcarations to here. + * ui-out.h: From here. + + * mi-main.c: Include "mi-out.h". + +1999-06-25 Fernando Nasser <fnasser@totem.to.cygnus.com> + + * top.c (print_gdb_version): Add the word HEADLESS when output + follows headless format. + (print_command_lines): Fix typo. + +1999-06-25 Elena Zannoni <ezannoni@kwikemart.cygnus.com> + + * event-loop.h: Export input_fd. + * mi-main.c (mi_command_loop): Use the event loop if running + asynchronously. + (mi_execute_command_wrapper): New function. + (_initialize_mi-main): Set things up for running asynchronously. + +1999-06-18 Fernando Nasser <fnasser@totem.to.cygnus.com> + + * mi-cmds.c (mi_lookup): Deleted. + (lookup_table): New function. Replaces old mi_lookup() for local + use. + (mi_lookup): New function. External interface for command table + searchs. + (build_table): New definition. + (mi_cmds[]): Add several command implementations and the gdb-cli + special operation. + (mi_cmd_execute): Deleted. + * mi-cmds.h: Add type definition for command implementation + function pointers, add declaration for new implementation + functions and a declaration for mi_lookup(). + * mi-main.c (mi_execute_asynch_cli_command): New + function. Captures code that was repeated for all asynch + operations. + (mi_cmd_exec_*): Use the above new function. + (mi_gdb_cmd_exit): Fix the output, printing something appropriate. + (mi_cmd_exec_finish): New operation implementation function. + (mi_cmd_exec_return): Ditto. + (parse): Prepare to remove cli commands. + (mi_execute_command): Fix the output and change the way mi-cmds is + used. + +1999-06-18 Fernando Nasser <fnasser@totem.to.cygnus.com> + + * mi-out.c (mi_table_begin): Add missing field separator call. + +Thu Jun 17 21:05:40 1999 Fernando Nasser <fnasser@tofu.to.cygnus.com> + + * breakpoint.c (breakpoint_1): Remove space in breakpoint table + id. + (mention): Use ui_out for last new line (forgotten). + +1999-06-16 Fernando Nasser <fnasser@totem.to.cygnus.com> + + * mi-main.c (mi_console_file_flush): Prevent prefix printing when + buffer empty; change prefix to '~'. + (mi_cmd_exec_*): Prefix normal output with '^' instead of + ','; remove unwanted new lines before "stopped". + +1999-06-16 Fernando Nasser <fnasser@totem.to.cygnus.com> + + * mi-cmds.c (struct mi_cmds): Updated entries for -exec-continue + and exec-next operations. + (mi_cmd_execute): New text for error messages. + * mi-cmds.h: Add declaration for mi_cmd_exec_next and + mi_cmd_exec_continue. + * mi-main.c (mi_cmd_exec_next): New function. Implements exec-next + operation. + (mi_cmd_exec_continue): New function. Implements exec-continue + operation. + (mi_execute_comand): Add missing space to prompt. + (mi_cmd_exec_run): Ditto. + (mi_cmd_exec_step): Ditto. + * mi-out.c (mi_out_new): Add flags argument to ui_out_new call. + (ui_list_end): Reset supress_field_separator flag. + +Sat Jun 12 11:49:10 1999 Andrew Cagney <cagney@b1.cygnus.com> + + * mi-cmds.h. mi-cmds.c (exec step): Command implemented by + mi_cmd_exec_step instead of cli call. + * mi-main.c (mi_cmd_exec_step): New function. + + * mi-cmds.h. mi-cmds.c (exec run): Command implemented by + mi_cmd_exec_run instead of cli call. + * mi-main.c (mi_cmd_exec_run): New function. + + * mi-cmds.h. mi-cmds.c (gdb exit): Command implemented by + mi_cmd_gdb_exit instead of quit_force. + * mi-main.c (mi_cmd_gdb_exit): New function. + +Sat Jun 12 11:33:23 1999 Andrew Cagney <cagney@b1.cygnus.com> + + * mi-main.c (mi_command_loop): Pass mi_input to + simplified_command_loop. + (mi_input): New function. Calls gdb_readline with no prompt. + +Sat Jun 12 11:19:02 1999 Andrew Cagney <cagney@b1.cygnus.com> + + * mi-main.c (mi_console_file_fputs): Re-implement. Use a buffer + to accumulate output. + + * mi-main.c (struct mi_console_file): Add a buffer. + (mi_console_file_new): Create a buffer. + (mi_console_file_flush): New function. + +Sat Jun 12 10:59:39 1999 Andrew Cagney <cagney@b1.cygnus.com> + + * mi-cmds.h (raw_stdout): Declare. Will be moved later. + * mi-cmds.c (mi_cmd_execute): Send error messages to RAW stdout. + (mi_cmds): Sort by class. + + * mi-main.c (raw_stdout): Make global. + * mi-main.c: Remove #ifdef UI_OUT. File assumes UI_OUT is + present. + * mi-main.c: Include "gdb_string.h". + (mi_out_put): Delete declaration. + +1999-06-11 Fernando Nasser <fnasser@totem.to.cygnus.com> + + * mi-main.c: Add pre-processor test for UI_OUT. + (mi_execute_command): Add pre-processor test for UI_OUT. + +Fri Jun 11 23:11:41 1999 Andrew Cagney <cagney@b1.cygnus.com> + + * mi-main.c (raw_stdout): New variable. + (mi_execute_command): Write mi-out direct to raw_stdout. + (mi_command_loop): Create raw_stdout. Attach gdb_stdout to the + console. + (mi_console_file_fputs, mi_console_file_delete, + mi_console_file_new): New functions. + (struct mi_console_file): Declare. + +Fri Jun 11 18:34:33 1999 Andrew Cagney <cagney@b1.cygnus.com> + + * mi-main.c (mi_execute_command): Call mi_out_put to display the + result. + * mi-out.c (mi_out_put): New function. + * ui-out.h (mi_out_put): Add declare. Will move later. + * Makefile.in (mi-cmds.o, mi-main.o): Add dependency on ui-out.h. + + * mi-out.c (mi_field_string, mi_field_fmt, mi_message, mi_flush, + out_field_fmt, list_open, list_close): Replace gdb_stdout with + data->buffer. + (field_separator, list_open, list_close): Add uiout parameter. + (mi_table_begin, mi_table_body, mi_table_end, mi_list_begin, + mi_list_end, mi_field_string, mi_field_fmt, out_field_fmt, + out_field_fmt): Update. + + * mi-out.c (mi_out_new): Initialize supress_field_separator. + (supress_field_separator): Move into mi-out local data object. + (mi_table_begin, mi_list_begin, field_separator): Update. + +Fri Jun 11 16:08:37 1999 Andrew Cagney <cagney@b1.cygnus.com> + + * mi-out.c (mi_out_new): New function, replace init_mi_out. + * mi-main.c (mi_command_loop): Call mi_out_new(). + + * ui-out.h (mi_out_new): Add declaration. Will move later. + (mi_ui_out_impl): Delete. + +Wed Jun 9 16:42:16 1999 Andrew Cagney <cagney@b1.cygnus.com> + + * mi-main.c: Include "ui-hooks.h". + (mi_init_ui, mi_command_loop): New functions. + (_initialize_mi_main): Install ``mi'' as the interpreter when + selected. + +Mon Jun 7 18:43:43 1999 Andrew Cagney <cagney@b1.cygnus.com> + + From Fernando Nasser <fnasser@totem.to.cygnus.com> + * mi-cmds.c (build_table): Clean up error message. + * mi-cmds.c (mi_cmd_execute), mi-main.c (mi_execute_command): Only + print debug information when mi_debug_p. + * mi-cmds.h (mi_debug_p), mi-main.c: Global, control debug messages. + +Thu Jun 3 00:44:52 1999 Andrew Cagney <cagney@b1.cygnus.com> + + From Fernando Nasser <fnasser@totem.to.cygnus.com>: + * mi-cmds.c: Add CLI definitions for "exec-arguments", + "exec-next", "gdb-exit", "break-list", "break-info", "exec-step" + and "stack-list-frames" to mi_cmds. + (struct mi_command): Add ``from_tty'' argument to func. + * mi-cmds.h (quit_force): Declare. + +1999-05-31 Fernando Nasser <fnasser@totem.to.cygnus.com> + + * mi-out.c (mi_table_end): Remove unwanted "\n". + +Thu May 27 14:59:06 1999 Andrew Cagney <cagney@b1.cygnus.com> + + * top.c: Include "ui-hooks.h". + (call_interp_loop): Tempoary. Pass mi_execute_command to + simplified_command_loop. Initialize gdb_stdout & gdb_stderr to + stdio gdb_file streams. Force all hooks to null. + + * mi-cmds.h, mi-main.c, mi-cmds.c: New files. + * Makefile.in (SFILES): Add mi-main.c, mi-cmds.c + (COMMON_OBS): Add mi-main.o, mi-cmds.o. + (mi_cmds_h): Define. + +Wed May 26 12:39:49 1999 Andrew Cagney <cagney@b1.cygnus.com> + + * top.c (call_interp_loop): Hack. Add extern declaration for + mi_ui_out_impl. + +1999-05-25 Fernando Nasser <fnasser@totem.to.cygnus.com> + + * mi-out.c: New table syntax. + +Mon May 24 16:16:29 1999 Andrew Cagney <cagney@amy.cygnus.com> + + mi-out.c (_initialize_mi_out): Add external declaration. + +1999-05-21 Fernando Nasser <fnasser@totem.to.cygnus.com> + + * mi-out.c (mi_table_begin): Added missing parameter. + +1999-05-21 Fernando Nasser <fnasser@totem.to.cygnus.com> + + * mi-out.c: Changed table markers and added table id. + +1999-05-21 Fernando Nasser <fnasser@totem.to.cygnus.com> + + * mi-out.c: New file. Implements low-level ui-out primitives for + CLI-based interaction. + + +Local Variables: +mode: change-log +left-margin: 8 +fill-column: 74 +version-control: never +End: diff --git a/gdb/sparc-linux-tdep.c b/gdb/sparc-linux-tdep.c new file mode 100644 index 00000000000..13875af438e --- /dev/null +++ b/gdb/sparc-linux-tdep.c @@ -0,0 +1,311 @@ +/* Target-dependent code for GNU/Linux SPARC. + + Copyright 2003 Free Software Foundation, Inc. + + This file is part of GDB. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. */ + +#include "defs.h" +#include "floatformat.h" +#include "frame.h" +#include "frame-unwind.h" +#include "gdbarch.h" +#include "gdbcore.h" +#include "osabi.h" +#include "regcache.h" +#include "solib-svr4.h" +#include "symtab.h" +#include "trad-frame.h" + +#include "gdb_assert.h" +#include "gdb_string.h" + +#include "sparc-tdep.h" + +/* Recognizing signal handler frames. */ + +/* GNU/Linux has two flavors of signals. Normal signal handlers, and + "realtime" (RT) signals. The RT signals can provide additional + information to the signal handler if the SA_SIGINFO flag is set + when establishing a signal handler using `sigaction'. It is not + unlikely that future versions of GNU/Linux will support SA_SIGINFO + for normal signals too. */ + +/* When the sparc Linux kernel calls a signal handler and the + SA_RESTORER flag isn't set, the return address points to a bit of + code on the stack. This function returns whether the PC appears to + be within this bit of code. + + The instruction sequence for normal signals is + mov __NR_sigreturn, %g1 ! hex: 0x821020d8 + ta 0x10 ! hex: 0x91d02010 + + Checking for the code sequence should be somewhat reliable, because + the effect is to call the system call sigreturn. This is unlikely + to occur anywhere other than a signal trampoline. + + It kind of sucks that we have to read memory from the process in + order to identify a signal trampoline, but there doesn't seem to be + any other way. However, sparc32_linux_pc_in_sigtramp arranges to + only call us if no function name could be identified, which should + be the case since the code is on the stack. */ + +#define LINUX32_SIGTRAMP_INSN0 0x821020d8 /* mov __NR_sigreturn, %g1 */ +#define LINUX32_SIGTRAMP_INSN1 0x91d02010 /* ta 0x10 */ + +/* The instruction sequence for RT signals is + mov __NR_rt_sigreturn, %g1 ! hex: 0x82102065 + ta {0x10,0x6d} ! hex: 0x91d02010 or 0x91d0206d + + The effect is to call the system call rt_sigreturn. The trap number + is variable based upon whether this is a 32-bit or 64-bit sparc binary. + Note that 64-bit binaries only use this RT signal return method. */ + +#define LINUX32_RT_SIGTRAMP_INSN0 0x82102065 +#define LINUX32_RT_SIGTRAMP_INSN1 0x91d02010 + +/* If PC is in a sigtramp routine consisting of the instructions INSN0 + and INSN1, return the address of the start of the routine. + Otherwise, return 0. */ + +CORE_ADDR +sparc_linux_sigtramp_start (CORE_ADDR pc, ULONGEST insn0, ULONGEST insn1) +{ + ULONGEST word0, word1; + char buf[8]; /* Two instructions. */ + + /* We only recognize a signal trampoline if PC is at the start of + one of the instructions. We optimize for finding the PC at the + start of the instruction sequence, as will be the case when the + trampoline is not the first frame on the stack. We assume that + in the case where the PC is not at the start of the instruction + sequence, there will be a few trailing readable bytes on the + stack. */ + + if (read_memory_nobpt (pc, buf, sizeof buf) != 0) + return 0; + + word0 = extract_unsigned_integer (buf, 4); + if (word0 != insn0) + { + if (word0 != insn1) + return 0; + + pc -= 4; + if (read_memory_nobpt (pc, buf, sizeof buf) != 0) + return 0; + + word0 = extract_unsigned_integer (buf, 4); + } + + word1 = extract_unsigned_integer (buf + 4, 4); + if (word0 != insn0 || word1 != insn1) + return 0; + + return pc; +} + +static CORE_ADDR +sparc32_linux_sigtramp_start (CORE_ADDR pc) +{ + return sparc_linux_sigtramp_start (pc, LINUX32_SIGTRAMP_INSN0, + LINUX32_SIGTRAMP_INSN1); +} + +static CORE_ADDR +sparc32_linux_rt_sigtramp_start (CORE_ADDR pc) +{ + return sparc_linux_sigtramp_start (pc, LINUX32_RT_SIGTRAMP_INSN0, + LINUX32_RT_SIGTRAMP_INSN1); +} + +static int +sparc32_linux_pc_in_sigtramp (CORE_ADDR pc, char *name) +{ + /* If we have NAME, we can optimize the search. The trampolines are + named __restore and __restore_rt. However, they aren't dynamically + exported from the shared C library, so the trampoline may appear to + be part of the preceding function. This should always be sigaction, + __sigaction, or __libc_sigaction (all aliases to the same function). */ + if (name == NULL || strstr (name, "sigaction") != NULL) + return (sparc32_linux_sigtramp_start (pc) != 0 + || sparc32_linux_rt_sigtramp_start (pc) != 0); + + return (strcmp ("__restore", name) == 0 + || strcmp ("__restore_rt", name) == 0); +} + +static struct sparc_frame_cache * +sparc32_linux_sigtramp_frame_cache (struct frame_info *next_frame, + void **this_cache) +{ + struct sparc_frame_cache *cache; + CORE_ADDR sigcontext_addr, addr; + int regnum; + + if (*this_cache) + return *this_cache; + + cache = sparc32_frame_cache (next_frame, this_cache); + gdb_assert (cache == *this_cache); + + /* ??? What about signal trampolines that aren't frameless? */ + regnum = SPARC_SP_REGNUM; + cache->base = frame_unwind_register_unsigned (next_frame, regnum); + + regnum = SPARC_O1_REGNUM; + sigcontext_addr = frame_unwind_register_unsigned (next_frame, regnum); + + cache->pc = frame_pc_unwind (next_frame); + addr = sparc32_linux_sigtramp_start (cache->pc); + if (addr == 0) + { + /* If this is a RT signal trampoline, adjust SIGCONTEXT_ADDR + accordingly. */ + addr = sparc32_linux_rt_sigtramp_start (cache->pc); + if (addr) + sigcontext_addr += 128; + else + addr = frame_func_unwind (next_frame); + } + cache->pc = addr; + + cache->saved_regs = trad_frame_alloc_saved_regs (next_frame); + + cache->saved_regs[SPARC32_PSR_REGNUM].addr = sigcontext_addr + 0; + cache->saved_regs[SPARC32_PC_REGNUM].addr = sigcontext_addr + 4; + cache->saved_regs[SPARC32_NPC_REGNUM].addr = sigcontext_addr + 8; + cache->saved_regs[SPARC32_Y_REGNUM].addr = sigcontext_addr + 12; + + /* Since %g0 is always zero, keep the identity encoding. */ + for (regnum = SPARC_G1_REGNUM, addr = sigcontext_addr + 20; + regnum <= SPARC_O7_REGNUM; regnum++, addr += 4) + cache->saved_regs[regnum].addr = addr; + + for (regnum = SPARC_L0_REGNUM, addr = cache->base; + regnum <= SPARC_I7_REGNUM; regnum++, addr += 4) + cache->saved_regs[regnum].addr = addr; + + return cache; +} + +static void +sparc32_linux_sigtramp_frame_this_id (struct frame_info *next_frame, + void **this_cache, + struct frame_id *this_id) +{ + struct sparc_frame_cache *cache = + sparc32_linux_sigtramp_frame_cache (next_frame, this_cache); + + (*this_id) = frame_id_build (cache->base, cache->pc); +} + +static void +sparc32_linux_sigtramp_frame_prev_register (struct frame_info *next_frame, + void **this_cache, + int regnum, int *optimizedp, + enum lval_type *lvalp, + CORE_ADDR *addrp, + int *realnump, void *valuep) +{ + struct sparc_frame_cache *cache = + sparc32_linux_sigtramp_frame_cache (next_frame, this_cache); + + trad_frame_prev_register (next_frame, cache->saved_regs, regnum, + optimizedp, lvalp, addrp, realnump, valuep); +} + +static const struct frame_unwind sparc32_linux_sigtramp_frame_unwind = +{ + SIGTRAMP_FRAME, + sparc32_linux_sigtramp_frame_this_id, + sparc32_linux_sigtramp_frame_prev_register +}; + +static const struct frame_unwind * +sparc32_linux_sigtramp_frame_sniffer (struct frame_info *next_frame) +{ + CORE_ADDR pc = frame_pc_unwind (next_frame); + char *name; + + find_pc_partial_function (pc, &name, NULL, NULL); + if (sparc32_linux_pc_in_sigtramp (pc, name)) + return &sparc32_linux_sigtramp_frame_unwind; + + return NULL; +} + + +static struct link_map_offsets * +sparc32_linux_svr4_fetch_link_map_offsets (void) +{ + static struct link_map_offsets lmo; + static struct link_map_offsets *lmp = NULL; + + if (lmp == NULL) + { + lmp = &lmo; + + /* Everything we need is in the first 8 bytes. */ + lmo.r_debug_size = 8; + lmo.r_map_offset = 4; + lmo.r_map_size = 4; + + /* Everything we need is in the first 20 bytes. */ + lmo.link_map_size = 20; + lmo.l_addr_offset = 0; + lmo.l_addr_size = 4; + lmo.l_name_offset = 4; + lmo.l_name_size = 4; + lmo.l_next_offset = 12; + lmo.l_next_size = 4; + lmo.l_prev_offset = 16; + lmo.l_prev_size = 4; + } + + return lmp; +} + +static void +sparc32_linux_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch) +{ + /* GNU/Linux is very similar to Solaris ... */ + sparc32_sol2_init_abi (info, gdbarch); + + /* ... but doesn't have kernel-assisted single-stepping support. */ + set_gdbarch_software_single_step (gdbarch, sparc_software_single_step); + + /* GNU/Linux doesn't support the 128-bit `long double' from the psABI. */ + set_gdbarch_long_double_bit (gdbarch, 64); + set_gdbarch_long_double_format (gdbarch, &floatformat_ieee_double_big); + + set_gdbarch_pc_in_sigtramp (gdbarch, sparc32_linux_pc_in_sigtramp); + frame_unwind_append_sniffer (gdbarch, sparc32_linux_sigtramp_frame_sniffer); + + set_solib_svr4_fetch_link_map_offsets + (gdbarch, sparc32_linux_svr4_fetch_link_map_offsets); +} + +/* Provide a prototype to silence -Wmissing-prototypes. */ +extern void _initialize_sparc_linux_tdep (void); + +void +_initialize_sparc_linux_tdep (void) +{ + gdbarch_register_osabi (bfd_arch_sparc, 0, GDB_OSABI_LINUX, + sparc32_linux_init_abi); +} diff --git a/gdb/sparc-nat.h b/gdb/sparc-nat.h new file mode 100644 index 00000000000..8f99b1eea11 --- /dev/null +++ b/gdb/sparc-nat.h @@ -0,0 +1,40 @@ +/* Native-dependent code for SPARC. + + Copyright 2003 Free Software Foundation, Inc. + + This file is part of GDB. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. */ + +#ifndef SPARC_NAT_H +#define SPARC_NAT_H 1 + +struct sparc_gregset; + +extern const struct sparc_gregset *sparc_gregset; +extern void (*sparc_supply_gregset) (const struct sparc_gregset *, + struct regcache *, int , const void *); +extern void (*sparc_collect_gregset) (const struct sparc_gregset *, + const struct regcache *, int, void *); +extern void (*sparc_supply_fpregset) (struct regcache *, int , const void *); +extern void (*sparc_collect_fpregset) (const struct regcache *, int , void *); +extern int (*sparc_gregset_supplies_p) (int); +extern int (*sparc_fpregset_supplies_p) (int); + +extern int sparc32_gregset_supplies_p (int regnum); +extern int sparc32_fpregset_supplies_p (int regnum); + +#endif /* sparc-nat.h */ diff --git a/gdb/sparc-sol2-nat.c b/gdb/sparc-sol2-nat.c new file mode 100644 index 00000000000..61ca7120f32 --- /dev/null +++ b/gdb/sparc-sol2-nat.c @@ -0,0 +1,98 @@ +/* Native-dependent code for Solaris SPARC. + + Copyright 2003, 2004 Free Software Foundation, Inc. + + This file is part of GDB. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. */ + +#include "defs.h" +#include "regcache.h" + +#include <sys/procfs.h> +#include "gregset.h" + +#include "sparc-tdep.h" + +/* This file provids the (temporary) glue between the Solaris SPARC + target dependent code and the machine independent SVR4 /proc + support. */ + +/* Solaris 7 (Solaris 2.7, SunOS 5.7) and up support two process data + models, the traditional 32-bit data model (ILP32) and the 64-bit + data model (LP64). The format of /proc depends on the data model + of the observer (the controlling process, GDB in our case). The + Solaris header files conveniently define PR_MODEL_NATIVE to the + data model of the controlling process. If its value is + PR_MODEL_LP64, we know that GDB is being compiled as a 64-bit + program. + + GNU/Linux uses the same formats as Solaris for its core files (but + not for ptrace(2)). The GNU/Linux headers don't define + PR_MODEL_NATIVE though. Therefore we rely on the __arch64__ define + provided by GCC to determine the appropriate data model. + + Note that a 32-bit GDB won't be able to debug a 64-bit target + process using /proc on Solaris. */ + +#if (defined (__arch64__) || \ + (defined (PR_MODEL_NATIVE) && (PR_MODEL_NATIVE == PR_MODEL_LP64))) + +#include "sparc64-tdep.h" + +#define sparc_supply_gregset sparc64_supply_gregset +#define sparc_supply_fpregset sparc64_supply_fpregset +#define sparc_collect_gregset sparc64_collect_gregset +#define sparc_collect_fpregset sparc64_collect_fpregset + +#define sparc_sol2_gregset sparc64_sol2_gregset +#define sparc_sol2_fpregset sparc64_sol2_fpregset + +#else + +#define sparc_supply_gregset sparc32_supply_gregset +#define sparc_supply_fpregset sparc32_supply_fpregset +#define sparc_collect_gregset sparc32_collect_gregset +#define sparc_collect_fpregset sparc32_collect_fpregset + +#define sparc_sol2_gregset sparc32_sol2_gregset +#define sparc_sol2_fpregset sparc32_sol2_fpregset + +#endif + +void +supply_gregset (prgregset_t *gregs) +{ + sparc_supply_gregset (&sparc_sol2_gregset, current_regcache, -1, gregs); +} + +void +supply_fpregset (prfpregset_t *fpregs) +{ + sparc_supply_fpregset (current_regcache, -1, fpregs); +} + +void +fill_gregset (prgregset_t *gregs, int regnum) +{ + sparc_collect_gregset (&sparc_sol2_gregset, current_regcache, regnum, gregs); +} + +void +fill_fpregset (prfpregset_t *fpregs, int regnum) +{ + sparc_collect_fpregset (current_regcache, regnum, fpregs); +} diff --git a/gdb/sparc-sol2-tdep.c b/gdb/sparc-sol2-tdep.c new file mode 100644 index 00000000000..5f65b7826d1 --- /dev/null +++ b/gdb/sparc-sol2-tdep.c @@ -0,0 +1,201 @@ +/* Target-dependent code for Solaris SPARC. + + Copyright 2003 Free Software Foundation, Inc. + + This file is part of GDB. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. */ + +#include "defs.h" +#include "frame.h" +#include "frame-unwind.h" +#include "gdbcore.h" +#include "symtab.h" +#include "objfiles.h" +#include "osabi.h" +#include "regcache.h" +#include "target.h" +#include "trad-frame.h" + +#include "gdb_assert.h" +#include "gdb_string.h" + +#include "sparc-tdep.h" + +/* From <sys/regset.h>. */ +const struct sparc_gregset sparc32_sol2_gregset = +{ + 32 * 4, /* %psr */ + 33 * 4, /* %pc */ + 34 * 4, /* %npc */ + 35 * 4, /* %y */ + 36 * 4, /* %wim */ + 37 * 4, /* %tbr */ + 1 * 4, /* %g1 */ + 16 * 4, /* %l0 */ +}; + + +/* The Solaris signal trampolines reside in libc. For normal signals, + the function `sigacthandler' is used. This signal trampoline will + call the signal handler using the System V calling convention, + where the third argument is a pointer to an instance of + `ucontext_t', which has a member `uc_mcontext' that contains the + saved registers. Incidentally, the kernel passes the `ucontext_t' + pointer as the third argument of the signal trampoline too, and + `sigacthandler' simply passes it on. However, if you link your + program with "-L/usr/ucblib -R/usr/ucblib -lucb", the function + `ucbsigvechandler' will be used, which invokes the using the BSD + convention, where the third argument is a pointer to an instance of + `struct sigcontext'. It is the `ucbsigvechandler' function that + converts the `ucontext_t' to a `sigcontext', and back. Unless the + signal handler modifies the `struct sigcontext' we can safely + ignore this. */ + +int +sparc_sol2_pc_in_sigtramp (CORE_ADDR pc, char *name) +{ + return (name && (strcmp (name, "sigacthandler") == 0 + || strcmp (name, "ucbsigvechandler") == 0)); +} + +static struct sparc_frame_cache * +sparc32_sol2_sigtramp_frame_cache (struct frame_info *next_frame, + void **this_cache) +{ + struct sparc_frame_cache *cache; + CORE_ADDR mcontext_addr, addr; + int regnum; + + if (*this_cache) + return *this_cache; + + cache = sparc_frame_cache (next_frame, this_cache); + gdb_assert (cache == *this_cache); + + cache->saved_regs = trad_frame_alloc_saved_regs (next_frame); + + /* The third argument is a pointer to an instance of `ucontext_t', + which has a member `uc_mcontext' that contains the saved + registers. */ + regnum = (cache->frameless_p ? SPARC_O2_REGNUM : SPARC_I2_REGNUM); + mcontext_addr = frame_unwind_register_unsigned (next_frame, regnum) + 40; + + cache->saved_regs[SPARC32_PSR_REGNUM].addr = mcontext_addr + 0 * 4; + cache->saved_regs[SPARC32_PC_REGNUM].addr = mcontext_addr + 1 * 4; + cache->saved_regs[SPARC32_NPC_REGNUM].addr = mcontext_addr + 2 * 4; + cache->saved_regs[SPARC32_Y_REGNUM].addr = mcontext_addr + 3 * 4; + + /* Since %g0 is always zero, keep the identity encoding. */ + for (regnum = SPARC_G1_REGNUM, addr = mcontext_addr + 4 * 4; + regnum <= SPARC_O7_REGNUM; regnum++, addr += 4) + cache->saved_regs[regnum].addr = addr; + + if (get_frame_memory_unsigned (next_frame, mcontext_addr + 19 * 4, 4)) + { + /* The register windows haven't been flushed. */ + for (regnum = SPARC_L0_REGNUM; regnum <= SPARC_I7_REGNUM; regnum++) + trad_frame_set_unknown (cache->saved_regs, regnum); + } + else + { + addr = cache->saved_regs[SPARC_SP_REGNUM].addr; + addr = get_frame_memory_unsigned (next_frame, addr, 4); + for (regnum = SPARC_L0_REGNUM; + regnum <= SPARC_I7_REGNUM; regnum++, addr += 4) + cache->saved_regs[regnum].addr = addr; + } + + return cache; +} + +static void +sparc32_sol2_sigtramp_frame_this_id (struct frame_info *next_frame, + void **this_cache, + struct frame_id *this_id) +{ + struct sparc_frame_cache *cache = + sparc32_sol2_sigtramp_frame_cache (next_frame, this_cache); + + (*this_id) = frame_id_build (cache->base, cache->pc); +} + +static void +sparc32_sol2_sigtramp_frame_prev_register (struct frame_info *next_frame, + void **this_cache, + int regnum, int *optimizedp, + enum lval_type *lvalp, + CORE_ADDR *addrp, + int *realnump, void *valuep) +{ + struct sparc_frame_cache *cache = + sparc32_sol2_sigtramp_frame_cache (next_frame, this_cache); + + trad_frame_prev_register (next_frame, cache->saved_regs, regnum, + optimizedp, lvalp, addrp, realnump, valuep); +} + +static const struct frame_unwind sparc32_sol2_sigtramp_frame_unwind = +{ + SIGTRAMP_FRAME, + sparc32_sol2_sigtramp_frame_this_id, + sparc32_sol2_sigtramp_frame_prev_register +}; + +static const struct frame_unwind * +sparc32_sol2_sigtramp_frame_sniffer (struct frame_info *next_frame) +{ + CORE_ADDR pc = frame_pc_unwind (next_frame); + char *name; + + find_pc_partial_function (pc, &name, NULL, NULL); + if (sparc_sol2_pc_in_sigtramp (pc, name)) + return &sparc32_sol2_sigtramp_frame_unwind; + + return NULL; +} + + +void +sparc32_sol2_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch) +{ + struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch); + + /* Solaris has SVR4-style shared libraries... */ + set_gdbarch_in_solib_call_trampoline (gdbarch, in_plt_section); + set_gdbarch_skip_trampoline_code (gdbarch, find_solib_trampoline_target); + + /* ...which means that we need some special handling when doing + prologue analysis. */ + tdep->plt_entry_size = 12; + + /* Solaris has kernel-assisted single-stepping support. */ + set_gdbarch_software_single_step (gdbarch, NULL); + + set_gdbarch_pc_in_sigtramp (gdbarch, sparc_sol2_pc_in_sigtramp); + frame_unwind_append_sniffer (gdbarch, sparc32_sol2_sigtramp_frame_sniffer); +} + + +/* Provide a prototype to silence -Wmissing-prototypes. */ +void _initialize_sparc_sol2_tdep (void); + +void +_initialize_sparc_sol2_tdep (void) +{ + gdbarch_register_osabi (bfd_arch_sparc, 0, + GDB_OSABI_SOLARIS, sparc32_sol2_init_abi); +} diff --git a/gdb/sparc64-linux-nat.c b/gdb/sparc64-linux-nat.c new file mode 100644 index 00000000000..56ee2936938 --- /dev/null +++ b/gdb/sparc64-linux-nat.c @@ -0,0 +1,48 @@ +/* Native-dependent code for GNU/Linux UltraSPARC. + + Copyright 2003 Free Software Foundation, Inc. + + This file is part of GDB. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. */ + +#include "defs.h" + +#include "sparc64-tdep.h" +#include "sparc-nat.h" + +static const struct sparc_gregset sparc64_linux_ptrace_gregset = +{ + 16 * 8, /* "tstate" */ + 17 * 8, /* %pc */ + 18 * 8, /* %npc */ + 19 * 8, /* %y */ + -1, /* %wim */ + -1, /* %tbr */ + 0 * 8, /* %g1 */ + -1, /* %l0 */ + 4 /* sizeof (%y) */ +}; + + +/* Provide a prototype to silence -Wmissing-prototypes. */ +void _initialize_sparc64_linux_nat (void); + +void +_initialize_sparc64_linux_nat (void) +{ + sparc_gregset = &sparc64_linux_ptrace_gregset; +} diff --git a/gdb/sparc64-linux-tdep.c b/gdb/sparc64-linux-tdep.c new file mode 100644 index 00000000000..cd785571d58 --- /dev/null +++ b/gdb/sparc64-linux-tdep.c @@ -0,0 +1,82 @@ +/* Target-dependent code for GNU/Linux UltraSPARC. + + Copyright 2003 Free Software Foundation, Inc. + + This file is part of GDB. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. */ + +#include "defs.h" +#include "gdbarch.h" +#include "osabi.h" +#include "solib-svr4.h" + +#include "sparc64-tdep.h" + +static struct link_map_offsets * +sparc64_linux_svr4_fetch_link_map_offsets (void) +{ + static struct link_map_offsets lmo; + static struct link_map_offsets *lmp = NULL; + + if (lmp == NULL) + { + lmp = &lmo; + + /* Everything we need is in the first 16 bytes. */ + lmo.r_debug_size = 16; + lmo.r_map_offset = 8; + lmo.r_map_size = 8; + + /* Everything we need is in the first 40 bytes. */ + lmo.link_map_size = 40; + lmo.l_addr_offset = 0; + lmo.l_addr_size = 8; + lmo.l_name_offset = 8; + lmo.l_name_size = 8; + lmo.l_next_offset = 24; + lmo.l_next_size = 8; + lmo.l_prev_offset = 32; + lmo.l_prev_size = 8; + } + + return lmp; +} + +static void +sparc64_linux_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch) +{ + struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch); + + /* GNU/Linux is very similar to Solaris ... */ + sparc64_sol2_init_abi (info, gdbarch); + + /* ... but doesn't have kernel-assisted single-stepping support. */ + set_gdbarch_software_single_step (gdbarch, sparc_software_single_step); + + set_solib_svr4_fetch_link_map_offsets + (gdbarch, sparc64_linux_svr4_fetch_link_map_offsets); +} + +/* Provide a prototype to silence -Wmissing-prototypes. */ +extern void _initialize_sparc64_linux_tdep (void); + +void +_initialize_sparc64_linux_tdep (void) +{ + gdbarch_register_osabi (bfd_arch_sparc, bfd_mach_sparc_v9, + GDB_OSABI_LINUX, sparc64_linux_init_abi); +} diff --git a/gdb/sparc64-nat.c b/gdb/sparc64-nat.c new file mode 100644 index 00000000000..40a8b3b3904 --- /dev/null +++ b/gdb/sparc64-nat.c @@ -0,0 +1,87 @@ +/* Native-dependent code for GNU/Linux UltraSPARC. + + Copyright 2003 Free Software Foundation, Inc. + + This file is part of GDB. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. */ + +#include "defs.h" +#include "gdbarch.h" + +#include "sparc64-tdep.h" +#include "sparc-nat.h" + +/* Determine whether `gregset_t' contains register REGNUM. */ + +static int +sparc64_gregset_supplies_p (int regnum) +{ + if (gdbarch_ptr_bit (current_gdbarch) == 32) + return sparc32_gregset_supplies_p (regnum); + + /* Integer registers. */ + if ((regnum >= SPARC_G1_REGNUM && regnum <= SPARC_G7_REGNUM) + || (regnum >= SPARC_O0_REGNUM && regnum <= SPARC_O7_REGNUM) + || (regnum >= SPARC_L0_REGNUM && regnum <= SPARC_L7_REGNUM) + || (regnum >= SPARC_I0_REGNUM && regnum <= SPARC_I7_REGNUM)) + return 1; + + /* Control registers. */ + if (regnum == SPARC64_PC_REGNUM + || regnum == SPARC64_NPC_REGNUM + || regnum == SPARC64_STATE_REGNUM + || regnum == SPARC64_Y_REGNUM + || regnum == SPARC64_FPRS_REGNUM) + return 1; + + return 0; +} + +/* Determine whether `fpregset_t' contains register REGNUM. */ + +static int +sparc64_fpregset_supplies_p (int regnum) +{ + if (gdbarch_ptr_bit (current_gdbarch) == 32) + return sparc32_fpregset_supplies_p (regnum); + + /* Floating-point registers. */ + if ((regnum >= SPARC_F0_REGNUM && regnum <= SPARC_F31_REGNUM) + || (regnum >= SPARC64_F32_REGNUM && regnum <= SPARC64_F62_REGNUM)) + return 1; + + /* Control registers. */ + if (regnum == SPARC64_FSR_REGNUM) + return 1; + + return 0; +} + + +/* Provide a prototype to silence -Wmissing-prototypes. */ +void _initialize_sparc64_nat (void); + +void +_initialize_sparc64_nat (void) +{ + sparc_supply_gregset = sparc64_supply_gregset; + sparc_collect_gregset = sparc64_collect_gregset; + sparc_supply_fpregset = sparc64_supply_fpregset; + sparc_collect_fpregset = sparc64_collect_fpregset; + sparc_gregset_supplies_p = sparc64_gregset_supplies_p; + sparc_fpregset_supplies_p = sparc64_fpregset_supplies_p; +} diff --git a/gdb/sparc64-sol2-tdep.c b/gdb/sparc64-sol2-tdep.c new file mode 100644 index 00000000000..079f3c502e7 --- /dev/null +++ b/gdb/sparc64-sol2-tdep.c @@ -0,0 +1,182 @@ +/* Target-dependent code for Solaris UltraSPARC. + + Copyright 2003, 2004 Free Software Foundation, Inc. + + This file is part of GDB. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. */ + +#include "defs.h" +#include "frame.h" +#include "frame-unwind.h" +#include "gdbarch.h" +#include "symtab.h" +#include "objfiles.h" +#include "osabi.h" +#include "trad-frame.h" + +#include "gdb_assert.h" + +#include "sparc64-tdep.h" + +/* From <sys/regset.h>. */ +const struct sparc_gregset sparc64_sol2_gregset = +{ + 32 * 8, /* "tstate" */ + 33 * 8, /* %pc */ + 34 * 8, /* %npc */ + 35 * 8, /* %y */ + -1, /* %wim */ + -1, /* %tbr */ + 1 * 8, /* %g1 */ + 16 * 8, /* %l0 */ + 8 /* sizeof (%y) */ +}; + + +static struct sparc_frame_cache * +sparc64_sol2_sigtramp_frame_cache (struct frame_info *next_frame, + void **this_cache) +{ + struct sparc_frame_cache *cache; + CORE_ADDR mcontext_addr, addr; + int regnum; + + if (*this_cache) + return *this_cache; + + cache = sparc_frame_cache (next_frame, this_cache); + gdb_assert (cache == *this_cache); + + cache->saved_regs = trad_frame_alloc_saved_regs (next_frame); + + /* The third argument is a pointer to an instance of `ucontext_t', + which has a member `uc_mcontext' that contains the saved + registers. */ + regnum = (cache->frameless_p ? SPARC_O2_REGNUM : SPARC_I2_REGNUM); + mcontext_addr = frame_unwind_register_unsigned (next_frame, regnum) + 64; + + cache->saved_regs[SPARC64_CCR_REGNUM].addr = mcontext_addr + 0 * 8; + cache->saved_regs[SPARC64_PC_REGNUM].addr = mcontext_addr + 1 * 8; + cache->saved_regs[SPARC64_NPC_REGNUM].addr = mcontext_addr + 2 * 8; + cache->saved_regs[SPARC64_Y_REGNUM].addr = mcontext_addr + 3 * 8; + cache->saved_regs[SPARC64_ASI_REGNUM].addr = mcontext_addr + 19 * 8; + cache->saved_regs[SPARC64_FPRS_REGNUM].addr = mcontext_addr + 20 * 8; + + /* Since %g0 is always zero, keep the identity encoding. */ + for (regnum = SPARC_G1_REGNUM, addr = mcontext_addr + 4 * 8; + regnum <= SPARC_O7_REGNUM; regnum++, addr += 8) + cache->saved_regs[regnum].addr = addr; + + if (get_frame_memory_unsigned (next_frame, mcontext_addr + 21 * 8, 8)) + { + /* The register windows haven't been flushed. */ + for (regnum = SPARC_L0_REGNUM; regnum <= SPARC_I7_REGNUM; regnum++) + trad_frame_set_unknown (cache->saved_regs, regnum); + } + else + { + CORE_ADDR sp; + + addr = cache->saved_regs[SPARC_SP_REGNUM].addr; + sp = get_frame_memory_unsigned (next_frame, addr, 8); + for (regnum = SPARC_L0_REGNUM, addr = sp + BIAS; + regnum <= SPARC_I7_REGNUM; regnum++, addr += 8) + cache->saved_regs[regnum].addr = addr; + } + + return cache; +} + +static void +sparc64_sol2_sigtramp_frame_this_id (struct frame_info *next_frame, + void **this_cache, + struct frame_id *this_id) +{ + struct sparc_frame_cache *cache = + sparc64_sol2_sigtramp_frame_cache (next_frame, this_cache); + + (*this_id) = frame_id_build (cache->base, cache->pc); +} + +static void +sparc64_sol2_sigtramp_frame_prev_register (struct frame_info *next_frame, + void **this_cache, + int regnum, int *optimizedp, + enum lval_type *lvalp, + CORE_ADDR *addrp, + int *realnump, void *valuep) +{ + struct sparc_frame_cache *cache = + sparc64_sol2_sigtramp_frame_cache (next_frame, this_cache); + + trad_frame_prev_register (next_frame, cache->saved_regs, regnum, + optimizedp, lvalp, addrp, realnump, valuep); +} + +static const struct frame_unwind sparc64_sol2_sigtramp_frame_unwind = +{ + SIGTRAMP_FRAME, + sparc64_sol2_sigtramp_frame_this_id, + sparc64_sol2_sigtramp_frame_prev_register +}; + +static const struct frame_unwind * +sparc64_sol2_sigtramp_frame_sniffer (struct frame_info *next_frame) +{ + CORE_ADDR pc = frame_pc_unwind (next_frame); + char *name; + + find_pc_partial_function (pc, &name, NULL, NULL); + if (sparc_sol2_pc_in_sigtramp (pc, name)) + return &sparc64_sol2_sigtramp_frame_unwind; + + return NULL; +} + + +void +sparc64_sol2_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch) +{ + struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch); + + set_gdbarch_pc_in_sigtramp (gdbarch, sparc_sol2_pc_in_sigtramp); + frame_unwind_append_sniffer (gdbarch, sparc64_sol2_sigtramp_frame_sniffer); + + sparc64_init_abi (info, gdbarch); + + /* Solaris has SVR4-style shared libraries... */ + set_gdbarch_in_solib_call_trampoline (gdbarch, in_plt_section); + set_gdbarch_skip_trampoline_code (gdbarch, find_solib_trampoline_target); + + /* ...which means that we need some special handling when doing + prologue analysis. */ + tdep->plt_entry_size = 16; + + /* Solaris has kernel-assisted single-stepping support. */ + set_gdbarch_software_single_step (gdbarch, NULL); +} + + +/* Provide a prototype to silence -Wmissing-prototypes. */ +void _initialize_sparc64_sol2_tdep (void); + +void +_initialize_sparc64_sol2_tdep (void) +{ + gdbarch_register_osabi (bfd_arch_sparc, bfd_mach_sparc_v9, + GDB_OSABI_SOLARIS, sparc64_sol2_init_abi); +} diff --git a/gdb/sparc64nbsd-tdep.c b/gdb/sparc64nbsd-tdep.c new file mode 100644 index 00000000000..8e7987008e7 --- /dev/null +++ b/gdb/sparc64nbsd-tdep.c @@ -0,0 +1,256 @@ +/* Target-dependent code for NetBSD/sparc64. + + Copyright 2002, 2003, 2004 Free Software Foundation, Inc. + Based on code contributed by Wasabi Systems, Inc. + + This file is part of GDB. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. */ + +#include "defs.h" +#include "frame.h" +#include "frame-unwind.h" +#include "gdbcore.h" +#include "osabi.h" +#include "regcache.h" +#include "regset.h" +#include "symtab.h" +#include "solib-svr4.h" +#include "trad-frame.h" + +#include "gdb_assert.h" +#include "gdb_string.h" + +#include "sparc64-tdep.h" +#include "nbsd-tdep.h" + +/* From <machine/reg.h>. */ +const struct sparc_gregset sparc64nbsd_gregset = +{ + 0 * 8, /* "tstate" */ + 1 * 8, /* %pc */ + 2 * 8, /* %npc */ + 3 * 8, /* %y */ + -1, /* %fprs */ + -1, + 5 * 8, /* %g1 */ + -1, /* %l0 */ + 4 /* sizeof (%y) */ +}; + + +static void +sparc64nbsd_supply_gregset (const struct regset *regset, + struct regcache *regcache, + int regnum, const void *gregs, size_t len) +{ + sparc64_supply_gregset (regset->descr, regcache, regnum, gregs); +} + +static void +sparc64nbsd_supply_fpregset (const struct regset *regset, + struct regcache *regcache, + int regnum, const void *fpregs, size_t len) +{ + sparc64_supply_fpregset (regcache, regnum, fpregs); +} + + +/* Signal trampolines. */ + +/* The following variables describe the location of an on-stack signal + trampoline. The current values correspond to the memory layout for + NetBSD 1.3 and up. These shouldn't be necessary for NetBSD 2.0 and + up, since NetBSD uses signal trampolines provided by libc now. */ + +static const CORE_ADDR sparc64nbsd_sigtramp_start = 0xffffffffffffdee4ULL; +static const CORE_ADDR sparc64nbsd_sigtramp_end = 0xffffffffffffe000ULL; + +static int +sparc64nbsd_pc_in_sigtramp (CORE_ADDR pc, char *name) +{ + if (pc >= sparc64nbsd_sigtramp_start && pc < sparc64nbsd_sigtramp_end) + return 1; + + return nbsd_pc_in_sigtramp (pc, name); +} + +struct trad_frame_saved_reg * +sparc64nbsd_sigcontext_saved_regs (CORE_ADDR sigcontext_addr, + struct frame_info *next_frame) +{ + struct trad_frame_saved_reg *saved_regs; + CORE_ADDR addr, sp; + int regnum, delta; + + saved_regs = trad_frame_alloc_saved_regs (next_frame); + + /* The registers are saved in bits and pieces scattered all over the + place. The code below records their location on the assumption + that the part of the signal trampoline that saves the state has + been executed. */ + + saved_regs[SPARC_SP_REGNUM].addr = sigcontext_addr + 8; + saved_regs[SPARC64_PC_REGNUM].addr = sigcontext_addr + 16; + saved_regs[SPARC64_NPC_REGNUM].addr = sigcontext_addr + 24; + saved_regs[SPARC64_STATE_REGNUM].addr = sigcontext_addr + 32; + saved_regs[SPARC_G1_REGNUM].addr = sigcontext_addr + 40; + saved_regs[SPARC_O0_REGNUM].addr = sigcontext_addr + 48; + + /* The remaining `global' registers and %y are saved in the `local' + registers. */ + delta = SPARC_L0_REGNUM - SPARC_G0_REGNUM; + for (regnum = SPARC_G2_REGNUM; regnum <= SPARC_G7_REGNUM; regnum++) + saved_regs[regnum].realreg = regnum + delta; + saved_regs[SPARC64_Y_REGNUM].realreg = SPARC_L1_REGNUM; + + /* The remaining `out' registers can be found in the current frame's + `in' registers. */ + delta = SPARC_I0_REGNUM - SPARC_O0_REGNUM; + for (regnum = SPARC_O1_REGNUM; regnum <= SPARC_O5_REGNUM; regnum++) + saved_regs[regnum].realreg = regnum + delta; + saved_regs[SPARC_O7_REGNUM].realreg = SPARC_I7_REGNUM; + + /* The `local' and `in' registers have been saved in the register + save area. */ + addr = saved_regs[SPARC_SP_REGNUM].addr; + sp = get_frame_memory_unsigned (next_frame, addr, 8); + for (regnum = SPARC_L0_REGNUM, addr = sp + BIAS; + regnum <= SPARC_I7_REGNUM; regnum++, addr += 8) + saved_regs[regnum].addr = addr; + + /* TODO: Handle the floating-point registers. */ + + return saved_regs; +} + +static struct sparc_frame_cache * +sparc64nbsd_sigcontext_frame_cache (struct frame_info *next_frame, + void **this_cache) +{ + struct sparc_frame_cache *cache; + CORE_ADDR addr; + + if (*this_cache) + return *this_cache; + + cache = sparc_frame_cache (next_frame, this_cache); + gdb_assert (cache == *this_cache); + + /* If we couldn't find the frame's function, we're probably dealing + with an on-stack signal trampoline. */ + if (cache->pc == 0) + { + cache->pc = sparc64nbsd_sigtramp_start; + + /* Since we couldn't find the frame's function, the cache was + initialized under the assumption that we're frameless. */ + cache->frameless_p = 0; + addr = frame_unwind_register_unsigned (next_frame, SPARC_FP_REGNUM); + cache->base = addr; + } + + /* We find the appropriate instance of `struct sigcontext' at a + fixed offset in the signal frame. */ + addr = cache->base + BIAS + 128 + 8; + cache->saved_regs = sparc64nbsd_sigcontext_saved_regs (addr, next_frame); + + return cache; +} + +static void +sparc64nbsd_sigcontext_frame_this_id (struct frame_info *next_frame, + void **this_cache, + struct frame_id *this_id) +{ + struct sparc_frame_cache *cache = + sparc64nbsd_sigcontext_frame_cache (next_frame, this_cache); + + (*this_id) = frame_id_build (cache->base, cache->pc); +} + +static void +sparc64nbsd_sigcontext_frame_prev_register (struct frame_info *next_frame, + void **this_cache, + int regnum, int *optimizedp, + enum lval_type *lvalp, + CORE_ADDR *addrp, + int *realnump, void *valuep) +{ + struct sparc_frame_cache *cache = + sparc64nbsd_sigcontext_frame_cache (next_frame, this_cache); + + trad_frame_prev_register (next_frame, cache->saved_regs, regnum, + optimizedp, lvalp, addrp, realnump, valuep); +} + +static const struct frame_unwind sparc64nbsd_sigcontext_frame_unwind = +{ + SIGTRAMP_FRAME, + sparc64nbsd_sigcontext_frame_this_id, + sparc64nbsd_sigcontext_frame_prev_register +}; + +static const struct frame_unwind * +sparc64nbsd_sigtramp_frame_sniffer (struct frame_info *next_frame) +{ + CORE_ADDR pc = frame_pc_unwind (next_frame); + char *name; + + find_pc_partial_function (pc, &name, NULL, NULL); + if (sparc64nbsd_pc_in_sigtramp (pc, name)) + { + if (name == NULL || strncmp (name, "__sigtramp_sigcontext", 21)) + return &sparc64nbsd_sigcontext_frame_unwind; + } + + return NULL; +} + + +static void +sparc64nbsd_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch) +{ + struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch); + + tdep->gregset = XMALLOC (struct regset); + tdep->gregset->descr = &sparc64nbsd_gregset; + tdep->gregset->supply_regset = sparc64nbsd_supply_gregset; + tdep->sizeof_gregset = 160; + + tdep->fpregset = XMALLOC (struct regset); + tdep->fpregset->supply_regset = sparc64nbsd_supply_fpregset; + tdep->sizeof_fpregset = 272; + + set_gdbarch_pc_in_sigtramp (gdbarch, sparc64nbsd_pc_in_sigtramp); + frame_unwind_append_sniffer (gdbarch, sparc64nbsd_sigtramp_frame_sniffer); + + sparc64_init_abi (info, gdbarch); + + set_solib_svr4_fetch_link_map_offsets + (gdbarch, nbsd_lp64_solib_svr4_fetch_link_map_offsets); +} + + +/* Provide a prototype to silence -Wmissing-prototypes. */ +void _initialize_sparc64nbsd_tdep (void); + +void +_initialize_sparc64nbsd_tdep (void) +{ + gdbarch_register_osabi (bfd_arch_sparc, bfd_mach_sparc_v9, + GDB_OSABI_NETBSD_ELF, sparc64nbsd_init_abi); +} diff --git a/gdb/sparc64obsd-tdep.c b/gdb/sparc64obsd-tdep.c new file mode 100644 index 00000000000..190a46be1fa --- /dev/null +++ b/gdb/sparc64obsd-tdep.c @@ -0,0 +1,210 @@ +/* Target-dependent code for OpenBSD/sparc64. + + Copyright 2004 Free Software Foundation, Inc. + + This file is part of GDB. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. */ + +#include "defs.h" +#include "frame.h" +#include "frame-unwind.h" +#include "osabi.h" +#include "regset.h" +#include "symtab.h" +#include "solib-svr4.h" +#include "trad-frame.h" + +#include "gdb_assert.h" + +#include "sparc64-tdep.h" +#include "nbsd-tdep.h" + +/* OpenBSD uses the traditional NetBSD core file format, even for + ports that use ELF. The core files don't use multiple register + sets. Instead, the general-purpose and floating-point registers + are lumped together in a single section. Unlike on NetBSD, OpenBSD + uses a different layout for its general-purpose registers than the + layout used for ptrace(2). */ + +/* From <machine/reg.h>. */ +const struct sparc_gregset sparc64obsd_core_gregset = +{ + 0 * 8, /* "tstate" */ + 1 * 8, /* %pc */ + 2 * 8, /* %npc */ + 3 * 8, /* %y */ + -1, /* %fprs */ + -1, + 7 * 8, /* %g1 */ + 22 * 8, /* %l0 */ + 4 /* sizeof (%y) */ +}; + +static void +sparc64obsd_supply_gregset (const struct regset *regset, + struct regcache *regcache, + int regnum, const void *gregs, size_t len) +{ + const char *regs = gregs; + + sparc64_supply_gregset (regset->descr, regcache, regnum, regs); + sparc64_supply_fpregset (regcache, regnum, regs + 288); +} + + +/* Signal trampolines. */ + +/* The OpenBSD kernel maps the signal trampoline at some random + location in user space, which means that the traditional BSD way of + detecting it won't work. + + The signal trampoline will be mapped at an address that is page + aligned. We recognize the signal trampoline by the looking for the + sigreturn system call. */ + +static const int sparc64obsd_page_size = 8192; + +static int +sparc64obsd_pc_in_sigtramp (CORE_ADDR pc, char *name) +{ + CORE_ADDR start_pc = (pc & ~(sparc64obsd_page_size - 1)); + unsigned long insn; + + if (name) + return 0; + + /* Check for "restore %g0, SYS_sigreturn, %g1". */ + insn = sparc_fetch_instruction (start_pc + 0xe8); + if (insn != 0x83e82067) + return 0; + + /* Check for "t ST_SYSCALL". */ + insn = sparc_fetch_instruction (start_pc + 0xf0); + if (insn != 0x91d02000) + return 0; + + return 1; +} + +static struct sparc_frame_cache * +sparc64obsd_frame_cache (struct frame_info *next_frame, void **this_cache) +{ + struct sparc_frame_cache *cache; + CORE_ADDR addr; + + if (*this_cache) + return *this_cache; + + cache = sparc_frame_cache (next_frame, this_cache); + gdb_assert (cache == *this_cache); + + /* If we couldn't find the frame's function, we're probably dealing + with an on-stack signal trampoline. */ + if (cache->pc == 0) + { + cache->pc = frame_pc_unwind (next_frame); + cache->pc &= ~(sparc64obsd_page_size - 1); + + /* Since we couldn't find the frame's function, the cache was + initialized under the assumption that we're frameless. */ + cache->frameless_p = 0; + addr = frame_unwind_register_unsigned (next_frame, SPARC_FP_REGNUM); + cache->base = addr; + } + + /* We find the appropriate instance of `struct sigcontext' at a + fixed offset in the signal frame. */ + addr = cache->base + BIAS + 128 + 16; + cache->saved_regs = sparc64nbsd_sigcontext_saved_regs (addr, next_frame); + + return cache; +} + +static void +sparc64obsd_frame_this_id (struct frame_info *next_frame, void **this_cache, + struct frame_id *this_id) +{ + struct sparc_frame_cache *cache = + sparc64obsd_frame_cache (next_frame, this_cache); + + (*this_id) = frame_id_build (cache->base, cache->pc); +} + +static void +sparc64obsd_frame_prev_register (struct frame_info *next_frame, + void **this_cache, + int regnum, int *optimizedp, + enum lval_type *lvalp, CORE_ADDR *addrp, + int *realnump, void *valuep) +{ + struct sparc_frame_cache *cache = + sparc64obsd_frame_cache (next_frame, this_cache); + + trad_frame_prev_register (next_frame, cache->saved_regs, regnum, + optimizedp, lvalp, addrp, realnump, valuep); +} + +static const struct frame_unwind sparc64obsd_frame_unwind = +{ + SIGTRAMP_FRAME, + sparc64obsd_frame_this_id, + sparc64obsd_frame_prev_register +}; + +static const struct frame_unwind * +sparc64obsd_sigtramp_frame_sniffer (struct frame_info *next_frame) +{ + CORE_ADDR pc = frame_pc_unwind (next_frame); + char *name; + + find_pc_partial_function (pc, &name, NULL, NULL); + if (sparc64obsd_pc_in_sigtramp (pc, name)) + return &sparc64obsd_frame_unwind; + + return NULL; +} + + +static void +sparc64obsd_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch) +{ + struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch); + + tdep->gregset = XMALLOC (struct regset); + tdep->gregset->descr = &sparc64obsd_core_gregset; + tdep->gregset->supply_regset = sparc64obsd_supply_gregset; + tdep->sizeof_gregset = 832; + + set_gdbarch_pc_in_sigtramp (gdbarch, sparc64obsd_pc_in_sigtramp); + frame_unwind_append_sniffer (gdbarch, sparc64obsd_sigtramp_frame_sniffer); + + sparc64_init_abi (info, gdbarch); + + set_solib_svr4_fetch_link_map_offsets + (gdbarch, nbsd_lp64_solib_svr4_fetch_link_map_offsets); +} + + +/* Provide a prototype to silence -Wmissing-prototypes. */ +void _initialize_sparc64obsd_tdep (void); + +void +_initialize_sparc64obsd_tdep (void) +{ + gdbarch_register_osabi (bfd_arch_sparc, bfd_mach_sparc_v9, + GDB_OSABI_OPENBSD_ELF, sparc64obsd_init_abi); +} diff --git a/gdb/sparcobsd-tdep.c b/gdb/sparcobsd-tdep.c new file mode 100644 index 00000000000..108e255ed13 --- /dev/null +++ b/gdb/sparcobsd-tdep.c @@ -0,0 +1,171 @@ +/* Target-dependent code for OpenBSD/sparc. + + Copyright 2004 Free Software Foundation, Inc. + + This file is part of GDB. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. */ + +#include "defs.h" +#include "floatformat.h" +#include "frame.h" +#include "frame-unwind.h" +#include "osabi.h" +#include "solib-svr4.h" +#include "symtab.h" +#include "trad-frame.h" + +#include "gdb_assert.h" + +#include "sparc-tdep.h" +#include "nbsd-tdep.h" + +/* Signal trampolines. */ + +/* The OpenBSD kernel maps the signal trampoline at some random + location in user space, which means that the traditional BSD way of + detecting it won't work. + + The signal trampoline will be mapped at an address that is page + aligned. We recognize the signal trampoline by the looking for the + sigreturn system call. */ + +static const int sparc32obsd_page_size = 4096; + +static int +sparc32obsd_pc_in_sigtramp (CORE_ADDR pc, char *name) +{ + CORE_ADDR start_pc = (pc & ~(sparc32obsd_page_size - 1)); + unsigned long insn; + + if (name) + return 0; + + /* Check for "restore %g0, SYS_sigreturn, %g1". */ + insn = sparc_fetch_instruction (start_pc + 0xec); + if (insn != 0x83e82067) + return 0; + + /* Check for "t ST_SYSCALL". */ + insn = sparc_fetch_instruction (start_pc + 0xf4); + if (insn != 0x91d02000) + return 0; + + return 1; +} + +static struct sparc_frame_cache * +sparc32obsd_frame_cache (struct frame_info *next_frame, void **this_cache) +{ + struct sparc_frame_cache *cache; + CORE_ADDR addr; + + if (*this_cache) + return *this_cache; + + cache = sparc_frame_cache (next_frame, this_cache); + gdb_assert (cache == *this_cache); + + /* If we couldn't find the frame's function, we're probably dealing + with an on-stack signal trampoline. */ + if (cache->pc == 0) + { + cache->pc = frame_pc_unwind (next_frame); + cache->pc &= ~(sparc32obsd_page_size - 1); + + /* Since we couldn't find the frame's function, the cache was + initialized under the assumption that we're frameless. */ + cache->frameless_p = 0; + addr = frame_unwind_register_unsigned (next_frame, SPARC_FP_REGNUM); + cache->base = addr; + } + + cache->saved_regs = sparc32nbsd_sigcontext_saved_regs (next_frame); + + return cache; +} + +static void +sparc32obsd_frame_this_id (struct frame_info *next_frame, void **this_cache, + struct frame_id *this_id) +{ + struct sparc_frame_cache *cache = + sparc32obsd_frame_cache (next_frame, this_cache); + + (*this_id) = frame_id_build (cache->base, cache->pc); +} + +static void +sparc32obsd_frame_prev_register (struct frame_info *next_frame, + void **this_cache, + int regnum, int *optimizedp, + enum lval_type *lvalp, CORE_ADDR *addrp, + int *realnump, void *valuep) +{ + struct sparc_frame_cache *cache = + sparc32obsd_frame_cache (next_frame, this_cache); + + trad_frame_prev_register (next_frame, cache->saved_regs, regnum, + optimizedp, lvalp, addrp, realnump, valuep); +} + +static const struct frame_unwind sparc32obsd_frame_unwind = +{ + SIGTRAMP_FRAME, + sparc32obsd_frame_this_id, + sparc32obsd_frame_prev_register +}; + +static const struct frame_unwind * +sparc32obsd_sigtramp_frame_sniffer (struct frame_info *next_frame) +{ + CORE_ADDR pc = frame_pc_unwind (next_frame); + char *name; + + find_pc_partial_function (pc, &name, NULL, NULL); + if (sparc32obsd_pc_in_sigtramp (pc, name)) + return &sparc32obsd_frame_unwind; + + return NULL; +} + + +static void +sparc32obsd_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch) +{ + struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch); + + /* OpenBSD doesn't support the 128-bit `long double' from the psABI. */ + set_gdbarch_long_double_bit (gdbarch, 64); + set_gdbarch_long_double_format (gdbarch, &floatformat_ieee_double_big); + + set_gdbarch_pc_in_sigtramp (gdbarch, sparc32obsd_pc_in_sigtramp); + frame_unwind_append_sniffer (gdbarch, sparc32obsd_sigtramp_frame_sniffer); + + set_solib_svr4_fetch_link_map_offsets + (gdbarch, nbsd_ilp32_solib_svr4_fetch_link_map_offsets); +} + + +/* Provide a prototype to silence -Wmissing-prototypes. */ +void _initialize_sparc32obsd_tdep (void); + +void +_initialize_sparc32obsd_tdep (void) +{ + gdbarch_register_osabi (bfd_arch_sparc, 0, GDB_OSABI_OPENBSD_ELF, + sparc32obsd_init_abi); +} diff --git a/gdb/testsuite/gdb.base/gdb1476.c b/gdb/testsuite/gdb.base/gdb1476.c new file mode 100644 index 00000000000..c3f43760bf3 --- /dev/null +++ b/gdb/testsuite/gdb.base/gdb1476.c @@ -0,0 +1,12 @@ +void x() +{ + void (*fp)() = 0; + fp(); +} + +int +main() +{ + x(); + return 0; +} diff --git a/gdb/testsuite/gdb.base/gdb1476.exp b/gdb/testsuite/gdb.base/gdb1476.exp new file mode 100644 index 00000000000..b88b2de0652 --- /dev/null +++ b/gdb/testsuite/gdb.base/gdb1476.exp @@ -0,0 +1,72 @@ +# Copyright 2004 Free Software Foundation, Inc. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +# Please email any bugs, comments, and/or additions to this file to: +# bug-gdb@gnu.org + +# This file is part of the gdb testsuite. + +if $tracelevel { + strace $tracelevel +} + +# Testcase for backtrace/gdb1476. + +set prms_id 0 +set bug_id 0 + +set testfile "gdb1476" +set srcfile ${testfile}.c +set binfile ${objdir}/${subdir}/${testfile} +if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable {debug}] != "" } { + gdb_suppress_entire_file "Testcase compile failed, so all tests in this file will automatically fail." +} + +gdb_exit +gdb_start +gdb_reinitialize_dir $srcdir/$subdir +gdb_load ${binfile} + +# +# Run to `main' where we begin our tests. +# + +if ![runto_main] then { + gdb_suppress_tests +} + +# If we can examine what's at memory address 0, it is possible that we +# could also execute it. This could probably make us run away, +# executing random code, which could have all sorts of ill effects, +# especially on targets without an MMU. Don't run the tests in that +# case. + +send_gdb "x 0\n" +gdb_expect { + -re "0x0:.*Cannot access memory at address 0x0.*$gdb_prompt $" { } + -re "0x0:.*Error accessing memory address 0x0.*$gdb_prompt $" { } + -re ".*$gdb_prompt $" { + untested "Memory at address 0 is possibly executable" + return + } +} + +gdb_test "continue" "Program received signal SIGSEGV.*" \ + "continue to null pointer call" + +gdb_test "backtrace 10" \ + "#0\[ \t\]*0x0* in .*\r\n#1\[ \t\]*$hex in x.*\r\n#2\[ \t\]*$hex in main.*" \ + "backtrace from null pointer call" diff --git a/gdb/testsuite/gdb.base/sepdebug.c b/gdb/testsuite/gdb.base/sepdebug.c new file mode 100644 index 00000000000..adb69210a88 --- /dev/null +++ b/gdb/testsuite/gdb.base/sepdebug.c @@ -0,0 +1,150 @@ +/* Copyright 1994, 1995, 1999, 2002, 2003, 2004 Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + + Please email any bugs, comments, and/or additions to this file to: + bug-gdb@prep.ai.mit.edu */ + +#ifdef vxworks + +# include <stdio.h> + +/* VxWorks does not supply atoi. */ +static int +atoi (z) + char *z; +{ + int i = 0; + + while (*z >= '0' && *z <= '9') + i = i * 10 + (*z++ - '0'); + return i; +} + +/* I don't know of any way to pass an array to VxWorks. This function + can be called directly from gdb. */ + +vxmain (arg) +char *arg; +{ + char *argv[2]; + + argv[0] = ""; + argv[1] = arg; + main (2, argv, (char **) 0); +} + +#else /* ! vxworks */ +# include <stdio.h> +# include <stdlib.h> +#endif /* ! vxworks */ + +/* + * The following functions do nothing useful. They are included simply + * as places to try setting breakpoints at. They are explicitly + * "one-line functions" to verify that this case works (some versions + * of gcc have or have had problems with this). + */ + +#ifdef PROTOTYPES +int marker1 (void) { return (0); } +int marker2 (int a) { return (1); } /* set breakpoint 8 here */ +void marker3 (char *a, char *b) {} +void marker4 (long d) {} /* set breakpoint 14 here */ +#else +int marker1 () { return (0); } +int marker2 (a) int a; { return (1); } /* set breakpoint 9 here */ +void marker3 (a, b) char *a, *b; {} +void marker4 (d) long d; {} /* set breakpoint 13 here */ +#endif + +/* + * This simple classical example of recursion is useful for + * testing stack backtraces and such. + */ + +#ifdef PROTOTYPES +int factorial(int); + +int +main (int argc, char **argv, char **envp) +#else +int +main (argc, argv, envp) +int argc; +char *argv[], **envp; +#endif +{ +#ifdef usestubs + set_debug_traps(); /* set breakpoint 5 here */ + breakpoint(); +#endif + if (argc == 12345) { /* an unlikely value < 2^16, in case uninited */ /* set breakpoint 6 here */ + fprintf (stderr, "usage: factorial <number>\n"); + return 1; + } + printf ("%d\n", factorial (atoi ("6"))); /* set breakpoint 1 here */ + /* set breakpoint 12 here */ + marker1 (); /* set breakpoint 11 here */ + marker2 (43); + marker3 ("stack", "trace"); + marker4 (177601976L); + argc = (argc == 12345); /* This is silly, but we can step off of it */ /* set breakpoint 2 here */ + return argc; /* set breakpoint 10 here */ +} + +#ifdef PROTOTYPES +int factorial (int value) +#else +int factorial (value) +int value; +#endif +{ + if (value > 1) { /* set breakpoint 7 here */ + value *= factorial (value - 1); + } + return (value); +} + +#ifdef PROTOTYPES +int multi_line_if_conditional (int a, int b, int c) +#else +int multi_line_if_conditional (a, b, c) + int a, b, c; +#endif +{ + if (a /* set breakpoint 3 here */ + && b + && c) + return 0; + else + return 1; +} + +#ifdef PROTOTYPES +int multi_line_while_conditional (int a, int b, int c) +#else +int multi_line_while_conditional (a, b, c) + int a, b, c; +#endif +{ + while (a /* set breakpoint 4 here */ + && b + && c) + { + a--, b--, c--; + } + return 0; +} diff --git a/gdb/testsuite/gdb.base/sepdebug.exp b/gdb/testsuite/gdb.base/sepdebug.exp new file mode 100644 index 00000000000..1028dab575b --- /dev/null +++ b/gdb/testsuite/gdb.base/sepdebug.exp @@ -0,0 +1,987 @@ +# Copyright 1988, 1990, 1991, 1992, 1994, 1995, 1996, 1997, 1998, 1999, +# 2000, 2002, 2003, 2004 +# Free Software Foundation, Inc. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +# Please email any bugs, comments, and/or additions to this file to: +# bug-gdb@prep.ai.mit.edu + +# Based on break.exp, written by Rob Savoye. (rob@cygnus.com) +# Modified to test gdb's handling of separate debug info files. + +# This file has two parts. The first is testing that gdb behaves +# normally after reading in an executable and its corresponding +# separate debug file. The second moves the .debug file to a different +# location and tests the "set debug-file-directory" command. + + +if $tracelevel then { + strace $tracelevel +} + +# +# test running programs +# +set prms_id 0 +set bug_id 0 + +set testfile "sepdebug" +set srcfile ${testfile}.c +set binfile ${objdir}/${subdir}/${testfile} + +if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable {debug additional_flags=-w}] != "" } { + gdb_suppress_entire_file "Testcase compile failed, so all tests in this file will automatically fail." +} + +# FIXME: this is nasty. We need to check for the stabs debug format. +# To do this we must run gdb on the unstripped executable, list 'main' +# (as to have a default source file), use get_debug_format (which does +# 'info source') and then see if the debug info is stabs. If so, we +# bail out. We cannot do this any other way because get_debug_format +# finds out the debug format using gdb itself, and in case of stabs we +# get an error loading the program if it is already stripped. An +# alternative would be to find out the debug info from the flags +# passed to dejagnu when the test is run. + +gdb_exit +gdb_start +gdb_reinitialize_dir $srcdir/$subdir +gdb_load ${binfile} +gdb_test "list main" "" "" +get_debug_format +if { [test_debug_format "stabs"] } then { + # the separate debug info feature doesn't work well in binutils with stabs. + # It produces a corrupted debug info only file, and gdb chokes on it. + # It is almost impossible to capture the failing message out of gdb, + # because it happens inside gdb_load. At that point any error message + # is intercepted by dejagnu itself, and, because of the error threshold, + # any faulty test result is changed into an UNRESOLVED. + # (see dejagnu/lib/framework.exp) + unsupported "no separate debug info handling with stabs" + return -1 +} elseif { [test_debug_format "unknown"] } then { + # gdb doesn't know what the debug format is. We are out of luck here. + unsupported "unknown debugging format" + return -1 +} +gdb_exit + +# Note: the procedure gdb_gnu_strip_debug will produce an executable called +# ${binfile}, which is just like the executable ($binfile) but without +# the debuginfo. Instead $binfile has a .gnudebuglink section which contains +# the name of a debuginfo only file. This file will be stored in the +# gdb.base/.debug subdirectory. + +if [gdb_gnu_strip_debug $binfile] { + # check that you have a recent version of strip and objcopy installed + unsupported "cannot produce separate debug info files" + return -1 +} + +gdb_exit +gdb_start +gdb_reinitialize_dir $srcdir/$subdir +gdb_load ${binfile} + +if [target_info exists gdb_stub] { + gdb_step_for_stub; +} +# +# test simple breakpoint setting commands +# + +# Test deleting all breakpoints when there are none installed, +# GDB should not prompt for confirmation. +# Note that gdb-init.exp provides a "delete_breakpoints" proc +# for general use elsewhere. + +send_gdb "delete breakpoints\n" +gdb_expect { + -re "Delete all breakpoints.*$" { + send_gdb "y\n" + gdb_expect { + -re "$gdb_prompt $" { + fail "Delete all breakpoints when none (unexpected prompt)" + } + timeout { fail "Delete all breakpoints when none (timeout after unexpected prompt)" } + } + } + -re ".*$gdb_prompt $" { pass "Delete all breakpoints when none" } + timeout { fail "Delete all breakpoints when none (timeout)" } +} + +# +# test break at function +# +gdb_test "break main" \ + "Breakpoint.*at.* file .*$srcfile, line.*" \ + "breakpoint function" + +# +# test break at quoted function +# +gdb_test "break \"marker2\"" \ + "Breakpoint.*at.* file .*$srcfile, line.*" \ + "breakpoint quoted function" + +# +# test break at function in file +# +gdb_test "break $srcfile:factorial" \ + "Breakpoint.*at.* file .*$srcfile, line.*" \ + "breakpoint function in file" + +set bp_location1 [gdb_get_line_number "set breakpoint 1 here"] + +# +# test break at line number +# +# Note that the default source file is the last one whose source text +# was printed. For native debugging, before we've executed the +# program, this is the file containing main, but for remote debugging, +# it's wherever the processor was stopped when we connected to the +# board. So, to be sure, we do a list command. +# +gdb_test "list main" \ + ".*main \\(argc, argv, envp\\).*" \ + "use `list' to establish default source file" +gdb_test "break $bp_location1" \ + "Breakpoint.*at.* file .*$srcfile, line $bp_location1\\." \ + "breakpoint line number" + +# +# test duplicate breakpoint +# +gdb_test "break $bp_location1" \ + "Note: breakpoint \[0-9\]+ also set at pc.*Breakpoint \[0-9\]+ at.* file .*$srcfile, line $bp_location1\\." \ + "breakpoint duplicate" + +set bp_location2 [gdb_get_line_number "set breakpoint 2 here"] + +# +# test break at line number in file +# +gdb_test "break $srcfile:$bp_location2" \ + "Breakpoint.*at.* file .*$srcfile, line $bp_location2\\." \ + "breakpoint line number in file" + +set bp_location3 [gdb_get_line_number "set breakpoint 3 here"] +set bp_location4 [gdb_get_line_number "set breakpoint 4 here"] + +# +# Test putting a break at the start of a multi-line if conditional. +# Verify the breakpoint was put at the start of the conditional. +# +gdb_test "break multi_line_if_conditional" \ + "Breakpoint.*at.* file .*$srcfile, line $bp_location3\\." \ + "breakpoint at start of multi line if conditional" + +gdb_test "break multi_line_while_conditional" \ + "Breakpoint.*at.* file .*$srcfile, line $bp_location4\\." \ + "breakpoint at start of multi line while conditional" + +set bp_location5 [gdb_get_line_number "set breakpoint 5 here"] +set bp_location6 [gdb_get_line_number "set breakpoint 6 here"] + +# +# check to see what breakpoints are set +# +if [target_info exists gdb_stub] { + set main_line $bp_location5 +} else { + set main_line $bp_location6 +} + +set bp_location7 [gdb_get_line_number "set breakpoint 7 here"] +set bp_location8 [gdb_get_line_number "set breakpoint 8 here"] +set bp_location9 [gdb_get_line_number "set breakpoint 9 here"] + +gdb_test "info break" \ + "Num Type\[ \]+Disp Enb Address\[ \]+What.* +\[0-9\]+\[\t \]+breakpoint keep y.* in main at .*$srcfile:$main_line.* +\[0-9\]+\[\t \]+breakpoint keep y.* in marker2 at .*$srcfile:($bp_location8|$bp_location9).* +\[0-9\]+\[\t \]+breakpoint keep y.* in factorial at .*$srcfile:$bp_location7.* +\[0-9\]+\[\t \]+breakpoint keep y.* in main at .*$srcfile:$bp_location1.* +\[0-9\]+\[\t \]+breakpoint keep y.* in main at .*$srcfile:$bp_location1.* +\[0-9\]+\[\t \]+breakpoint keep y.* in main at .*$srcfile:$bp_location2.* +\[0-9\]+\[\t \]+breakpoint keep y.* in multi_line_if_conditional at .*$srcfile:$bp_location3.* +\[0-9\]+\[\t \]+breakpoint keep y.* in multi_line_while_conditional at .*$srcfile:$bp_location4" \ + "breakpoint info" + +# FIXME: The rest of this test doesn't work with anything that can't +# handle arguments. +# Huh? There doesn't *appear* to be anything that passes arguments +# below. +if [istarget "mips-idt-*"] then { + return +} + +# +# run until the breakpoint at main is hit. For non-stubs-using targets. +# +if ![target_info exists use_gdb_stub] { + if [istarget "*-*-vxworks*"] then { + send_gdb "run vxmain \"2\"\n" + set timeout 120 + verbose "Timeout is now $timeout seconds" 2 + } else { + send_gdb "run\n" + } + gdb_expect { + -re "The program .* has been started already.*y or n. $" { + send_gdb "y\n" + exp_continue + } + -re "Starting program.*Breakpoint \[0-9\]+,.*main .*argc.*argv.* at .*$srcfile:$bp_location6.*$bp_location6\[\t \]+if .argc.* \{.*$gdb_prompt $"\ + { pass "run until function breakpoint" } + -re ".*$gdb_prompt $" { fail "run until function breakpoint" } + timeout { fail "run until function breakpoint (timeout)" } + } +} else { + if ![target_info exists gdb_stub] { + gdb_test continue ".*Continuing\\..*Breakpoint \[0-9\]+, main \\(argc=.*, argv=.*, envp=.*\\) at .*$srcfile:$bp_location6.*$bp_location6\[\t \]+if .argc.*\{.*" "stub continue" + } +} + +# +# run until the breakpoint at a line number +# +gdb_test continue "Continuing\\..*Breakpoint \[0-9\]+, main \\(argc=.*, argv=.*, envp=.*\\) at .*$srcfile:$bp_location1.*$bp_location1\[\t \]+printf.*factorial.*" \ + "run until breakpoint set at a line number" + +# +# Run until the breakpoint set in a function in a file +# +for {set i 6} {$i >= 1} {incr i -1} { + gdb_test continue "Continuing\\..*Breakpoint \[0-9\]+, factorial \\(value=$i\\) at .*$srcfile:$bp_location7.*$bp_location7\[\t \]+.*if .value > 1. \{.*" \ + "run until file:function($i) breakpoint" +} + +# +# Run until the breakpoint set at a quoted function +# +gdb_test continue "Continuing\\..*Breakpoint \[0-9\]+, (0x\[0-9a-f\]+ in )?marker2 \\(a=43\\) at .*$srcfile:($bp_location8|$bp_location9).*" \ + "run until quoted breakpoint" +# +# run until the file:function breakpoint at a line number in a file +# +gdb_test continue "Continuing\\..*Breakpoint \[0-9\]+, main \\(argc=.*, argv=.*, envp=.*\\) at .*$srcfile:$bp_location2.*$bp_location2\[\t \]+argc = \\(argc == 12345\\);.*" \ + "run until file:linenum breakpoint" + +# Test break at offset +1 +set bp_location10 [gdb_get_line_number "set breakpoint 10 here"] + +gdb_test "break +1" \ + "Breakpoint.*at.* file .*$srcfile, line $bp_location10\\." \ + "breakpoint offset +1" + +# Check to see if breakpoint is hit when stepped onto + +gdb_test "step" \ + ".*Breakpoint \[0-9\]+, main \\(argc=.*, argv=.*, envp=.*\\) at .*$srcfile:$bp_location10.*$bp_location10\[\t \]+return argc;.*breakpoint 10 here.*" \ + "step onto breakpoint" + +# +# delete all breakpoints so we can start over, course this can be a test too +# +delete_breakpoints + +# +# test temporary breakpoint at function +# + +gdb_test "tbreak main" "Breakpoint.*at.* file .*$srcfile, line.*" "Temporary breakpoint function" + +# +# test break at function in file +# + +gdb_test "tbreak $srcfile:factorial" "Breakpoint.*at.* file .*$srcfile, line.*" \ + "Temporary breakpoint function in file" + +# +# test break at line number +# +send_gdb "tbreak $bp_location1\n" +gdb_expect { + -re "Breakpoint.*at.* file .*$srcfile, line $bp_location1.*$gdb_prompt $" { pass "Temporary breakpoint line number #1" } + -re ".*$gdb_prompt $" { pass "Temporary breakpoint line number #1" } + timeout { fail "breakpoint line number #1 (timeout)" } +} + +gdb_test "tbreak $bp_location6" "Breakpoint.*at.* file .*$srcfile, line $bp_location6.*" "Temporary breakpoint line number #2" + +# +# test break at line number in file +# +send_gdb "tbreak $srcfile:$bp_location2\n" +gdb_expect { + -re "Breakpoint.*at.* file .*$srcfile, line $bp_location2.*$gdb_prompt $" { pass "Temporary breakpoint line number in file #1" } + -re ".*$gdb_prompt $" { pass "Temporary breakpoint line number in file #1" } + timeout { fail "Temporary breakpoint line number in file #1 (timeout)" } +} + +set bp_location11 [gdb_get_line_number "set breakpoint 11 here"] +gdb_test "tbreak $srcfile:$bp_location11" "Breakpoint.*at.* file .*$srcfile, line $bp_location11.*" "Temporary breakpoint line number in file #2" + +# +# check to see what breakpoints are set (temporary this time) +# +gdb_test "info break" "Num Type.*Disp Enb Address.*What.*\[\r\n\] +\[0-9\]+\[\t \]+breakpoint del.*y.*in main at .*$srcfile:$main_line.*\[\r\n\] +\[0-9\]+\[\t \]+breakpoint del.*y.*in factorial at .*$srcfile:$bp_location7.*\[\r\n\] +\[0-9\]+\[\t \]+breakpoint del.*y.*in main at .*$srcfile:$bp_location1.*\[\r\n\] +\[0-9\]+\[\t \]+breakpoint del.*y.*in main at .*$srcfile:$bp_location6.*\[\r\n\] +\[0-9\]+\[\t \]+breakpoint del.*y.*in main at .*$srcfile:$bp_location2.*\[\r\n\] +\[0-9\]+\[\t \]+breakpoint del.*y.*in main at .*$srcfile:$bp_location11.*" \ + "Temporary breakpoint info" + + +#*********** + +# Verify that catchpoints for fork, vfork and exec don't trigger +# inappropriately. (There are no calls to those system functions +# in this test program.) +# +if ![runto_main] then { fail "break tests suppressed" } + +send_gdb "catch\n" +gdb_expect { + -re "Catch requires an event name.*$gdb_prompt $"\ + {pass "catch requires an event name"} + -re "$gdb_prompt $"\ + {fail "catch requires an event name"} + timeout {fail "(timeout) catch requires an event name"} +} + + +set name "set catch fork, never expected to trigger" +send_gdb "catch fork\n" +gdb_expect { + -re "Catchpoint \[0-9\]* .fork..*$gdb_prompt $" + {pass $name} + -re "Catch of fork not yet implemented.*$gdb_prompt $" + {pass $name} + -re "$gdb_prompt $" + {fail $name} + timeout {fail "(timeout) $name"} +} + + +set name "set catch vfork, never expected to trigger" +send_gdb "catch vfork\n" + +# If we are on HP-UX 10.20, we expect an error message to be +# printed if we type "catch vfork" at the gdb gdb_prompt. This is +# because on HP-UX 10.20, we cannot catch vfork events. + +if [istarget "hppa*-hp-hpux10.20"] then { + gdb_expect { + -re "Catch of vfork events not supported on HP-UX 10.20..*$gdb_prompt $" + {pass $name} + -re "$gdb_prompt $" + {fail $name} + timeout {fail "(timeout) $name"} + } +} else { + gdb_expect { + -re "Catchpoint \[0-9\]* .vfork..*$gdb_prompt $" + {pass $name} + -re "Catch of vfork not yet implemented.*$gdb_prompt $" + {pass $name} + -re "$gdb_prompt $" + {fail $name} + timeout {fail "(timeout) $name"} + } +} + +set name "set catch exec, never expected to trigger" +send_gdb "catch exec\n" +gdb_expect { + -re "Catchpoint \[0-9\]* .exec..*$gdb_prompt $" + {pass $name} + -re "Catch of exec not yet implemented.*$gdb_prompt $" + {pass $name} + -re "$gdb_prompt $" {fail $name} + timeout {fail "(timeout) $name"} +} + +# Verify that GDB responds gracefully when asked to set a breakpoint +# on a nonexistent source line. +# +send_gdb "break 999\n" +gdb_expect { + -re "No line 999 in file .*$gdb_prompt $"\ + {pass "break on non-existent source line"} + -re "$gdb_prompt $"\ + {fail "break on non-existent source line"} + timeout {fail "(timeout) break on non-existent source line"} +} + +# Run to the desired default location. If not positioned here, the +# tests below don't work. +# +gdb_test "until $bp_location1" "main .* at .*:$bp_location1.*" "until bp_location1" + + +# Verify that GDB allows one to just say "break", which is treated +# as the "default" breakpoint. Note that GDB gets cute when printing +# the informational message about other breakpoints at the same +# location. We'll hit that bird with this stone too. +# +send_gdb "break\n" +gdb_expect { + -re "Breakpoint \[0-9\]*.*$gdb_prompt $"\ + {pass "break on default location, 1st time"} + -re "$gdb_prompt $"\ + {fail "break on default location, 1st time"} + timeout {fail "(timeout) break on default location, 1st time"} +} + +send_gdb "break\n" +gdb_expect { + -re "Note: breakpoint \[0-9\]* also set at .*Breakpoint \[0-9\]*.*$gdb_prompt $"\ + {pass "break on default location, 2nd time"} + -re "$gdb_prompt $"\ + {fail "break on default location, 2nd time"} + timeout {fail "(timeout) break on default location, 2nd time"} +} + +send_gdb "break\n" +gdb_expect { + -re "Note: breakpoints \[0-9\]* and \[0-9\]* also set at .*Breakpoint \[0-9\]*.*$gdb_prompt $"\ + {pass "break on default location, 3rd time"} + -re "$gdb_prompt $"\ + {fail "break on default location, 3rd time"} + timeout {fail "(timeout) break on default location, 3rd time"} +} + +send_gdb "break\n" +gdb_expect { + -re "Note: breakpoints \[0-9\]*, \[0-9\]* and \[0-9\]* also set at .*Breakpoint \[0-9\]*.*$gdb_prompt $"\ + {pass "break on default location, 4th time"} + -re "$gdb_prompt $"\ + {fail "break on default location, 4th time"} + timeout {fail "(timeout) break on default location, 4th time"} +} + +# Verify that a "silent" breakpoint can be set, and that GDB is indeed +# "silent" about its triggering. +# +if ![runto_main] then { fail "break tests suppressed" } + +send_gdb "break $bp_location1\n" +gdb_expect { + -re "Breakpoint (\[0-9\]*) at .*, line $bp_location1.*$gdb_prompt $"\ + {pass "set to-be-silent break bp_location1"} + -re "$gdb_prompt $"\ + {fail "set to-be-silent break bp_location1"} + timeout {fail "(timeout) set to-be-silent break bp_location1"} +} + +send_gdb "commands $expect_out(1,string)\n" +send_gdb "silent\n" +send_gdb "end\n" +gdb_expect { + -re ".*$gdb_prompt $"\ + {pass "set silent break bp_location1"} + timeout {fail "(timeout) set silent break bp_location1"} +} + +send_gdb "info break $expect_out(1,string)\n" +gdb_expect { + -re "\[0-9\]*\[ \t\]*breakpoint.*:$bp_location1\r\n\[ \t\]*silent.*$gdb_prompt $"\ + {pass "info silent break bp_location1"} + -re "$gdb_prompt $"\ + {fail "info silent break bp_location1"} + timeout {fail "(timeout) info silent break bp_location1"} +} +send_gdb "continue\n" +gdb_expect { + -re "Continuing.\r\n$gdb_prompt $"\ + {pass "hit silent break bp_location1"} + -re "$gdb_prompt $"\ + {fail "hit silent break bp_location1"} + timeout {fail "(timeout) hit silent break bp_location1"} +} +send_gdb "bt\n" +gdb_expect { + -re "#0 main .* at .*:$bp_location1.*$gdb_prompt $"\ + {pass "stopped for silent break bp_location1"} + -re "$gdb_prompt $"\ + {fail "stopped for silent break bp_location1"} + timeout {fail "(timeout) stopped for silent break bp_location1"} +} + +# Verify that GDB can at least parse a breakpoint with the +# "thread" keyword. (We won't attempt to test here that a +# thread-specific breakpoint really triggers appropriately. +# The gdb.threads subdirectory contains tests for that.) +# +set bp_location12 [gdb_get_line_number "set breakpoint 12 here"] +send_gdb "break $bp_location12 thread 999\n" +gdb_expect { + -re "Unknown thread 999.*$gdb_prompt $"\ + {pass "thread-specific breakpoint on non-existent thread disallowed"} + -re "$gdb_prompt $"\ + {fail "thread-specific breakpoint on non-existent thread disallowed"} + timeout {fail "(timeout) thread-specific breakpoint on non-existent thread disallowed"} +} +send_gdb "break $bp_location12 thread foo\n" +gdb_expect { + -re "Junk after thread keyword..*$gdb_prompt $"\ + {pass "thread-specific breakpoint on bogus thread ID disallowed"} + -re "$gdb_prompt $"\ + {fail "thread-specific breakpoint on bogus thread ID disallowed"} + timeout {fail "(timeout) thread-specific breakpoint on bogus thread ID disallowed"} +} + +# Verify that GDB responds gracefully to a breakpoint command with +# trailing garbage. +# +send_gdb "break $bp_location12 foo\n" +gdb_expect { + -re "Junk at end of arguments..*$gdb_prompt $"\ + {pass "breakpoint with trailing garbage disallowed"} + -re "$gdb_prompt $"\ + {fail "breakpoint with trailing garbage disallowed"} + timeout {fail "(timeout) breakpoint with trailing garbage disallowed"} +} + +# Verify that GDB responds gracefully to a "clear" command that has +# no matching breakpoint. (First, get us off the current source line, +# which we know has a breakpoint.) +# +send_gdb "next\n" +gdb_expect { + -re ".*$gdb_prompt $"\ + {pass "step over breakpoint"} + timeout {fail "(timeout) step over breakpoint"} +} +send_gdb "clear 81\n" +gdb_expect { + -re "No breakpoint at 81..*$gdb_prompt $"\ + {pass "clear line has no breakpoint disallowed"} + -re "$gdb_prompt $"\ + {fail "clear line has no breakpoint disallowed"} + timeout {fail "(timeout) clear line has no breakpoint disallowed"} +} +send_gdb "clear\n" +gdb_expect { + -re "No breakpoint at this line..*$gdb_prompt $"\ + {pass "clear current line has no breakpoint disallowed"} + -re "$gdb_prompt $"\ + {fail "clear current line has no breakpoint disallowed"} + timeout {fail "(timeout) clear current line has no breakpoint disallowed"} +} + +# Verify that we can set and clear multiple breakpoints. +# +# We don't test that it deletes the correct breakpoints. We do at +# least test that it deletes more than one breakpoint. +# +gdb_test "break marker3" "Breakpoint.*at.*" "break marker3 #1" +gdb_test "break marker3" "Breakpoint.*at.*" "break marker3 #2" +gdb_test "clear marker3" {Deleted breakpoints [0-9]+ [0-9]+.*} + +# Verify that a breakpoint can be set via a convenience variable. +# +send_gdb "set \$foo=$bp_location11\n" +gdb_expect { + -re "$gdb_prompt $"\ + {pass "set convenience variable \$foo to bp_location11"} + timeout {fail "(timeout) set convenience variable \$foo to bp_location11"} +} +send_gdb "break \$foo\n" +gdb_expect { + -re "Breakpoint (\[0-9\]*) at .*, line $bp_location11.*$gdb_prompt $"\ + {pass "set breakpoint via convenience variable"} + -re "$gdb_prompt $"\ + {fail "set breakpoint via convenience variable"} + timeout {fail "(timeout) set breakpoint via convenience variable"} +} + +# Verify that GDB responds gracefully to an attempt to set a +# breakpoint via a convenience variable whose type is not integer. +# +send_gdb "set \$foo=81.5\n" +gdb_expect { + -re "$gdb_prompt $"\ + {pass "set convenience variable \$foo to 81.5"} + timeout {fail "(timeout) set convenience variable \$foo to 81.5"} +} +send_gdb "break \$foo\n" +gdb_expect { + -re "Convenience variables used in line specs must have integer values..*$gdb_prompt $"\ + {pass "set breakpoint via non-integer convenience variable disallowed"} + -re "$gdb_prompt $"\ + {fail "set breakpoint via non-integer convenience variable disallowed"} + timeout {fail "(timeout) set breakpoint via non-integer convenience variable disallowed"} +} + +# Verify that we can set and trigger a breakpoint in a user-called function. +# +send_gdb "break marker2\n" +gdb_expect { + -re "Breakpoint (\[0-9\]*) at .*, line ($bp_location8|$bp_location9).*$gdb_prompt $"\ + {pass "set breakpoint on to-be-called function"} + -re "$gdb_prompt $"\ + {fail "set breakpoint on to-be-called function"} + timeout {fail "(timeout) set breakpoint on to-be-called function"} +} +send_gdb "print marker2(99)\n" +gdb_expect { + -re "The program being debugged stopped while in a function called from GDB.\r\nWhen the function .marker2. is done executing, GDB will silently\r\nstop .instead of continuing to evaluate the expression containing\r\nthe function call...*$gdb_prompt $"\ + {pass "hit breakpoint on called function"} + -re "$gdb_prompt $"\ + {fail "hit breakpoint on called function"} + timeout {fail "(timeout) hit breakpoint on called function"} +} + +# As long as we're stopped (breakpointed) in a called function, +# verify that we can successfully backtrace & such from here. +# +# In this and the following test, the _sr4export check apparently is needed +# for hppa*-*-hpux. +# +send_gdb "bt\n" +gdb_expect { + -re "#0\[ \t\]*($hex in )?marker2.*:($bp_location8|$bp_location9)\r\n#1.*_sr4export.*$gdb_prompt $"\ + {pass "backtrace while in called function"} + -re "#0\[ \t\]*($hex in )?marker2.*:($bp_location8|$bp_location9)\r\n#1.*function called from gdb.*$gdb_prompt $"\ + {pass "backtrace while in called function"} + -re "$gdb_prompt $"\ + {fail "backtrace while in called function"} + timeout {fail "(timeout) backtrace while in called function"} +} + +# Return from the called function. For remote targets, it's important to do +# this before runto_main, which otherwise may silently stop on the dummy +# breakpoint inserted by GDB at the program's entry point. +# +send_gdb "finish\n" +gdb_expect { + -re "Run till exit from .*marker2.* at .*($bp_location8|$bp_location9)\r\n.* in _sr4export.*$gdb_prompt $"\ + {pass "finish from called function"} + -re "Run till exit from .*marker2.* at .*($bp_location8|$bp_location9)\r\n.*function called from gdb.*$gdb_prompt $"\ + {pass "finish from called function"} + -re "Run till exit from .*marker2.* at .*($bp_location8|$bp_location9)\r\n.*Value returned.*$gdb_prompt $"\ + {pass "finish from called function"} + -re "$gdb_prompt $"\ + {fail "finish from called function"} + timeout {fail "(timeout) finish from called function"} +} + +# Verify that GDB responds gracefully to a "finish" command with +# arguments. +# +if ![runto_main] then { fail "break tests suppressed" } + +send_gdb "finish 123\n" +gdb_expect { + -re "The \"finish\" command does not take any arguments.\r\n$gdb_prompt $"\ + {pass "finish with arguments disallowed"} + -re "$gdb_prompt $"\ + {fail "finish with arguments disallowed"} + timeout {fail "(timeout) finish with arguments disallowed"} +} + +# Verify that GDB responds gracefully to a request to "finish" from +# the outermost frame. On a stub that never exits, this will just +# run to the stubs routine, so we don't get this error... Thus the +# second condition. +# + +send_gdb "finish\n" +gdb_expect { + -re "\"finish\" not meaningful in the outermost frame.\r\n$gdb_prompt $"\ + {pass "finish from outermost frame disallowed"} + -re "Run till exit from.*\r\n$gdb_prompt $" { + pass "finish from outermost frame disallowed" + } + -re "$gdb_prompt $"\ + {fail "finish from outermost frame disallowed"} + timeout {fail "(timeout) finish from outermost frame disallowed"} +} + +# Verify that we can explicitly ask GDB to stop on all shared library +# events, and that it does so. +# +if [istarget "hppa*-*-hpux*"] then { + if ![runto_main] then { fail "break tests suppressed" } + + send_gdb "set stop-on-solib-events 1\n" + gdb_expect { + -re "$gdb_prompt $"\ + {pass "set stop-on-solib-events"} + timeout {fail "(timeout) set stop-on-solib-events"} + } + + send_gdb "run\n" + gdb_expect { + -re ".*Start it from the beginning.*y or n. $"\ + {send_gdb "y\n" + gdb_expect { + -re ".*Stopped due to shared library event.*$gdb_prompt $"\ + {pass "triggered stop-on-solib-events"} + -re "$gdb_prompt $"\ + {fail "triggered stop-on-solib-events"} + timeout {fail "(timeout) triggered stop-on-solib-events"} + } + } + -re "$gdb_prompt $"\ + {fail "rerun for stop-on-solib-events"} + timeout {fail "(timeout) rerun for stop-on-solib-events"} + } + + send_gdb "set stop-on-solib-events 0\n" + gdb_expect { + -re "$gdb_prompt $"\ + {pass "reset stop-on-solib-events"} + timeout {fail "(timeout) reset stop-on-solib-events"} + } +} + +# Hardware breakpoints are unsupported on HP-UX. Verify that GDB +# gracefully responds to requests to create them. +# +if [istarget "hppa*-*-hpux*"] then { + if ![runto_main] then { fail "break tests suppressed" } + + send_gdb "hbreak\n" + gdb_expect { + -re "No hardware breakpoint support in the target.*$gdb_prompt $"\ + {pass "hw breaks disallowed"} + -re "$gdb_prompt $"\ + {fail "hw breaks disallowed"} + timeout {fail "(timeout) hw breaks disallowed"} + } + + send_gdb "thbreak\n" + gdb_expect { + -re "No hardware breakpoint support in the target.*$gdb_prompt $"\ + {pass "temporary hw breaks disallowed"} + -re "$gdb_prompt $"\ + {fail "temporary hw breaks disallowed"} + timeout {fail "(timeout) temporary hw breaks disallowed"} + } +} + +#******** + + +# +# Test "next" over recursive function call. +# + +proc test_next_with_recursion {} { + global gdb_prompt + global decimal + global binfile + + if [target_info exists use_gdb_stub] { + # Reload the program. + delete_breakpoints + gdb_load ${binfile}; + } else { + # FIXME: should be using runto + gdb_test "kill" "" "kill program" "Kill the program being debugged.*y or n. $" "y" + + delete_breakpoints + } + + gdb_test "break factorial" "Breakpoint $decimal at .*" "break at factorial" + + # Run until we call factorial with 6 + + if [istarget "*-*-vxworks*"] then { + send_gdb "run vxmain \"6\"\n" + } else { + gdb_run_cmd + } + gdb_expect { + -re "Break.* factorial .value=6. .*$gdb_prompt $" {} + -re ".*$gdb_prompt $" { + fail "run to factorial(6)"; + gdb_suppress_tests; + } + timeout { fail "run to factorial(6) (timeout)" ; gdb_suppress_tests } + } + + # Continue until we call factorial recursively with 5. + + if [gdb_test "continue" \ + "Continuing.*Break.* factorial .value=5. .*" \ + "continue to factorial(5)"] then { gdb_suppress_tests } + + # Do a backtrace just to confirm how many levels deep we are. + + if [gdb_test "backtrace" \ + "#0\[ \t\]+ factorial .value=5..*" \ + "backtrace from factorial(5)"] then { gdb_suppress_tests } + + # Now a "next" should position us at the recursive call, which + # we will be performing with 4. + + if [gdb_test "next" \ + ".* factorial .value - 1.;.*" \ + "next to recursive call"] then { gdb_suppress_tests } + + # Disable the breakpoint at the entry to factorial by deleting them all. + # The "next" should run until we return to the next line from this + # recursive call to factorial with 4. + # Buggy versions of gdb will stop instead at the innermost frame on + # the line where we are trying to "next" to. + + delete_breakpoints + + if [istarget "mips*tx39-*"] { + set timeout 60 + } + # We used to set timeout here for all other targets as well. This + # is almost certainly wrong. The proper timeout depends on the + # target system in use, and how we communicate with it, so there + # is no single value appropriate for all targets. The timeout + # should be established by the Dejagnu config file(s) for the + # board, and respected by the test suite. + # + # For example, if I'm running GDB over an SSH tunnel talking to a + # portmaster in California talking to an ancient 68k board running + # a crummy ROM monitor (a situation I can only wish were + # hypothetical), then I need a large timeout. But that's not the + # kind of knowledge that belongs in this file. + + gdb_test next "\[0-9\]*\[\t \]+return \\(value\\);.*" \ + "next over recursive call" + + # OK, we should be back in the same stack frame we started from. + # Do a backtrace just to confirm. + + set result [gdb_test "backtrace" \ + "#0\[ \t\]+ factorial .value=120.*\r\n#1\[ \t\]+ \[0-9a-fx\]+ in factorial .value=6..*" \ + "backtrace from factorial(5.1)"] + if { $result != 0 } { gdb_suppress_tests } + + if [target_info exists gdb,noresults] { gdb_suppress_tests } + gdb_continue_to_end "recursive next test" + gdb_stop_suppressing_tests; +} + +test_next_with_recursion + + +#******** + +# now move the .debug file to a different location so that we can test +# the "set debug-file-directory" command. + +remote_exec build "mv ${objdir}/${subdir}/.debug/${testfile}.debug ${objdir}/${subdir}" +gdb_exit +gdb_start +gdb_reinitialize_dir $srcdir/$subdir +gdb_test "set debug-file-directory ${objdir}/${subdir}" ".*" "set separate debug location" +gdb_load ${binfile} + +if [target_info exists gdb_stub] { + gdb_step_for_stub; +} + +# +# test break at function +# +gdb_test "break main" \ + "Breakpoint.*at.* file .*$srcfile, line.*" \ + "breakpoint function, optimized file" + +# +# test break at function +# +gdb_test "break marker4" \ + "Breakpoint.*at.* file .*$srcfile, line.*" \ + "breakpoint small function, optimized file" + +# +# run until the breakpoint at main is hit. For non-stubs-using targets. +# +if ![target_info exists use_gdb_stub] { + if [istarget "*-*-vxworks*"] then { + send_gdb "run vxmain \"2\"\n" + set timeout 120 + verbose "Timeout is now $timeout seconds" 2 + } else { + send_gdb "run\n" + } + gdb_expect { + -re "The program .* has been started already.*y or n. $" { + send_gdb "y\n" + exp_continue + } + -re "Starting program.*Breakpoint \[0-9\]+,.*main .*argc.*argv.* at .*$srcfile:$bp_location6.*$bp_location6\[\t \]+if .argc.* \{.*$gdb_prompt $"\ + { pass "run until function breakpoint, optimized file" } + -re "Starting program.*Breakpoint \[0-9\]+,.*main .*argc.*argv.* at .*$gdb_prompt $"\ + { pass "run until function breakpoint, optimized file (code motion)" } + -re ".*$gdb_prompt $" { fail "run until function breakpoint, optimized file" } + timeout { fail "run until function breakpoint, optimized file (timeout)" } + } +} else { + if ![target_info exists gdb_stub] { + gdb_test continue ".*Continuing\\..*Breakpoint \[0-9\]+, main \\(argc=.*, argv=.*, envp=.*\\) at .*$srcfile:$bp_location6.*$bp_location6\[\t \]+if .argc.*\{.*" "stub continue, optimized file" + } +} + +# +# run until the breakpoint at a small function +# + +# +# Add a second pass pattern. The behavior differs here between stabs +# and dwarf for one-line functions. Stabs preserves two line symbols +# (one before the prologue and one after) with the same line number, +# but dwarf regards these as duplicates and discards one of them. +# Therefore the address after the prologue (where the breakpoint is) +# has no exactly matching line symbol, and GDB reports the breakpoint +# as if it were in the middle of a line rather than at the beginning. + +set bp_location13 [gdb_get_line_number "set breakpoint 13 here"] +set bp_location14 [gdb_get_line_number "set breakpoint 14 here"] +send_gdb "continue\n" +gdb_expect { + -re "Breakpoint $decimal, marker4 \\(d=177601976\\) at .*$srcfile:$bp_location13\[\r\n\]+$bp_location13\[\t \]+void marker4.*" { + pass "run until breakpoint set at small function, optimized file" + } + -re "Breakpoint $decimal, $hex in marker4 \\(d=177601976\\) at .*$srcfile:$bp_location13\[\r\n\]+$bp_location13\[\t \]+void marker4.*" { + pass "run until breakpoint set at small function, optimized file" + } + -re "Breakpoint $decimal, marker4 \\(d=177601976\\) at .*$srcfile:$bp_location14\[\r\n\]+$bp_location14\[\t \]+void marker4.*" { + # marker4() is defined at line 46 when compiled with -DPROTOTYPES + pass "run until breakpoint set at small function, optimized file (line bp_location14)" + } + -re ".*$gdb_prompt " { + fail "run until breakpoint set at small function, optimized file" + } + timeout { + fail "run until breakpoint set at small function, optimized file (timeout)" + } +} + + +# Reset the default arguments for VxWorks +if [istarget "*-*-vxworks*"] { + set timeout 10 + verbose "Timeout is now $timeout seconds" 2 + send_gdb "set args main\n" + gdb_expect -re ".*$gdb_prompt $" {} +} diff --git a/gdb/testsuite/gdb.cp/bs15503.cc b/gdb/testsuite/gdb.cp/bs15503.cc new file mode 100644 index 00000000000..aec5a0b8fcb --- /dev/null +++ b/gdb/testsuite/gdb.cp/bs15503.cc @@ -0,0 +1,74 @@ +/* This testcase is part of GDB, the GNU debugger. + + Copyright 1992, 2004 Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + + Please email any bugs, comments, and/or additions to this file to: + bug-gdb@prep.ai.mit.edu */ + +#include <string> +#include <iostream> +using namespace std; + +template <class T> +class StringTest { +public: + virtual void runTest(); + void testFunction(); +}; + +template <class T> +void StringTest<T>:: runTest() { + testFunction (); +} + +template <class T> +void StringTest <T>::testFunction() { + // initialize s with string literal + cout << "in StringTest" << endl; + string s("I am a shot string"); + cout << s << endl; + + // insert 'r' to fix "shot" + s.insert(s.begin()+10,'r' ); + cout << s << endl; + + // concatenate another string + s += "and now a longer string"; + cout << s << endl; + + // find position where blank needs to be inserted + string::size_type spos = s.find("and"); + s.insert(spos, " "); + cout << s << endl; + + // erase the concatenated part + s.erase(spos); + cout << s << endl; +} + +int main() { + StringTest<wchar_t> ts; + ts.runTest(); +} + +/* output: +I am a shot string +I am a short string +I am a short stringand now a longer string +I am a short string and now a longer string +I am a short string +*/ diff --git a/gdb/testsuite/gdb.cp/bs15503.exp b/gdb/testsuite/gdb.cp/bs15503.exp new file mode 100644 index 00000000000..9b6095bec1a --- /dev/null +++ b/gdb/testsuite/gdb.cp/bs15503.exp @@ -0,0 +1,100 @@ +# Copyright 1992, 2004 Free Software Foundation, Inc. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ + +# Test case for CLLbs15503 +# This file was written by Sue Kimura (sue_kimura@hp.com) +# Rewritten by Michael Chastain (mec.gnu@mindspring.com) + +if $tracelevel { + strace $tracelevel +} + +set testfile "bs15503" +set srcfile ${testfile}.cc +set binfile ${objdir}/${subdir}/${testfile} + +if [get_compiler_info ${binfile}] { + return -1 +} + +if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable "debug c++"] != "" } { + perror "Couldn't compile ${srcfile}" + return -1 +} + +gdb_exit +gdb_start +gdb_reinitialize_dir $srcdir/$subdir +gdb_load ${binfile} + +if ![runto_main] then { + perror "couldn't run to breakpoint" + continue +} + +# Set breakpoint on template function + +gdb_test "break StringTest<wchar_t>::testFunction" \ + "Breakpoint $decimal at $hex: file .*${srcfile}, line $decimal." + +gdb_test "continue" \ + ".*Breakpoint $decimal, StringTest<wchar_t>::testFunction \\(this=$hex\\).*" \ + "continue to StringTest<wchar_t>" + +# Run to some random point in the middle of the function. + +gdb_breakpoint [gdb_get_line_number "find position where blank needs to be inserted"] +gdb_continue_to_breakpoint "find position where blank needs to be inserted" + +# Call some string methods. + +gdb_test "print s.length()" "\\$\[0-9\]+ = 42" +gdb_test "print s\[0\]" "\\$\[0-9\]+ =.* 'I'" +gdb_test "print s\[s.length()-1\]" "\\$\[0-9\]+ =.* 'g'" +gdb_test "print (const char *) s" \ + "\\$\[0-9\]+ = $hex \"I am a short stringand now a longer string\"" + +# TODO: tests that do not work with gcc 2.95.3 +# -- chastain 2004-01-07 +# +# gdb_test "print s.compare(s)" "\\$\[0-9\]+ = 0" +# gdb_test "print s.compare(\"AAA\")" "\\$\[0-9\]+ = 1" +# gdb_test "print s.compare(\"ZZZ\")" "\\$\[0-9\]+ = -1" + +# TODO: tests that do not work with gcc 2.95.3 and gcc 3.3.2. +# cannot call overloaded non-member operator. -- chastain 2004-01-07 +# +# gdb_test "print s == s" "\\$\[0-9\]+ = true" +# gdb_test "print s > "AAA" "\\$\[0-9\]+ = true" +# gdb_test "print s < "ZZZ" "\\$\[0-9\]+ = true" + +# TODO crash gdb! This is going to be a great test! +# -- chastain 2004-01-07 +# +# gdb_test "print s == \"I am a short stringand now a longer string\"" \ +# "\\$\[0-9\]+ = "true" + +gdb_test "print (const char *) s.substr(0,4)" "\\$\[0-9\]+ = $hex \"I am\"" +gdb_test "print (const char *) (s=s.substr(0,4))" \ + "\\$\[0-9\]+ = $hex \"I am\"" + +# TODO: cannot call overloaded non-member operator again. +# -- chastain 2004-01-07 +# +# gdb_test "print (const char *) (s + s)" \ +# "\\$\[0-9\]+ = $hex \"I amI am\"" +# gdb_test "print (const char *) (s + \" \" + s)" \ +# "\\$\[0-9\]+ = $hex \"I am I am\"" diff --git a/gdb/testsuite/gdb.cp/exception.cc b/gdb/testsuite/gdb.cp/exception.cc new file mode 100644 index 00000000000..4134fbcf7e7 --- /dev/null +++ b/gdb/testsuite/gdb.cp/exception.cc @@ -0,0 +1,69 @@ +/* This testcase is part of GDB, the GNU debugger. + + Copyright 1997, 1998, 2004 Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + + Please email any bugs, comments, and/or additions to this file to: + bug-gdb@prep.ai.mit.edu */ + +// Test file for exception handling support. + +#include <iostream> +using namespace std; + +int foo (int i) +{ + if (i < 32) + throw (int) 13; + else + return i * 2; +} + +extern "C" int bar (int k, unsigned long eharg, int flag); + +int bar (int k, unsigned long eharg, int flag) +{ + cout << "k is " << k << " eharg is " << eharg << " flag is " << flag << endl; + return 1; +} + +int main() +{ + int j; + + try { + j = foo (20); + } + catch (int x) { + cout << "Got an except " << x << endl; + } + + try { + try { + j = foo (20); + } + catch (int x) { + cout << "Got an except " << x << endl; + throw; + } + } + catch (int y) { + cout << "Got an except (rethrown) " << y << endl; + } + + // Not caught + foo (20); +} diff --git a/gdb/testsuite/gdb.cp/exception.exp b/gdb/testsuite/gdb.cp/exception.exp new file mode 100644 index 00000000000..d921eade955 --- /dev/null +++ b/gdb/testsuite/gdb.cp/exception.exp @@ -0,0 +1,222 @@ +# Copyright 1997, 1998, 2004 Free Software Foundation, Inc. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +# Please email any bugs, comments, and/or additions to this file to: +# bug-gdb@prep.ai.mit.edu + +# This file is part of the gdb testsuite. +# tests for exception-handling support +# Written by Satish Pai <pai@apollo.hp.com> 1997-07-23 +# Rewritten by Michael Chastain <mec.gnu@mindspring.com> 2004-01-08 + +# This file used to have two copies of the tests with different +# compiler flags for hp-ux. Instead, the user should set CXXOPTS +# or run runtest with --target_board unix/gdb:debug_flags="..." +# to choose the compiler flags. +# +# The interesting compiler flags are: "aCC +A -Wl,-a,-archive" . +# Static-linked executables use a different mechanism to get the +# address of the notification hook in the C++ support library. + +# TODO: this file is not ready for production yet. If you are working +# on C++ exception support for gdb, you can take out the "continue" +# statement and try your luck. -- chastain 2004-01-09 + +# TODO: this file has many absolute line numbers. +# Replace them with gdb_get_line_number. + +set ws "\[\r\n\t \]+" +set nl "\[\r\n\]+" + +if $tracelevel then { + strace $tracelevel +} + +set testfile "exception" +set srcfile ${testfile}.cc +set binfile ${objdir}/${subdir}/${testfile} + +if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable {debug c++}] != "" } { + gdb_suppress_entire_file "Testcase compile failed, so all tests in this file will automatically fail." +} + +# Start with a fresh gdb + +set prms_id 0 +set bug_id 0 + +gdb_exit +gdb_start +gdb_reinitialize_dir $srcdir/$subdir +gdb_load ${binfile} + +if ![runto_main] then { + perror "couldn't run to breakpoint" + continue +} + +# As I said before, this test script is not ready yet! + +continue + +# Set a catch catchpoint + +gdb_test "catch catch" "Catchpoint \[0-9\]+ \\(catch\\)" + +# Set a throw catchpoint + +gdb_test "catch throw" "Catchpoint \[0-9\]+ \\(throw\\)" \ + "catch throw (static executable)" + +# The catchpoints should be listed in the list of breakpoints. + +set re_head "Num${ws}Type${ws}Disp${ws}Enb${ws}Address${ws}What" +set re_1_main "1${ws}breakpoint${ws}keep${ws}y${ws}$hex${ws}in main.*breakpoint already hit.*" +set re_2_catch "2${ws}catch catch${ws}keep${ws}y${ws}$hex${ws}exception catch" +set re_3_catch "3${ws}catch throw${ws}keep${ws}y${ws}$hex${ws}exception throw" +set re_2_bp "2${ws}breakpoint${ws}keep${ws}y${ws}$hex${ws}exception catch" +set re_3_bp "3${ws}breakpoint${ws}keep${ws}y${ws}$hex${ws}exception throw" + +set name "info breakpoints" +gdb_test_multiple "info breakpoints" $name { + -re "$re_head${ws}$re_1_main${ws}$re_2_catch${ws}$re_3_catch\r\n$gdb_prompt $" { + pass $name + } + -re "$re_head${ws}$re_1_main${ws}$re_2_bp${ws}$re_3_bp\r\n$gdb_prompt $" { + # TODO: gdb HEAD 2004-01-08 does this. Is this okay? + unresolved $name + } +} + +# Some targets support "info catch". +# Some do not. + +set name "info catch" +gdb_test_multiple "info catch" $name { + -re "Info catch not supported with this target/compiler combination.\r\n$gdb_prompt $" { + unsupported $name + } + -re "No catches.\r\n$gdb_prompt $" { + # TODO: gdb HEAD 2004-01-08 does this. Is this okay? + unresolved $name + } +} + +# Get the first exception thrown + +set name "continue to first throw" +gdb_test_multiple "continue" $name { + -re "Continuing.${ws}Catchpoint \[0-9\]+ \\(exception thrown\\), throw location.*${srcfile}:30, catch location .*${srcfile}:50\r\n$gdb_prompt $" { + pass $name + } + -re "Continuing.${ws}Catchpoint \[0-9\]+ \\(exception thrown\\)\r\n.*\r\n$gdb_prompt $" { + # TODO: gdb HEAD 2004-01-08 does this. Is this okay? + unresolved $name + } +} + +# Backtrace from the throw point. +# This should get to user code. + +set name "backtrace after first throw" +gdb_test_multiple "backtrace" $name { + -re ".*#\[0-9\]+${ws}$hex in foo \\(i=20\\) at .*${srcfile}:30\r\n#\[0-9\]+${ws}$hex in main \\((void|)\\) at .*${srcfile}:48\r\n$gdb_prompt $" { + pass $name + } +} + +# Continue to the catch. + +set name "continue to first catch" +gdb_test_multiple "continue" $name { + -re "Continuing.${ws}Catchpoint \[0-9\]+ \\(exception caught\\), throw location.*${srcfile}:30, catch location .*${srcfile}:50\r\n$gdb_prompt $" { + pass $name + } + -re "Continuing.${ws}Catchpoint \[0-9\]+ \\(exception caught\\)\r\n.*\r\n$gdb_prompt $" { + # TODO: gdb HEAD 2004-01-08 does this. Is this okay? + unresolved $name + } +} + +# Backtrace from the catch point. +# This should get to user code. + +set name "backtrace after first catch" +gdb_test_multiple "backtrace" $name { + -re ".*#\[0-9\]+${ws}$hex in main \\((void|)\\) at .*$srcfile:50\r\n$gdb_prompt $" { + pass $name + } +} + +# Continue to second throw. + +set name "continue to second throw" +gdb_test_multiple "continue" $name { + -re "Continuing.${ws}Got an except 13${ws}Catchpoint \[0-9\]+ \\(exception thrown\\), throw location.*${srcfile}:30, catch location .*${srcfile}:58\r\n$gdb_prompt $" { + pass $name + } + -re "Continuing.${ws}Got an except 13${ws}Catchpoint \[0-9\]+ \\(exception thrown\\)\r\n.*\r\n$gdb_prompt $" { + # TODO: gdb HEAD 2004-01-08 does this. Is this okay? + unresolved $name + } +} + +# Backtrace from the throw point. +# This should get to user code. + +set name "backtrace after second throw" +gdb_test_multiple "backtrace" $name { + -re ".*#\[0-9\]+${ws}$hex in foo \\(i=20\\) at .*${srcfile}:30\r\n#\[0-9\]+${ws}$hex in main \\((void|)\\) at .*${srcfile}:56\r\n$gdb_prompt $" { + pass $name + } +} + +# Continue to second catch. + +set name "continue to second catch" +gdb_test_multiple "continue" $name { + -re "Continuing.${ws}Catchpoint \[0-9\]+ \\(exception caught\\), throw location.*${srcfile}:30, catch location .*${srcfile}:58\r\n$gdb_prompt $" { + pass $name + } + -re "Continuing.${ws}Catchpoint \[0-9\]+ \\(exception caught\\)\r\n.*\r\n$gdb_prompt $" { + # TODO: gdb HEAD 2004-01-08 does this. Is this okay? + unresolved $name + } +} + +# Backtrace from the catch point. +# This should get to user code. + +set name "backtrace after second catch" +gdb_test_multiple "backtrace" $name { + -re ".*#\[0-9\]+${ws}$hex in main \\((void|)\\) at .*$srcfile:58\r\n$gdb_prompt $" { + pass $name + } +} + +# That is all for now. +# +# The original code had: +# +# continue to re-throw ; backtrace +# continue to catch ; backtrace +# continue to throw out of main +# +# The problem is that "re-throw" does not show a throw; only a catch. +# I do not know if this is because of a bug, or because the generated +# code is optimized for a throw into the same function. +# +# -- chastain 2004-01-09 diff --git a/gdb/testsuite/gdb.mi/ChangeLog-1999-2003 b/gdb/testsuite/gdb.mi/ChangeLog-1999-2003 new file mode 100644 index 00000000000..6f263c33056 --- /dev/null +++ b/gdb/testsuite/gdb.mi/ChangeLog-1999-2003 @@ -0,0 +1,768 @@ +2003-08-07 Andrew Cagney <cagney@redhat.com> + + * mi2-basics.exp: Copy base MI .exp file, set MIFLAGS to -i=mi2. + * mi2-break.exp, mi2-cli.exp, mi2-console.exp: Ditto. + * mi2-disassemble.exp, mi2-eval.exp, mi2-file.exp: Ditto. + * mi2-hack-cli.exp, mi2-pthreads.exp, mi2-read-memory.exp: Ditto. + * mi2-regs.exp, mi2-return.exp, mi2-simplerun.exp: Ditto. + * mi2-stack.exp, mi2-stepi.exp, mi2-syn-frame.exp: Ditto. + * mi2-until.exp, mi2-var-block.exp, mi2-var-child.exp: Ditto. + * mi2-var-cmd.exp, mi2-var-display.exp, mi2-watch.exp: Ditto. + +2003-05-03 J. Brobecker <brobecker@gnat.com> + + From Thierry Schneider <tpschneider1@yahoo.com>: + * mi1-symbol.exp (-symbol-list-lines): New test file to + validate all symbol-related commands + +2003-04-08 Andrew Cagney <cagney@redhat.com> + + * gdb792.exp: Skip when C++. + +2003-02-23 Stephane Carrez <stcarrez@nerim.fr> + + * mi-syn-frame.exp: Don't run this test when gdb,nosignals is set. + +2002-12-13 Jeff Johnston <jjohnstn@redhat.com> + + * mi-basics.exp: Change tests for -environment-directory. Also add + tests for -environment-cd, -environment-pwd, and -environment-path. + Part of fix for PR gdb/741. + +2002-11-05 Jeff Johnston <jjohnstn@redhat.com> + + * gdb792.cc: New file to test patch for PR gdb/792. + * gdb792.exp: Ditto. + +2002-11-04 Elena Zannoni <ezannoni@redhat.com> + + * mi-console.exp: Use mi_runto, mi_run_to_main, mi_next_to, + mi_step_to wherever possible. Update copyright notices. + * mi-disassemble.exp: Ditto. + * mi-eval.exp: Ditto. + * mi-read-memory.exp: Ditto. + * mi-regs.exp: Ditto. + * mi-return.exp: Ditto. + * mi-stack.exp: Ditto. + * mi-stepi.exp: Ditto. + * mi-var-block.exp: Ditto. + * mi-var-cmd.exp: Ditto. + * mi-watch.exp: Ditto. + * mi1-console.exp: Ditto. + * mi1-disassemble.exp: Ditto. + * mi1-eval.exp: Ditto. + * mi1-read-memory.exp: Ditto. + * mi1-regs.exp: Ditto. + * mi1-return.exp: Ditto. + * mi1-stack.exp: Ditto. + * mi1-stepi.exp: Ditto. + * mi1-var-block.exp: Ditto. + * mi1-var-cmd.exp: Ditto. + * mi1-watch.exp: Ditto. + +2002-10-23 Jeff Johnston <jjohnstn@redhat.com> + + * mi-var-cmd.exp: Add tests to verify that a -var-assign that changes + a value shows up in the changelist of a -var-update. Part of fix + for gdb/702. + * mi1-var-cmd.exp: Ditto. + +2002-10-03 Jeff Johnston <jjohnstn@redhat.com> + + * mi-return.exp: Change expected frame output to remove extraneous + space in level field when frame level is single digit. Part of + fix for PR gdb/192. + * mi-stack.exp: Ditto. + * mi1-return.exp: Ditto. + * mi1-stack.exp: Ditto. + +2002-10-03 Jeff Johnston <jjohnstn@redhat.com> + + * mi-var-block.exp: Change expected output from -var-update + command to expect list format for "changelist". Fix for + PR gdb/672. + * mi-var-cmd.exp: Ditto. + * mi-var-child: Ditto. + +2002-09-25 Keith Seitz <keiths@redhat.com> + + * mi-pthreads.exp (get_mi_thread_list): Check if expect_out + exists before using it. + (check_mi_and_console_threads): Likewise. + * gdb669.exp (get_mi_thread_list): Likewise. + (check_mi_and_console_threads): Likewise. + +2002-09-24 Keith Seitz <keiths@redhat.com> + + * configure.in: Add config header. + Check for pthread.h. + * configure: Regenerate. + * config.in: New file. + * pthreads.c: New file. + * mi-pthreads.exp: New file to test thread functionality. + * gdb669.exp: New file. + +2002-09-17 Keith Seitz <keiths@redhat.com> + + * mi-var-cmd.exp: Add tests to check when varobj pinned to a + selected frame changes type. + +2002-09-17 Keith Seitz <keiths@redhat.com> + + * mi-console.exp: Update copyright. + * mi-var-block.exp: Likewise. + * mi-var-cmd.exp: Likewise. + * mi-var-display.exp: Likewise. + * mi0-console.exp: Likewise. + * mi0-var-child.exp: Likewise. + * mi0-var-cmd.exp: Likewise. + * mi0-var-display.exp: Likewise. + +2002-09-16 Keith Seitz <keiths@redhat.com> + + * gdb701.exp: New file for testing varobj target type bug. + * gdb701.c: New file. + +2002-09-13 Keith Seitz <keiths@redhat.com> + + * mi-var-child.exp: Use mi_step_to and mi_execute_to instead + of a bunch of repeated send_gdb/gdb_expect statements. + Fix line numbers. + +2002-09-10 Keith Seitz <keiths@redhat.com> + + * mi-simplerun.exp (test_controlled_execution): Follow renaming of + mi_run_to to mi_execute_to. + * mi-var-cmd.exp: Likewise. + * mi0-simplerun.exp: Likewise. + * mi0-var-cmd.exp: Likewise. + +2002-09-03 Keith Seitz <keiths@redhat.com> + + * gdb680.exp: New file to test to check for uiout list/tuple + nesting bug. + +2002-03-04 Michael Chastain <mec@shout.net> + + * mi-var-cmd.exp: In test "create local variable func", + accommodate gcc v3 function signature. + * mi0-var-cmd-exp: Ditto. + +2002-02-05 Jim Blandy <jimb@redhat.com> + + * mi-regs.exp: Various cleanups for SPARC-only tests. + (test_breakpoints_creation_and_listing): Format of breakpoint + table has changed. + (sparc_register_tests): Expand floating-point number regexp to + recognize NaN values, too. Replace ineffectual single backslash + before a hyphen with a double backslash. Don't check the exact + numbers of the registers which have changed, since there's no way + to know which registers changed, exactly; just check that the + result is well-formed. + * mi0-regs.exp: (sparc_register_tests): Same as for + sparc_register_tests in mi-regs.exp. + + * mi-var-child.exp ("get children of struct_declarations", "get + children of struct_declarations.s2.u2.u1s2", "get children of + weird"): Tolerate argument types when they appear in function + types. (Dwarf 2 includes prototype info; STABS does not.) + * mi0-var-child.exp: Same. + +2001-12-19 Keith Seitz <keiths@redhat.com> + + * mi-var-display.exp: char* variables have a child. Update all + occurences. + * mi0-var-display.exp: Likewise. + +2001-08-29 Andrew Cagney <cagney@redhat.com> + + * mi-var-cmd.exp, mi0-var-cmd.exp: Variable lpcharacter has one + child. Soften floating point tests. + +2001-08-09 Andrew Cagney <ac131313@redhat.com> + + * mi0-var-block.exp, mi0-stack.exp, mi0-simplerun.exp, + mi0-regs.exp, mi0-watch.exp, mi0-stepi.exp, mi0-until.exp, + mi0-return.exp, mi0-read-memory.exp, mi0-eval.exp, + mi0-disassemble.exp, mi0-console.exp, mi-watch.exp, + mi-var-display.exp, mi-var-cmd.exp, mi-var-child.exp, + mi-until.exp, mi-var-block.exp, mi-stepi.exp, mi-stack.exp, + mi-simplerun.exp, mi-return.exp, mi-regs.exp, mi-read-memory.exp, + mi-disassemble.exp, mi-eval.exp, mi-console.exp: Replace pattern + matching thread=0 with one to also match thread=1. + Fix PR gdb/190. + +2001-08-18 Andrew Cagney <ac131313@redhat.com> + + * mi0-until.exp, mi-until.exp, mi0-stepi.exp, mi-stepi.exp, + mi-simplerun.exp, mi0-simplerun.exp, mi0-return.exp, + mi-return.exp, mi0-console.exp, mi-console.exp: Recognize an + unexpected run-to-main response. Report as a fail. + +2001-06-27 Andrew Cagney <ac131313@redhat.com> + + * mi-disassemble.exp: Update to accept mi1 breakpoint tables. + * mi-basics.exp: Ditto. + * mi-simplerun.exp: Ditto. + * mi-watch.exp: Ditto. Add check for full header. + * mi-break.exp: Ditto. Add check for full header. + +2001-06-26 Andrew Cagney <ac131313@redhat.com> + + * mi-stack.exp: Update. Output for args=... and + locals=... changed to a list. + +2001-06-26 Andrew Cagney <ac131313@redhat.com> + + * mi-stack.exp: Update. Output for stack=..., args=... and + stack-args=... changed to a list. + +2001-06-25 Andrew Cagney <ac131313@redhat.com> + + * mi-console.exp: Update args=... part of stop-reason + patterns. Output changed to a list of arguments. + * mi-disassemble.exp: Ditto. + * mi-simplerun.exp: Ditto. + * mi-return.exp: Ditto. + * mi-read-memory.exp: Ditto. + * mi-eval.exp: Ditto. + * mi-watch.exp: Ditto. + * mi-var-display.exp: Ditto. + * mi-var-cmd.exp: Ditto. + * mi-var-child.exp: Ditto. + * mi-var-block.exp: Ditto. + * mi-until.exp: Ditto. + * mi-stepi.exp: Ditto. + * mi-stack.exp: Ditto. + * mi-regs.exp: Ditto. + +2001-06-25 Andrew Cagney <ac131313@redhat.com> + + * mi-read-memory.exp: Update patterns matching data-read-memory. + Outputs a list. + +2001-06-25 Andrew Cagney <ac131313@redhat.com> + + * mi-regs.exp: Update patterns matching register-values. Outputs a + list. + +2001-06-25 Andrew Cagney <ac131313@redhat.com> + + * mi-regs.exp: Update patters matching register-names. Now + outputs a list. + +2001-06-25 Andrew Cagney <ac131313@redhat.com> + + * mi-regs.exp: Update patterns matching changed-registers. Now + outputs a list. + +2001-06-23 Andrew Cagney <ac131313@redhat.com> + + * ChangeLog-mi: Rename to ChangeLog. + * mi-basics.exp: Remove local emacs variable defining + change-log-default-name. + * mi-break.exp, mi-console.exp, mi-disassemble.exp: Ditto. + * mi-eval.exp, mi-hack-cli.exp, mi-read-memory.exp: Ditto. + * mi-regs.exp, mi-return.exp, mi-simplerun.exp: Ditto. + * mi-stack.exp, mi-stepi.exp, mi-until.exp: Ditto. + * mi-var-block.exp, mi-var-child.exp, mi-var-cmd.exp: Ditto. + * mi-var-display.exp, mi-watch.exp, mi0-basics.exp: Ditto. + * mi0-break.exp, mi0-console.exp, mi0-disassemble.exp: Ditto. + * mi0-eval.exp, mi0-hack-cli.exp, mi0-read-memory.exp: Ditto. + * mi0-regs.exp, mi0-return.exp, mi0-simplerun.exp: Ditto. + * mi0-stack.exp, mi0-stepi.exp, mi0-until.exp: Ditto. + * mi0-var-block.exp, mi0-var-child.exp, mi0-var-cmd.exp: Ditto. + * mi0-var-display.exp, mi0-watch.exp: Ditto. + +2001-06-23 Andrew Cagney <ac131313@redhat.com> + + * mi-disassemble.exp: Update patterns matching data-disassemble + output. Now produces a list of instructions and a list of + source/assembly lines. + +2001-06-18 Andrew Cagney <ac131313@redhat.com> + + * mi-basics.exp, mi-break.exp, mi-console.exp, mi-disassemble.exp, + mi-eval.exp, mi-hack-cli.exp, mi-read-memory.exp, mi-regs.exp, + mi-return.exp, mi-simplerun.exp, mi-stack.exp, mi-stepi.exp, + mi-until.exp, mi-var-block.exp, mi-var-child.exp, mi-var-cmd.exp, + mi-var-display.exp, mi-watch.exp, mi0-basics.exp, mi0-break.exp, + mi0-console.exp, mi0-disassemble.exp, mi0-eval.exp, + mi0-hack-cli.exp, mi0-read-memory.exp, mi0-regs.exp, + mi0-return.exp, mi0-simplerun.exp, mi0-stack.exp, mi0-stepi.exp, + mi0-until.exp, mi0-var-block.exp, mi0-var-child.exp, + mi0-var-cmd.exp, mi0-var-display.exp, mi0-watch.exp: Use MIFLAGS + to explictly select an interpreter. + +2001-06-16 Andrew Cagney <ac131313@redhat.com> + + MI0 was the never enabled MI interface included in GDB 5.0. + * mi0-basics.exp: Copy mi-basics.exp. + * mi0-break.exp: Copy mi-break.exp. + * mi0-console.exp: Copy mi-console.exp. + * mi0-disassemble.exp: Copy mi-disassemble.exp. + * mi0-eval.exp: Copy mi-eval.exp. + * mi0-hack-cli.exp: Copy mi-hack-cli.exp. + * mi0-read-memory.exp: Copy mi-read-memory.exp. + * mi0-regs.exp: Copy mi-regs.exp. + * mi0-return.exp: Copy mi-return.exp. + * mi0-simplerun.exp: Copy mi-simplerun.exp. + * mi0-stack.exp: Copy mi-stack.exp. + * mi0-stepi.exp: Copy mi-stepi.exp. + * mi0-until.exp: Copy mi-until.exp. + * mi0-var-block.exp: Copy mi-var-block.exp. + * mi0-var-child.exp: Copy mi-var-child.exp. + * mi0-var-cmd.exp: Copy mi-var-cmd.exp. + * mi0-var-display.exp: Copy mi-var-display.exp. + * mi0-watch.exp: Copy mi-watch.exp. + +2001-05-11 Fernando Nasser <fnasser@redhat.com> + + * mi-var-child.exp: Adjust for the fact that now (char *) can be + dereferenced. + +2001-03-06 Kevin Buettner <kevinb@redhat.com> + + * mi-basics.exp, mi-break.exp, mi-disassemble.exp, + mi-eval.exp, mi-hack-cli.exp, mi-read-memory.exp, mi-regs.exp, + mi-return.exp, mi-simplerun.exp, mi-stack.exp, mi-stepi.exp, + mi-until.exp, mi-watch.exp: Update/correct copyright notices. + +2001-01-20 Mark Kettenis <kettenis@gnu.org> + + * mi-support.exp (mi_gdb_start): Skip mi tests if -i flag is + recognized (i.e. if GDB was compiled with UI_OUT, but the mi + interpreter wasn't recognized (because it wasn't compiled in). + +Tue Apr 18 15:36:07 2000 Andrew Cagney <cagney@b1.cygnus.com> + + * Makefile.in (clean mostlyclean): Do not delete $(MISCELLANEOUS). + +Tue Mar 14 15:54:57 2000 Andrew Cagney <cagney@b1.cygnus.com> + + * basics.c: Add EMACS local variable pointing change-log at this + file. + * Makefile.in: Ditto + +2000-03-13 James Ingham <jingham@leda.cygnus.com> + + * mi-var-block.exp: The error report from varobj_create changed + since I am now trapping parse_exp_1 errors. Change the tests to + match the new error message. + * mi-var-child.exp: Ditto. + * mi-var-cmd.exp: Ditto. + +2000-03-06 Elena Zannoni <ezannoni@kwikemart.cygnus.com> + + * mi-disassemble.exp: Don't assume numbers for the offset + values. They can be different depending on the architecture. + + * mi-watch.exp (test_watchpoint_triggering): In same cases the + type can be 'hw wathcpoint' not just 'watchpoint'. Adjust for that. + + * basics.c (callee4): Make the function return something, + otherwise the return value is undefined. + +2000-03-06 Elena Zannoni <ezannoni@kwikemart.cygnus.com> + + * mi-basics.exp: Comment out test for a still unimplemented operation. + + * mi-disassemble.exp: Rewrite most of the tests to conform to new + disassemble interface. + +Sat Mar 4 13:55:08 2000 Andrew Cagney <cagney@b1.cygnus.com> + + From Fri 3 Mar 2000 Peter Schauer: + * mi-support.exp (mi_gdb_start): When GDB doesn't recongize -i=mi + option, assume no MI support present. + +2000-02-01 Elena Zannoni <ezannoni@kwikemart.cygnus.com> + + * mi-support.exp (mi_gdb_start): Update to recognize start up + message with 'UI_OUT' instead of 'HEADLESS'. + +2000-01-27 Elena Zannoni <ezannoni@kwikemart.cygnus.com> + + * mi-regs.exp (test_running_the_program): Add global var 'hex'. + + * mi-stack.exp, mi-stepi.exp, mi-until.exp, mi-watch.exp, + mi-var-display.exp, mi-var-cmd.exp, mi-var-child.exp, + mi-var-block.exp: Update all stopped messages. + +2000-01-17 Elena Zannoni <ezannoni@kwikemart.cygnus.com> + + * mi-console.exp, mi-disassemble.exp, mi-eval.exp, + mi-read-memory.exp, mi-regs.exp, mi-return.exp, mi-simplerun.exp: + Update stopped messages, update copyright. + + * mi-disassemble.exp: Update error messages output. + + * mi-support.exp (proc mi_step): Make gdb do a 'step' command, not + a 'next'. Update stopped message. + (proc mi_next): Update stop message. + (proc mi_run_to_main): Update stopped message. + Update copyright. + +2000-01-11 Elena Zannoni <ezannoni@kwikemart.cygnus.com> + + * mi-simplerun.exp: Remove stack frames tests from here, to: + + * mi-stack.exp: New file, tests for stack commands. + + * mi-support.exp (mi_run_to_main, mi_next, mi_step) : Update to + include thread-id in stopped message. + + * mi-regs.exp: Update break-insert output. + + * (mi-console.exp, mi-disassemble.exp, mi-eval.exp, + mi-read-memory.exp, mi-regs.exp, mi-return.exp, mi-simplerun.exp, + mi-stepi.exp, mi-until.exp, mi-var-block.exp, mi-var-child.exp, + mi-var-cmd.exp, mi-var-display.exp, mi-watch.exp): Update stopped + message to include thread-id. + +Wed Dec 29 22:06:05 1999 Andrew Cagney <cagney@b1.cygnus.com> + + * mi-watch.exp, mi-var-display.exp, mi-var-cmd.exp, + mi-var-child.exp, mi-var-block.exp, mi-until.exp, mi-stepi.exp, + mi-simplerun.exp, mi-return.exp, mi-support.exp, mi-eval.exp, + mi-console.exp, mi-disassemble.exp, mi-break.exp: Update to + reflect extended output from -break-insert command. + + * mi-break.exp (test_rbreak_creation_and_listing): XFAIL regexp + tests. -r flag broken by above. + +Sun Dec 19 19:28:13 1999 Andrew Cagney <cagney@b1.cygnus.com> + + * cpp_variable.cc, cpp_variable.h, c_variable.c: Delete. + +Fri Dec 17 20:59:55 1999 Andrew Cagney <cagney@b1.cygnus.com> + + * mi-read-memory.exp: Test of ``-o <offset>'' now works. + +1999-12-16 Elena Zannoni <ezannoni@kwikemart.cygnus.com> + + * mi-var-cmd.exp: Fix 2 tests outputs. + + * mi-var-child.exp: Add many more tests. + + * mi-var-display.exp: Add many more tests. + + * var-cmd.c: Change type of incr_a parameter to char. + +1999-12-15 Elena Zannoni <ezannoni@kwikemart.cygnus.com> + + * mi-var-block.exp: Set up xfails fro known problems. + + * mi-var-display.exp: Set up printing of values of 'e' and 'anone' + as xfails. + + * mi-var-child.exp: Fix typos. + +1999-12-15 Andrew Cagney <cagney@b1.cygnus.com> + + * mi-var-child.exp: Space was missing before ``[10]''. + +Wed Dec 15 19:23:38 1999 Andrew Cagney <cagney@b1.cygnus.com> + + * mi-read-memory.exp: Add test for ``-o <offset>''. Update checks + and match next-row et.al. + +1999-12-14 Elena Zannoni <ezannoni@kwikemart.cygnus.com> + + * mi-var-display.exp : New file. Tests for format and type, with + unions, structs and enums. + + * mi-var-cmd.exp: Add some var-assign tests. + +1999-12-14 Elena Zannoni <ezannoni@kwikemart.cygnus.com> + + * mi-var-cmd.exp, mi-var-block.exp, mi-var-child.exp: New files + some tests for -var* commands. + + * var-cmd.c: New source file for var-* commands tests. + * gdb.mi/Makefile.in (PROGS): Add var-cmd. + +Mon Dec 13 18:06:09 1999 Andrew Cagney <cagney@b1.cygnus.com> + + * mi-break.exp: Fix quoting. Changed "srcfile.c":6 to + "\"srcfile.c\":6". + * mi-simplerun.exp: Fix quoting. + +Sat Dec 11 21:33:37 1999 Andrew Cagney <cagney@b1.cygnus.com> + + * mi-simplerun.exp (exec-finish): Fix return value was zero, + should have been three. + + * mi-disassemble.exp: Reduce number of wild card matches in + * patterns. Remove all numeric constants. + +1999-12-09 Elena Zannoni <ezannoni@kwikemart.cygnus.com> + + * mi-eval.exp: New file. Some initial tests for + -data-evaluate-expression. + +1999-12-09 Fernando Nasser <fnasser@totem.to.cygnus.com> + + * c_variable.c, cpp_variable.cc, cpp_variable.h: New files. Used + for testing "var" operations. + * Makefile.in: Add reference to the above files. + +1999-12-08 Elena Zannoni <ezannoni@kwikemart.cygnus.com> + + * mi-regs.exp: Fix test for format 'N' for + data-list-register-values. + +1999-12-07 Elena Zannoni <ezannoni@kwikemart.cygnus.com> + + * mi-disassemble.exp: Update expected output. Break test of + disassembly in mixed mode into 2 functions. + + * mi-regs.exp: Initial register tests. Works only on sparc right + now. + +1999-12-02 Elena Zannoni <ezannoni@kwikemart.cygnus.com> + + * mi-stepi.exp: New file. Tests exec-step-instruction and + exec-next-instruction. + * mi-until.exp: New file. Tests exec-until. + * until.c: New file. + * mi-return.exp: New file. Tests exec-return. + +Thu Dec 2 09:38:23 1999 Andrew Cagney <cagney@b1.cygnus.com> + + * mi-hack-cli.exp: New test. Check the hacked up access to the + CLI. + +Wed Dec 1 16:47:40 1999 Andrew Cagney <cagney@b1.cygnus.com> + + * mi-basics.exp: Delete calls to mi_delete_breakpoints, + mi_gdb_reinitialize_dir and mi_gdb_load. This test is checking + that these can work. + + * mi-support.exp (mi_step, mi_next, mi_run_to_main): New + procedures. + + * mi-read-memory.exp, mi-read-memory.c: New files. Test + data-read-memory command. + +Tue Nov 30 23:54:16 1999 Andrew Cagney <cagney@b1.cygnus.com> + + * mi-support.exp: Don't start SID until after GDB has been started + and verified. + +Tue Nov 30 22:21:33 1999 Andrew Cagney <cagney@b1.cygnus.com> + + * mi-support.exp (mi_uncatched_gdb_exit): When SID, call sid_exit. + (mi_gdb_start): When SID, call sid_start. + (mi_gdb_start): Add MIFLAGS to spawn-GDB command. Check for + HEADLESS gdb. Return non-zero when GDB fails to start. + (mi_gdb_load): When SID or SIM, download program. + (mi_run_cmd): Don't do download here. Assume target supports the + 00-exec-run command. + (skip_mi_tests, setup_gdbmi, unset_gdbmi): Delete. Merged into + mi_gdb_start. + + * mi-basics.exp, mi-break.exp, mi-console.exp, mi-disassemble.exp, + mi-simplerun.exp, mi-watch.exp: Update. Check status from + mi_gdb_start indicating that GDB started correctly. + +Tue Nov 30 15:22:08 1999 Andrew Cagney <cagney@b1.cygnus.com> + + * mi-support.exp (setup_gdbmi, unset_gdbmi): New + procedures. Setup/unset dejagnu for mi tests. + * mi-basics.exp, mi-console.exp, mi-simplerun.exp, mi-break.exp, + mi-disassemble.exp, mi-watch.exp: Update. + +1999-11-29 Elena Zannoni <ezannoni@kwikemart.cygnus.com> + + * mi-simplerun.exp (test_running_the_program): Remove XFAIL. The + output is fixed now. + (test_program_termination): Update output pattern. + +Tue Nov 30 00:19:10 1999 Andrew Cagney <cagney@b1.cygnus.com> + + * mi-console.c, mi-console.exp: New files. Test console output. + +Mon Nov 29 17:59:13 1999 Andrew Cagney <cagney@b1.cygnus.com> + + * mi-support.exp (mi_run_command): Check for exec-run command + failure due to MI not having an active target. + (mi_run_command): Check for and handle a builtin simulator target. + (mi_run_command): Don't check/handle for ``The program has been + started already'', not a valid MI response. + + * mi-simplerun.exp (test_running_the_program): Update all patterns + to match async output. + (test_running_the_program): Mark ``step to callee4'' as XFAIL. MI + output contains {,reason="end-stepping-range"}+. + + * mi-simplerun.exp: Limit the timeout for ``step to callee4'' to + 30 seconds. + +Mon Nov 29 17:30:00 1999 Andrew Cagney <cagney@b1.cygnus.com> + + * mi-support.exp (skip_mi_tests): Print UNTESTED when MI interface + isn't available. Start/stop instead of assuming GDB is running. + (MIFLAGS): Define. + * mi-simplerun.exp, mi-disassemble.exp, mi-break.exp, + mi-basics.exp, mi-watch.exp: Update. + +1999-11-26 Elena Zannoni <ezannoni@kwikemart.cygnus.com> + + * mi-simplerun.exp: Move break-insert {-t, -r} from here. + * mi-break.exp: To here. New file. + * mi-watch.exp: New file. Tests for watchpoints. + +Wed Nov 24 17:42:07 1999 Andrew Cagney <cagney@b1.cygnus.com> + + * gdb.mi/ChangeLog-mi: MI entries moved to here. + +Wed Nov 24 17:31:04 1999 Andrew Cagney <cagney@b1.cygnus.com> + + * gdb.mi/mi-basics.exp, gdb.mi/mi-disassemble.exp, + gdb.mi/mi-simplerun.exp: Print warning message when test isn't + run. + +1999-11-23 Elena Zannoni <ezannoni@kwikemart.cygnus.com> + + * gdb.mi/mi-simplerun.exp: Update output of break-list to account for + "times" field. + +1999-11-05 Elena Zannoni <ezannoni@kwikemart.cygnus.com> + + * gdb.mi/mi-simplerun.exp: Add tests for temporary breakpoints + and bp based on regular expressions. + * gdb.mi/mi-disassemble.exp: Fix typo. + +1999-11-04 Elena Zannoni <ezannoni@kwikemart.cygnus.com> + + * gdb.mi/mi-disassemble.exp: Update output of execution commands + to reflect new 'reason' field. + * gdb.mi/mi-simplerun.exp: Ditto. + +1999-10-25 Elena Zannoni <ezannoni@kwikemart.cygnus.com> + + * gdb.mi/mi-simplerun.exp: Add more stack-list-frames tests. + + * gdb.mi/mi-disassemble.exp: Update 'run to main' output. + + * gdb.mi/mi-simplerun.exp: Update execution commands + output. Update backtrace output. + +1999-10-18 Elena Zannoni <ezannoni@kwikemart.cygnus.com> + + * gdb.mi/mi-disassemble.exp: Add new tests for the new + disassembly command parameter, number of lines. + +Mon Oct 11 13:57:21 1999 Andrew Cagney <cagney@amy.cygnus.com> + + * lib/mi-support.exp: Break complicated gdb_expect containing + exp_continue into a while within an expect. Don't attempt a start + more than three times. Check return value from gdb_load. + +1999-10-06 Elena Zannoni <ezannoni@kwikemart.cygnus.com> + + * gdb.mi/mi-disassemble.exp: New file. + +Wed Oct 6 12:05:58 1999 Andrew Cagney <cagney@b1.cygnus.com> + + * lib/mi-support.exp (mi_run_cmd): Give up after two restart + attempts. + +1999-09290 Fernando Nasser <fnasser@totem.to.cygnus.com> + + * gdb.mi/mi-basics.exp: Update to current syntax and output formats. + * gdb.mi/mi-simplerun.exp: Ditto. + * lib/mi-support.exp (mi_delete_breakpoints): Ditto. + +1999-06-30 Fernando Nasser <fnasser@totem.to.cygnus.com> + + * gdb.mi/basics.c (main): Fix return code. Add a print "Hello, + World". + * gdb.mi/mi-basics.exp: Fix message texts and numbering. + * gdb.mi/mi-simplerun.exp: Ditto. Also, add new tests and improve + some patterns. + +1999-06-30 Fernando Nasser <fnasser@totem.to.cygnus.com> + + * lib/mi-support.exp (mi_gdb_reinitialize_dir): Remove query as an + acceptable response to the environment-dir command. + +1999-06-30 Fernando Nasser <fnasser@totem.to.cygnus.com> + + * lib/mi-support.exp (mi_delete_breakpoints): Remove references to + gdb-cli. + (mi_run_cmd): Ditto. + +1999-06-25 Fernando Nasser <fnasser@totem.to.cygnus.com> + + * lib/mi-support.exp (skip_mi_tests): Use gdb-version to check for + headless output format. + +1999-06-24 Fernando Nasser <fnasser@totem.to.cygnus.com> + + * gdb.mi/mi-simplerun.exp (test_controlled_execution): Add global + spec for hex. + +1999-06-24 Fernando Nasser <fnasser@totem.to.cygnus.com> + + * lib/mi-support.exp (mi_run_cmd): Fix pattern and add a timeout + clause. + +1999-06-24 Fernando Nasser <fnasser@totem.to.cygnus.com> + + * lib/mi-support.exp: Use mi_gdb_prompt instead of a modified + gdb_prompt. Remove uneeded loading of libgloss. + (mi_gdb_exit): Remove prompt argument. + (mi_uncatched_gdb_exit): Ditto. + (mi_run_cmd): New proc. MI version of gdb_run. + (skip_mi_tests): New proc. Check if gdb is capable of producing + headless formatted output. + * gdb.mi/mi-basics.exp: Use mi_gdb_prompt instead of a modified + gdb_prompt. Eliminate parameter to mi_gdb_exit (as a result of + the above). Test for skip_mi_tests before running. + Note: The above changes are interelated (need each other). + * gdb.mi/mi-simplerun.exp: Same changes as for mi-basics.exe + above. + (test_breakpoint_creation_and_listing): Remove insertion of + breakpoint at callee1 (and renumber tokens). Add tests for + break-list, break-disable and break-info. + (test_running_the_program): Use mi_run_cmd so it can run on remote + targets. + (test_controlled_execution): Fix broken test. + (test_program_termination): Test implemented. + * gdb.mi/basic.c (main): Small change to allow for testing of both + exec-next and exec-step operations. + +1999-06-22 Fernando Nasser <fnasser@totem.to.cygnus.com> + + * lib/mi-support.exp (mi_gdb_test): New proc. MI version of gdb_test. + * gdb.mi/mi-basics.exp: Use the above instead of gdb_test. + * gdb.mi/mi-simplerun.exp: Ditto. + +1999-06-22 Fernando Nasser <fnasser@totem.to.cygnus.com> + + * gdb.mi/mi-simplerun.exp: New file. Tests simple debugging tasks. + * gdb.mi/mi-basics.exp: Remove tests moved to above new file. + * lib/mi-support.exp: New file. Support procedures for mi tests. + +1999-06-08 Fernando Nasser <fnasser@totem.to.cygnus.com> + + * gdb.mi/mi-basics.exp: Skip all tests if the MI interpreter is + not active. + +1999-06-03 Fernando Nasser <fnasser@totem.to.cygnus.com> + + * gdb.mi: New directory. + * configure.in: Configure it. + * configure: Regenerate. + * gdb.mi/{Makefile.in,configure.in,configure}: New files. + * gdb.mi/{mi-basics.exp,basics.c,testcmds}: New files. + + +Local Variables: +mode: indented-text +left-margin: 8 +fill-column: 74 +version-control: never +End: diff --git a/gdb/tui/ChangeLog-1998-2003 b/gdb/tui/ChangeLog-1998-2003 new file mode 100644 index 00000000000..fc5886c1ae1 --- /dev/null +++ b/gdb/tui/ChangeLog-1998-2003 @@ -0,0 +1,1217 @@ +2003-09-27 Andrew Cagney <cagney@redhat.com> + + * tuiRegs.c: Rename REGISTER_RAW_SIZE to + DEPRECATED_REGISTER_RAW_SIZE. + +2003-09-13 Andrew Cagney <cagney@redhat.com> + + * tui.h (struct ui_file): Add opaque declaration. + +2003-08-04 Daniel Jacobowitz <drow@mvista.com> + + * tui-interp.c: Include "cli-out.h". + (tui_resume): Update tui_old_uiout's stream to gdb_stdout. + +2003-07-24 Stephane Carrez <stcarrez@nerim.fr> + + * tui.c (tui_rl_other_window): New function to switch the TUI active + window and give focus to a next window. + (tui_initialize_readline): Bind it to c-x o. + (tui_rl_next_keymap): Activate TUI mode when entering SingleKey mode. + +2003-07-23 Stephane Carrez <stcarrez@nerim.fr> + + * tui.c (tui_enable): Call tuiRefreshAll to make sure the window + is accurate. + +2003-07-23 Stephane Carrez <stcarrez@nerim.fr> + + * tui-interp.c (tui_resume): Enable tui when we expected it. + (tui_suspend): Remember in which TUI mode we are. + (_initialize_tui_interp): Use the tui interpreter even when no + other interpreter was set and define in which TUI mode to start. + +2003-06-28 Daniel Jacobowitz <drow@mvista.com> + + * tui-out.c (tui_ui_out_impl): Add NULL for redirect member. + +2003-06-22 Daniel Jacobowitz <drow@mvista.com> + + * tui-hooks.c: Update include order. + * tui.c: Likewise. + * tuiCommand.c: Likewise. + * tuiData.c: Likewise. + * tuiDataWin.c: Likewise. + * tuiDisassem.c: Likewise. + * tuiGeneralWin.c: Likewise. + * tuiIO.c: Likewise. + * tuiLayout.c: Likewise. + * tuiRegs.c: Likewise. + * tuiSource.c: Likewise. + * tuiSourceWin.c: Likewise. + * tuiStack.c: Likewise. + * tuiWin.c: Likewise. + +2003-06-12 Andreas Schwab <schwab@suse.de> + + * tuiSource.c (tuiVerticalSourceScroll): Use get_frame_pc. + * tuiSourceWin.c (tuiHorizontalSourceScroll): Likewise. + * tuiStack.c (tui_get_function_from_frame): Likewise. + (tuiShowFrameInfo): Likewise. + * tuiWin.c (_makeVisibleWithNewHeight): Likewise. + * tui-hooks.c (tui_selected_frame_level_changed_hook): Likewise. + * tuiDisassem.c (tuiVerticalDisassemScroll): Likewise. + Include "disasm.h". + +2003-05-08 Andrew Cagney <cagney@redhat.com> + + * tuiRegs.c: Use MAX_REGISTER_SIZE instead of + MAX_REGISTER_RAW_SIZE. + +2003-05-03 Andrew Cagney <cagney@redhat.com> + + * tuiDisassem.c (tui_disassemble): Call gdb_print_insn, instead of + TARGET_PRINT_INSN. Do not initialize a disassemble_info object. + +2003-04-30 Andrew Cagney <cagney@redhat.com> + + * tuiDisassem.c (tui_disassemble): Use + "deprecated_tm_print_insn_info" instead of TARGET_PRINT_INSN_INFO, + add comment. + +2003-03-14 Andrew Cagney <cagney@redhat.com> + + * tuiRegs.c (_tuiGetRegisterRawValue): Use frame_read_register, + instead of get_saved_register. + +2003-03-13 Stephane Carrez <stcarrez@nerim.fr> + + * tui-out.c (tui_out_data): Fix typedef. + +2003-03-08 Andrew Cagney <cagney@redhat.com> + + * tui-out.c: Update copyright. + (tui_out_data): Define typedef. Use instead of ui_out_data. + +2003-02-14 Andrew Cagney <ac131313@redhat.com> + + * tui.c (tui_enable, tui_disable): Don't modify tui_version. + (tui_is_window_visible, tui_get_command_dimension): Test + tui_active instead of tui_version. + * tuiData.h (tui_version): Delete declaration. + * tui-hooks.c (tui_init_hook, tui_event_loop): Delete function, + moved to "tui-interp.c". + (tui_exit, tui_command_loop): Ditto. + (_initialize_tui): Don't initialize init_ui_hook. Initialize + target_new_objfile_hook. + * tui-interp.c: New file. + +2003-02-12 Andrew Cagney <ac131313@redhat.com> + + * tuiIO.c (tui_prep_terminal): Add one notused parameter. + * tui.c (tui_rl_switch_mode): Add two notused parameters. + (tui_rl_change_windows, tui_rl_next_keymap): Ditto. + (tui_rl_delete_other_windows): Ditto. + (tui_rl_change_windows, tui_rl_delete_other_windows): Update + calls. + +2002-12-08 Elena Zannoni <ezannoni@redhat.com> + + Import of readline 4.3. + Fix PR gdb/675 + * tuiWin.c: Include readline/readline.h. + (tui_update_gdb_sizes): Use accessor function rl_get_screen_size. + (tuiResizeAll): Ditto. + +2002-12-06 Elena Zannoni <ezannoni@redhat.com> + + * tuiStack.c (tuiShowFrameInfo): Fix typo. + +2002-11-29 Andrew Cagney <ac131313@redhat.com> + + * tui/tui-hooks.c: Update to use deprecated_selected_frame. + * tui/tui.c, tui/tuiDisassem.c, tui/tuiRegs.c: Ditto. + * tui/tuiSource.c, tui/tuiSourceWin.c, tui/tuiWin.c: Ditto. + +2002-11-28 Andrew Cagney <ac131313@redhat.com> + + * tuiStack.c (tuiShowFrameInfo): Use find_frame_sal instead of + find_pc_line. + +2002-11-23 Andrew Cagney <ac131313@redhat.com> + + * tuiStack.c (tuiShowFrameInfo): Use get_frame_type instead of + deprecated_frame_in_dummy. Fix coding style. + +2002-11-21 Stephane Carrez <stcarrez@nerim.fr> + + * tui-hooks.c (tui_init_hook): Don't enable the TUI if a specific + interpreter is installed. + +2002-11-18 Andrew Cagney <ac131313@redhat.com> + + * tuiStack.c (tuiShowFrameInfo): Use get_frame_type instead of + signal_handler_caller. + +2002-11-10 Andrew Cagney <ac131313@redhat.com> + + * tuiStack.c (tuiShowFrameInfo): Replace frame_in_dummy with + deprecated_frame_in_dummy. + +2002-10-26 Stephane Carrez <stcarrez@nerim.fr> + + * tuiIO.c (tui_prep_terminal): Save the prompt registered in readline. + (tui_redisplay_readline): Use the last saved prompt. + (tui_rl_saved_prompt): New. + +2002-10-25 Stephane Carrez <stcarrez@nerim.fr> + + Fix PR gdb/787 + * tuiWin.c (ACS_LRCORNER, ACS_LLCORNER, ACS_ULCORNER, ACS_URCORNER, + ACS_HLINE, ACS_VLINE): Define if they don't exist. + +2002-10-25 Stephane Carrez <stcarrez@nerim.fr> + + Fix PR gdb/478 + * tuiIO.c (tui_initialize_io): Use setvbuf since this is portable. + +2002-10-02 Elena Zannoni <ezannoni@redhat.com> + + * tui-hooks.c (selected_frame_level_changed_hook): Use the one + exported from frame.h. + +2002-09-29 Elena Zannoni <ezannoni@redhat.com> + + * tui.c (tui_show_source): Don't access current_source_symtab, use + accessor function instead. Include source.h and symtab.h + * tuiDisassem.c (tuiShowDisassemAndUpdateSource, + tuiVerticalDisassemScroll): Use accessor functions for current + source line and symtab. Include source.h. + * tuiLayout.c (_extractDisplayStartAddr): Use accessor functions + for current source line and symtab. Include source.h. + * tuiWin.c (_makeVisibleWithNewHeight): Ditto. + * tuiSourceWin.c (tuiUpdateSourceWindowAsIs, + tuiHorizontalSourceScroll): Ditto. + * tuiSource.c (tuiVerticalSourceScroll): Ditto. + +2002-09-13 Stephane Carrez <stcarrez@nerim.fr> + + * tui.c (tui_rl_switch_mode): Remove unecessary TUI switch printfs. + (tui_initialize_readline): Allow to use space to leave SingleKey + to enter one gdb command. + (tui_enable): Restore the TUI keymap when we are back to TUI. + (tui_disable): Restore normal keymap when leaving TUI. + * tuiIO.c (tui_redisplay_readline): Restore the SingleKey mode + when the buffer becomes empty and we are in tui_one_command_mode. + +2002-09-13 Stephane Carrez <stcarrez@nerim.fr> + + * tuiIO.c (tui_setup_io): rl_already_prompted must be cleared + when leaving TUI mode so that gdb prompt is displayed. + +2002-09-13 Stephane Carrez <stcarrez@nerim.fr> + + * tuiStack.c (tui_make_status_line): Make sure the local buffer + is large enough to hold the complete line. + +2002-09-10 Stephane Carrez <stcarrez@nerim.fr> + + * tui-hooks.c (tui_event_loop): New function. + (tui_command_loop): New function to override gdb loop and make sure + uiout is set according to TUI mode. + (tui_command_loop): Install the specific TUI command hook. + * tuiIO.c (tui_initialize_io): Initialize tui_old_uiout. + (tui_uiout, tui_old_uiout): Make public. + * tuiIO.h (tui_uiout, tui_old_uiout): Declare. + +2002-09-04 Stephane Carrez <stcarrez@nerim.fr> + + * tuiIO.c (tui_putc): New function to print one character. + (printable_part): New function from readline/complete.c. + (PUTX): New macro, likewise. + (print_filename): New function, likewise. + (get_y_or_n): New function, likewise and adapted for TUI. + (tui_rl_display_match_list): New function from readline/complete.c + and writes on TUI command window. + (tui_setup_io): Install or remove the readline hook + rl_completion_display_matches_hook so that completion is written + directly in TUI command window instead of in the TUI pipe. + (tui_initialize_io): Use #ifdef TUI_USE_PIPE_FOR_READLINE for the + TUI redirection pipe. + (tui_getc): Likewise for call to tui_readline_output. + (tui_readline_output): Likewise for function. + * tui.c (tui_rl_startup_hook): Always take care of gdb prompt. + +2002-09-02 Stephane Carrez <stcarrez@nerim.fr> + + * tuiWin.c (_newHeightOk): Fix compilation warnings. + +2002-09-01 Stephane Carrez <stcarrez@nerim.fr> + + * tuiWin.c (_tuiAllWindowsInfo): Don't crash if the window + is not displayed. + +2002-09-01 Stephane Carrez <stcarrez@nerim.fr> + + * tui-out.c (tui_out_new): Clear start_of_line. + * tuiSource.c (tuiVerticalSourceScroll): Use print_source_lines + to update the current source line. + +2002-09-01 Stephane Carrez <stcarrez@nerim.fr> + + * tui-hooks.c (tui_detach_hook): New hook to know when a process dies. + (tui_install_hooks): Install it. + (tui_remove_hooks): Remove it. + +2002-09-01 Stephane Carrez <stcarrez@nerim.fr> + + * tuiData.h (FILE_PREFIX): Don't define. + (blankStr, locationStr, breakStr): Don't declare. + (breakLocationStr, nullStr, historyLimit, setHistoryLimitTo): Likewise. + (displayableWinContentOf, displayableWinContentAt): Likewise. + (winElementHeight, winByName, freeAllWindows): Likewise. + + * tuiData.c (blankStr, locationStr, breakStr): Remove. + (breakLocationStr, nullStr, historyLimit, setHistoryLimitTo): Remove. + (displayableWinContentOf, displayableWinContentAt): Remove. + (winElementHeight, winByName, freeAllWindows): Remove. + +2002-09-01 Stephane Carrez <stcarrez@nerim.fr> + + * tuiStack.c (tui_make_status_line): New function to create the + status line. + (tuiShowLocatorContent): Use it instead of displayableWinContentAt. + * tuiData.h (PROC_PREFIX): Use "In:" to reduce length of prefix. + (PC_PREFIX): Use upper case. + (SINGLE_KEY, MIN_LINE_WIDTH, MIN_PROC_WIDTH): Define. + (MAX_TARGET_WIDTH, MAX_PID_WIDTH): Define. + +2002-08-31 Stephane Carrez <stcarrez@nerim.fr> + + * tuiSourceWin.h (tuiUpdateAllExecInfos): Don't declare. + (tuiClearAllExecInfosContent): Likewise. + (tuiEraseAllExecInfosContent): Ditto. + (tuiUpdateSourceWindowsFromLocator): Ditto. + * tuiSourceWin.c (tuiUpdateAllExecInfos): Remove. + * tui.h (tui_vCheckDataValues): Don't declare. + (tui_vStartNewLines, tui_vAllSetHasBreakAt): Likewise. + (tui_vUpdateLocatorFilename, tui_vUpdateSourceWindowsWithAddr): Ditto. + (tui_vShowFrameInfo): Ditto. + +2002-08-31 Stephane Carrez <stcarrez@nerim.fr> + + * tui.c (tui_commands): Table of single key commands. + (tui_rl_command_key): New function to execute gdb command. + (tui_rl_command_mode): New function to temporarily leave SingleKey. + (tui_rl_next_keymap): New function to enter/leave the SingleKey mode. + (tui_rl_startup_hook): New function to avoid prompt display by + readline functions. + (tui_set_key_mode): New function to set the key mode and install + the readline keymap. + (tui_initialize_readline): Create TUI SingleKey readline map. + (tui_enable): Install rl_startup_hook. + (tui_disable): Remove it. + * tui.h (enum tui_key_mode): Declare. + (tui_set_key_mode, tui_current_key_mode): Declare. + * tuiIO.c (tui_redisplay_readline): Don't display the prompt in + SingleKey mode. + * tuiIO.h (tui_redisplay_readline): Declare. + +2002-08-31 Stephane Carrez <stcarrez@nerim.fr> + + * tuiSourceWin.c (tuiSetIsExecPointAt): Redraw the previous and + current line. + +2002-08-31 Stephane Carrez <stcarrez@nerim.fr> + + * tuiSource.c (tuiSetSourceContent): Remove old breakpoint code. + (_hasBreak): Remove. + (tuiShowSource): Fix comment indentation. + (tuiSourceIsDisplayed): Likewise. + (tuiVerticalSourceScroll): Likewise. + +2002-08-30 Stephane Carrez <stcarrez@nerim.fr> + + * tuiSourceWin.h (tui_update_all_breakpoint_info): Declare. + (tui_update_breakpoint_info): Declare. + (tuiSetHasBreakAt, tuiAllSetHasBreakAt): Remove. + + * tuiSourceWin.c (tuiUpdateSourceWindowAsIs): Update breakpoint + information using tui_update_breakpoint_info. + (tui_update_all_breakpoint_info): New function to refresh all + execution windows. + (tui_update_breakpoint_info): New function to recompute the status + of exec info window from breakpoints. + (tuiSetHasBreakAt, tuiAllSetHasBreakAt): Remove. + (tuiSetExecInfoContent): Use the exec info flags computed by + tui_update_breakpoint_info to display a short status about breakpoints. + + * tuiData.h (TuiExecInfoContent): New for exec info string. + (TuiWhichElement): Use it. + (TUI_BP_ENABLED, TUI_BP_DISABLED, TUI_BP_HIT): New defines. + (TUI_BP_CONDITIONAL, TUI_BP_HARDWARE): New defines. + (TUI_BP_HIT_POS, TUI_BP_BREAK_POS, TUI_EXEC_POS): Likewise. + (TUI_EXECINFO_SIZE): Likewise. + * tuiData.c (initContentElement): Clear exec info string. + + * tui-hooks.c (get_breakpoint): Remove. + (tui_event_create_breakpoint): Call tui_update_all_breakpoint_info. + (tui_event_delete_breakpoint): Likewise. + (tui_event_modify_breakpoint): Likewise. + +2002-08-29 Stephane Carrez <stcarrez@nerim.fr> + + * tui.c (tuiGetLowDisassemblyAddress): Moved from here. + * tuiDisassem.c (tuiGetLowDisassemblyAddress): To here, and use + tui_find_disassembly_address to find the starting address of + disassemble window. + +2002-08-28 Stephane Carrez <stcarrez@nerim.fr> + + * tuiDisassem.c (tui_disassemble): New function to disassemble + several lines in a buffer. + (tui_find_disassembly_address): New function to search backward + or forward a disassembly line. + (tuiSetDisassemContent): Use tui_disassemble to obtain the real + content and format it in the window. + (tuiShowDisassemAndUpdateSource): Remove unused locals. + (tuiVerticalDisassemScroll): Use tui_find_disassembly_address to + obtain the address to disassemble for the scrolling. + * tuiDisassem.h (tuiGetBeginAsmAddress): Update. + * tuiSourceWin.c (tuiUpdateSourceWindowAsIs): Don't pass symtab. + +2002-08-28 Stephane Carrez <stcarrez@nerim.fr> + + * tuiIO.c (CTRL_CHAR): Redefine and use readline 4.3 definition. + +2002-08-26 Stephane Carrez <stcarrez@nerim.fr> + + Fix PR gdb/393: + * tui.c (tui_disable): Update gdb's knowledge of its terminal + using target_terminal_save_ours. + (tui_enable): Likewise. + +2002-08-25 Stephane Carrez <stcarrez@nerim.fr> + + * tui.c (tui_rl_switch_mode): Renames tui_switch_mode. + (tui_rl_change_windows): Renames tui_change_windows. + (tui_rl_delete_other_windows): Renames tui_delete_other_windows. + (tui_initialize_readline): Update. + +2002-08-25 Stephane Carrez <stcarrez@nerim.fr> + + * tuiDisassem.c (tuiSetDisassemContent): Use breakpoint_here_p. + (_hasBreak): Remove. + +2002-08-25 Stephane Carrez <stcarrez@nerim.fr> + + * tuiDisassem.c (tuiGetBeginAsmAddress): Use lookup_minimal_symbol + to find symbol address. + +2002-08-25 Stephane Carrez <stcarrez@nerim.fr> + + * tuiSourceWin.c (tui_display_main): Rename from tuiDisplayMainFunction + and use tuiGetBeginAsmAddress. + * tuiSourceWin.h (tui_display_main): Declare. + * tui.h (tuiDisplayMainFunction): Remove. + * tui-hooks.c (tui_new_objfile_hook): Update. + +2002-08-25 Stephane Carrez <stcarrez@nerim.fr> + + * tuiSource.h (m_tuiShowSourceAsIs): Remove macro. + (tuiShowSourceAsIs): Don't declare. + +2002-08-25 Stephane Carrez <stcarrez@nerim.fr> + + * tui-hooks.c (tui_selected_frame_level_changed_hook): Always update + the frame position. + +2002-08-25 Stephane Carrez <stcarrez@nerim.fr> + + * tuiStack.c (tuiSetLocatorContent): Remove. + (tuiUpdateLocatorInfoFromFrame): Remove. + (tui_set_locator_info): Allocate the content buffer if necessary. + (tui_set_locator_filename): Call tui_set_locator_info directly. + (tuiShowFrameInfo): Likewise and use find_pc_line instead of + find_pc_symtab. + +2002-08-25 Stephane Carrez <stcarrez@nerim.fr> + + * tuiSourceWin.c (tuiDisplayMainFunction): Update to use + tuiUpdateLocatorFilename. + * tuiStack.c (tuiSetLocatorInfo): Make it static. + (tuiSetLocatorContent): Likewise. + (tuiUpdateLocatorInfoFromFrame): Likewise. + (tuiSwitchFilename): Remove. + (tui_set_locator_filename): New function + (tui_set_locator_info): Rename from tuiSetLocatorInfo to GNU-ify; + use tui_set_locator_filename to record the filename. + (tuiUpdateLocatorFilename): Likewise. + (tuiUpdateLocatorInfoFromFrame): Update. + (tuiSetLocatorContent): Likewise. + * tuiStack.h (tuiClearLocatorContent): Don't declare. + (tuiSetLocatorInfo, tuiSetLocatorContent): Likewise. + (tuiUpdateLocatorInfoFromFrame, tuiSwitchFilename): Likewise. + +2002-08-25 Stephane Carrez <stcarrez@nerim.fr> + + * tuiSourceWin.c (tuiSetHasBreakAt): Use filename for breakpoint + comparison; cleanup. + * tuiSource.c (tuiSetSourceContent): Set window title and filename. + * tuiGeneralWin.c (boxWin): Print optional title on top of window. + * tuiData.h (TuiSourceInfo): Add filename member. + (TuiGenWinInfo): Add title member. + * tuiData.c (initGenericPart): Clear title. + (freeWindow): Free title and filename; remove unused locals. + (initWinInfo): Clear filename. + (tuiDelWindow): Free it; remove unused locals. + +2002-08-25 Stephane Carrez <stcarrez@nerim.fr> + + * tuiStack.h (tuiGetLocatorFilename): Don't declare. + (tuiUpdateLocatorDisplay): Likewise. + * tuiStack.c (tuiGetLocatorFilename): Remove. + (tuiShowFrameInfo): Use tuiSetLocatorContent and tuiShowLocatorContent + instead of tuiUpdateLocatorDisplay. + (tuiUpdateLocatorDisplay): Remove. + +2002-08-25 Stephane Carrez <stcarrez@nerim.fr> + + * tuiStack.h (tuiClearLocatorDisplay): Don't declare. + * tuiStack.c (tuiClearLocatorDisplay): Remove. + (tuiShowLocatorContent): Use wclrtoeol to clear end of status line. + (tuiUpdateLocatorDisplay): Don't call tuiClearLocatorDisplay. + +2002-08-25 Stephane Carrez <stcarrez@nerim.fr> + + * tuiStack.c (tui_get_function_from_frame): Rename from + _getFuncNameFromFrame; use print_address_symbolic to get symbolic + name of address. + (tuiUpdateLocatorInfoFromFrame): Update. + +2002-08-25 Stephane Carrez <stcarrez@nerim.fr> + + * tuiRegs.c (tuiDisplayRegistersFrom): Remove unused locals. + (_tuiRegisterFormat, _tuiSetSpecialRegsContent): Likewise. + (_tuiSetGeneralAndSpecialRegsContent): Likewise. + (_tuiSetFloatRegsContent): Likewise. + (_tuiRegisterName): Return a const char*. + * tuiData.h (_TuiDataElement): Use const char* for name. + +2002-08-25 Stephane Carrez <stcarrez@nerim.fr> + + * tuiSourceWin.h (tuiEraseAllSourceContent): Don't declare. + (tuiShowAllExecInfosContent): Likewise. + * tuiSourceWin.c (tuiEraseAllSourceContent): Remove. + (tuiShowAllExecInfosContent): Remove. + (tuiAllocSourceBuffer): Remove unused locals. + +2002-08-25 Stephane Carrez <stcarrez@nerim.fr> + + * tuiStack.c (tui_update_command): Rename _tuiUpdateLocation_command + to follow other gdb's command names; use execute_command; cleanup. + (_initialize_tuiStack): Update. + +2002-08-25 Stephane Carrez <stcarrez@nerim.fr> + + * tuiWin.h (tui_update_gdb_sizes): Declare. + +2002-08-24 Stephane Carrez <stcarrez@nerim.fr> + + * tui.c (strcat_to_buf): Use const char* for source item. + (tui_enable): Update the windows if there is a selected frame. + * tui.h (strcat_to_buf): Update prototype. + (strcat_to_buf_with_fmt): Remove. + +2002-08-24 Stephane Carrez <stcarrez@nerim.fr> + + * tuiWin.c (tui_update_gdb_sizes): New function to tell gdb what + is the size of command window. + (tuiResizeAll): Call it instead of init_page_info. + * tui.c (tui_enable): Call it to resize to TUI command window. + (tui_disable): Likewise for plain screen. + +2002-08-24 Stephane Carrez <stcarrez@nerim.fr> + + * tui.c (tui_enable): Use tuiSetLayout instead of showLayout and + use tuiShowFrameInfo instead of tuiSetLocatorContent. + * tuiLayout.h (showLayout): Remove. + * tuiLayout.c (_showSourceOrDisassemAndCommand): Remove unused locals. + (_showSourceDisassemCommand): Likewise. + (showLayout): Make it static. + (lastLayout): Remove. + +2002-08-24 Stephane Carrez <stcarrez@nerim.fr> + + * tuiSourceWin.c (tui_show_source_line): New function. + (tuiShowSourceContent): Call it and avoid clearing the window before + redrawing it. + (tuiClearAllSourceWinsContent): Remove. + * tuiSourceWin.h (tuiClearAllSourceWinsContent): Don't declare. + * tuiWin.h (tuiClearWinFocus, tuiClearWinFocusFrom): Don't declare. + * tuiWin.c (tuiClearWinFocus, tuiClearWinFocusFrom): Remove. + (tuiRefreshAll): Don't clear the window. + (_makeVisibleWithNewHeight): Don't clear locator line. + (tuiResizeAll): Remove unused locals. + (_tuiAdjustWinHeights): Likewise. + (_makeInvisibleAndSetNewHeight): Likewise. + (_newHeightOk): Likewise. + * tuiLayout.c (showLayout): Don't clear source windows. + (tuiSetLayout): Don't clear the window. + (_initAndMakeWin): Likewise for status line. + * tuiGeneralWin.c (makeVisible): Don't clear or refresh the window. + (makeWindow): Likewise. + (tuiClearWin): Remove. + * tuiGeneralWin.h (tuiClearWin): Don't declare. + +2002-08-24 Stephane Carrez <stcarrez@nerim.fr> + + * tuiSourceWin.c (tuiSrcWinIsDisplayed): Remove. + (tuiAsmWinIsDisplayed): Remove. + (tuiShowAllSourceWinsContent): Remove. + (tuiUpdateOnEnd): Remove. + * tuiGeneralWin.c (scrollWinForward): Remove. + (scrollWinBackward): Remove. + (_winResize): Don't declare. + * tui.h (tuiUpdateOnEnd): Don't declare. + (vcatch_errors, va_catch_errors): Likewise. + * tuiSourceWin.h (tuiUpdateOnEnd): Likewise. + (tuiShowAllSourceWinsContent): Likewise. + * tuiGeneralWin.h (scrollWinForward): Likewise. + (scrollWinBackward): Likewise. + +2002-08-24 Stephane Carrez <stcarrez@nerim.fr> + + * tuiRegs.c (_tuiRegisterFormat): Use gdbarch_print_registers_info. + +2002-08-18 Daniel Jacobowitz <drow@mvista.com> + + Fix PR gdb/655 + * tui.c: Disable <termio.h> include. + +2002-03-15 Andrew Cagney <ac131313@redhat.com> + + * tui-out.c (XMALLOC): Delete macro. Update copyright. + +2002-03-01 Andrew Cagney <ac131313@redhat.com> + + * tui-hooks.c: Add FIXME to explain true/false problem. Update + copyright. + * tui.c, tuiCommand.c, tuiData.c, tuiDataWin.c: Ditto. + * tuiDisassem.c, tuiGeneralWin.c, tuiIO.c, tuiLayout.c: Ditto. + * tuiRegs.c, tuiSource.c, tuiSourceWin.c, tuiStack.c: Ditto. + * tuiWin.c: Ditto. + + 2002-02-08 Daniel Jacobowitz <drow@mvista.com> + * tui-hooks.c: Include <curses.h> before "bfd.h". + * tui.c: Likewise. + * tuiCommand.c: Likewise. + * tuiData.c: Likewise. + * tuiDataWin.c: Likewise. + * tuiDisassem.c: Likewise. + * tuiGeneralWin.c: Likewise. + * tuiIO.c: Likewise. + * tuiLayout.c: Likewise. + * tuiRegs.c: Likewise. + * tuiSource.c: Likewise. + * tuiSourceWin.c: Likewise. + * tuiStack.c: Likewise. + * tuiWin.c: Likewise. + +2002-02-01 Andrew Cagney <ac131313@redhat.com> + + * tuiWin.c (_initialize_tuiWin): Replace NO_FUNCTION with NULL. + +2001-10-20 Andrew Cagney <ac131313@redhat.com> + + * tuiDisassem.c: Include "value.h". + * tuiSourceWin.c: Ditto. + +2001-09-28 Tom Tromey <tromey@redhat.com> + + * tuiLayout.h (tui_set_layout): Don't declare. + * tui.h (tui_vAddWinToLayout): Don't declare. + (tui_vSetLayoutTo): Likewise. + (tui_set_layout): Declare. + +2001-08-02 Eli Zaretskii <eliz@is.elta.co.il> + + * tuiSourceWin.c: Use disp_del instead of del. + + * tuiSource.c: Use disp_del instead of del. + + * tuiDisassem.c: Use disp_del instead of del. + +2001-07-31 Stephane Carrez <Stephane.Carrez@worldnet.fr> + + * tui.c (tui_enable): Remove call to terminal_save_ours(). + (tui_disable): Likewise. + +2001-07-28 Stephane Carrez <Stephane.Carrez@worldnet.fr> + + * tuiWin.c (_initialize_tuiWin): Use specific tui prefix for + set/show configuration variables. + (show_tui_cmd): New function. + (set_tui_cmd): New function. + +2001-07-24 Stephane Carrez <Stephane.Carrez@worldnet.fr> + + * tui-hooks.c: New file, gdb hooks for tui. + * tui-out.c: New file, image copied from cli-out.c. + (tui_field_int): Identify "line" fields and keep track of them. + (tui_field_string): Likewise for "file". + (tui_out_new): Use flags = 0 to avoid printing the sources. + +2001-07-23 Stephane Carrez <Stephane.Carrez@worldnet.fr> + + * tuiIO.c (tui_cont_sig): Update cursor position on the screen to + leave it in the command window. + (tui_redisplay_readline): Save cursor position to restore the + cursor after we go back from background. + * tuiData.h (TuiCommandInfo): Add start_line member. + +2001-07-23 Stephane Carrez <Stephane.Carrez@worldnet.fr> + + * tuiStack.c (tuiUpdateLocatorFilename): Use const char*. + * tuiStack.h (tuiUpdateLocatorFilename): Update prototype. + * tuiWin.c (_initialize_tuiWin): Don't cast table of enum in calls + to add_set_enum_cmd. + * tui.c (tui_show_source): New function. + (tuiGetLowDisassemblyAddress): Use CORE_ADDR for newLow. + (tui_switch_mode): Prep or deprep readline terminal; + make sure the \n we return does not redo the last command. + * tui.h (tui_show_source): Declare. + (tui_out_new, tui_install_hooks, tui_remove_hooks): Likewise. + (tui_active, tui_initialize_io, tui_initialize_readline): Likewise. + +2001-07-22 Stephane Carrez <Stephane.Carrez@worldnet.fr> + + * tuiIO.c (tui_initialize_io): Install tui_cont_sig signal handler + if SIGCONT is defined. + (tui_cont_sig): New function when SIGCONT is defined. + (tui_setup_io): Save tty setting to restore by SIGCONT. + +2001-07-22 Stephane Carrez <Stephane.Carrez@worldnet.fr> + + * tui.h (tui_show_assembly): Declare. + (tui_is_window_visible): Declare. + * tui.c (tui_show_assembly): New function. + (tui_is_window_visible): New function. + (tui_get_command_dimension): New function. + +2001-07-21 Stephane Carrez <Stephane.Carrez@worldnet.fr> + + * tuiWin.c (tuiRefreshAll): Use clearok to force a refresh. + +2001-07-21 Stephane Carrez <Stephane.Carrez@worldnet.fr> + + * tui-file.c (tui_file_fputs): Use tui_puts. + +2001-07-21 Stephane Carrez <Stephane.Carrez@worldnet.fr> + + * tuiStack.c (tuiSetLocatorInfo): Cleanup. + * tuiStack.h (tuiGetLocatorFilename): Declare. + * tuiRegs.h (tuiFirstRegElementNoInLine): Declare. + * tuiData.h (addToSourceWindows): Declare. + +2001-07-21 Stephane Carrez <Stephane.Carrez@worldnet.fr> + + * tui.c (tui_change_windows): New function. + (tui_delete_other_windows): New function. + (tui_initialize_readline): Bind them to C-X 1 and C-X 2. + (tui_enable): Enable the keypad; call tui_update_variables. + (strcat_to_buf_with_fmt): Remove. + +2001-07-21 Stephane Carrez <Stephane.Carrez@worldnet.fr> + + * tui.h: Remove old declarations, add the new ones. + * tui.c (tui_switch_mode): New function. + (tui_initialize_readline): New function. + (tui_enable): New function. + (tui_disable): New function. + (tuiGetLowDisassemblyAddress): Use CORE_ADDR, cleanup. + (tui_vSelectSourceSymtab): Remove. + (tuiInitWindows): Remove. + (_initialize_tui): Remove. + (_tuiReset): Keep but put arround #if 0. + +2001-07-21 Stephane Carrez <Stephane.Carrez@worldnet.fr> + + * tuiIO.h: Remove old declarations and add the new ones. + * tuiIO.c: New management for curses and gdb terminal interactions. + (tui_tputs): Remove. + (tuiTermSetup, tuiTermUnsetup): Remove, must use normal curses ops. + (tuiBufferGetc, tui_vStartNewLines, _updateCommandInfo): Remove. + (tui_owns_terminal): Remove. + (tui_redisplay_readline): New function. + (tui_puts): New function. + (tui_prep_terminal): New function. + (tui_deprep_terminal): New function. + (tui_getc): Rename of tuiGetc, simplify and fix. + (tui_setup_io): New function. + (tui_initialize_io): New function. + +2001-07-21 Stephane Carrez <Stephane.Carrez@worldnet.fr> + + * tuiRegs.c (tuiDisplayRegistersFrom): Call touchwin. + (_tuiRegisterFormat): Reduce size of format result. + +2001-07-21 Stephane Carrez <Stephane.Carrez@worldnet.fr> + + * tuiGeneralWin.c (boxWin): Use the tui configuration variables. + * tuiWin.h: Declare the new variables. + * tuiWin.c (_initialize_tuiWin): Create TUI configuration variables. + (tui_update_variables): New function. + (translate): New function. + (tui_border_kind_enums, tui_border_mode_enums): New tables. + (tui_border_mode_translate): New table. + (tui_border_kind_translate_*): New tables. + (tui_active_border_mode): New variables. + (tui_border_*): New variables. + +2001-07-21 Stephane Carrez <Stephane.Carrez@worldnet.fr> + + * tuiWin.c (_parseScrollingArgs): Fix uninitialized variable. + (_makeVisibleWithNewHeight): Use TuiLineOrAddress type. + + * tuiStack.c (tuiShowFrameInfo): Use TuiLineOrAddress type. + (tui_vUpdateLocatorFilename): Remove. + * tuiStack.h: Update prototypes. + + * tuiSourceWin.c (tuiAddrIsDisplayed): New function. + (tuiLineIsDisplayed): Split for address and line. + (tuiUpdateSourceWindow): Use TuiLineOrAddress type. + (tuiUpdateSourceWindowAsIs): Likewise. + (tuiUpdateSourceWindowsWithAddr): Likewise. + (tuiUpdateSourceWindowsWithLine): Likewise. + (tuiHorizontalSourceScroll): Likewise. + (tuiSetIsExecPointAt): Likewise. + (tuiUpdateOnEnd): Likewise. + * tuiSourceWin.h: Update prototypes. + + * tuiSource.c (tuiVerticalSourceScroll): Use TuiLineOrAddress type. + (tuiShowSource): Likewise. + (tuiVerticalSourceScroll): Likewise. + * tuiSource.h (tuiShowSource): Update prototype. + + * tuiDisassem.c (tuiSetDisassemContent): Use CORE_ADDR for address. + (tuiShowDisassem): Use TuiLineOrAddress type. + (tuiShowDisassemAndUpdateSource): Likewise. + (tuiVerticalDisassemScroll): Likewise. + (tuiShowDisassemAsIs): Remove. + * tuiDisassem.h (tuiSetDisassemContent): Update prototype. + + * tuiData.c (initWinInfo): Use CORE_ADDR for address. + (clearWinDetail): Likewise. + (displayableWinContentOf): Fix address conversion. + (tuiNextWin): Fix crash when the window is not yet created. + (partialWinByName): Likewise. + +2001-07-21 Stephane Carrez <Stephane.Carrez@worldnet.fr> + + * tuiSourceWin.h: Remove unused declarations. + * tuiSourceWin.c (tui_vUpdateSourceWindowsWithAddr): Remove. + (tui_vUpdateSourceWindowsWithLine): Remove. + (tui_vAllSetHasBreakAt): Remove. + + * tuiLayout.h (tui_set_layout): Declare. + (tui_vSetLayoutTo): Remove. + (tui_vAddWinToLayout): Remove. + * tuiLayout.c (_tuiLayout_command): Call tui_enable() to force TUI. + (_tuiToggleLayout_command): Remove. + (_tuiToggleSplitLayout_command): Remove. + (_tuiLayout_command): Remove. + (tui_vSetLayoutTo): Remove. + (tui_vAddWinToLayout): Remove. + + * tuiDataWin.h (tui_vCheckDataValues): Remove. + * tuiDataWin.c (tui_vCheckDataValues): Remove. + +2001-07-20 Stephane Carrez <Stephane.Carrez@worldnet.fr> + + * tuiWin.c (tuiStrDup): Remove, replaced by xstrdup. + (_parseScrollingArgs): Use xstrdup. + (_tuiScrollForward_command): Call tui_enable() to force TUI mode. + (_tuiScrollBackward_command): Likewise. + (_tuiScrollLeft_command): Likewise. + (_tuiScrollRight_command): Likewise. + (_tuiSetFocus): Likewise. + (_tuiSetFocus_command): Likewise. + (_tuiRefreshAll_command): Likewise. + (_tuiSetTabWidth_command): Likewise. + (_tuiSetWinHeight): Likewise. + (_tuiSetWinHeight_command): Likewise. + (_tuiXDBsetWinHeight): Likewise. + (_tui_vSetFocus): Remove. + (_tui_vSetWinHeight): Remove. + (_tui_vXDBsetWinHeight): Remove. + +2001-07-21 Stephane Carrez <Stephane.Carrez@worldnet.fr> + + * tuiCommand.h: Remove unused declarations. + * tuiCommand.c (tuiDispatchCtrlChar): Fix escape sequences. + (tuiIncrCommandCharCountBy): Remove. + (tuiDecrCommandCharCountBy): Remove. + (tuiSetCommandCharCountTo): Remove. + (tuiClearCommandCharCount): Remove. + +2001-07-20 Stephane Carrez <Stephane.Carrez@worldnet.fr> + + * tuiWin.c (_initialize_tuiWin): Always define the tui commands; + create the tui class help. + * tuiLayout.c (_initialize_tuiLayout): Always define the tui commands. + * tuiRegs.c (_initialize_tuiRegs): Likewise. + * tuiStack.c (_initialize_tuiStack): Likewise. + +2001-07-19 Stephane Carrez <Stephane.Carrez@worldnet.fr> + + * tuiDisassem.c (tuiVerticalDisassemScroll): Use CORE_ADDR. + (tuiVerticalDisassemScroll): Likewise. + (tuiShowDisassemAndUpdateSource): Check for null symtab to + prevent a crash. + +2001-07-18 Stephane Carrez <Stephane.Carrez@worldnet.fr> + + * tuiIO.c (_tuiHandleResizeDuringIO): Call tuiRefreshAll. + (tuiRead, tui_vread): Remove. + + * tui.c (va_catch_errors, tuiDo, tuiDoAndReturnToTop): Remove. + (vcatch_errors, _tui_vDo): Remove. + * tui.h (tuiDo, tuiDoAndReturnToTop): Remove. + + * tuiLayout.c (tuiSetLayout): Remove vcatch_errors. + (tui_set_layout): Rename of _tuiSetLayoutTo, public. + (_tuiToggleLayout_command): Merge with _tui_vToggleLayout_command. + (_tuiToggleSplitLayout_command): Merge with _tui_vToggleSplitLayout_command. + (_tuiLayout_command): Call tui_set_layout. + + * tuiRegs.c (_tuiScrollRegsBackward_command): Call tui_scroll. + (_tuiScrollRegsForward_command): Likewise. + (_tuiShowFloat_command): Call _tui_vShowRegisters_commandSupport. + (_tuiShowGeneral_command): Likewise. + (_tuiShowSpecial_command): Likewise. + (_tuiToggleFloatRegs_command): Call tuiToggleFloatRegs. + * tuiWin.c (tui_scroll): Rename of tui_vScroll, update parameters. + (_tuiScrollForward_command): Call tui_scroll. + (_tuiScrollBackward_command): Likewise. + (_tuiScrollLeft_command): Likewise. + (_tuiScrollRight_command): Likewise. + (_tuiSetFocus_command): Call _tuiSetFocus. + (_tuiRefreshAll_command): Call tuiRefreshAll. + (_tuiSetWinHeight_command): Call _tuiSetWinHeight. + (_tuiXDBsetWinHeight_command): Call _tuiXDBsetWinHeight. + * tuiWin.h (tui_scroll): Rename of tui_vScroll, update parameters. + +2001-07-18 Stephane Carrez <Stephane.Carrez@worldnet.fr> + + * tuiData.h (TuiLocatorElement): Use CORE_ADDR for address member. + (TuiLineOrAddress): Likewise. + * tuiDisassem.c (tuiGetBeginAsmAddress): Use CORE_ADDR to specify + an address. + (tuiSetDisassemContent): Likewise. + (tuiShowDisassem, tuiShowDisassemAndUpdateSource): Likewise. + * tuiLayout.c (_extractDisplayStartAddr): Likewise. + (tuiSetLayout): Likewise. + * tuiSourceWin.c (tuiDisplayMainFunction): Likewise. + (tuiUpdateSourceWindowsWithAddr): Likewise. + (tuiUpdateSourceWindowsWithLine): Likewise. + (tuiSetHasBreakAt): Likewise. + * tuiStack.c (tuiSetLocatorInfo): Likewise. + (tuiSwitchFilename): Likewise. + (tuiUpdateLocatorInfoFromFrame): Likewise. + (tuiSetLocatorContent): Likewise. + (tuiShowFrameInfo): Likewise. + * tuiDisassem.h: Update prototypes to use CORE_ADDR. + * tuiSourceWin.h: Likewise. + * tuiStack.h: Likewise. + +2001-07-17 Stephane Carrez <Stephane.Carrez@worldnet.fr> + + * tuiWin.c: Add missing includes. + (_makeVisibleWithNewHeight): Fix call to find_line_pc. + * tuiLayout.c: Add missing includes. + (_initAndMakeWin): Don't put curses in echo mode. + (_extractDisplayStartAddr): Fix calls to find_line_pc. + (_tuiLayout_command): Missing ',' in warning call. + * tuiSourceWin.c (tuiUpdateSourceWindowsWithLine): Fix calls to + find_line_pc. + (tuiSetHasBreakAt): Check for null source file. + +2001-07-17 Stephane Carrez <Stephane.Carrez@worldnet.fr> + + * tuiWin.c (_tuiSetFocus): Replace subsetCompare with subset_compare. + * tuiLayout.c (_tuiSetLayoutTo): Likewise. + * tui.c (_tui_vToggle_command): Likewise. + +2001-07-17 Elena Zannoni <ezannoni@redhat.com> + + * tui-file.c: Add include of tuiIO.h, for tuiPuts_unfiltered. + +2001-07-16 Stephane Carrez <Stephane.Carrez@worldnet.fr> + + * tuiRegs.c (tuiDisplayRegistersFrom): Set scrollok to FALSE in + each register window. + (tuiCheckRegisterValues): Use REGISTER_RAW_SIZE to obtain the size + of the register to check. + (_tuiRegValueHasChanged): Likewise. + (_tuiRegisterName): Use REGISTER_NAME. + (tui_restore_gdbout): New function. + (_tuiRegisterFormat): Use do_registers_info with gdb_stdout redirected + to a string. + (START_SPECIAL_REGS): Define. + (_tuiGetRegisterRawValue): Use get_saved_register. + (_tuiDisplayRegister): Fix clearing of register window. + +2001-07-17 Stephane Carrez <Stephane.Carrez@worldnet.fr> + + * tui-file.h (fputs_unfiltered_hook): Remove. + * tui-file.c (tui_file_flush): Remove fputs_unfiltered_hook. + (tui_file_fputs): Likewise; simplify + +2001-07-16 Stephane Carrez <Stephane.Carrez@worldnet.fr> + + * tuiStack.c: Add missing includes. + (tuiShowFrameInfo): Don't crash when there is no symbol table + associated with the pc. + * tuiSource.c (_hasBreak): Check for null source file. + * tuiWin.c (tuiRefreshAll): Check for null winList[type]. + (_tuiSetFocus): Check for null dataWin. + * tuiGeneralWin.c (refreshAll): Check for null list[type]. + +2001-07-16 Stephane Carrez <Stephane.Carrez@worldnet.fr> + + * tuiDisassem.c (tuiSetDisassemContent): Use tm_print_insn_info + to disassemble in the curses window. + +2001-07-16 Stephane Carrez <Stephane.Carrez@worldnet.fr> + + * tui.h: Cleanup to avoid inclusion of curses includes. + (TuiGenWinInfo, TuiGenWinInfoPtr): Move from here. + * tuiData.h: To here; include curses includes here. + (setTermHeightTo): Rename of setTermHeight to follow reality. + (setTermWidthTo): Likewise with setTermWidth. + +2001-07-14 Stephane Carrez <Stephane.Carrez@worldnet.fr> + + * tuiWin.c, tui.c, tuiCommand.c: Use ansi prototype. + tuiIO.c, tuiData.c: Likewise. + tuiDataWin.c, tuiDisassem.c: Likewise. + tuiGeneralWin.c, tuiLayout.c: Likewise. + tuiRegs.c, tuiSource.c: Likewise. + tuiSouceWin.c, tuiStack.c: Likewise. + +2001-07-14 Stephane Carrez <Stephane.Carrez@worldnet.fr> + + * tuiWin.c, tuiWin.h, tui.c, tui.h, tuiCommand.c: Add FSF copyright. + tuiCommand.h, tuiIO.c, tuiIO.h, tuiData.h, tuiData.c: Likewise. + tuiDataWin.c, tuiDataWin.h, tuiDisassem.c, tuiDisassem.h: Likewise. + tuiGeneralWin.c, tuiGeneralWin.h, tuiLayout.c, tuiLayout.h: Likewise. + tuiRegs.c, tuiRegs.h, tuiSource.c, tuiSource.h: Likewise. + tuiSouceWin.c, tuiSourceWin.h, tuiStack.c, tuiStack.h: Likewise. + +2001-03-08 Andrew Cagney <ac131313@redhat.com> + + * tuiRegs.c: Use NUM_REGS, not ARCH_NUM_REGS. + +2001-03-06 Kevin Buettner <kevinb@redhat.com> + + * tui-file.h: Update/correct copyright notice. + +Wed Feb 7 19:54:27 2001 Andrew Cagney <cagney@redhat.com> + + * tui-file.c: Add __FILE__ and __LINE__ parameter to calls to + internal_error. + +2000-12-14 Kevin Buettner <kevinb@redhat.com> + + * tui-file.c, tui.c, tuiData.c, tuiLayout.c: Replace occurrences + of free() with xfree(). + +2000-06-22 Kevin Buettner <kevinb@redhat.com> + + * tuiSourceWin.h: Eliminate use of PARAMS from this file. + +2000-06-20 Kevin Buettner <kevinb@redhat.com> + + * tuiLayout.c: Eliminate use of PARAMS from this file. + +2000-06-17 Kevin Buettner <kevinb@redhat.com> + + * tuiIO.c: Eliminate use of PARAMS from this file. + +Thu May 25 14:46:20 2000 Andrew Cagney <cagney@b1.cygnus.com> + + * tui-file.c: Include "tui.h", "tuiData.h", "tuiIO.h" and + "tuiCommand.h". + (tui_file_fputs): Pass ``file'' and not ``stream'' to + tui_file_adjust_strbuf. + +Thu May 25 16:58:01 2000 Andrew Cagney <cagney@b1.cygnus.com> + + * tui.h: Include <ncurses.h> when available. + * tui.c, tuiGeneralWin.c: Do not include <curses.h>. + +Mon May 15 17:16:10 2000 Andrew Cagney <cagney@b1.cygnus.com> + + * Makefile.in: Delete. + +Tue Apr 18 15:32:15 2000 Andrew Cagney <cagney@b1.cygnus.com> + + * Makefile.in (distclean, maintainer-clean, realclean, + mostlyclean): New targets. + +Tue Feb 1 00:17:12 2000 Andrew Cagney <cagney@b1.cygnus.com> + + * tui-file.c, tui-file.h, tuiDisassem.c, tuiIO.c, tuiIO.h, + tuiRegs.c: Update to reflect rename of gdb-file / GDB_FILE to + ui-file / ``struct ui_file''. + +Mon Jan 31 18:12:43 2000 Andrew Cagney <cagney@b1.cygnus.com> + + * tui-file.c (enum streamtype, struct tui_stream, tui_file_new, + tui_file_delete, tui_fileopen, tui_sfileopen, tui_file_isatty, + tui_file_rewind, tui_file_put, tui_file_fputs, + tui_file_get_strbuf, tui_file_adjust_strbuf, tui_file_flush, + fputs_unfiltered_hook): Move to here from ../utils.c + + * tui-file.h, tui-file.c: New files. + +Mon Nov 8 17:47:37 1999 Andrew Cagney <cagney@b1.cygnus.com> + + * tuiRegs.c (_tuiRegisterFormat), tuiDisassem.c + (tuiSetDisassemContent): Replace gdb_file_init_astring with + tui_sfileopen. Replace gdb_file_get_strbuf with + tui_file_get_strbuf. + +Mon Nov 8 16:54:51 1999 Andrew Cagney <cagney@b1.cygnus.com> + + * tuiRegs.c (_tuiRegisterFormat), tuiDisassem.c + (tuiSetDisassemContent): Repace gdb_file_deallocate with + gdb_file_delete. Replace gdb_file_init_astring with tui_sfileopen. + +Fri Sep 17 19:34:38 1999 Andrew Cagney <cagney@b1.cygnus.com> + + * tuiSource.c: Include "source.h". + (open_source_file, find_source_lines): Delete declarations. + +1999-01-26 Jason Molenda (jsm@bugshack.cygnus.com) + + * tui.h: Include stdarg.h instead of varargs.h if we're on an ISO Cish + system. + +Thu Dec 31 12:08:32 1998 David Taylor <taylor@texas.cygnus.com> + + The following changes were made by Jim Blandy <jimb@cygnus.com>, + Edith Epstein <eepstein@cygnus.com>, Elena Zannoni + <ezannoni@cygnus.com> Stan Shebs <shebs@cygnus.com>, and David + Taylor <taylor@cygnus.com>, as part of the project to merge in + changes originally made by HP; HP did not create ChangeLog + entries. + + * Makefile.in: New file; we're merging HP's changes into GDB, and + we've moved the TUI files into a subdirectory, so we need a new + Makefile. + + * tui.c: + #include <term.h>, if we have it, to get declarations for + the termcap functions on Solaris. + (tgoto): Add external K&R declaration for this; Solaris doesn't + bother to actually declare it in their header files. + (_tuiReset): Ignore the #definition of TIOCGETC if USG is defined; + we'd rather use the USG mechanisms than the Berkeley mechanisms + (TIOCGETC is one of the Berkeley terminal control ioctls). + Apologies if this causes trouble later; this should all be handled + by autoconf... + (strcat_to_buf, strcat_to_buf_with_fmt): New functions, moved here + from ../utils.h. + (tuiFree): replace safe_free with free. + (strcat_to_buf): new function, copied from utils.c. + (tuiInit): Add ignored `argv0' argument, to match the type that + init_ui_hook expects; updated declaration. Call the + initialize_tui_files function constructed above. Initialize + flush_hook to NULL. + (tuiInitWindows): Call tuiSetLocatorContent, to get the first + element of the locator window's content allocated. This seems + wrong, because it must have been initialized somehow in HP's + sources, and we should do it the same way now. But we do get + further before it segfaults. [Postscript: HP didn't bother to + initialize it; they compile + (va_catch_errors, vcatch_errors): Functions moved here from + ../utils.c in HP's sources. They're not used anywhere else. + (xdb_style): Delete this variable, and remove all references to + it. It's always true. + (tuiInit, _tui_vDo): References removed. + + * tui.h: Add prototypes. + Don't #include "gendefs.h"; it's only used in the TUI. + Integrate its contents into this file: + #include <ansidecl.h> here. + (Opaque, OpaqueFuncPtr): Typedefs moved to here. + + * tuiCommand.c: #include "defs.h", so we get the appropriate + definition of GDB_FILE. + + * tuiData.c + (freeWindow): replace safe_free with free. + (tui_version): don't define it here; it's defined in main.c now. + + * tuiDisassem.c + (tuiSetDisassemContent): Call strcat_address_numeric instead of + strcat_address. Simplify the control structure. Use predefined + GDB function to print asm inst address. Use GDB_FILE to collect + output into buffers. + + * tuiIO.c + (tgoto): Add external K&R declaration for this here too. + (tuiGetc, tuiTermSetup, tuiTermUnsetup): Same. + (tuiPuts_unfiltered): change FILE to GDB_FILE. + (tui_tputs): fix prototype for 3rd argument. + + * tuiIO.h (tuiPuts_unfiltered): change declaration. + + * tuiLayout.c + (_tuiSetLayoutTo): for displaying registers, hook up the HP code + that decides which registers to display (i.e. single precision + float, double precision float, general, special). Previously, + only handled TUI_GENERAL_REGS. Now that the code is hooked up, + compiling with -z poses a problem. When the first layout command + is 'layout regs', dataWin->detail is a NULL pointer, and gdb + core dumps. + + * tuiLayout.c (_tuiSetLayoutTo): replace safe_free with free. + + * tuiRegs.c #include "defs.h" earlier, to avoid problems in + <stdarg.h>. No idea exactly what's conflicting with what, but the + errors went away... + (_tuiRegisterFormat): Change so that function creates a GDB_FILE + object, calls pa_do_strcat_registers_info, copies the register + info into a buffer, and deallocates the GDB_FILE object. Remove + some code that is not executed. Also, call to + pa_do_strcat_registers_info has an additional parameter, + precision. This code requires some new per-target functions that + we don't want to merge. Dyke it out, with #ifdef + TUI_EXTENDED_FORMATTERS. + (_tuiSetSpecialRegsContent): this function was ifdefed out. + Hooked this up. + (_tuiSetGeneralAndSpecialRegsContent): this function was ifdefed + out. Hooked it up. + (IS_64BIT): Just define this to be zero; we're not merging in the + 64-bit support. + (tuiShowRegisters): Comment out all references to the "special" + regs; we don't have a distinction between the "special" and + "non-special" regs in most of our machine descriptions. This code + is PA-specific in other ways as well, and needs to be redesigned + to be portable to other processors. + + * tuiWin.c: #include <string.h>, to get a declaration for + strchr. + + * tui.c, tuiCommand.c, tuiData.c, tuiDataWin.c, tuiDisassem.c, + tuiGeneralWin.c, tuiIO.c, tuiLayout.c, tuiRegs.c, tuiSource.c, + tuiSourceWin.c, tuiStack.c, tuiWin.c: New files (from HP). Changed + bool to int throughout. Re-indented, GNU style. + + * tui.h, tuiCommand.h, tuiData.h, tuiDataWin.h, tuiDisassem.h, + tuiGeneralWin.h, tuiIO.h, tuiLayout.h, tuiRegs.h, tuiSource.h, + tuiSourceWin.h, tuiStack.h, tuiWin.h: new files (from HP). + Changed bool to int throughout. diff --git a/gdb/tui/tui-command.c b/gdb/tui/tui-command.c new file mode 100644 index 00000000000..4b1c0fd8e0d --- /dev/null +++ b/gdb/tui/tui-command.c @@ -0,0 +1,135 @@ +/* Specific command window processing. + + Copyright 1998, 1999, 2000, 2001, 2002, 2003, 2004 Free Software + Foundation, Inc. + + Contributed by Hewlett-Packard Company. + + This file is part of GDB. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. */ + +#include "defs.h" +#include <ctype.h> +#include "tui/tui.h" +#include "tui/tui-data.h" +#include "tui/tui-win.h" +#include "tui/tui-io.h" + +#ifdef HAVE_NCURSES_H +#include <ncurses.h> +#else +#ifdef HAVE_CURSES_H +#include <curses.h> +#endif +#endif + + +/***************************************** +** STATIC LOCAL FUNCTIONS FORWARD DECLS ** +******************************************/ + + + +/***************************************** +** PUBLIC FUNCTIONS ** +******************************************/ + +/* Dispatch the correct tui function based upon the control character. */ +unsigned int +tui_dispatch_ctrl_char (unsigned int ch) +{ + TuiWinInfoPtr winInfo = tuiWinWithFocus (); + WINDOW *w = cmdWin->generic.handle; + + /* + ** If the command window has the logical focus, or no-one does + ** assume it is the command window; in this case, pass the + ** character on through and do nothing here. + */ + if (winInfo == (TuiWinInfoPtr) NULL || winInfo == cmdWin) + return ch; + else + { + unsigned int c = 0, chCopy = ch; + register int i; + char *term; + + /* If this is an xterm, page next/prev keys aren't returned + ** by keypad as a single char, so we must handle them here. + ** Seems like a bug in the curses library? + */ + term = (char *) getenv ("TERM"); + for (i = 0; (term && term[i]); i++) + term[i] = toupper (term[i]); + if ((strcmp (term, "XTERM") == 0) && key_is_start_sequence (ch)) + { + unsigned int pageCh = 0, tmpChar; + + tmpChar = 0; + while (!key_is_end_sequence (tmpChar)) + { + tmpChar = (int) wgetch (w); + if (tmpChar == ERR) + { + return ch; + } + if (!tmpChar) + break; + if (tmpChar == 53) + pageCh = KEY_PPAGE; + else if (tmpChar == 54) + pageCh = KEY_NPAGE; + else + { + return 0; + } + } + chCopy = pageCh; + } + + switch (chCopy) + { + case KEY_NPAGE: + tuiScrollForward (winInfo, 0); + break; + case KEY_PPAGE: + tuiScrollBackward (winInfo, 0); + break; + case KEY_DOWN: + case KEY_SF: + tuiScrollForward (winInfo, 1); + break; + case KEY_UP: + case KEY_SR: + tuiScrollBackward (winInfo, 1); + break; + case KEY_RIGHT: + tuiScrollLeft (winInfo, 1); + break; + case KEY_LEFT: + tuiScrollRight (winInfo, 1); + break; + case '\f': + tuiRefreshAll (); + break; + default: + c = chCopy; + break; + } + return c; + } +} diff --git a/gdb/tui/tui-command.h b/gdb/tui/tui-command.h new file mode 100644 index 00000000000..9653bf07ee5 --- /dev/null +++ b/gdb/tui/tui-command.h @@ -0,0 +1,30 @@ +/* Specific command window processing. + + Copyright 1998, 1999, 2000, 2001, 2004 Free Software Foundation, + Inc. + + Contributed by Hewlett-Packard Company. + + This file is part of GDB. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. */ + +#ifndef TUI_COMMAND_H +#define TUI_COMMAND_H + +extern unsigned int tui_dispatch_ctrl_char (unsigned int); + +#endif diff --git a/gdb/tui/tui-data.c b/gdb/tui/tui-data.c new file mode 100644 index 00000000000..c6f4fb5dafc --- /dev/null +++ b/gdb/tui/tui-data.c @@ -0,0 +1,1055 @@ +/* TUI data manipulation routines. + + Copyright 1998, 1999, 2000, 2001, 2002, 2003 Free Software Foundation, + Inc. + + Contributed by Hewlett-Packard Company. + + This file is part of GDB. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. */ + +#include "defs.h" +#include "symtab.h" +#include "tui/tui.h" +#include "tui/tui-data.h" +#include "tui/tui-wingeneral.h" + +#ifdef HAVE_NCURSES_H +#include <ncurses.h> +#else +#ifdef HAVE_CURSES_H +#include <curses.h> +#endif +#endif + +/**************************** +** GLOBAL DECLARATIONS +****************************/ +TuiWinInfoPtr winList[MAX_MAJOR_WINDOWS]; + +/*************************** +** Private data +****************************/ +static TuiLayoutType _currentLayout = UNDEFINED_LAYOUT; +static int _termHeight, _termWidth; +static TuiGenWinInfo _locator; +static TuiGenWinInfo _execInfo[2]; +static TuiWinInfoPtr _srcWinList[2]; +static TuiList _sourceWindows = +{(OpaqueList) _srcWinList, 0}; +static int _defaultTabLen = DEFAULT_TAB_LEN; +static TuiWinInfoPtr _winWithFocus = (TuiWinInfoPtr) NULL; +static TuiLayoutDef _layoutDef = +{SRC_WIN, /* displayMode */ + FALSE, /* split */ + TUI_UNDEFINED_REGS, /* regsDisplayType */ + TUI_SFLOAT_REGS}; /* floatRegsDisplayType */ +static int _winResized = FALSE; + + +/********************************* +** Static function forward decls +**********************************/ +static void freeContent (TuiWinContent, int, TuiWinType); +static void freeContentElements (TuiWinContent, int, TuiWinType); + + + +/********************************* +** PUBLIC FUNCTIONS +**********************************/ + +/****************************************** +** ACCESSORS & MUTATORS FOR PRIVATE DATA +******************************************/ + +/* + ** tuiWinResized(). + ** Answer a whether the terminal window has been resized or not + */ +int +tuiWinResized (void) +{ + return _winResized; +} /* tuiWinResized */ + + +/* + ** tuiSetWinResized(). + ** Set a whether the terminal window has been resized or not + */ +void +tuiSetWinResizedTo (int resized) +{ + _winResized = resized; + + return; +} /* tuiSetWinResizedTo */ + + +/* + ** tuiLayoutDef(). + ** Answer a pointer to the current layout definition + */ +TuiLayoutDefPtr +tuiLayoutDef (void) +{ + return &_layoutDef; +} /* tuiLayoutDef */ + + +/* + ** tuiWinWithFocus(). + ** Answer the window with the logical focus + */ +TuiWinInfoPtr +tuiWinWithFocus (void) +{ + return _winWithFocus; +} /* tuiWinWithFocus */ + + +/* + ** tuiSetWinWithFocus(). + ** Set the window that has the logical focus + */ +void +tuiSetWinWithFocus (TuiWinInfoPtr winInfo) +{ + _winWithFocus = winInfo; + + return; +} /* tuiSetWinWithFocus */ + + +/* + ** tuiDefaultTabLen(). + ** Answer the length in chars, of tabs + */ +int +tuiDefaultTabLen (void) +{ + return _defaultTabLen; +} /* tuiDefaultTabLen */ + + +/* + ** tuiSetDefaultTabLen(). + ** Set the length in chars, of tabs + */ +void +tuiSetDefaultTabLen (int len) +{ + _defaultTabLen = len; + + return; +} /* tuiSetDefaultTabLen */ + + +/* + ** currentSourceWin() + ** Accessor for the current source window. Usually there is only + ** one source window (either source or disassembly), but both can + ** be displayed at the same time. + */ +TuiListPtr +sourceWindows (void) +{ + return &_sourceWindows; +} /* currentSourceWindows */ + + +/* + ** clearSourceWindows() + ** Clear the list of source windows. Usually there is only one + ** source window (either source or disassembly), but both can be + ** displayed at the same time. + */ +void +clearSourceWindows (void) +{ + _sourceWindows.list[0] = (Opaque) NULL; + _sourceWindows.list[1] = (Opaque) NULL; + _sourceWindows.count = 0; + + return; +} /* currentSourceWindows */ + + +/* + ** clearSourceWindowsDetail() + ** Clear the pertinant detail in the source windows. + */ +void +clearSourceWindowsDetail (void) +{ + int i; + + for (i = 0; i < (sourceWindows ())->count; i++) + clearWinDetail ((TuiWinInfoPtr) (sourceWindows ())->list[i]); + + return; +} /* currentSourceWindows */ + + +/* + ** addSourceWindowToList(). + ** Add a window to the list of source windows. Usually there is + ** only one source window (either source or disassembly), but + ** both can be displayed at the same time. + */ +void +addToSourceWindows (TuiWinInfoPtr winInfo) +{ + if (_sourceWindows.count < 2) + _sourceWindows.list[_sourceWindows.count++] = (Opaque) winInfo; + + return; +} /* addToSourceWindows */ + + +/* + ** clearWinDetail() + ** Clear the pertinant detail in the windows. + */ +void +clearWinDetail (TuiWinInfoPtr winInfo) +{ + if (m_winPtrNotNull (winInfo)) + { + switch (winInfo->generic.type) + { + case SRC_WIN: + case DISASSEM_WIN: + winInfo->detail.sourceInfo.startLineOrAddr.addr = 0; + winInfo->detail.sourceInfo.horizontalOffset = 0; + break; + case CMD_WIN: + winInfo->detail.commandInfo.curLine = + winInfo->detail.commandInfo.curch = 0; + break; + case DATA_WIN: + winInfo->detail.dataDisplayInfo.dataContent = + (TuiWinContent) NULL; + winInfo->detail.dataDisplayInfo.dataContentCount = 0; + winInfo->detail.dataDisplayInfo.regsContent = + (TuiWinContent) NULL; + winInfo->detail.dataDisplayInfo.regsContentCount = 0; + winInfo->detail.dataDisplayInfo.regsDisplayType = + TUI_UNDEFINED_REGS; + winInfo->detail.dataDisplayInfo.regsColumnCount = 1; + winInfo->detail.dataDisplayInfo.displayRegs = FALSE; + break; + default: + break; + } + } + + return; +} /* clearWinDetail */ + + +/* + ** sourceExecInfoPtr(). + ** Accessor for the source execution info ptr. + */ +TuiGenWinInfoPtr +sourceExecInfoWinPtr (void) +{ + return &_execInfo[0]; +} /* sourceExecInfoWinPtr */ + + +/* + ** disassemExecInfoPtr(). + ** Accessor for the disassem execution info ptr. + */ +TuiGenWinInfoPtr +disassemExecInfoWinPtr (void) +{ + return &_execInfo[1]; +} /* disassemExecInfoWinPtr */ + + +/* + ** locatorWinInfoPtr(). + ** Accessor for the locator win info. Answers a pointer to the + ** static locator win info struct. + */ +TuiGenWinInfoPtr +locatorWinInfoPtr (void) +{ + return &_locator; +} /* locatorWinInfoPtr */ + + +/* + ** termHeight(). + ** Accessor for the termHeight + */ +int +termHeight (void) +{ + return _termHeight; +} /* termHeight */ + + +/* + ** setTermHeightTo(). + ** Mutator for the term height + */ +void +setTermHeightTo (int h) +{ + _termHeight = h; + + return; +} /* setTermHeightTo */ + + +/* + ** termWidth(). + ** Accessor for the termWidth + */ +int +termWidth (void) +{ + return _termWidth; +} /* termWidth */ + + +/* + ** setTermWidth(). + ** Mutator for the termWidth + */ +void +setTermWidthTo (int w) +{ + _termWidth = w; + + return; +} /* setTermWidthTo */ + + +/* + ** currentLayout(). + ** Accessor for the current layout + */ +TuiLayoutType +currentLayout (void) +{ + return _currentLayout; +} /* currentLayout */ + + +/* + ** setCurrentLayoutTo(). + ** Mutator for the current layout + */ +void +setCurrentLayoutTo (TuiLayoutType newLayout) +{ + _currentLayout = newLayout; + + return; +} /* setCurrentLayoutTo */ + + +/* + ** setGenWinOrigin(). + ** Set the origin of the window + */ +void +setGenWinOrigin (TuiGenWinInfoPtr winInfo, int x, int y) +{ + winInfo->origin.x = x; + winInfo->origin.y = y; + + return; +} /* setGenWinOrigin */ + + +/***************************** +** OTHER PUBLIC FUNCTIONS +*****************************/ + + +/* + ** tuiNextWin(). + ** Answer the next window in the list, cycling back to the top + ** if necessary + */ +TuiWinInfoPtr +tuiNextWin (TuiWinInfoPtr curWin) +{ + TuiWinType type = curWin->generic.type; + TuiWinInfoPtr nextWin = (TuiWinInfoPtr) NULL; + + if (curWin->generic.type == CMD_WIN) + type = SRC_WIN; + else + type = curWin->generic.type + 1; + while (type != curWin->generic.type && m_winPtrIsNull (nextWin)) + { + if (winList[type] && winList[type]->generic.isVisible) + nextWin = winList[type]; + else + { + if (type == CMD_WIN) + type = SRC_WIN; + else + type++; + } + } + + return nextWin; +} /* tuiNextWin */ + + +/* + ** tuiPrevWin(). + ** Answer the prev window in the list, cycling back to the bottom + ** if necessary + */ +TuiWinInfoPtr +tuiPrevWin (TuiWinInfoPtr curWin) +{ + TuiWinType type = curWin->generic.type; + TuiWinInfoPtr prev = (TuiWinInfoPtr) NULL; + + if (curWin->generic.type == SRC_WIN) + type = CMD_WIN; + else + type = curWin->generic.type - 1; + while (type != curWin->generic.type && m_winPtrIsNull (prev)) + { + if (winList[type]->generic.isVisible) + prev = winList[type]; + else + { + if (type == SRC_WIN) + type = CMD_WIN; + else + type--; + } + } + + return prev; +} + + +/* + ** partialWinByName(). + ** Answer the window represented by name + */ +TuiWinInfoPtr +partialWinByName (char *name) +{ + TuiWinInfoPtr winInfo = (TuiWinInfoPtr) NULL; + + if (name != (char *) NULL) + { + int i = 0; + + while (i < MAX_MAJOR_WINDOWS && m_winPtrIsNull (winInfo)) + { + if (winList[i] != 0) + { + char *curName = winName (&winList[i]->generic); + if (strlen (name) <= strlen (curName) && + strncmp (name, curName, strlen (name)) == 0) + winInfo = winList[i]; + } + i++; + } + } + + return winInfo; +} /* partialWinByName */ + + +/* + ** winName(). + ** Answer the name of the window + */ +char * +winName (TuiGenWinInfoPtr winInfo) +{ + char *name = (char *) NULL; + + switch (winInfo->type) + { + case SRC_WIN: + name = SRC_NAME; + break; + case CMD_WIN: + name = CMD_NAME; + break; + case DISASSEM_WIN: + name = DISASSEM_NAME; + break; + case DATA_WIN: + name = DATA_NAME; + break; + default: + name = ""; + break; + } + + return name; +} /* winName */ + + +/* + ** initializeStaticData + */ +void +initializeStaticData (void) +{ + initGenericPart (sourceExecInfoWinPtr ()); + initGenericPart (disassemExecInfoWinPtr ()); + initGenericPart (locatorWinInfoPtr ()); + + return; +} /* initializeStaticData */ + + +/* + ** allocGenericWinInfo(). + */ +TuiGenWinInfoPtr +allocGenericWinInfo (void) +{ + TuiGenWinInfoPtr win; + + if ((win = (TuiGenWinInfoPtr) xmalloc ( + sizeof (TuiGenWinInfoPtr))) != (TuiGenWinInfoPtr) NULL) + initGenericPart (win); + + return win; +} /* allocGenericWinInfo */ + + +/* + ** initGenericPart(). + */ +void +initGenericPart (TuiGenWinInfoPtr win) +{ + win->width = + win->height = + win->origin.x = + win->origin.y = + win->viewportHeight = + win->contentSize = + win->lastVisibleLine = 0; + win->handle = (WINDOW *) NULL; + win->content = (OpaquePtr) NULL; + win->contentInUse = + win->isVisible = FALSE; + win->title = 0; +} + + +/* + ** initContentElement(). + */ +void +initContentElement (TuiWinElementPtr element, TuiWinType type) +{ + element->highlight = FALSE; + switch (type) + { + case SRC_WIN: + case DISASSEM_WIN: + element->whichElement.source.line = (char *) NULL; + element->whichElement.source.lineOrAddr.lineNo = 0; + element->whichElement.source.isExecPoint = FALSE; + element->whichElement.source.hasBreak = FALSE; + break; + case DATA_WIN: + initGenericPart (&element->whichElement.dataWindow); + element->whichElement.dataWindow.type = DATA_ITEM_WIN; + ((TuiGenWinInfoPtr) & element->whichElement.dataWindow)->content = + (OpaquePtr) allocContent (1, DATA_ITEM_WIN); + ((TuiGenWinInfoPtr) + & element->whichElement.dataWindow)->contentSize = 1; + break; + case CMD_WIN: + element->whichElement.command.line = (char *) NULL; + break; + case DATA_ITEM_WIN: + element->whichElement.data.name = (char *) NULL; + element->whichElement.data.type = TUI_REGISTER; + element->whichElement.data.itemNo = UNDEFINED_ITEM; + element->whichElement.data.value = (Opaque) NULL; + element->whichElement.data.highlight = FALSE; + break; + case LOCATOR_WIN: + element->whichElement.locator.fileName[0] = + element->whichElement.locator.procName[0] = (char) 0; + element->whichElement.locator.lineNo = 0; + element->whichElement.locator.addr = 0; + break; + case EXEC_INFO_WIN: + memset(element->whichElement.simpleString, ' ', + sizeof(element->whichElement.simpleString)); + break; + default: + break; + } + return; +} /* initContentElement */ + +/* + ** initWinInfo(). + */ +void +initWinInfo (TuiWinInfoPtr winInfo) +{ + initGenericPart (&winInfo->generic); + winInfo->canHighlight = + winInfo->isHighlighted = FALSE; + switch (winInfo->generic.type) + { + case SRC_WIN: + case DISASSEM_WIN: + winInfo->detail.sourceInfo.executionInfo = (TuiGenWinInfoPtr) NULL; + winInfo->detail.sourceInfo.hasLocator = FALSE; + winInfo->detail.sourceInfo.horizontalOffset = 0; + winInfo->detail.sourceInfo.startLineOrAddr.addr = 0; + winInfo->detail.sourceInfo.filename = 0; + break; + case DATA_WIN: + winInfo->detail.dataDisplayInfo.dataContent = (TuiWinContent) NULL; + winInfo->detail.dataDisplayInfo.dataContentCount = 0; + winInfo->detail.dataDisplayInfo.regsContent = (TuiWinContent) NULL; + winInfo->detail.dataDisplayInfo.regsContentCount = 0; + winInfo->detail.dataDisplayInfo.regsDisplayType = + TUI_UNDEFINED_REGS; + winInfo->detail.dataDisplayInfo.regsColumnCount = 1; + winInfo->detail.dataDisplayInfo.displayRegs = FALSE; + break; + case CMD_WIN: + winInfo->detail.commandInfo.curLine = 0; + winInfo->detail.commandInfo.curch = 0; + break; + default: + winInfo->detail.opaque = (Opaque) NULL; + break; + } + + return; +} /* initWinInfo */ + + +/* + ** allocWinInfo(). + */ +TuiWinInfoPtr +allocWinInfo (TuiWinType type) +{ + TuiWinInfoPtr winInfo = (TuiWinInfoPtr) NULL; + + winInfo = (TuiWinInfoPtr) xmalloc (sizeof (TuiWinInfo)); + if (m_winPtrNotNull (winInfo)) + { + winInfo->generic.type = type; + initWinInfo (winInfo); + } + + return winInfo; +} /* allocWinInfo */ + + +/* + ** allocContent(). + ** Allocates the content and elements in a block. + */ +TuiWinContent +allocContent (int numElements, TuiWinType type) +{ + TuiWinContent content = (TuiWinContent) NULL; + char *elementBlockPtr = (char *) NULL; + int i; + + if ((content = (TuiWinContent) + xmalloc (sizeof (TuiWinElementPtr) * numElements)) != (TuiWinContent) NULL) + { /* + ** All windows, except the data window, can allocate the elements + ** in a chunk. The data window cannot because items can be + ** added/removed from the data display by the user at any time. + */ + if (type != DATA_WIN) + { + if ((elementBlockPtr = (char *) + xmalloc (sizeof (TuiWinElement) * numElements)) != (char *) NULL) + { + for (i = 0; i < numElements; i++) + { + content[i] = (TuiWinElementPtr) elementBlockPtr; + initContentElement (content[i], type); + elementBlockPtr += sizeof (TuiWinElement); + } + } + else + { + tuiFree ((char *) content); + content = (TuiWinContent) NULL; + } + } + } + + return content; +} /* allocContent */ + + +/* + ** addContentElements(). + ** Adds the input number of elements to the windows's content. If + ** no content has been allocated yet, allocContent() is called to + ** do this. The index of the first element added is returned, + ** unless there is a memory allocation error, in which case, (-1) + ** is returned. + */ +int +addContentElements (TuiGenWinInfoPtr winInfo, int numElements) +{ + TuiWinElementPtr elementPtr; + int i, indexStart; + + if (winInfo->content == (OpaquePtr) NULL) + { + winInfo->content = (OpaquePtr) allocContent (numElements, winInfo->type); + indexStart = 0; + } + else + indexStart = winInfo->contentSize; + if (winInfo->content != (OpaquePtr) NULL) + { + for (i = indexStart; (i < numElements + indexStart); i++) + { + if ((elementPtr = (TuiWinElementPtr) + xmalloc (sizeof (TuiWinElement))) != (TuiWinElementPtr) NULL) + { + winInfo->content[i] = (Opaque) elementPtr; + initContentElement (elementPtr, winInfo->type); + winInfo->contentSize++; + } + else /* things must be really hosed now! We ran out of memory!? */ + return (-1); + } + } + + return indexStart; +} /* addContentElements */ + + +/* Delete all curses windows associated with winInfo, leaving everything + else intact. */ +void +tuiDelWindow (TuiWinInfoPtr winInfo) +{ + TuiGenWinInfoPtr genericWin; + + switch (winInfo->generic.type) + { + case SRC_WIN: + case DISASSEM_WIN: + genericWin = locatorWinInfoPtr (); + if (genericWin != (TuiGenWinInfoPtr) NULL) + { + tuiDelwin (genericWin->handle); + genericWin->handle = (WINDOW *) NULL; + genericWin->isVisible = FALSE; + } + if (winInfo->detail.sourceInfo.filename) + { + xfree (winInfo->detail.sourceInfo.filename); + winInfo->detail.sourceInfo.filename = 0; + } + genericWin = winInfo->detail.sourceInfo.executionInfo; + if (genericWin != (TuiGenWinInfoPtr) NULL) + { + tuiDelwin (genericWin->handle); + genericWin->handle = (WINDOW *) NULL; + genericWin->isVisible = FALSE; + } + break; + case DATA_WIN: + if (winInfo->generic.content != (OpaquePtr) NULL) + { + tuiDelDataWindows (winInfo->detail.dataDisplayInfo.regsContent, + winInfo->detail.dataDisplayInfo.regsContentCount); + tuiDelDataWindows (winInfo->detail.dataDisplayInfo.dataContent, + winInfo->detail.dataDisplayInfo.dataContentCount); + } + break; + default: + break; + } + if (winInfo->generic.handle != (WINDOW *) NULL) + { + tuiDelwin (winInfo->generic.handle); + winInfo->generic.handle = (WINDOW *) NULL; + winInfo->generic.isVisible = FALSE; + } +} + + +/* + ** freeWindow(). + */ +void +freeWindow (TuiWinInfoPtr winInfo) +{ + TuiGenWinInfoPtr genericWin; + + switch (winInfo->generic.type) + { + case SRC_WIN: + case DISASSEM_WIN: + genericWin = locatorWinInfoPtr (); + if (genericWin != (TuiGenWinInfoPtr) NULL) + { + tuiDelwin (genericWin->handle); + genericWin->handle = (WINDOW *) NULL; + } + freeWinContent (genericWin); + if (winInfo->detail.sourceInfo.filename) + { + xfree (winInfo->detail.sourceInfo.filename); + winInfo->detail.sourceInfo.filename = 0; + } + genericWin = winInfo->detail.sourceInfo.executionInfo; + if (genericWin != (TuiGenWinInfoPtr) NULL) + { + tuiDelwin (genericWin->handle); + genericWin->handle = (WINDOW *) NULL; + freeWinContent (genericWin); + } + break; + case DATA_WIN: + if (winInfo->generic.content != (OpaquePtr) NULL) + { + freeDataContent ( + winInfo->detail.dataDisplayInfo.regsContent, + winInfo->detail.dataDisplayInfo.regsContentCount); + winInfo->detail.dataDisplayInfo.regsContent = + (TuiWinContent) NULL; + winInfo->detail.dataDisplayInfo.regsContentCount = 0; + freeDataContent ( + winInfo->detail.dataDisplayInfo.dataContent, + winInfo->detail.dataDisplayInfo.dataContentCount); + winInfo->detail.dataDisplayInfo.dataContent = + (TuiWinContent) NULL; + winInfo->detail.dataDisplayInfo.dataContentCount = 0; + winInfo->detail.dataDisplayInfo.regsDisplayType = + TUI_UNDEFINED_REGS; + winInfo->detail.dataDisplayInfo.regsColumnCount = 1; + winInfo->detail.dataDisplayInfo.displayRegs = FALSE; + winInfo->generic.content = (OpaquePtr) NULL; + winInfo->generic.contentSize = 0; + } + break; + default: + break; + } + if (winInfo->generic.handle != (WINDOW *) NULL) + { + tuiDelwin (winInfo->generic.handle); + winInfo->generic.handle = (WINDOW *) NULL; + freeWinContent (&winInfo->generic); + } + if (winInfo->generic.title) + xfree (winInfo->generic.title); + xfree (winInfo); +} + + +/* + ** freeAllSourceWinsContent(). + */ +void +freeAllSourceWinsContent (void) +{ + int i; + + for (i = 0; i < (sourceWindows ())->count; i++) + { + TuiWinInfoPtr winInfo = (TuiWinInfoPtr) (sourceWindows ())->list[i]; + + if (m_winPtrNotNull (winInfo)) + { + freeWinContent (&(winInfo->generic)); + freeWinContent (winInfo->detail.sourceInfo.executionInfo); + } + } + + return; +} /* freeAllSourceWinsContent */ + + +/* + ** freeWinContent(). + */ +void +freeWinContent (TuiGenWinInfoPtr winInfo) +{ + if (winInfo->content != (OpaquePtr) NULL) + { + freeContent ((TuiWinContent) winInfo->content, + winInfo->contentSize, + winInfo->type); + winInfo->content = (OpaquePtr) NULL; + } + winInfo->contentSize = 0; + + return; +} /* freeWinContent */ + + +void +tuiDelDataWindows (TuiWinContent content, int contentSize) +{ + int i; + + /* + ** Remember that data window content elements are of type TuiGenWinInfoPtr, + ** each of which whose single element is a data element. + */ + for (i = 0; i < contentSize; i++) + { + TuiGenWinInfoPtr genericWin = &content[i]->whichElement.dataWindow; + + if (genericWin != (TuiGenWinInfoPtr) NULL) + { + tuiDelwin (genericWin->handle); + genericWin->handle = (WINDOW *) NULL; + genericWin->isVisible = FALSE; + } + } + + return; +} /* tuiDelDataWindows */ + + +void +freeDataContent (TuiWinContent content, int contentSize) +{ + int i; + + /* + ** Remember that data window content elements are of type TuiGenWinInfoPtr, + ** each of which whose single element is a data element. + */ + for (i = 0; i < contentSize; i++) + { + TuiGenWinInfoPtr genericWin = &content[i]->whichElement.dataWindow; + + if (genericWin != (TuiGenWinInfoPtr) NULL) + { + tuiDelwin (genericWin->handle); + genericWin->handle = (WINDOW *) NULL; + freeWinContent (genericWin); + } + } + freeContent (content, + contentSize, + DATA_WIN); + + return; +} /* freeDataContent */ + + +/********************************** +** LOCAL STATIC FUNCTIONS ** +**********************************/ + + +/* + ** freeContent(). + */ +static void +freeContent (TuiWinContent content, int contentSize, TuiWinType winType) +{ + if (content != (TuiWinContent) NULL) + { + freeContentElements (content, contentSize, winType); + tuiFree ((char *) content); + } + + return; +} /* freeContent */ + + +/* + ** freeContentElements(). + */ +static void +freeContentElements (TuiWinContent content, int contentSize, TuiWinType type) +{ + if (content != (TuiWinContent) NULL) + { + int i; + + if (type == SRC_WIN || type == DISASSEM_WIN) + { + /* free whole source block */ + if (content[0]->whichElement.source.line != (char *) NULL) + tuiFree (content[0]->whichElement.source.line); + } + else + { + for (i = 0; i < contentSize; i++) + { + TuiWinElementPtr element; + + element = content[i]; + if (element != (TuiWinElementPtr) NULL) + { + switch (type) + { + case DATA_WIN: + tuiFree ((char *) element); + break; + case DATA_ITEM_WIN: + /* + ** Note that data elements are not allocated + ** in a single block, but individually, as needed. + */ + if (element->whichElement.data.type != TUI_REGISTER) + tuiFree ((char *) + element->whichElement.data.name); + tuiFree ((char *) element->whichElement.data.value); + tuiFree ((char *) element); + break; + case CMD_WIN: + tuiFree ((char *) element->whichElement.command.line); + break; + default: + break; + } + } + } + } + if (type != DATA_WIN && type != DATA_ITEM_WIN) + tuiFree ((char *) content[0]); /* free the element block */ + } + + return; +} /* freeContentElements */ diff --git a/gdb/tui/tui-data.h b/gdb/tui/tui-data.h new file mode 100644 index 00000000000..6657fcdbda1 --- /dev/null +++ b/gdb/tui/tui-data.h @@ -0,0 +1,386 @@ +/* TUI data manipulation routines. + + Copyright 1998, 1999, 2000, 2001, 2002, 2004 Free Software + Foundation, Inc. + + Contributed by Hewlett-Packard Company. + + This file is part of GDB. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. */ + +#ifndef TUI_DATA_H +#define TUI_DATA_H + +#if defined (HAVE_NCURSES_H) +#include <ncurses.h> +#elif defined (HAVE_CURSES_H) +#include <curses.h> +#endif + +/* Generic window information */ + typedef struct _TuiGenWinInfo + { + WINDOW *handle; /* window handle */ + TuiWinType type; /* type of window */ + int width; /* window width */ + int height; /* window height */ + TuiPoint origin; /* origin of window */ + OpaquePtr content; /* content of window */ + int contentSize; /* Size of content (# of elements) */ + int contentInUse; /* Can it be used, or is it already used? */ + int viewportHeight; /* viewport height */ + int lastVisibleLine; /* index of last visible line */ + int isVisible; /* whether the window is visible or not */ + char* title; /* Window title to display. */ + } +TuiGenWinInfo, *TuiGenWinInfoPtr; + +/* Constant definitions */ +#define DEFAULT_TAB_LEN 8 +#define NO_SRC_STRING "[ No Source Available ]" +#define NO_DISASSEM_STRING "[ No Assembly Available ]" +#define NO_REGS_STRING "[ Register Values Unavailable ]" +#define NO_DATA_STRING "[ No Data Values Displayed ]" +#define MAX_CONTENT_COUNT 100 +#define SRC_NAME "SRC" +#define CMD_NAME "CMD" +#define DATA_NAME "REGS" +#define DISASSEM_NAME "ASM" +#define TUI_NULL_STR "" +#define DEFAULT_HISTORY_COUNT 25 +#define BOX_WINDOW TRUE +#define DONT_BOX_WINDOW FALSE +#define HILITE TRUE +#define NO_HILITE FALSE +#define WITH_LOCATOR TRUE +#define NO_LOCATOR FALSE +#define EMPTY_SOURCE_PROMPT TRUE +#define NO_EMPTY_SOURCE_PROMPT FALSE +#define UNDEFINED_ITEM -1 +#define MIN_WIN_HEIGHT 3 +#define MIN_CMD_WIN_HEIGHT 3 + +/* Strings to display in the TUI status line. */ +#define PROC_PREFIX "In: " +#define LINE_PREFIX "Line: " +#define PC_PREFIX "PC: " +#define SINGLE_KEY "(SingleKey)" + +/* Minimum/Maximum length of some fields displayed in the TUI status line. */ +#define MIN_LINE_WIDTH 4 /* Use at least 4 digits for line numbers. */ +#define MIN_PROC_WIDTH 12 +#define MAX_TARGET_WIDTH 10 +#define MAX_PID_WIDTH 14 + +#define TUI_FLOAT_REGS_NAME "$FREGS" +#define TUI_FLOAT_REGS_NAME_LOWER "$fregs" +#define TUI_GENERAL_REGS_NAME "$GREGS" +#define TUI_GENERAL_REGS_NAME_LOWER "$gregs" +#define TUI_SPECIAL_REGS_NAME "$SREGS" +#define TUI_SPECIAL_REGS_NAME_LOWER "$sregs" +#define TUI_GENERAL_SPECIAL_REGS_NAME "$REGS" +#define TUI_GENERAL_SPECIAL_REGS_NAME_LOWER "$regs" + +/* Scroll direction enum */ +typedef enum tui_scroll_direction + { + FORWARD_SCROLL, + BACKWARD_SCROLL, + LEFT_SCROLL, + RIGHT_SCROLL + } +TuiScrollDirection, *TuiScrollDirectionPtr; + + +/* General list struct */ +typedef struct _TuiList + { + OpaqueList list; + int count; + } +TuiList, *TuiListPtr; + + +/* The kinds of layouts available */ +typedef enum tui_layout_type + { + SRC_COMMAND, + DISASSEM_COMMAND, + SRC_DISASSEM_COMMAND, + SRC_DATA_COMMAND, + DISASSEM_DATA_COMMAND, + UNDEFINED_LAYOUT + } +TuiLayoutType, *TuiLayoutTypePtr; + +/* Basic data types that can be displayed in the data window. */ +typedef enum _TuiDataType + { + TUI_REGISTER, + TUI_SCALAR, + TUI_COMPLEX, + TUI_STRUCT + } +TuiDataType, TuiDataTypePtr; + +/* Types of register displays */ +typedef enum tui_register_display_type + { + TUI_UNDEFINED_REGS, + TUI_GENERAL_REGS, + TUI_SFLOAT_REGS, + TUI_DFLOAT_REGS, + TUI_SPECIAL_REGS, + TUI_GENERAL_AND_SPECIAL_REGS + } +TuiRegisterDisplayType, *TuiRegisterDisplayTypePtr; + +/* Structure describing source line or line address */ +typedef union _TuiLineOrAddress + { + int lineNo; + CORE_ADDR addr; + } +TuiLineOrAddress, *TuiLineOrAddressPtr; + +/* Current Layout definition */ +typedef struct _TuiLayoutDef + { + TuiWinType displayMode; + int split; + TuiRegisterDisplayType regsDisplayType; + TuiRegisterDisplayType floatRegsDisplayType; + } +TuiLayoutDef, *TuiLayoutDefPtr; + +/* Elements in the Source/Disassembly Window */ +typedef struct _TuiSourceElement + { + char *line; + TuiLineOrAddress lineOrAddr; + int isExecPoint; + int hasBreak; + } +TuiSourceElement, *TuiSourceElementPtr; + + +/* Elements in the data display window content */ +typedef struct _TuiDataElement + { + const char *name; + int itemNo; /* the register number, or data display number */ + TuiDataType type; + Opaque value; + int highlight; + } +TuiDataElement, *TuiDataElementPtr; + + +/* Elements in the command window content */ +typedef struct _TuiCommandElement + { + char *line; + } +TuiCommandElement, *TuiCommandElementPtr; + + +#define MAX_LOCATOR_ELEMENT_LEN 100 + +/* Elements in the locator window content */ +typedef struct _TuiLocatorElement + { + char fileName[MAX_LOCATOR_ELEMENT_LEN]; + char procName[MAX_LOCATOR_ELEMENT_LEN]; + int lineNo; + CORE_ADDR addr; + } +TuiLocatorElement, *TuiLocatorElementPtr; + +/* Flags to tell what kind of breakpoint is at current line. */ +#define TUI_BP_ENABLED 0x01 +#define TUI_BP_DISABLED 0x02 +#define TUI_BP_HIT 0x04 +#define TUI_BP_CONDITIONAL 0x08 +#define TUI_BP_HARDWARE 0x10 + +/* Position of breakpoint markers in the exec info string. */ +#define TUI_BP_HIT_POS 0 +#define TUI_BP_BREAK_POS 1 +#define TUI_EXEC_POS 2 +#define TUI_EXECINFO_SIZE 4 + +typedef char TuiExecInfoContent[TUI_EXECINFO_SIZE]; + +/* An content element in a window */ +typedef union + { + TuiSourceElement source; /* the source elements */ + TuiGenWinInfo dataWindow; /* data display elements */ + TuiDataElement data; /* elements of dataWindow */ + TuiCommandElement command; /* command elements */ + TuiLocatorElement locator; /* locator elements */ + TuiExecInfoContent simpleString; /* simple char based elements */ + } +TuiWhichElement, *TuiWhichElementPtr; + +typedef struct _TuiWinElement + { + int highlight; + TuiWhichElement whichElement; + } +TuiWinElement, *TuiWinElementPtr; + + +/* This describes the content of the window. */ +typedef TuiWinElementPtr *TuiWinContent; + + +/* This struct defines the specific information about a data display window */ +typedef struct _TuiDataInfo + { + TuiWinContent dataContent; /* start of data display content */ + int dataContentCount; + TuiWinContent regsContent; /* start of regs display content */ + int regsContentCount; + TuiRegisterDisplayType regsDisplayType; + int regsColumnCount; + int displayRegs; /* Should regs be displayed at all? */ + } +TuiDataInfo, *TuiDataInfoPtr; + + +typedef struct _TuiSourceInfo + { + int hasLocator; /* Does locator belongs to this window? */ + TuiGenWinInfoPtr executionInfo; /* execution information window */ + int horizontalOffset; /* used for horizontal scroll */ + TuiLineOrAddress startLineOrAddr; + char* filename; + } +TuiSourceInfo, *TuiSourceInfoPtr; + + +typedef struct _TuiCommandInfo + { + int curLine; /* The current line position */ + int curch; /* The current cursor position */ + int start_line; + } +TuiCommandInfo, *TuiCommandInfoPtr; + + +/* This defines information about each logical window */ +typedef struct _TuiWinInfo + { + TuiGenWinInfo generic; /* general window information */ + union + { + TuiSourceInfo sourceInfo; + TuiDataInfo dataDisplayInfo; + TuiCommandInfo commandInfo; + Opaque opaque; + } + detail; + int canHighlight; /* Can this window ever be highlighted? */ + int isHighlighted; /* Is this window highlighted? */ + } +TuiWinInfo, *TuiWinInfoPtr; + +/* MACROS (prefixed with m_) */ + +/* Testing macros */ +#define m_genWinPtrIsNull(winInfo) \ + ((winInfo) == (TuiGenWinInfoPtr)NULL) +#define m_genWinPtrNotNull(winInfo) \ + ((winInfo) != (TuiGenWinInfoPtr)NULL) +#define m_winPtrIsNull(winInfo) \ + ((winInfo) == (TuiWinInfoPtr)NULL) +#define m_winPtrNotNull(winInfo) \ + ((winInfo) != (TuiWinInfoPtr)NULL) + +#define m_winIsSourceType(type) \ + (type == SRC_WIN || type == DISASSEM_WIN) +#define m_winIsAuxillary(winType) \ + (winType > MAX_MAJOR_WINDOWS) +#define m_hasLocator(winInfo) \ + ( ((winInfo) != (TuiWinInfoPtr)NULL) ? \ + (winInfo->detail.sourceInfo.hasLocator) : \ + FALSE ) + +#define m_setWinHighlightOn(winInfo) \ + if ((winInfo) != (TuiWinInfoPtr)NULL) \ + (winInfo)->isHighlighted = TRUE +#define m_setWinHighlightOff(winInfo) \ + if ((winInfo) != (TuiWinInfoPtr)NULL) \ + (winInfo)->isHighlighted = FALSE + + +/* Global Data */ +extern TuiWinInfoPtr winList[MAX_MAJOR_WINDOWS]; + +/* Macros */ +#define srcWin winList[SRC_WIN] +#define disassemWin winList[DISASSEM_WIN] +#define dataWin winList[DATA_WIN] +#define cmdWin winList[CMD_WIN] + +/* Data Manipulation Functions */ +extern void initializeStaticData (void); +extern TuiGenWinInfoPtr allocGenericWinInfo (void); +extern TuiWinInfoPtr allocWinInfo (TuiWinType); +extern void initGenericPart (TuiGenWinInfoPtr); +extern void initWinInfo (TuiWinInfoPtr); +extern TuiWinContent allocContent (int, TuiWinType); +extern int addContentElements (TuiGenWinInfoPtr, int); +extern void initContentElement (TuiWinElementPtr, TuiWinType); +extern void freeWindow (TuiWinInfoPtr); +extern void freeWinContent (TuiGenWinInfoPtr); +extern void freeDataContent (TuiWinContent, int); +extern void freeAllSourceWinsContent (void); +extern void tuiDelWindow (TuiWinInfoPtr); +extern void tuiDelDataWindows (TuiWinContent, int); +extern TuiWinInfoPtr partialWinByName (char *); +extern char *winName (TuiGenWinInfoPtr); +extern TuiLayoutType currentLayout (void); +extern void setCurrentLayoutTo (TuiLayoutType); +extern int termHeight (void); +extern void setTermHeightTo (int); +extern int termWidth (void); +extern void setTermWidthTo (int); +extern void setGenWinOrigin (TuiGenWinInfoPtr, int, int); +extern TuiGenWinInfoPtr locatorWinInfoPtr (void); +extern TuiGenWinInfoPtr sourceExecInfoWinPtr (void); +extern TuiGenWinInfoPtr disassemExecInfoWinPtr (void); +extern TuiListPtr sourceWindows (void); +extern void clearSourceWindows (void); +extern void clearSourceWindowsDetail (void); +extern void clearWinDetail (TuiWinInfoPtr winInfo); +extern void tuiAddToSourceWindows (TuiWinInfoPtr); +extern int tuiDefaultTabLen (void); +extern void tuiSetDefaultTabLen (int); +extern TuiWinInfoPtr tuiWinWithFocus (void); +extern void tuiSetWinWithFocus (TuiWinInfoPtr); +extern TuiLayoutDefPtr tuiLayoutDef (void); +extern int tuiWinResized (void); +extern void tuiSetWinResizedTo (int); + +extern TuiWinInfoPtr tuiNextWin (TuiWinInfoPtr); +extern TuiWinInfoPtr tuiPrevWin (TuiWinInfoPtr); + +extern void addToSourceWindows (TuiWinInfoPtr winInfo); + +#endif /* TUI_DATA_H */ diff --git a/gdb/tui/tui-disasm.c b/gdb/tui/tui-disasm.c new file mode 100644 index 00000000000..493c00ded68 --- /dev/null +++ b/gdb/tui/tui-disasm.c @@ -0,0 +1,403 @@ +/* Disassembly display. + + Copyright 1998, 1999, 2000, 2001, 2002, 2003, 2004 Free Software + Foundation, Inc. + + Contributed by Hewlett-Packard Company. + + This file is part of GDB. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. */ + +#include "defs.h" +#include "symtab.h" +#include "breakpoint.h" +#include "frame.h" +#include "value.h" +#include "source.h" +#include "disasm.h" + +#include "tui/tui.h" +#include "tui/tui-data.h" +#include "tui/tui-win.h" +#include "tui/tui-layout.h" +#include "tui/tui-winsource.h" +#include "tui/tui-stack.h" +#include "tui/tui-file.h" + +#ifdef HAVE_NCURSES_H +#include <ncurses.h> +#else +#ifdef HAVE_CURSES_H +#include <curses.h> +#endif +#endif + +struct tui_asm_line +{ + CORE_ADDR addr; + char* addr_string; + char* insn; +}; + +/* Function to set the disassembly window's content. + Disassemble count lines starting at pc. + Return address of the count'th instruction after pc. */ +static CORE_ADDR +tui_disassemble (struct tui_asm_line* lines, CORE_ADDR pc, int count) +{ + struct ui_file *gdb_dis_out; + + /* now init the ui_file structure */ + gdb_dis_out = tui_sfileopen (256); + + /* Now construct each line */ + for (; count > 0; count--, lines++) + { + if (lines->addr_string) + xfree (lines->addr_string); + if (lines->insn) + xfree (lines->insn); + + print_address (pc, gdb_dis_out); + lines->addr = pc; + lines->addr_string = xstrdup (tui_file_get_strbuf (gdb_dis_out)); + + ui_file_rewind (gdb_dis_out); + + pc = pc + gdb_print_insn (pc, gdb_dis_out); + + lines->insn = xstrdup (tui_file_get_strbuf (gdb_dis_out)); + + /* reset the buffer to empty */ + ui_file_rewind (gdb_dis_out); + } + ui_file_delete (gdb_dis_out); + return pc; +} + +/* Find the disassembly address that corresponds to FROM lines + above or below the PC. Variable sized instructions are taken + into account by the algorithm. */ +static CORE_ADDR +tui_find_disassembly_address (CORE_ADDR pc, int from) +{ + register CORE_ADDR newLow; + int maxLines; + int i; + struct tui_asm_line* lines; + + maxLines = (from > 0) ? from : - from; + if (maxLines <= 1) + return pc; + + lines = (struct tui_asm_line*) alloca (sizeof (struct tui_asm_line) + * maxLines); + memset (lines, 0, sizeof (struct tui_asm_line) * maxLines); + + newLow = pc; + if (from > 0) + { + tui_disassemble (lines, pc, maxLines); + newLow = lines[maxLines - 1].addr; + } + else + { + CORE_ADDR last_addr; + int pos; + struct minimal_symbol* msymbol; + + /* Find backward an address which is a symbol + and for which disassembling from that address will fill + completely the window. */ + pos = maxLines - 1; + do { + newLow -= 1 * maxLines; + msymbol = lookup_minimal_symbol_by_pc_section (newLow, 0); + + if (msymbol) + newLow = SYMBOL_VALUE_ADDRESS (msymbol); + else + newLow += 1 * maxLines; + + tui_disassemble (lines, newLow, maxLines); + last_addr = lines[pos].addr; + } while (last_addr > pc && msymbol); + + /* Scan forward disassembling one instruction at a time + until the last visible instruction of the window + matches the pc. We keep the disassembled instructions + in the 'lines' window and shift it downward (increasing + its addresses). */ + if (last_addr < pc) + do + { + CORE_ADDR next_addr; + + pos++; + if (pos >= maxLines) + pos = 0; + + next_addr = tui_disassemble (&lines[pos], last_addr, 1); + + /* If there are some problems while disassembling exit. */ + if (next_addr <= last_addr) + break; + last_addr = next_addr; + } while (last_addr <= pc); + pos++; + if (pos >= maxLines) + pos = 0; + newLow = lines[pos].addr; + } + for (i = 0; i < maxLines; i++) + { + xfree (lines[i].addr_string); + xfree (lines[i].insn); + } + return newLow; +} + +/* Function to set the disassembly window's content. */ +enum tui_status +tui_set_disassem_content (CORE_ADDR pc) +{ + TuiStatus ret = TUI_FAILURE; + register int i; + register int offset = disassemWin->detail.sourceInfo.horizontalOffset; + register int lineWidth, maxLines; + CORE_ADDR cur_pc; + TuiGenWinInfoPtr locator = locatorWinInfoPtr (); + int tab_len = tuiDefaultTabLen (); + struct tui_asm_line* lines; + int insn_pos; + int addr_size, max_size; + char* line; + + if (pc == 0) + return TUI_FAILURE; + + ret = tuiAllocSourceBuffer (disassemWin); + if (ret != TUI_SUCCESS) + return ret; + + disassemWin->detail.sourceInfo.startLineOrAddr.addr = pc; + cur_pc = (CORE_ADDR) + (((TuiWinElementPtr) locator->content[0])->whichElement.locator.addr); + + maxLines = disassemWin->generic.height - 2; /* account for hilite */ + + /* Get temporary table that will hold all strings (addr & insn). */ + lines = (struct tui_asm_line*) alloca (sizeof (struct tui_asm_line) + * maxLines); + memset (lines, 0, sizeof (struct tui_asm_line) * maxLines); + + lineWidth = disassemWin->generic.width - 1; + + tui_disassemble (lines, pc, maxLines); + + /* See what is the maximum length of an address and of a line. */ + addr_size = 0; + max_size = 0; + for (i = 0; i < maxLines; i++) + { + size_t len = strlen (lines[i].addr_string); + if (len > addr_size) + addr_size = len; + + len = strlen (lines[i].insn) + tab_len; + if (len > max_size) + max_size = len; + } + max_size += addr_size + tab_len; + + /* Allocate memory to create each line. */ + line = (char*) alloca (max_size); + insn_pos = (1 + (addr_size / tab_len)) * tab_len; + + /* Now construct each line */ + for (i = 0; i < maxLines; i++) + { + TuiWinElementPtr element; + TuiSourceElement* src; + int curLen; + + element = (TuiWinElementPtr) disassemWin->generic.content[i]; + src = &element->whichElement.source; + strcpy (line, lines[i].addr_string); + curLen = strlen (line); + + /* Add spaces to make the instructions start on the same column */ + while (curLen < insn_pos) + { + strcat (line, " "); + curLen++; + } + + strcat (line, lines[i].insn); + + /* Now copy the line taking the offset into account */ + if (strlen (line) > offset) + strcpy (src->line, &line[offset]); + else + src->line[0] = '\0'; + + src->lineOrAddr.addr = lines[i].addr; + src->isExecPoint = lines[i].addr == cur_pc; + + /* See whether there is a breakpoint installed. */ + src->hasBreak = (!src->isExecPoint + && breakpoint_here_p (pc) != no_breakpoint_here); + + xfree (lines[i].addr_string); + xfree (lines[i].insn); + } + disassemWin->generic.contentSize = i; + return TUI_SUCCESS; +} + + +/* Function to display the disassembly window with disassembled code. */ +void +tui_show_disassem (CORE_ADDR startAddr) +{ + struct symtab *s = find_pc_symtab (startAddr); + TuiWinInfoPtr winWithFocus = tuiWinWithFocus (); + TuiLineOrAddress val; + + val.addr = startAddr; + tui_add_win_to_layout (DISASSEM_WIN); + tuiUpdateSourceWindow (disassemWin, s, val, FALSE); + /* + ** if the focus was in the src win, put it in the asm win, if the + ** source view isn't split + */ + if (currentLayout () != SRC_DISASSEM_COMMAND && winWithFocus == srcWin) + tuiSetWinFocusTo (disassemWin); + + return; +} + + +/* Function to display the disassembly window. */ +void +tui_show_disassem_and_update_source (CORE_ADDR startAddr) +{ + struct symtab_and_line sal; + + tui_show_disassem (startAddr); + if (currentLayout () == SRC_DISASSEM_COMMAND) + { + TuiLineOrAddress val; + + /* + ** Update what is in the source window if it is displayed too, + ** note that it follows what is in the disassembly window and visa-versa + */ + sal = find_pc_line (startAddr, 0); + val.lineNo = sal.line; + tuiUpdateSourceWindow (srcWin, sal.symtab, val, TRUE); + if (sal.symtab) + { + set_current_source_symtab_and_line (&sal); + tuiUpdateLocatorFilename (sal.symtab->filename); + } + else + tuiUpdateLocatorFilename ("?"); + } + + return; +} + +CORE_ADDR +tui_get_begin_asm_address (void) +{ + TuiGenWinInfoPtr locator; + TuiLocatorElementPtr element; + CORE_ADDR addr; + + locator = locatorWinInfoPtr (); + element = &((TuiWinElementPtr) locator->content[0])->whichElement.locator; + + if (element->addr == 0) + { + struct minimal_symbol *main_symbol; + + /* Find address of the start of program. + Note: this should be language specific. */ + main_symbol = lookup_minimal_symbol ("main", NULL, NULL); + if (main_symbol == 0) + main_symbol = lookup_minimal_symbol ("MAIN", NULL, NULL); + if (main_symbol == 0) + main_symbol = lookup_minimal_symbol ("_start", NULL, NULL); + if (main_symbol) + addr = SYMBOL_VALUE_ADDRESS (main_symbol); + else + addr = 0; + } + else /* the target is executing */ + addr = element->addr; + + return addr; +} + +/* Determine what the low address will be to display in the TUI's + disassembly window. This may or may not be the same as the + low address input. */ +CORE_ADDR +tuiGetLowDisassemblyAddress (CORE_ADDR low, CORE_ADDR pc) +{ + int pos; + + /* Determine where to start the disassembly so that the pc is about in the + middle of the viewport. */ + pos = tui_default_win_viewport_height (DISASSEM_WIN, DISASSEM_COMMAND) / 2; + pc = tui_find_disassembly_address (pc, -pos); + + if (pc < low) + pc = low; + return pc; +} + +/* Scroll the disassembly forward or backward vertically. */ +void +tui_vertical_disassem_scroll (enum tui_scroll_direction scrollDirection, + int numToScroll) +{ + if (disassemWin->generic.content != (OpaquePtr) NULL) + { + CORE_ADDR pc; + TuiWinContent content; + struct symtab *s; + TuiLineOrAddress val; + int maxLines, dir; + struct symtab_and_line cursal = get_current_source_symtab_and_line (); + + content = (TuiWinContent) disassemWin->generic.content; + if (cursal.symtab == (struct symtab *) NULL) + s = find_pc_symtab (get_frame_pc (deprecated_selected_frame)); + else + s = cursal.symtab; + + /* account for hilite */ + maxLines = disassemWin->generic.height - 2; + pc = content[0]->whichElement.source.lineOrAddr.addr; + dir = (scrollDirection == FORWARD_SCROLL) ? maxLines : - maxLines; + + val.addr = tui_find_disassembly_address (pc, dir); + tuiUpdateSourceWindowAsIs (disassemWin, s, val, FALSE); + } +} diff --git a/gdb/tui/tui-disasm.h b/gdb/tui/tui-disasm.h new file mode 100644 index 00000000000..e72aba1f3f1 --- /dev/null +++ b/gdb/tui/tui-disasm.h @@ -0,0 +1,37 @@ +/* Disassembly display. + + Copyright 1998, 1999, 2000, 2001, 2004 Free Software Foundation, + Inc. + + Contributed by Hewlett-Packard Company. + + This file is part of GDB. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. */ + +#ifndef TUI_DISASM_H +#define TUI_DISASM_H + +#include "tui/tui.h" /* For enum tui_status. */ +#include "tui/tui-data.h" /* For enum tui_scroll_direction. */ + +extern enum tui_status tui_set_disassem_content (CORE_ADDR); +extern void tui_show_disassem (CORE_ADDR); +extern void tui_show_disassem_and_update_source (CORE_ADDR); +extern void tui_vertical_disassem_scroll (enum tui_scroll_direction, int); +extern CORE_ADDR tui_get_begin_asm_address (void); + +#endif diff --git a/gdb/tui/tui-io.c b/gdb/tui/tui-io.c new file mode 100644 index 00000000000..61b1f93dcbd --- /dev/null +++ b/gdb/tui/tui-io.c @@ -0,0 +1,722 @@ +/* TUI support I/O functions. + + Copyright 1998, 1999, 2000, 2001, 2002, 2003, 2004 Free Software + Foundation, Inc. + + Contributed by Hewlett-Packard Company. + + This file is part of GDB. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. */ + +#include "defs.h" +#include "terminal.h" +#include "target.h" +#include "event-loop.h" +#include "event-top.h" +#include "command.h" +#include "top.h" +#include "readline/readline.h" +#include "tui/tui.h" +#include "tui/tui-data.h" +#include "tui/tui-io.h" +#include "tui/tui-command.h" +#include "tui/tui-win.h" +#include "tui/tui-wingeneral.h" +#include "tui/tui-file.h" +#include "ui-out.h" +#include "cli-out.h" +#include <fcntl.h> +#include <signal.h> +#include <stdio.h> + +#ifdef HAVE_NCURSES_H +#include <ncurses.h> +#else +#ifdef HAVE_CURSES_H +#include <curses.h> +#endif +#endif + +int +key_is_start_sequence (int ch) +{ + return (ch == 27); +} + +int +key_is_end_sequence (int ch) +{ + return (ch == 126); +} + +int +key_is_backspace (int ch) +{ + return (ch == 8); +} + +int +key_is_command_char (int ch) +{ + return ((ch == KEY_NPAGE) || (ch == KEY_PPAGE) + || (ch == KEY_LEFT) || (ch == KEY_RIGHT) + || (ch == KEY_UP) || (ch == KEY_DOWN) + || (ch == KEY_SF) || (ch == KEY_SR) + || (ch == (int)'\f') || key_is_start_sequence (ch)); +} + +/* Use definition from readline 4.3. */ +#undef CTRL_CHAR +#define CTRL_CHAR(c) ((c) < control_character_threshold && (((c) & 0x80) == 0)) + +/* This file controls the IO interactions between gdb and curses. + When the TUI is enabled, gdb has two modes a curses and a standard + mode. + + In curses mode, the gdb outputs are made in a curses command window. + For this, the gdb_stdout and gdb_stderr are redirected to the specific + ui_file implemented by TUI. The output is handled by tui_puts(). + The input is also controlled by curses with tui_getc(). The readline + library uses this function to get its input. Several readline hooks + are installed to redirect readline output to the TUI (see also the + note below). + + In normal mode, the gdb outputs are restored to their origin, that + is as if TUI is not used. Readline also uses its original getc() + function with stdin. + + Note SCz/2001-07-21: the current readline is not clean in its management of + the output. Even if we install a redisplay handler, it sometimes writes on + a stdout file. It is important to redirect every output produced by + readline, otherwise the curses window will be garbled. This is implemented + with a pipe that TUI reads and readline writes to. A gdb input handler + is created so that reading the pipe is handled automatically. + This will probably not work on non-Unix platforms. The best fix is + to make readline clean enougth so that is never write on stdout. + + Note SCz/2002-09-01: we now use more readline hooks and it seems that + with them we don't need the pipe anymore (verified by creating the pipe + and closing its end so that write causes a SIGPIPE). The old pipe code + is still there and can be conditionally removed by + #undef TUI_USE_PIPE_FOR_READLINE. */ + +/* For gdb 5.3, prefer to continue the pipe hack as a backup wheel. */ +#define TUI_USE_PIPE_FOR_READLINE +/*#undef TUI_USE_PIPE_FOR_READLINE*/ + +/* TUI output files. */ +static struct ui_file *tui_stdout; +static struct ui_file *tui_stderr; +struct ui_out *tui_out; + +/* GDB output files in non-curses mode. */ +static struct ui_file *tui_old_stdout; +static struct ui_file *tui_old_stderr; +struct ui_out *tui_old_uiout; + +/* Readline previous hooks. */ +static Function *tui_old_rl_getc_function; +static VFunction *tui_old_rl_redisplay_function; +static VFunction *tui_old_rl_prep_terminal; +static VFunction *tui_old_rl_deprep_terminal; +static int tui_old_readline_echoing_p; + +/* Readline output stream. + Should be removed when readline is clean. */ +static FILE *tui_rl_outstream; +static FILE *tui_old_rl_outstream; +#ifdef TUI_USE_PIPE_FOR_READLINE +static int tui_readline_pipe[2]; +#endif + +/* The last gdb prompt that was registered in readline. + This may be the main gdb prompt or a secondary prompt. */ +static char *tui_rl_saved_prompt; + +static unsigned int _tuiHandleResizeDuringIO (unsigned int); + +static void +tui_putc (char c) +{ + char buf[2]; + + buf[0] = c; + buf[1] = 0; + tui_puts (buf); +} + +/* Print the string in the curses command window. */ +void +tui_puts (const char *string) +{ + static int tui_skip_line = -1; + char c; + WINDOW *w; + + w = cmdWin->generic.handle; + while ((c = *string++) != 0) + { + /* Catch annotation and discard them. We need two \032 and + discard until a \n is seen. */ + if (c == '\032') + { + tui_skip_line++; + } + else if (tui_skip_line != 1) + { + tui_skip_line = -1; + waddch (w, c); + } + else if (c == '\n') + tui_skip_line = -1; + } + getyx (w, cmdWin->detail.commandInfo.curLine, + cmdWin->detail.commandInfo.curch); + cmdWin->detail.commandInfo.start_line = cmdWin->detail.commandInfo.curLine; + + /* We could defer the following. */ + wrefresh (w); + fflush (stdout); +} + +/* Readline callback. + Redisplay the command line with its prompt after readline has + changed the edited text. */ +void +tui_redisplay_readline (void) +{ + int prev_col; + int height; + int col, line; + int c_pos; + int c_line; + int in; + WINDOW *w; + char *prompt; + int start_line; + + /* Detect when we temporarily left SingleKey and now the readline + edit buffer is empty, automatically restore the SingleKey mode. */ + if (tui_current_key_mode == tui_one_command_mode && rl_end == 0) + tui_set_key_mode (tui_single_key_mode); + + if (tui_current_key_mode == tui_single_key_mode) + prompt = ""; + else + prompt = tui_rl_saved_prompt; + + c_pos = -1; + c_line = -1; + w = cmdWin->generic.handle; + start_line = cmdWin->detail.commandInfo.start_line; + wmove (w, start_line, 0); + prev_col = 0; + height = 1; + for (in = 0; prompt && prompt[in]; in++) + { + waddch (w, prompt[in]); + getyx (w, line, col); + if (col < prev_col) + height++; + prev_col = col; + } + for (in = 0; in < rl_end; in++) + { + unsigned char c; + + c = (unsigned char) rl_line_buffer[in]; + if (in == rl_point) + { + getyx (w, c_line, c_pos); + } + + if (CTRL_CHAR (c) || c == RUBOUT) + { + waddch (w, '^'); + waddch (w, CTRL_CHAR (c) ? UNCTRL (c) : '?'); + } + else + { + waddch (w, c); + } + if (c == '\n') + { + getyx (w, cmdWin->detail.commandInfo.start_line, + cmdWin->detail.commandInfo.curch); + } + getyx (w, line, col); + if (col < prev_col) + height++; + prev_col = col; + } + wclrtobot (w); + getyx (w, cmdWin->detail.commandInfo.start_line, + cmdWin->detail.commandInfo.curch); + if (c_line >= 0) + { + wmove (w, c_line, c_pos); + cmdWin->detail.commandInfo.curLine = c_line; + cmdWin->detail.commandInfo.curch = c_pos; + } + cmdWin->detail.commandInfo.start_line -= height - 1; + + wrefresh (w); + fflush(stdout); +} + +/* Readline callback to prepare the terminal. It is called once + each time we enter readline. Terminal is already setup in curses mode. */ +static void +tui_prep_terminal (int notused1) +{ + /* Save the prompt registered in readline to correctly display it. + (we can't use gdb_prompt() due to secondary prompts and can't use + rl_prompt because it points to an alloca buffer). */ + xfree (tui_rl_saved_prompt); + tui_rl_saved_prompt = xstrdup (rl_prompt); +} + +/* Readline callback to restore the terminal. It is called once + each time we leave readline. There is nothing to do in curses mode. */ +static void +tui_deprep_terminal (void) +{ +} + +#ifdef TUI_USE_PIPE_FOR_READLINE +/* Read readline output pipe and feed the command window with it. + Should be removed when readline is clean. */ +static void +tui_readline_output (int code, gdb_client_data data) +{ + int size; + char buf[256]; + + size = read (tui_readline_pipe[0], buf, sizeof (buf) - 1); + if (size > 0 && tui_active) + { + buf[size] = 0; + tui_puts (buf); + } +} +#endif + +/* Return the portion of PATHNAME that should be output when listing + possible completions. If we are hacking filename completion, we + are only interested in the basename, the portion following the + final slash. Otherwise, we return what we were passed. + + Comes from readline/complete.c */ +static char * +printable_part (pathname) + char *pathname; +{ + char *temp; + + temp = rl_filename_completion_desired ? strrchr (pathname, '/') : (char *)NULL; +#if defined (__MSDOS__) + if (rl_filename_completion_desired && temp == 0 && isalpha (pathname[0]) && pathname[1] == ':') + temp = pathname + 1; +#endif + return (temp ? ++temp : pathname); +} + +/* Output TO_PRINT to rl_outstream. If VISIBLE_STATS is defined and we + are using it, check for and output a single character for `special' + filenames. Return the number of characters we output. */ + +#define PUTX(c) \ + do { \ + if (CTRL_CHAR (c)) \ + { \ + tui_puts ("^"); \ + tui_putc (UNCTRL (c)); \ + printed_len += 2; \ + } \ + else if (c == RUBOUT) \ + { \ + tui_puts ("^?"); \ + printed_len += 2; \ + } \ + else \ + { \ + tui_putc (c); \ + printed_len++; \ + } \ + } while (0) + +static int +print_filename (to_print, full_pathname) + char *to_print, *full_pathname; +{ + int printed_len = 0; + char *s; + + for (s = to_print; *s; s++) + { + PUTX (*s); + } + return printed_len; +} + +/* The user must press "y" or "n". Non-zero return means "y" pressed. + Comes from readline/complete.c */ +static int +get_y_or_n () +{ + extern int _rl_abort_internal (); + int c; + + for (;;) + { + c = rl_read_key (); + if (c == 'y' || c == 'Y' || c == ' ') + return (1); + if (c == 'n' || c == 'N' || c == RUBOUT) + return (0); + if (c == ABORT_CHAR) + _rl_abort_internal (); + beep (); + } +} + +/* A convenience function for displaying a list of strings in + columnar format on readline's output stream. MATCHES is the list + of strings, in argv format, LEN is the number of strings in MATCHES, + and MAX is the length of the longest string in MATCHES. + + Comes from readline/complete.c and modified to write in + the TUI command window using tui_putc/tui_puts. */ +static void +tui_rl_display_match_list (matches, len, max) + char **matches; + int len, max; +{ + typedef int QSFUNC (const void *, const void *); + extern int _rl_qsort_string_compare (const void*, const void*); + extern int _rl_print_completions_horizontally; + + int count, limit, printed_len; + int i, j, k, l; + char *temp; + + /* Screen dimension correspond to the TUI command window. */ + int screenwidth = cmdWin->generic.width; + + /* If there are many items, then ask the user if she really wants to + see them all. */ + if (len >= rl_completion_query_items) + { + char msg[256]; + + sprintf (msg, "\nDisplay all %d possibilities? (y or n)", len); + tui_puts (msg); + if (get_y_or_n () == 0) + { + tui_puts ("\n"); + return; + } + } + + /* How many items of MAX length can we fit in the screen window? */ + max += 2; + limit = screenwidth / max; + if (limit != 1 && (limit * max == screenwidth)) + limit--; + + /* Avoid a possible floating exception. If max > screenwidth, + limit will be 0 and a divide-by-zero fault will result. */ + if (limit == 0) + limit = 1; + + /* How many iterations of the printing loop? */ + count = (len + (limit - 1)) / limit; + + /* Watch out for special case. If LEN is less than LIMIT, then + just do the inner printing loop. + 0 < len <= limit implies count = 1. */ + + /* Sort the items if they are not already sorted. */ + if (rl_ignore_completion_duplicates == 0) + qsort (matches + 1, len, sizeof (char *), + (QSFUNC *)_rl_qsort_string_compare); + + tui_putc ('\n'); + + if (_rl_print_completions_horizontally == 0) + { + /* Print the sorted items, up-and-down alphabetically, like ls. */ + for (i = 1; i <= count; i++) + { + for (j = 0, l = i; j < limit; j++) + { + if (l > len || matches[l] == 0) + break; + else + { + temp = printable_part (matches[l]); + printed_len = print_filename (temp, matches[l]); + + if (j + 1 < limit) + for (k = 0; k < max - printed_len; k++) + tui_putc (' '); + } + l += count; + } + tui_putc ('\n'); + } + } + else + { + /* Print the sorted items, across alphabetically, like ls -x. */ + for (i = 1; matches[i]; i++) + { + temp = printable_part (matches[i]); + printed_len = print_filename (temp, matches[i]); + /* Have we reached the end of this line? */ + if (matches[i+1]) + { + if (i && (limit > 1) && (i % limit) == 0) + tui_putc ('\n'); + else + for (k = 0; k < max - printed_len; k++) + tui_putc (' '); + } + } + tui_putc ('\n'); + } +} + +/* Setup the IO for curses or non-curses mode. + - In non-curses mode, readline and gdb use the standard input and + standard output/error directly. + - In curses mode, the standard output/error is controlled by TUI + with the tui_stdout and tui_stderr. The output is redirected in + the curses command window. Several readline callbacks are installed + so that readline asks for its input to the curses command window + with wgetch(). */ +void +tui_setup_io (int mode) +{ + extern int readline_echoing_p; + + if (mode) + { + /* Redirect readline to TUI. */ + tui_old_rl_redisplay_function = rl_redisplay_function; + tui_old_rl_deprep_terminal = rl_deprep_term_function; + tui_old_rl_prep_terminal = rl_prep_term_function; + tui_old_rl_getc_function = rl_getc_function; + tui_old_rl_outstream = rl_outstream; + tui_old_readline_echoing_p = readline_echoing_p; + rl_redisplay_function = tui_redisplay_readline; + rl_deprep_term_function = tui_deprep_terminal; + rl_prep_term_function = tui_prep_terminal; + rl_getc_function = tui_getc; + readline_echoing_p = 0; + rl_outstream = tui_rl_outstream; + rl_prompt = 0; + rl_completion_display_matches_hook = tui_rl_display_match_list; + rl_already_prompted = 0; + + /* Keep track of previous gdb output. */ + tui_old_stdout = gdb_stdout; + tui_old_stderr = gdb_stderr; + tui_old_uiout = uiout; + + /* Reconfigure gdb output. */ + gdb_stdout = tui_stdout; + gdb_stderr = tui_stderr; + gdb_stdlog = gdb_stdout; /* for moment */ + gdb_stdtarg = gdb_stderr; /* for moment */ + uiout = tui_out; + + /* Save tty for SIGCONT. */ + savetty (); + } + else + { + /* Restore gdb output. */ + gdb_stdout = tui_old_stdout; + gdb_stderr = tui_old_stderr; + gdb_stdlog = gdb_stdout; /* for moment */ + gdb_stdtarg = gdb_stderr; /* for moment */ + uiout = tui_old_uiout; + + /* Restore readline. */ + rl_redisplay_function = tui_old_rl_redisplay_function; + rl_deprep_term_function = tui_old_rl_deprep_terminal; + rl_prep_term_function = tui_old_rl_prep_terminal; + rl_getc_function = tui_old_rl_getc_function; + rl_outstream = tui_old_rl_outstream; + rl_completion_display_matches_hook = 0; + readline_echoing_p = tui_old_readline_echoing_p; + rl_already_prompted = 0; + + /* Save tty for SIGCONT. */ + savetty (); + } +} + +#ifdef SIGCONT +/* Catch SIGCONT to restore the terminal and refresh the screen. */ +static void +tui_cont_sig (int sig) +{ + if (tui_active) + { + /* Restore the terminal setting because another process (shell) + might have changed it. */ + resetty (); + + /* Force a refresh of the screen. */ + tuiRefreshAll (); + + /* Update cursor position on the screen. */ + wmove (cmdWin->generic.handle, + cmdWin->detail.commandInfo.start_line, + cmdWin->detail.commandInfo.curch); + wrefresh (cmdWin->generic.handle); + } + signal (sig, tui_cont_sig); +} +#endif + +/* Initialize the IO for gdb in curses mode. */ +void +tui_initialize_io () +{ +#ifdef SIGCONT + signal (SIGCONT, tui_cont_sig); +#endif + + /* Create tui output streams. */ + tui_stdout = tui_fileopen (stdout); + tui_stderr = tui_fileopen (stderr); + tui_out = tui_out_new (tui_stdout); + + /* Create the default UI. It is not created because we installed + a init_ui_hook. */ + tui_old_uiout = uiout = cli_out_new (gdb_stdout); + +#ifdef TUI_USE_PIPE_FOR_READLINE + /* Temporary solution for readline writing to stdout: + redirect readline output in a pipe, read that pipe and + output the content in the curses command window. */ + if (pipe (tui_readline_pipe) != 0) + { + fprintf_unfiltered (gdb_stderr, "Cannot create pipe for readline"); + exit (1); + } + tui_rl_outstream = fdopen (tui_readline_pipe[1], "w"); + if (tui_rl_outstream == 0) + { + fprintf_unfiltered (gdb_stderr, "Cannot redirect readline output"); + exit (1); + } + setvbuf (tui_rl_outstream, (char*) NULL, _IOLBF, 0); + +#ifdef O_NONBLOCK + (void) fcntl (tui_readline_pipe[0], F_SETFL, O_NONBLOCK); +#else +#ifdef O_NDELAY + (void) fcntl (tui_readline_pipe[0], F_SETFL, O_NDELAY); +#endif +#endif + add_file_handler (tui_readline_pipe[0], tui_readline_output, 0); +#else + tui_rl_outstream = stdout; +#endif +} + +/* Get a character from the command window. This is called from the readline + package. */ +int +tui_getc (FILE *fp) +{ + int ch; + WINDOW *w; + + w = cmdWin->generic.handle; + +#ifdef TUI_USE_PIPE_FOR_READLINE + /* Flush readline output. */ + tui_readline_output (GDB_READABLE, 0); +#endif + + ch = wgetch (w); + ch = _tuiHandleResizeDuringIO (ch); + + /* The \n must be echoed because it will not be printed by readline. */ + if (ch == '\n') + { + /* When hitting return with an empty input, gdb executes the last + command. If we emit a newline, this fills up the command window + with empty lines with gdb prompt at beginning. Instead of that, + stay on the same line but provide a visual effect to show the + user we recognized the command. */ + if (rl_end == 0) + { + wmove (w, cmdWin->detail.commandInfo.curLine, 0); + + /* Clear the line. This will blink the gdb prompt since + it will be redrawn at the same line. */ + wclrtoeol (w); + wrefresh (w); + napms (20); + } + else + { + wmove (w, cmdWin->detail.commandInfo.curLine, + cmdWin->detail.commandInfo.curch); + waddch (w, ch); + } + } + + if (key_is_command_char (ch)) + { /* Handle prev/next/up/down here */ + ch = tui_dispatch_ctrl_char (ch); + } + + if (ch == '\n' || ch == '\r' || ch == '\f') + cmdWin->detail.commandInfo.curch = 0; +#if 0 + else + tuiIncrCommandCharCountBy (1); +#endif + if (ch == KEY_BACKSPACE) + return '\b'; + + return ch; +} + + +/* Cleanup when a resize has occured. + Returns the character that must be processed. */ +static unsigned int +_tuiHandleResizeDuringIO (unsigned int originalCh) +{ + if (tuiWinResized ()) + { + tuiRefreshAll (); + dont_repeat (); + tuiSetWinResizedTo (FALSE); + return '\n'; + } + else + return originalCh; +} diff --git a/gdb/tui/tui-io.h b/gdb/tui/tui-io.h new file mode 100644 index 00000000000..06d085de93f --- /dev/null +++ b/gdb/tui/tui-io.h @@ -0,0 +1,55 @@ +/* TUI support I/O functions. + + Copyright 1998, 1999, 2000, 2001, 2002, 2004 Free Software + Foundation, Inc. + + Contributed by Hewlett-Packard Company. + + This file is part of GDB. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. */ + +#ifndef TUI_IO_H +#define TUI_IO_H + +struct ui_out; + +/* Print the string in the curses command window. */ +extern void tui_puts (const char *); + +/* Setup the IO for curses or non-curses mode. */ +extern void tui_setup_io (int mode); + +/* Initialize the IO for gdb in curses mode. */ +extern void tui_initialize_io (void); + +/* Get a character from the command window. */ +extern int tui_getc (FILE *); + +/* Readline callback. + Redisplay the command line with its prompt after readline has + changed the edited text. */ +extern void tui_redisplay_readline (void); + +extern struct ui_out *tui_out; +extern struct ui_out *tui_old_uiout; + +extern int key_is_start_sequence (int ch); +extern int key_is_end_sequence (int ch); +extern int key_is_backspace (int ch); +extern int key_is_command_char (int ch); + +#endif diff --git a/gdb/tui/tui-layout.c b/gdb/tui/tui-layout.c new file mode 100644 index 00000000000..38d8de57a00 --- /dev/null +++ b/gdb/tui/tui-layout.c @@ -0,0 +1,1140 @@ +/* TUI layout window management. + + Copyright 1998, 1999, 2000, 2001, 2002, 2003, 2004 Free Software + Foundation, Inc. + + Contributed by Hewlett-Packard Company. + + This file is part of GDB. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. */ + +#include "defs.h" +#include "command.h" +#include "symtab.h" +#include "frame.h" +#include "source.h" +#include <ctype.h> + +#include "tui/tui.h" +#include "tui/tui-data.h" +#include "tui/tui-windata.h" +#include "tui/tui-wingeneral.h" +#include "tui/tui-stack.h" +#include "tui/tui-regs.h" +#include "tui/tui-win.h" +#include "tui/tui-winsource.h" +#include "tui/tui-disasm.h" + +#ifdef HAVE_NCURSES_H +#include <ncurses.h> +#else +#ifdef HAVE_CURSES_H +#include <curses.h> +#endif +#endif + +/******************************* +** Static Local Decls +********************************/ +static void showLayout (TuiLayoutType); +static void _initGenWinInfo (TuiGenWinInfoPtr, TuiWinType, int, int, int, int); +static void _initAndMakeWin (Opaque *, TuiWinType, int, int, int, int, int); +static void _showSourceOrDisassemAndCommand (TuiLayoutType); +static void _makeSourceOrDisassemWindow (TuiWinInfoPtr *, TuiWinType, int, int); +static void _makeCommandWindow (TuiWinInfoPtr *, int, int); +static void _makeSourceWindow (TuiWinInfoPtr *, int, int); +static void _makeDisassemWindow (TuiWinInfoPtr *, int, int); +static void _makeDataWindow (TuiWinInfoPtr *, int, int); +static void _showSourceCommand (void); +static void _showDisassemCommand (void); +static void _showSourceDisassemCommand (void); +static void _showData (TuiLayoutType); +static TuiLayoutType _nextLayout (void); +static TuiLayoutType _prevLayout (void); +static void _tuiLayout_command (char *, int); +static void _tuiToggleLayout_command (char *, int); +static void _tuiToggleSplitLayout_command (char *, int); +static CORE_ADDR _extractDisplayStartAddr (void); +static void _tuiHandleXDBLayout (TuiLayoutDefPtr); + + +/*************************************** +** DEFINITIONS +***************************************/ + +#define LAYOUT_USAGE "Usage: layout prev | next | <layout_name> \n" + +/* Show the screen layout defined. */ +static void +showLayout (TuiLayoutType layout) +{ + TuiLayoutType curLayout = currentLayout (); + + if (layout != curLayout) + { + /* + ** Since the new layout may cause changes in window size, we + ** should free the content and reallocate on next display of + ** source/asm + */ + freeAllSourceWinsContent (); + clearSourceWindows (); + if (layout == SRC_DATA_COMMAND || layout == DISASSEM_DATA_COMMAND) + { + _showData (layout); + refreshAll (winList); + } + else + { + /* First make the current layout be invisible */ + m_allBeInvisible (); + m_beInvisible (locatorWinInfoPtr ()); + + switch (layout) + { + /* Now show the new layout */ + case SRC_COMMAND: + _showSourceCommand (); + addToSourceWindows (srcWin); + break; + case DISASSEM_COMMAND: + _showDisassemCommand (); + addToSourceWindows (disassemWin); + break; + case SRC_DISASSEM_COMMAND: + _showSourceDisassemCommand (); + addToSourceWindows (srcWin); + addToSourceWindows (disassemWin); + break; + default: + break; + } + } + } +} + + +/* Function to set the layout to SRC_COMMAND, DISASSEM_COMMAND, + SRC_DISASSEM_COMMAND, SRC_DATA_COMMAND, or DISASSEM_DATA_COMMAND. + If the layout is SRC_DATA_COMMAND, DISASSEM_DATA_COMMAND, or + UNDEFINED_LAYOUT, then the data window is populated according to + regsDisplayType. */ +enum tui_status +tui_set_layout (enum tui_layout_type layoutType, + enum tui_register_display_type regsDisplayType) +{ + TuiStatus status = TUI_SUCCESS; + + if (layoutType != UNDEFINED_LAYOUT || regsDisplayType != TUI_UNDEFINED_REGS) + { + TuiLayoutType curLayout = currentLayout (), newLayout = UNDEFINED_LAYOUT; + int regsPopulate = FALSE; + CORE_ADDR addr = _extractDisplayStartAddr (); + TuiWinInfoPtr newWinWithFocus = (TuiWinInfoPtr) NULL, winWithFocus = tuiWinWithFocus (); + TuiLayoutDefPtr layoutDef = tuiLayoutDef (); + + + if (layoutType == UNDEFINED_LAYOUT && + regsDisplayType != TUI_UNDEFINED_REGS) + { + if (curLayout == SRC_DISASSEM_COMMAND) + newLayout = DISASSEM_DATA_COMMAND; + else if (curLayout == SRC_COMMAND || curLayout == SRC_DATA_COMMAND) + newLayout = SRC_DATA_COMMAND; + else if (curLayout == DISASSEM_COMMAND || + curLayout == DISASSEM_DATA_COMMAND) + newLayout = DISASSEM_DATA_COMMAND; + } + else + newLayout = layoutType; + + regsPopulate = (newLayout == SRC_DATA_COMMAND || + newLayout == DISASSEM_DATA_COMMAND || + regsDisplayType != TUI_UNDEFINED_REGS); + if (newLayout != curLayout || regsDisplayType != TUI_UNDEFINED_REGS) + { + if (newLayout != curLayout) + { + showLayout (newLayout); + /* + ** Now determine where focus should be + */ + if (winWithFocus != cmdWin) + { + switch (newLayout) + { + case SRC_COMMAND: + tuiSetWinFocusTo (srcWin); + layoutDef->displayMode = SRC_WIN; + layoutDef->split = FALSE; + break; + case DISASSEM_COMMAND: + /* the previous layout was not showing + ** code. this can happen if there is no + ** source available: + ** 1. if the source file is in another dir OR + ** 2. if target was compiled without -g + ** We still want to show the assembly though! + */ + addr = tui_get_begin_asm_address (); + tuiSetWinFocusTo (disassemWin); + layoutDef->displayMode = DISASSEM_WIN; + layoutDef->split = FALSE; + break; + case SRC_DISASSEM_COMMAND: + /* the previous layout was not showing + ** code. this can happen if there is no + ** source available: + ** 1. if the source file is in another dir OR + ** 2. if target was compiled without -g + ** We still want to show the assembly though! + */ + addr = tui_get_begin_asm_address (); + if (winWithFocus == srcWin) + tuiSetWinFocusTo (srcWin); + else + tuiSetWinFocusTo (disassemWin); + layoutDef->split = TRUE; + break; + case SRC_DATA_COMMAND: + if (winWithFocus != dataWin) + tuiSetWinFocusTo (srcWin); + else + tuiSetWinFocusTo (dataWin); + layoutDef->displayMode = SRC_WIN; + layoutDef->split = FALSE; + break; + case DISASSEM_DATA_COMMAND: + /* the previous layout was not showing + ** code. this can happen if there is no + ** source available: + ** 1. if the source file is in another dir OR + ** 2. if target was compiled without -g + ** We still want to show the assembly though! + */ + addr = tui_get_begin_asm_address (); + if (winWithFocus != dataWin) + tuiSetWinFocusTo (disassemWin); + else + tuiSetWinFocusTo (dataWin); + layoutDef->displayMode = DISASSEM_WIN; + layoutDef->split = FALSE; + break; + default: + break; + } + } + if (newWinWithFocus != (TuiWinInfoPtr) NULL) + tuiSetWinFocusTo (newWinWithFocus); + /* + ** Now update the window content + */ + if (!regsPopulate && + (newLayout == SRC_DATA_COMMAND || + newLayout == DISASSEM_DATA_COMMAND)) + tuiDisplayAllData (); + + tuiUpdateSourceWindowsWithAddr (addr); + } + if (regsPopulate) + { + layoutDef->regsDisplayType = + (regsDisplayType == TUI_UNDEFINED_REGS ? + TUI_GENERAL_REGS : regsDisplayType); + tui_show_registers (layoutDef->regsDisplayType); + } + } + } + else + status = TUI_FAILURE; + + return status; +} + +/* Add the specified window to the layout in a logical way. This + means setting up the most logical layout given the window to be + added. */ +void +tui_add_win_to_layout (enum tui_win_type type) +{ + TuiLayoutType curLayout = currentLayout (); + + switch (type) + { + case SRC_WIN: + if (curLayout != SRC_COMMAND && + curLayout != SRC_DISASSEM_COMMAND && + curLayout != SRC_DATA_COMMAND) + { + clearSourceWindowsDetail (); + if (curLayout == DISASSEM_DATA_COMMAND) + showLayout (SRC_DATA_COMMAND); + else + showLayout (SRC_COMMAND); + } + break; + case DISASSEM_WIN: + if (curLayout != DISASSEM_COMMAND && + curLayout != SRC_DISASSEM_COMMAND && + curLayout != DISASSEM_DATA_COMMAND) + { + clearSourceWindowsDetail (); + if (curLayout == SRC_DATA_COMMAND) + showLayout (DISASSEM_DATA_COMMAND); + else + showLayout (DISASSEM_COMMAND); + } + break; + case DATA_WIN: + if (curLayout != SRC_DATA_COMMAND && + curLayout != DISASSEM_DATA_COMMAND) + { + if (curLayout == DISASSEM_COMMAND) + showLayout (DISASSEM_DATA_COMMAND); + else + showLayout (SRC_DATA_COMMAND); + } + break; + default: + break; + } + + return; +} /* tuiAddWinToLayout */ + + +/* + ** tuiDefaultWinHeight(). + ** Answer the height of a window. If it hasn't been created yet, + ** answer what the height of a window would be based upon its + ** type and the layout. + */ +int +tuiDefaultWinHeight (TuiWinType type, TuiLayoutType layout) +{ + int h; + + if (winList[type] != (TuiWinInfoPtr) NULL) + h = winList[type]->generic.height; + else + { + switch (layout) + { + case SRC_COMMAND: + case DISASSEM_COMMAND: + if (m_winPtrIsNull (cmdWin)) + h = termHeight () / 2; + else + h = termHeight () - cmdWin->generic.height; + break; + case SRC_DISASSEM_COMMAND: + case SRC_DATA_COMMAND: + case DISASSEM_DATA_COMMAND: + if (m_winPtrIsNull (cmdWin)) + h = termHeight () / 3; + else + h = (termHeight () - cmdWin->generic.height) / 2; + break; + default: + h = 0; + break; + } + } + + return h; +} /* tuiDefaultWinHeight */ + + +/* Answer the height of a window. If it hasn't been created yet, + answer what the height of a window would be based upon its type and + the layout. */ +int +tui_default_win_viewport_height (enum tui_win_type type, + enum tui_layout_type layout) +{ + int h; + + h = tuiDefaultWinHeight (type, layout); + + if (winList[type] == cmdWin) + h -= 1; + else + h -= 2; + + return h; +} /* tuiDefaultWinViewportHeight */ + + +/* + ** _initialize_tuiLayout(). + ** Function to initialize gdb commands, for tui window layout + ** manipulation. + */ +void +_initialize_tuiLayout (void) +{ + add_com ("layout", class_tui, _tuiLayout_command, + "Change the layout of windows.\n\ +Usage: layout prev | next | <layout_name> \n\ +Layout names are:\n\ + src : Displays source and command windows.\n\ + asm : Displays disassembly and command windows.\n\ + split : Displays source, disassembly and command windows.\n\ + regs : Displays register window. If existing layout\n\ + is source/command or assembly/command, the \n\ + register window is displayed. If the\n\ + source/assembly/command (split) is displayed, \n\ + the register window is displayed with \n\ + the window that has current logical focus.\n"); + if (xdb_commands) + { + add_com ("td", class_tui, _tuiToggleLayout_command, + "Toggle between Source/Command and Disassembly/Command layouts.\n"); + add_com ("ts", class_tui, _tuiToggleSplitLayout_command, + "Toggle between Source/Command or Disassembly/Command and \n\ +Source/Disassembly/Command layouts.\n"); + } +} + + +/************************* +** STATIC LOCAL FUNCTIONS +**************************/ + + +/* + ** _tuiSetLayoutTo() + ** Function to set the layout to SRC, ASM, SPLIT, NEXT, PREV, DATA, REGS, + ** $REGS, $GREGS, $FREGS, $SREGS. + */ +TuiStatus +tui_set_layout_for_display_command (const char *layoutName) +{ + TuiStatus status = TUI_SUCCESS; + + if (layoutName != (char *) NULL) + { + register int i; + register char *bufPtr; + TuiLayoutType newLayout = UNDEFINED_LAYOUT; + TuiRegisterDisplayType dpyType = TUI_UNDEFINED_REGS; + TuiLayoutType curLayout = currentLayout (); + + bufPtr = (char *) xstrdup (layoutName); + for (i = 0; (i < strlen (layoutName)); i++) + bufPtr[i] = toupper (bufPtr[i]); + + /* First check for ambiguous input */ + if (strlen (bufPtr) <= 1 && (*bufPtr == 'S' || *bufPtr == '$')) + { + warning ("Ambiguous command input.\n"); + status = TUI_FAILURE; + } + else + { + if (subset_compare (bufPtr, "SRC")) + newLayout = SRC_COMMAND; + else if (subset_compare (bufPtr, "ASM")) + newLayout = DISASSEM_COMMAND; + else if (subset_compare (bufPtr, "SPLIT")) + newLayout = SRC_DISASSEM_COMMAND; + else if (subset_compare (bufPtr, "REGS") || + subset_compare (bufPtr, TUI_GENERAL_SPECIAL_REGS_NAME) || + subset_compare (bufPtr, TUI_GENERAL_REGS_NAME) || + subset_compare (bufPtr, TUI_FLOAT_REGS_NAME) || + subset_compare (bufPtr, TUI_SPECIAL_REGS_NAME)) + { + if (curLayout == SRC_COMMAND || curLayout == SRC_DATA_COMMAND) + newLayout = SRC_DATA_COMMAND; + else + newLayout = DISASSEM_DATA_COMMAND; + +/* could ifdef out the following code. when compile with -z, there are null + pointer references that cause a core dump if 'layout regs' is the first + layout command issued by the user. HP has asked us to hook up this code + - edie epstein + */ + if (subset_compare (bufPtr, TUI_FLOAT_REGS_NAME)) + { + if (dataWin->detail.dataDisplayInfo.regsDisplayType != + TUI_SFLOAT_REGS && + dataWin->detail.dataDisplayInfo.regsDisplayType != + TUI_DFLOAT_REGS) + dpyType = TUI_SFLOAT_REGS; + else + dpyType = + dataWin->detail.dataDisplayInfo.regsDisplayType; + } + else if (subset_compare (bufPtr, + TUI_GENERAL_SPECIAL_REGS_NAME)) + dpyType = TUI_GENERAL_AND_SPECIAL_REGS; + else if (subset_compare (bufPtr, TUI_GENERAL_REGS_NAME)) + dpyType = TUI_GENERAL_REGS; + else if (subset_compare (bufPtr, TUI_SPECIAL_REGS_NAME)) + dpyType = TUI_SPECIAL_REGS; + else if (dataWin) + { + if (dataWin->detail.dataDisplayInfo.regsDisplayType != + TUI_UNDEFINED_REGS) + dpyType = + dataWin->detail.dataDisplayInfo.regsDisplayType; + else + dpyType = TUI_GENERAL_REGS; + } + +/* end of potential ifdef + */ + +/* if ifdefed out code above, then assume that the user wishes to display the + general purpose registers + */ + +/* dpyType = TUI_GENERAL_REGS; + */ + } + else if (subset_compare (bufPtr, "NEXT")) + newLayout = _nextLayout (); + else if (subset_compare (bufPtr, "PREV")) + newLayout = _prevLayout (); + else + status = TUI_FAILURE; + xfree (bufPtr); + + tui_set_layout (newLayout, dpyType); + } + } + else + status = TUI_FAILURE; + + return status; +} + + +static CORE_ADDR +_extractDisplayStartAddr (void) +{ + TuiLayoutType curLayout = currentLayout (); + CORE_ADDR addr; + CORE_ADDR pc; + struct symtab_and_line cursal = get_current_source_symtab_and_line (); + + switch (curLayout) + { + case SRC_COMMAND: + case SRC_DATA_COMMAND: + find_line_pc (cursal.symtab, + srcWin->detail.sourceInfo.startLineOrAddr.lineNo, + &pc); + addr = pc; + break; + case DISASSEM_COMMAND: + case SRC_DISASSEM_COMMAND: + case DISASSEM_DATA_COMMAND: + addr = disassemWin->detail.sourceInfo.startLineOrAddr.addr; + break; + default: + addr = 0; + break; + } + + return addr; +} /* _extractDisplayStartAddr */ + + +static void +_tuiHandleXDBLayout (TuiLayoutDefPtr layoutDef) +{ + if (layoutDef->split) + { + tui_set_layout (SRC_DISASSEM_COMMAND, TUI_UNDEFINED_REGS); + tuiSetWinFocusTo (winList[layoutDef->displayMode]); + } + else + { + if (layoutDef->displayMode == SRC_WIN) + tui_set_layout (SRC_COMMAND, TUI_UNDEFINED_REGS); + else + tui_set_layout (DISASSEM_DATA_COMMAND, layoutDef->regsDisplayType); + } + + + return; +} /* _tuiHandleXDBLayout */ + + +static void +_tuiToggleLayout_command (char *arg, int fromTTY) +{ + TuiLayoutDefPtr layoutDef = tuiLayoutDef (); + + /* Make sure the curses mode is enabled. */ + tui_enable (); + if (layoutDef->displayMode == SRC_WIN) + layoutDef->displayMode = DISASSEM_WIN; + else + layoutDef->displayMode = SRC_WIN; + + if (!layoutDef->split) + _tuiHandleXDBLayout (layoutDef); + +} + + +static void +_tuiToggleSplitLayout_command (char *arg, int fromTTY) +{ + TuiLayoutDefPtr layoutDef = tuiLayoutDef (); + + /* Make sure the curses mode is enabled. */ + tui_enable (); + layoutDef->split = (!layoutDef->split); + _tuiHandleXDBLayout (layoutDef); + +} + + +static void +_tuiLayout_command (char *arg, int fromTTY) +{ + /* Make sure the curses mode is enabled. */ + tui_enable (); + + /* Switch to the selected layout. */ + if (tui_set_layout_for_display_command (arg) != TUI_SUCCESS) + warning ("Invalid layout specified.\n%s", LAYOUT_USAGE); + +} + +/* + ** _nextLayout(). + ** Answer the previous layout to cycle to. + */ +static TuiLayoutType +_nextLayout (void) +{ + TuiLayoutType newLayout; + + newLayout = currentLayout (); + if (newLayout == UNDEFINED_LAYOUT) + newLayout = SRC_COMMAND; + else + { + newLayout++; + if (newLayout == UNDEFINED_LAYOUT) + newLayout = SRC_COMMAND; + } + + return newLayout; +} /* _nextLayout */ + + +/* + ** _prevLayout(). + ** Answer the next layout to cycle to. + */ +static TuiLayoutType +_prevLayout (void) +{ + TuiLayoutType newLayout; + + newLayout = currentLayout (); + if (newLayout == SRC_COMMAND) + newLayout = DISASSEM_DATA_COMMAND; + else + { + newLayout--; + if (newLayout == UNDEFINED_LAYOUT) + newLayout = DISASSEM_DATA_COMMAND; + } + + return newLayout; +} /* _prevLayout */ + + + +/* + ** _makeCommandWindow(). + */ +static void +_makeCommandWindow (TuiWinInfoPtr * winInfoPtr, int height, int originY) +{ + _initAndMakeWin ((Opaque *) winInfoPtr, + CMD_WIN, + height, + termWidth (), + 0, + originY, + DONT_BOX_WINDOW); + + (*winInfoPtr)->canHighlight = FALSE; + + return; +} /* _makeCommandWindow */ + + +/* + ** _makeSourceWindow(). + */ +static void +_makeSourceWindow (TuiWinInfoPtr * winInfoPtr, int height, int originY) +{ + _makeSourceOrDisassemWindow (winInfoPtr, SRC_WIN, height, originY); + + return; +} /* _makeSourceWindow */ + + +/* + ** _makeDisassemWindow(). + */ +static void +_makeDisassemWindow (TuiWinInfoPtr * winInfoPtr, int height, int originY) +{ + _makeSourceOrDisassemWindow (winInfoPtr, DISASSEM_WIN, height, originY); + + return; +} /* _makeDisassemWindow */ + + +/* + ** _makeDataWindow(). + */ +static void +_makeDataWindow (TuiWinInfoPtr * winInfoPtr, int height, int originY) +{ + _initAndMakeWin ((Opaque *) winInfoPtr, + DATA_WIN, + height, + termWidth (), + 0, + originY, + BOX_WINDOW); + + return; +} /* _makeDataWindow */ + + + +/* + ** _showSourceCommand(). + ** Show the Source/Command layout + */ +static void +_showSourceCommand (void) +{ + _showSourceOrDisassemAndCommand (SRC_COMMAND); + + return; +} /* _showSourceCommand */ + + +/* + ** _showDisassemCommand(). + ** Show the Dissassem/Command layout + */ +static void +_showDisassemCommand (void) +{ + _showSourceOrDisassemAndCommand (DISASSEM_COMMAND); + + return; +} /* _showDisassemCommand */ + + +/* + ** _showSourceDisassemCommand(). + ** Show the Source/Disassem/Command layout + */ +static void +_showSourceDisassemCommand (void) +{ + if (currentLayout () != SRC_DISASSEM_COMMAND) + { + int cmdHeight, srcHeight, asmHeight; + + if (m_winPtrNotNull (cmdWin)) + cmdHeight = cmdWin->generic.height; + else + cmdHeight = termHeight () / 3; + + srcHeight = (termHeight () - cmdHeight) / 2; + asmHeight = termHeight () - (srcHeight + cmdHeight); + + if (m_winPtrIsNull (srcWin)) + _makeSourceWindow (&srcWin, srcHeight, 0); + else + { + _initGenWinInfo (&srcWin->generic, + srcWin->generic.type, + srcHeight, + srcWin->generic.width, + srcWin->detail.sourceInfo.executionInfo->width, + 0); + srcWin->canHighlight = TRUE; + _initGenWinInfo (srcWin->detail.sourceInfo.executionInfo, + EXEC_INFO_WIN, + srcHeight, + 3, + 0, + 0); + m_beVisible (srcWin); + m_beVisible (srcWin->detail.sourceInfo.executionInfo); + srcWin->detail.sourceInfo.hasLocator = FALSE;; + } + if (m_winPtrNotNull (srcWin)) + { + TuiGenWinInfoPtr locator = locatorWinInfoPtr (); + + tuiShowSourceContent (srcWin); + if (m_winPtrIsNull (disassemWin)) + { + _makeDisassemWindow (&disassemWin, asmHeight, srcHeight - 1); + _initAndMakeWin ((Opaque *) & locator, + LOCATOR_WIN, + 2 /* 1 */ , + termWidth (), + 0, + (srcHeight + asmHeight) - 1, + DONT_BOX_WINDOW); + } + else + { + _initGenWinInfo (locator, + LOCATOR_WIN, + 2 /* 1 */ , + termWidth (), + 0, + (srcHeight + asmHeight) - 1); + disassemWin->detail.sourceInfo.hasLocator = TRUE; + _initGenWinInfo ( + &disassemWin->generic, + disassemWin->generic.type, + asmHeight, + disassemWin->generic.width, + disassemWin->detail.sourceInfo.executionInfo->width, + srcHeight - 1); + _initGenWinInfo (disassemWin->detail.sourceInfo.executionInfo, + EXEC_INFO_WIN, + asmHeight, + 3, + 0, + srcHeight - 1); + disassemWin->canHighlight = TRUE; + m_beVisible (disassemWin); + m_beVisible (disassemWin->detail.sourceInfo.executionInfo); + } + if (m_winPtrNotNull (disassemWin)) + { + srcWin->detail.sourceInfo.hasLocator = FALSE; + disassemWin->detail.sourceInfo.hasLocator = TRUE; + m_beVisible (locator); + tuiShowLocatorContent (); + tuiShowSourceContent (disassemWin); + + if (m_winPtrIsNull (cmdWin)) + _makeCommandWindow (&cmdWin, + cmdHeight, + termHeight () - cmdHeight); + else + { + _initGenWinInfo (&cmdWin->generic, + cmdWin->generic.type, + cmdWin->generic.height, + cmdWin->generic.width, + 0, + cmdWin->generic.origin.y); + cmdWin->canHighlight = FALSE; + m_beVisible (cmdWin); + } + if (m_winPtrNotNull (cmdWin)) + tuiRefreshWin (&cmdWin->generic); + } + } + setCurrentLayoutTo (SRC_DISASSEM_COMMAND); + } + + return; +} /* _showSourceDisassemCommand */ + + +/* + ** _showData(). + ** Show the Source/Data/Command or the Dissassembly/Data/Command layout + */ +static void +_showData (TuiLayoutType newLayout) +{ + int totalHeight = (termHeight () - cmdWin->generic.height); + int srcHeight, dataHeight; + TuiWinType winType; + TuiGenWinInfoPtr locator = locatorWinInfoPtr (); + + + dataHeight = totalHeight / 2; + srcHeight = totalHeight - dataHeight; + m_allBeInvisible (); + m_beInvisible (locator); + _makeDataWindow (&dataWin, dataHeight, 0); + dataWin->canHighlight = TRUE; + if (newLayout == SRC_DATA_COMMAND) + winType = SRC_WIN; + else + winType = DISASSEM_WIN; + if (m_winPtrIsNull (winList[winType])) + { + if (winType == SRC_WIN) + _makeSourceWindow (&winList[winType], srcHeight, dataHeight - 1); + else + _makeDisassemWindow (&winList[winType], srcHeight, dataHeight - 1); + _initAndMakeWin ((Opaque *) & locator, + LOCATOR_WIN, + 2 /* 1 */ , + termWidth (), + 0, + totalHeight - 1, + DONT_BOX_WINDOW); + } + else + { + _initGenWinInfo (&winList[winType]->generic, + winList[winType]->generic.type, + srcHeight, + winList[winType]->generic.width, + winList[winType]->detail.sourceInfo.executionInfo->width, + dataHeight - 1); + _initGenWinInfo (winList[winType]->detail.sourceInfo.executionInfo, + EXEC_INFO_WIN, + srcHeight, + 3, + 0, + dataHeight - 1); + m_beVisible (winList[winType]); + m_beVisible (winList[winType]->detail.sourceInfo.executionInfo); + _initGenWinInfo (locator, + LOCATOR_WIN, + 2 /* 1 */ , + termWidth (), + 0, + totalHeight - 1); + } + winList[winType]->detail.sourceInfo.hasLocator = TRUE; + m_beVisible (locator); + tuiShowLocatorContent (); + addToSourceWindows (winList[winType]); + setCurrentLayoutTo (newLayout); + + return; +} /* _showData */ + +/* + ** _initGenWinInfo(). + */ +static void +_initGenWinInfo (TuiGenWinInfoPtr winInfo, TuiWinType type, + int height, int width, int originX, int originY) +{ + int h = height; + + winInfo->type = type; + winInfo->width = width; + winInfo->height = h; + if (h > 1) + { + winInfo->viewportHeight = h - 1; + if (winInfo->type != CMD_WIN) + winInfo->viewportHeight--; + } + else + winInfo->viewportHeight = 1; + winInfo->origin.x = originX; + winInfo->origin.y = originY; + + return; +} /* _initGenWinInfo */ + +/* + ** _initAndMakeWin(). + */ +static void +_initAndMakeWin (Opaque * winInfoPtr, TuiWinType winType, + int height, int width, int originX, int originY, int boxIt) +{ + Opaque opaqueWinInfo = *winInfoPtr; + TuiGenWinInfoPtr generic; + + if (opaqueWinInfo == (Opaque) NULL) + { + if (m_winIsAuxillary (winType)) + opaqueWinInfo = (Opaque) allocGenericWinInfo (); + else + opaqueWinInfo = (Opaque) allocWinInfo (winType); + } + if (m_winIsAuxillary (winType)) + generic = (TuiGenWinInfoPtr) opaqueWinInfo; + else + generic = &((TuiWinInfoPtr) opaqueWinInfo)->generic; + + if (opaqueWinInfo != (Opaque) NULL) + { + _initGenWinInfo (generic, winType, height, width, originX, originY); + if (!m_winIsAuxillary (winType)) + { + if (generic->type == CMD_WIN) + ((TuiWinInfoPtr) opaqueWinInfo)->canHighlight = FALSE; + else + ((TuiWinInfoPtr) opaqueWinInfo)->canHighlight = TRUE; + } + makeWindow (generic, boxIt); + } + *winInfoPtr = opaqueWinInfo; +} + + +/* + ** _makeSourceOrDisassemWindow(). + */ +static void +_makeSourceOrDisassemWindow (TuiWinInfoPtr * winInfoPtr, TuiWinType type, + int height, int originY) +{ + TuiGenWinInfoPtr executionInfo = (TuiGenWinInfoPtr) NULL; + + /* + ** Create the exeuction info window. + */ + if (type == SRC_WIN) + executionInfo = sourceExecInfoWinPtr (); + else + executionInfo = disassemExecInfoWinPtr (); + _initAndMakeWin ((Opaque *) & executionInfo, + EXEC_INFO_WIN, + height, + 3, + 0, + originY, + DONT_BOX_WINDOW); + /* + ** Now create the source window. + */ + _initAndMakeWin ((Opaque *) winInfoPtr, + type, + height, + termWidth () - executionInfo->width, + executionInfo->width, + originY, + BOX_WINDOW); + + (*winInfoPtr)->detail.sourceInfo.executionInfo = executionInfo; + + return; +} /* _makeSourceOrDisassemWindow */ + + +/* + ** _showSourceOrDisassemAndCommand(). + ** Show the Source/Command or the Disassem layout + */ +static void +_showSourceOrDisassemAndCommand (TuiLayoutType layoutType) +{ + if (currentLayout () != layoutType) + { + TuiWinInfoPtr *winInfoPtr; + int srcHeight, cmdHeight; + TuiGenWinInfoPtr locator = locatorWinInfoPtr (); + + if (m_winPtrNotNull (cmdWin)) + cmdHeight = cmdWin->generic.height; + else + cmdHeight = termHeight () / 3; + srcHeight = termHeight () - cmdHeight; + + + if (layoutType == SRC_COMMAND) + winInfoPtr = &srcWin; + else + winInfoPtr = &disassemWin; + + if (m_winPtrIsNull (*winInfoPtr)) + { + if (layoutType == SRC_COMMAND) + _makeSourceWindow (winInfoPtr, srcHeight - 1, 0); + else + _makeDisassemWindow (winInfoPtr, srcHeight - 1, 0); + _initAndMakeWin ((Opaque *) & locator, + LOCATOR_WIN, + 2 /* 1 */ , + termWidth (), + 0, + srcHeight - 1, + DONT_BOX_WINDOW); + } + else + { + _initGenWinInfo (locator, + LOCATOR_WIN, + 2 /* 1 */ , + termWidth (), + 0, + srcHeight - 1); + (*winInfoPtr)->detail.sourceInfo.hasLocator = TRUE; + _initGenWinInfo ( + &(*winInfoPtr)->generic, + (*winInfoPtr)->generic.type, + srcHeight - 1, + (*winInfoPtr)->generic.width, + (*winInfoPtr)->detail.sourceInfo.executionInfo->width, + 0); + _initGenWinInfo ((*winInfoPtr)->detail.sourceInfo.executionInfo, + EXEC_INFO_WIN, + srcHeight - 1, + 3, + 0, + 0); + (*winInfoPtr)->canHighlight = TRUE; + m_beVisible (*winInfoPtr); + m_beVisible ((*winInfoPtr)->detail.sourceInfo.executionInfo); + } + if (m_winPtrNotNull (*winInfoPtr)) + { + (*winInfoPtr)->detail.sourceInfo.hasLocator = TRUE; + m_beVisible (locator); + tuiShowLocatorContent (); + tuiShowSourceContent (*winInfoPtr); + + if (m_winPtrIsNull (cmdWin)) + { + _makeCommandWindow (&cmdWin, cmdHeight, srcHeight); + tuiRefreshWin (&cmdWin->generic); + } + else + { + _initGenWinInfo (&cmdWin->generic, + cmdWin->generic.type, + cmdWin->generic.height, + cmdWin->generic.width, + cmdWin->generic.origin.x, + cmdWin->generic.origin.y); + cmdWin->canHighlight = FALSE; + m_beVisible (cmdWin); + } + } + setCurrentLayoutTo (layoutType); + } + + return; +} /* _showSourceOrDisassemAndCommand */ diff --git a/gdb/tui/tui-layout.h b/gdb/tui/tui-layout.h new file mode 100644 index 00000000000..5df1f0be9f1 --- /dev/null +++ b/gdb/tui/tui-layout.h @@ -0,0 +1,38 @@ +/* TUI layout window management. + + Copyright 1998, 1999, 2000, 2001, 2002, 2004 Free Software + Foundation, Inc. + + Contributed by Hewlett-Packard Company. + + This file is part of GDB. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. */ + +#ifndef TUI_LAYOUT_H +#define TUI_LAYOUT_H + +#include "tui/tui.h" +#include "tui/tui-data.h" + +extern void tui_add_win_to_layout (enum tui_win_type); +extern int tui_default_win_height (enum tui_win_type, enum tui_layout_type); +extern int tui_default_win_viewport_height (enum tui_win_type, + enum tui_layout_type); +extern enum tui_status tui_set_layout (enum tui_layout_type, + enum tui_register_display_type); + +#endif /*TUI_LAYOUT_H */ diff --git a/gdb/tui/tui-regs.c b/gdb/tui/tui-regs.c new file mode 100644 index 00000000000..68520b9f6eb --- /dev/null +++ b/gdb/tui/tui-regs.c @@ -0,0 +1,1023 @@ +/* TUI display registers in window. + + Copyright 1998, 1999, 2000, 2001, 2002, 2003, 2004 Free Software + Foundation, Inc. + + Contributed by Hewlett-Packard Company. + + This file is part of GDB. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. */ + +#include "defs.h" +#include "tui/tui.h" +#include "tui/tui-data.h" +#include "symtab.h" +#include "gdbtypes.h" +#include "gdbcmd.h" +#include "frame.h" +#include "regcache.h" +#include "inferior.h" +#include "target.h" +#include "tui/tui-layout.h" +#include "tui/tui-win.h" +#include "tui/tui-windata.h" +#include "tui/tui-wingeneral.h" +#include "tui/tui-file.h" + +#ifdef HAVE_NCURSES_H +#include <ncurses.h> +#else +#ifdef HAVE_CURSES_H +#include <curses.h> +#endif +#endif + +/***************************************** +** LOCAL DEFINITIONS ** +******************************************/ +#define DOUBLE_FLOAT_LABEL_WIDTH 6 +#define DOUBLE_FLOAT_LABEL_FMT "%6.6s: " +#define DOUBLE_FLOAT_VALUE_WIDTH 30 /*min of 16 but may be in sci notation */ + +#define SINGLE_FLOAT_LABEL_WIDTH 6 +#define SINGLE_FLOAT_LABEL_FMT "%6.6s: " +#define SINGLE_FLOAT_VALUE_WIDTH 25 /* min of 8 but may be in sci notation */ + +#define SINGLE_LABEL_WIDTH 16 +#define SINGLE_LABEL_FMT "%10.10s: " +#define SINGLE_VALUE_WIDTH 20 /* minimum of 8 but may be in sci notation */ + +/* In the code HP gave Cygnus, this was actually a function call to a + PA-specific function, which was supposed to determine whether the + target was a 64-bit or 32-bit processor. However, the 64-bit + support wasn't complete, so we didn't merge that in, so we leave + this here as a stub. */ +#define IS_64BIT 0 + +/***************************************** +** STATIC DATA ** +******************************************/ + + +/***************************************** +** STATIC LOCAL FUNCTIONS FORWARD DECLS ** +******************************************/ +static TuiStatus _tuiSetRegsContent + (int, int, struct frame_info *, TuiRegisterDisplayType, int); +static const char *_tuiRegisterName (int); +static TuiStatus _tuiGetRegisterRawValue (int, char *, struct frame_info *); +static void _tuiSetRegisterElement + (int, struct frame_info *, TuiDataElementPtr, int); +static void _tuiDisplayRegister (int, TuiGenWinInfoPtr, enum precision_type); +static void _tuiRegisterFormat + (char *, int, int, TuiDataElementPtr, enum precision_type); +static TuiStatus _tuiSetGeneralRegsContent (int); +static TuiStatus _tuiSetSpecialRegsContent (int); +static TuiStatus _tuiSetGeneralAndSpecialRegsContent (int); +static TuiStatus _tuiSetFloatRegsContent (TuiRegisterDisplayType, int); +static int _tuiRegValueHasChanged + (TuiDataElementPtr, struct frame_info *, char *); +static void _tuiShowFloat_command (char *, int); +static void _tuiShowGeneral_command (char *, int); +static void _tuiShowSpecial_command (char *, int); +static void _tui_vShowRegisters_commandSupport (TuiRegisterDisplayType); +static void _tuiToggleFloatRegs_command (char *, int); +static void _tuiScrollRegsForward_command (char *, int); +static void _tuiScrollRegsBackward_command (char *, int); + + + +/***************************************** +** PUBLIC FUNCTIONS ** +******************************************/ + +/* Answer the number of the last line in the regs display. If there + are no registers (-1) is returned. */ +int +tui_last_regs_line_no (void) +{ + register int numLines = (-1); + + if (dataWin->detail.dataDisplayInfo.regsContentCount > 0) + { + numLines = (dataWin->detail.dataDisplayInfo.regsContentCount / + dataWin->detail.dataDisplayInfo.regsColumnCount); + if (dataWin->detail.dataDisplayInfo.regsContentCount % + dataWin->detail.dataDisplayInfo.regsColumnCount) + numLines++; + } + return numLines; +} + + +/* Answer the line number that the register element at elementNo is + on. If elementNo is greater than the number of register elements + there are, -1 is returned. */ +int +tui_line_from_reg_element_no (int elementNo) +{ + if (elementNo < dataWin->detail.dataDisplayInfo.regsContentCount) + { + int i, line = (-1); + + i = 1; + while (line == (-1)) + { + if (elementNo < + (dataWin->detail.dataDisplayInfo.regsColumnCount * i)) + line = i - 1; + else + i++; + } + + return line; + } + else + return (-1); +} + + +/* Answer the index of the first element in lineNo. If lineNo is past + the register area (-1) is returned. */ +int +tui_first_reg_element_no_inline (int lineNo) +{ + if ((lineNo * dataWin->detail.dataDisplayInfo.regsColumnCount) + <= dataWin->detail.dataDisplayInfo.regsContentCount) + return ((lineNo + 1) * + dataWin->detail.dataDisplayInfo.regsColumnCount) - + dataWin->detail.dataDisplayInfo.regsColumnCount; + else + return (-1); +} + + +/* + ** tuiLastRegElementNoInLine() + ** Answer the index of the last element in lineNo. If lineNo is past + ** the register area (-1) is returned. + */ +int +tuiLastRegElementNoInLine (int lineNo) +{ + if ((lineNo * dataWin->detail.dataDisplayInfo.regsColumnCount) <= + dataWin->detail.dataDisplayInfo.regsContentCount) + return ((lineNo + 1) * + dataWin->detail.dataDisplayInfo.regsColumnCount) - 1; + else + return (-1); +} /* tuiLastRegElementNoInLine */ + + +/* Calculate the number of columns that should be used to display the + registers. */ +int +tui_calculate_regs_column_count (TuiRegisterDisplayType dpyType) +{ + int colCount, colWidth; + + if (IS_64BIT || dpyType == TUI_DFLOAT_REGS) + colWidth = DOUBLE_FLOAT_VALUE_WIDTH + DOUBLE_FLOAT_LABEL_WIDTH; + else + { + if (dpyType == TUI_SFLOAT_REGS) + colWidth = SINGLE_FLOAT_VALUE_WIDTH + SINGLE_FLOAT_LABEL_WIDTH; + else + colWidth = SINGLE_VALUE_WIDTH + SINGLE_LABEL_WIDTH; + } + colCount = (dataWin->generic.width - 2) / colWidth; + + return colCount; +} /* tuiCalulateRegsColumnCount */ + + +/* Show the registers int the data window as indicated by dpyType. If + there is any other registers being displayed, then they are + cleared. What registers are displayed is dependent upon dpyType. */ +void +tui_show_registers (TuiRegisterDisplayType dpyType) +{ + TuiStatus ret = TUI_FAILURE; + int refreshValuesOnly = FALSE; + + /* Say that registers should be displayed, even if there is a problem */ + dataWin->detail.dataDisplayInfo.displayRegs = TRUE; + + if (target_has_registers) + { + refreshValuesOnly = + (dpyType == dataWin->detail.dataDisplayInfo.regsDisplayType); + switch (dpyType) + { + case TUI_GENERAL_REGS: + ret = _tuiSetGeneralRegsContent (refreshValuesOnly); + break; + case TUI_SFLOAT_REGS: + case TUI_DFLOAT_REGS: + ret = _tuiSetFloatRegsContent (dpyType, refreshValuesOnly); + break; + +/* could ifdef out */ + + case TUI_SPECIAL_REGS: + ret = _tuiSetSpecialRegsContent (refreshValuesOnly); + break; + case TUI_GENERAL_AND_SPECIAL_REGS: + ret = _tuiSetGeneralAndSpecialRegsContent (refreshValuesOnly); + break; + +/* end of potential if def */ + + default: + break; + } + } + if (ret == TUI_FAILURE) + { + dataWin->detail.dataDisplayInfo.regsDisplayType = TUI_UNDEFINED_REGS; + tuiEraseDataContent (NO_REGS_STRING); + } + else + { + int i; + + /* Clear all notation of changed values */ + for (i = 0; (i < dataWin->detail.dataDisplayInfo.regsContentCount); i++) + { + TuiGenWinInfoPtr dataItemWin; + + dataItemWin = &dataWin->detail.dataDisplayInfo. + regsContent[i]->whichElement.dataWindow; + (&((TuiWinElementPtr) + dataItemWin->content[0])->whichElement.data)->highlight = FALSE; + } + dataWin->detail.dataDisplayInfo.regsDisplayType = dpyType; + tuiDisplayAllData (); + } + (tuiLayoutDef ())->regsDisplayType = dpyType; + + return; +} + + +/* Function to display the registers in the content from + 'startElementNo' until the end of the register content or the end + of the display height. No checking for displaying past the end of + the registers is done here. */ +void +tui_display_registers_from (int startElementNo) +{ + if (dataWin->detail.dataDisplayInfo.regsContent != (TuiWinContent) NULL && + dataWin->detail.dataDisplayInfo.regsContentCount > 0) + { + register int i = startElementNo; + int j, valueCharsWide, itemWinWidth, curY, labelWidth; + enum precision_type precision; + + precision = (dataWin->detail.dataDisplayInfo.regsDisplayType + == TUI_DFLOAT_REGS) ? + double_precision : unspecified_precision; + if (IS_64BIT || + dataWin->detail.dataDisplayInfo.regsDisplayType == TUI_DFLOAT_REGS) + { + valueCharsWide = DOUBLE_FLOAT_VALUE_WIDTH; + labelWidth = DOUBLE_FLOAT_LABEL_WIDTH; + } + else + { + if (dataWin->detail.dataDisplayInfo.regsDisplayType == + TUI_SFLOAT_REGS) + { + valueCharsWide = SINGLE_FLOAT_VALUE_WIDTH; + labelWidth = SINGLE_FLOAT_LABEL_WIDTH; + } + else + { + valueCharsWide = SINGLE_VALUE_WIDTH; + labelWidth = SINGLE_LABEL_WIDTH; + } + } + itemWinWidth = valueCharsWide + labelWidth; + /* + ** Now create each data "sub" window, and write the display into it. + */ + curY = 1; + while (i < dataWin->detail.dataDisplayInfo.regsContentCount && + curY <= dataWin->generic.viewportHeight) + { + for (j = 0; + (j < dataWin->detail.dataDisplayInfo.regsColumnCount && + i < dataWin->detail.dataDisplayInfo.regsContentCount); j++) + { + TuiGenWinInfoPtr dataItemWin; + TuiDataElementPtr dataElementPtr; + + /* create the window if necessary */ + dataItemWin = &dataWin->detail.dataDisplayInfo. + regsContent[i]->whichElement.dataWindow; + dataElementPtr = &((TuiWinElementPtr) + dataItemWin->content[0])->whichElement.data; + if (dataItemWin->handle == (WINDOW *) NULL) + { + dataItemWin->height = 1; + dataItemWin->width = (precision == double_precision) ? + itemWinWidth + 2 : itemWinWidth + 1; + dataItemWin->origin.x = (itemWinWidth * j) + 1; + dataItemWin->origin.y = curY; + makeWindow (dataItemWin, DONT_BOX_WINDOW); + scrollok (dataItemWin->handle, FALSE); + } + touchwin (dataItemWin->handle); + + /* + ** Get the printable representation of the register + ** and display it + */ + _tuiDisplayRegister ( + dataElementPtr->itemNo, dataItemWin, precision); + i++; /* next register */ + } + curY++; /* next row; */ + } + } + + return; +} + + +/* + ** tuiDisplayRegElementAtLine(). + ** Function to display the registers in the content from + ** 'startElementNo' on 'startLineNo' until the end of the + ** register content or the end of the display height. + ** This function checks that we won't display off the end + ** of the register display. + */ +void +tuiDisplayRegElementAtLine (int startElementNo, int startLineNo) +{ + if (dataWin->detail.dataDisplayInfo.regsContent != (TuiWinContent) NULL && + dataWin->detail.dataDisplayInfo.regsContentCount > 0) + { + register int elementNo = startElementNo; + + if (startElementNo != 0 && startLineNo != 0) + { + register int lastLineNo, firstLineOnLastPage; + + lastLineNo = tui_last_regs_line_no (); + firstLineOnLastPage = lastLineNo - (dataWin->generic.height - 2); + if (firstLineOnLastPage < 0) + firstLineOnLastPage = 0; + /* + ** If there is no other data displayed except registers, + ** and the elementNo causes us to scroll past the end of the + ** registers, adjust what element to really start the display at. + */ + if (dataWin->detail.dataDisplayInfo.dataContentCount <= 0 && + startLineNo > firstLineOnLastPage) + elementNo = tui_first_reg_element_no_inline (firstLineOnLastPage); + } + tui_display_registers_from (elementNo); + } + + return; +} /* tuiDisplayRegElementAtLine */ + + + +/* Function to display the registers starting at line lineNo in the + data window. Answers the line number that the display actually + started from. If nothing is displayed (-1) is returned. */ +int +tui_display_registers_from_line (int lineNo, int forceDisplay) +{ + if (dataWin->detail.dataDisplayInfo.regsContentCount > 0) + { + int line, elementNo; + + if (lineNo < 0) + line = 0; + else if (forceDisplay) + { /* + ** If we must display regs (forceDisplay is true), then make + ** sure that we don't display off the end of the registers. + */ + if (lineNo >= tui_last_regs_line_no ()) + { + if ((line = tui_line_from_reg_element_no ( + dataWin->detail.dataDisplayInfo.regsContentCount - 1)) < 0) + line = 0; + } + else + line = lineNo; + } + else + line = lineNo; + + elementNo = tui_first_reg_element_no_inline (line); + if (elementNo < dataWin->detail.dataDisplayInfo.regsContentCount) + tuiDisplayRegElementAtLine (elementNo, line); + else + line = (-1); + + return line; + } + + return (-1); /* nothing was displayed */ +} + + +/* This function check all displayed registers for changes in values, + given a particular frame. If the values have changed, they are + updated with the new value and highlighted. */ +void +tui_check_register_values (struct frame_info *frame) +{ + if (m_winPtrNotNull (dataWin) && dataWin->generic.isVisible) + { + if (dataWin->detail.dataDisplayInfo.regsContentCount <= 0 && + dataWin->detail.dataDisplayInfo.displayRegs) + tui_show_registers ((tuiLayoutDef ())->regsDisplayType); + else + { + int i, j; + char rawBuf[MAX_REGISTER_SIZE]; + + for (i = 0; + (i < dataWin->detail.dataDisplayInfo.regsContentCount); i++) + { + TuiDataElementPtr dataElementPtr; + TuiGenWinInfoPtr dataItemWinPtr; + int wasHilighted; + + dataItemWinPtr = &dataWin->detail.dataDisplayInfo. + regsContent[i]->whichElement.dataWindow; + dataElementPtr = &((TuiWinElementPtr) + dataItemWinPtr->content[0])->whichElement.data; + wasHilighted = dataElementPtr->highlight; + dataElementPtr->highlight = + _tuiRegValueHasChanged (dataElementPtr, frame, &rawBuf[0]); + if (dataElementPtr->highlight) + { + int size; + + size = DEPRECATED_REGISTER_RAW_SIZE (dataElementPtr->itemNo); + for (j = 0; j < size; j++) + ((char *) dataElementPtr->value)[j] = rawBuf[j]; + _tuiDisplayRegister ( + dataElementPtr->itemNo, + dataItemWinPtr, + ((dataWin->detail.dataDisplayInfo.regsDisplayType == + TUI_DFLOAT_REGS) ? + double_precision : unspecified_precision)); + } + else if (wasHilighted) + { + dataElementPtr->highlight = FALSE; + _tuiDisplayRegister ( + dataElementPtr->itemNo, + dataItemWinPtr, + ((dataWin->detail.dataDisplayInfo.regsDisplayType == + TUI_DFLOAT_REGS) ? + double_precision : unspecified_precision)); + } + } + } + } + return; +} + + +/* + ** tuiToggleFloatRegs(). + */ +void +tuiToggleFloatRegs (void) +{ + TuiLayoutDefPtr layoutDef = tuiLayoutDef (); + + if (layoutDef->floatRegsDisplayType == TUI_SFLOAT_REGS) + layoutDef->floatRegsDisplayType = TUI_DFLOAT_REGS; + else + layoutDef->floatRegsDisplayType = TUI_SFLOAT_REGS; + + if (m_winPtrNotNull (dataWin) && dataWin->generic.isVisible && + (dataWin->detail.dataDisplayInfo.regsDisplayType == TUI_SFLOAT_REGS || + dataWin->detail.dataDisplayInfo.regsDisplayType == TUI_DFLOAT_REGS)) + tui_show_registers (layoutDef->floatRegsDisplayType); + + return; +} /* tuiToggleFloatRegs */ + + +void +_initialize_tuiRegs (void) +{ + if (xdb_commands) + { + add_com ("fr", class_tui, _tuiShowFloat_command, + "Display only floating point registers\n"); + add_com ("gr", class_tui, _tuiShowGeneral_command, + "Display only general registers\n"); + add_com ("sr", class_tui, _tuiShowSpecial_command, + "Display only special registers\n"); + add_com ("+r", class_tui, _tuiScrollRegsForward_command, + "Scroll the registers window forward\n"); + add_com ("-r", class_tui, _tuiScrollRegsBackward_command, + "Scroll the register window backward\n"); + add_com ("tf", class_tui, _tuiToggleFloatRegs_command, + "Toggle between single and double precision floating point registers.\n"); + add_cmd (TUI_FLOAT_REGS_NAME_LOWER, + class_tui, + _tuiToggleFloatRegs_command, + "Toggle between single and double precision floating point \ +registers.\n", + &togglelist); + } +} + + +/***************************************** +** STATIC LOCAL FUNCTIONS ** +******************************************/ + + +/* + ** _tuiRegisterName(). + ** Return the register name. + */ +static const char * +_tuiRegisterName (int regNum) +{ + return REGISTER_NAME (regNum); +} +extern int pagination_enabled; + +static void +tui_restore_gdbout (void *ui) +{ + ui_file_delete (gdb_stdout); + gdb_stdout = (struct ui_file*) ui; + pagination_enabled = 1; +} + +/* + ** _tuiRegisterFormat + ** Function to format the register name and value into a buffer, + ** suitable for printing or display + */ +static void +_tuiRegisterFormat (char *buf, int bufLen, int regNum, + TuiDataElementPtr dataElement, + enum precision_type precision) +{ + struct ui_file *stream; + struct ui_file *old_stdout; + const char *name; + struct cleanup *cleanups; + char *p; + int pos; + + name = REGISTER_NAME (regNum); + if (name == 0) + { + strcpy (buf, ""); + return; + } + + pagination_enabled = 0; + old_stdout = gdb_stdout; + stream = tui_sfileopen (bufLen); + gdb_stdout = stream; + cleanups = make_cleanup (tui_restore_gdbout, (void*) old_stdout); + gdbarch_print_registers_info (current_gdbarch, stream, deprecated_selected_frame, + regNum, 1); + + /* Save formatted output in the buffer. */ + p = tui_file_get_strbuf (stream); + pos = 0; + while (*p && *p == *name++ && bufLen) + { + *buf++ = *p++; + bufLen--; + pos++; + } + while (*p == ' ') + p++; + while (pos < 8 && bufLen) + { + *buf++ = ' '; + bufLen--; + pos++; + } + strncpy (buf, p, bufLen); + + /* Remove the possible \n. */ + p = strchr (buf, '\n'); + if (p) + *p = 0; + + do_cleanups (cleanups); +} + + +#define NUM_GENERAL_REGS 32 +/* + ** _tuiSetGeneralRegsContent(). + ** Set the content of the data window to consist of the general registers. + */ +static TuiStatus +_tuiSetGeneralRegsContent (int refreshValuesOnly) +{ + return (_tuiSetRegsContent (0, + NUM_GENERAL_REGS - 1, + deprecated_selected_frame, + TUI_GENERAL_REGS, + refreshValuesOnly)); + +} /* _tuiSetGeneralRegsContent */ + + +#ifndef PCOQ_HEAD_REGNUM +#define START_SPECIAL_REGS 0 +#else +#define START_SPECIAL_REGS PCOQ_HEAD_REGNUM +#endif + +/* + ** _tuiSetSpecialRegsContent(). + ** Set the content of the data window to consist of the special registers. + */ +static TuiStatus +_tuiSetSpecialRegsContent (int refreshValuesOnly) +{ + TuiStatus ret = TUI_FAILURE; + int endRegNum; + + endRegNum = FP0_REGNUM - 1; + ret = _tuiSetRegsContent (START_SPECIAL_REGS, + endRegNum, + deprecated_selected_frame, + TUI_SPECIAL_REGS, + refreshValuesOnly); + + return ret; +} /* _tuiSetSpecialRegsContent */ + + +/* + ** _tuiSetGeneralAndSpecialRegsContent(). + ** Set the content of the data window to consist of the special registers. + */ +static TuiStatus +_tuiSetGeneralAndSpecialRegsContent (int refreshValuesOnly) +{ + TuiStatus ret = TUI_FAILURE; + int endRegNum = (-1); + + endRegNum = FP0_REGNUM - 1; + ret = _tuiSetRegsContent ( + 0, endRegNum, deprecated_selected_frame, TUI_SPECIAL_REGS, refreshValuesOnly); + + return ret; +} /* _tuiSetGeneralAndSpecialRegsContent */ + +/* + ** _tuiSetFloatRegsContent(). + ** Set the content of the data window to consist of the float registers. + */ +static TuiStatus +_tuiSetFloatRegsContent (TuiRegisterDisplayType dpyType, int refreshValuesOnly) +{ + TuiStatus ret = TUI_FAILURE; + int startRegNum; + + startRegNum = FP0_REGNUM; + ret = _tuiSetRegsContent (startRegNum, + NUM_REGS - 1, + deprecated_selected_frame, + dpyType, + refreshValuesOnly); + + return ret; +} /* _tuiSetFloatRegsContent */ + + +/* + ** _tuiRegValueHasChanged(). + ** Answer TRUE if the register's value has changed, FALSE otherwise. + ** If TRUE, newValue is filled in with the new value. + */ +static int +_tuiRegValueHasChanged (TuiDataElementPtr dataElement, + struct frame_info *frame, + char *newValue) +{ + int hasChanged = FALSE; + + if (dataElement->itemNo != UNDEFINED_ITEM && + _tuiRegisterName (dataElement->itemNo) != (char *) NULL) + { + char rawBuf[MAX_REGISTER_SIZE]; + int i; + + if (_tuiGetRegisterRawValue ( + dataElement->itemNo, rawBuf, frame) == TUI_SUCCESS) + { + int size = DEPRECATED_REGISTER_RAW_SIZE (dataElement->itemNo); + + for (i = 0; (i < size && !hasChanged); i++) + hasChanged = (((char *) dataElement->value)[i] != rawBuf[i]); + if (hasChanged && newValue != (char *) NULL) + { + for (i = 0; i < size; i++) + newValue[i] = rawBuf[i]; + } + } + } + return hasChanged; +} /* _tuiRegValueHasChanged */ + + + +/* + ** _tuiGetRegisterRawValue(). + ** Get the register raw value. The raw value is returned in regValue. + */ +static TuiStatus +_tuiGetRegisterRawValue (int regNum, char *regValue, struct frame_info *frame) +{ + TuiStatus ret = TUI_FAILURE; + + if (target_has_registers) + { + get_frame_register (frame, regNum, regValue); + /* NOTE: cagney/2003-03-13: This is bogus. It is refering to + the register cache and not the frame which could have pulled + the register value off the stack. */ + if (register_cached (regNum) >= 0) + ret = TUI_SUCCESS; + } + return ret; +} /* _tuiGetRegisterRawValue */ + + + +/* + ** _tuiSetRegisterElement(). + ** Function to initialize a data element with the input and + ** the register value. + */ +static void +_tuiSetRegisterElement (int regNum, struct frame_info *frame, + TuiDataElementPtr dataElement, + int refreshValueOnly) +{ + if (dataElement != (TuiDataElementPtr) NULL) + { + if (!refreshValueOnly) + { + dataElement->itemNo = regNum; + dataElement->name = _tuiRegisterName (regNum); + dataElement->highlight = FALSE; + } + if (dataElement->value == (Opaque) NULL) + dataElement->value = (Opaque) xmalloc (MAX_REGISTER_SIZE); + if (dataElement->value != (Opaque) NULL) + _tuiGetRegisterRawValue (regNum, dataElement->value, frame); + } + + return; +} /* _tuiSetRegisterElement */ + + +/* + ** _tuiSetRegsContent(). + ** Set the content of the data window to consist of the registers + ** numbered from startRegNum to endRegNum. Note that if + ** refreshValuesOnly is TRUE, startRegNum and endRegNum are ignored. + */ +static TuiStatus +_tuiSetRegsContent (int startRegNum, int endRegNum, + struct frame_info *frame, + TuiRegisterDisplayType dpyType, + int refreshValuesOnly) +{ + TuiStatus ret = TUI_FAILURE; + int numRegs = endRegNum - startRegNum + 1; + int allocatedHere = FALSE; + + if (dataWin->detail.dataDisplayInfo.regsContentCount > 0 && + !refreshValuesOnly) + { + freeDataContent (dataWin->detail.dataDisplayInfo.regsContent, + dataWin->detail.dataDisplayInfo.regsContentCount); + dataWin->detail.dataDisplayInfo.regsContentCount = 0; + } + if (dataWin->detail.dataDisplayInfo.regsContentCount <= 0) + { + dataWin->detail.dataDisplayInfo.regsContent = + allocContent (numRegs, DATA_WIN); + allocatedHere = TRUE; + } + + if (dataWin->detail.dataDisplayInfo.regsContent != (TuiWinContent) NULL) + { + int i; + + if (!refreshValuesOnly || allocatedHere) + { + dataWin->generic.content = (OpaquePtr) NULL; + dataWin->generic.contentSize = 0; + addContentElements (&dataWin->generic, numRegs); + dataWin->detail.dataDisplayInfo.regsContent = + (TuiWinContent) dataWin->generic.content; + dataWin->detail.dataDisplayInfo.regsContentCount = numRegs; + } + /* + ** Now set the register names and values + */ + for (i = startRegNum; (i <= endRegNum); i++) + { + TuiGenWinInfoPtr dataItemWin; + + dataItemWin = &dataWin->detail.dataDisplayInfo. + regsContent[i - startRegNum]->whichElement.dataWindow; + _tuiSetRegisterElement ( + i, + frame, + &((TuiWinElementPtr) dataItemWin->content[0])->whichElement.data, + !allocatedHere && refreshValuesOnly); + } + dataWin->detail.dataDisplayInfo.regsColumnCount = + tui_calculate_regs_column_count (dpyType); +#ifdef LATER + if (dataWin->detail.dataDisplayInfo.dataContentCount > 0) + { + /* delete all the windows? */ + /* realloc content equal to dataContentCount + regsContentCount */ + /* append dataWin->detail.dataDisplayInfo.dataContent to content */ + } +#endif + dataWin->generic.contentSize = + dataWin->detail.dataDisplayInfo.regsContentCount + + dataWin->detail.dataDisplayInfo.dataContentCount; + ret = TUI_SUCCESS; + } + + return ret; +} /* _tuiSetRegsContent */ + + +/* + ** _tuiDisplayRegister(). + ** Function to display a register in a window. If hilite is TRUE, + ** than the value will be displayed in reverse video + */ +static void +_tuiDisplayRegister (int regNum, + TuiGenWinInfoPtr winInfo, /* the data item window */ + enum precision_type precision) +{ + if (winInfo->handle != (WINDOW *) NULL) + { + int i; + char buf[40]; + int valueCharsWide, labelWidth; + TuiDataElementPtr dataElementPtr = &((TuiWinContent) + winInfo->content)[0]->whichElement.data; + + if (IS_64BIT || + dataWin->detail.dataDisplayInfo.regsDisplayType == TUI_DFLOAT_REGS) + { + valueCharsWide = DOUBLE_FLOAT_VALUE_WIDTH; + labelWidth = DOUBLE_FLOAT_LABEL_WIDTH; + } + else + { + if (dataWin->detail.dataDisplayInfo.regsDisplayType == + TUI_SFLOAT_REGS) + { + valueCharsWide = SINGLE_FLOAT_VALUE_WIDTH; + labelWidth = SINGLE_FLOAT_LABEL_WIDTH; + } + else + { + valueCharsWide = SINGLE_VALUE_WIDTH; + labelWidth = SINGLE_LABEL_WIDTH; + } + } + + buf[0] = (char) 0; + _tuiRegisterFormat (buf, + valueCharsWide + labelWidth, + regNum, + dataElementPtr, + precision); + + if (dataElementPtr->highlight) + wstandout (winInfo->handle); + + wmove (winInfo->handle, 0, 0); + for (i = 1; i < winInfo->width; i++) + waddch (winInfo->handle, ' '); + wmove (winInfo->handle, 0, 0); + waddstr (winInfo->handle, buf); + + if (dataElementPtr->highlight) + wstandend (winInfo->handle); + tuiRefreshWin (winInfo); + } + return; +} /* _tuiDisplayRegister */ + + +static void +_tui_vShowRegisters_commandSupport (TuiRegisterDisplayType dpyType) +{ + + if (m_winPtrNotNull (dataWin) && dataWin->generic.isVisible) + { /* Data window already displayed, show the registers */ + if (dataWin->detail.dataDisplayInfo.regsDisplayType != dpyType) + tui_show_registers (dpyType); + } + else + (tuiLayoutDef ())->regsDisplayType = dpyType; + + return; +} /* _tui_vShowRegisters_commandSupport */ + + +static void +_tuiShowFloat_command (char *arg, int fromTTY) +{ + if (m_winPtrIsNull (dataWin) || !dataWin->generic.isVisible || + (dataWin->detail.dataDisplayInfo.regsDisplayType != TUI_SFLOAT_REGS && + dataWin->detail.dataDisplayInfo.regsDisplayType != TUI_DFLOAT_REGS)) + _tui_vShowRegisters_commandSupport ((tuiLayoutDef ())->floatRegsDisplayType); + + return; +} /* _tuiShowFloat_command */ + + +static void +_tuiShowGeneral_command (char *arg, int fromTTY) +{ + _tui_vShowRegisters_commandSupport (TUI_GENERAL_REGS); +} + + +static void +_tuiShowSpecial_command (char *arg, int fromTTY) +{ + _tui_vShowRegisters_commandSupport (TUI_SPECIAL_REGS); +} + + +static void +_tuiToggleFloatRegs_command (char *arg, int fromTTY) +{ + if (m_winPtrNotNull (dataWin) && dataWin->generic.isVisible) + tuiToggleFloatRegs (); + else + { + TuiLayoutDefPtr layoutDef = tuiLayoutDef (); + + if (layoutDef->floatRegsDisplayType == TUI_SFLOAT_REGS) + layoutDef->floatRegsDisplayType = TUI_DFLOAT_REGS; + else + layoutDef->floatRegsDisplayType = TUI_SFLOAT_REGS; + } + + + return; +} /* _tuiToggleFloatRegs_command */ + + +static void +_tuiScrollRegsForward_command (char *arg, int fromTTY) +{ + tui_scroll (FORWARD_SCROLL, dataWin, 1); +} + + +static void +_tuiScrollRegsBackward_command (char *arg, int fromTTY) +{ + tui_scroll (BACKWARD_SCROLL, dataWin, 1); +} diff --git a/gdb/tui/tui-regs.h b/gdb/tui/tui-regs.h new file mode 100644 index 00000000000..19703a2ccbc --- /dev/null +++ b/gdb/tui/tui-regs.h @@ -0,0 +1,41 @@ +/* TUI display registers in window. + + Copyright 1998, 1999, 2000, 2001, 2004 Free Software Foundation, + Inc. + + Contributed by Hewlett-Packard Company. + + This file is part of GDB. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. */ + +#ifndef TUI_REGS_H +#define TUI_REGS_H + +#include "tui/tui-data.h" /* For TuiRegisterDisplayType. */ + +extern void tui_check_register_values (struct frame_info *); +extern void tui_show_registers (enum tui_register_display_type); +extern void tui_display_registers_from (int); +extern int tui_display_registers_from_line (int, int); +extern int tui_last_regs_line_no (void); +extern int tui_first_reg_element_inline (int); +extern int tui_line_from_reg_element_no (int); +extern void tui_toggle_float_regs (void); +extern int tui_calculate_regs_column_count (enum tui_register_display_type); +extern int tui_first_reg_element_no_inline (int lineno); + +#endif diff --git a/gdb/tui/tui-source.c b/gdb/tui/tui-source.c new file mode 100644 index 00000000000..f2d3762f8cd --- /dev/null +++ b/gdb/tui/tui-source.c @@ -0,0 +1,356 @@ +/* TUI display source window. + + Copyright 1998, 1999, 2000, 2001, 2002, 2003 Free Software Foundation, + Inc. + + Contributed by Hewlett-Packard Company. + + This file is part of GDB. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. */ + +#include "defs.h" +#include <ctype.h> +#include "symtab.h" +#include "frame.h" +#include "breakpoint.h" +#include "source.h" +#include "symtab.h" + +#include "tui/tui.h" +#include "tui/tui-data.h" +#include "tui/tui-stack.h" +#include "tui/tui-winsource.h" +#include "tui/tui-source.h" + +#ifdef HAVE_NCURSES_H +#include <ncurses.h> +#else +#ifdef HAVE_CURSES_H +#include <curses.h> +#endif +#endif + +/* Function to display source in the source window. */ +TuiStatus +tuiSetSourceContent (struct symtab *s, int lineNo, int noerror) +{ + TuiStatus ret = TUI_FAILURE; + + if (s != (struct symtab *) NULL && s->filename != (char *) NULL) + { + register FILE *stream; + register int i, desc, c, lineWidth, nlines; + register char *srcLine = 0; + + if ((ret = tuiAllocSourceBuffer (srcWin)) == TUI_SUCCESS) + { + lineWidth = srcWin->generic.width - 1; + /* Take hilite (window border) into account, when calculating + the number of lines */ + nlines = (lineNo + (srcWin->generic.height - 2)) - lineNo; + desc = open_source_file (s); + if (desc < 0) + { + if (!noerror) + { + char *name = alloca (strlen (s->filename) + 100); + sprintf (name, "%s:%d", s->filename, lineNo); + print_sys_errmsg (name, errno); + } + ret = TUI_FAILURE; + } + else + { + if (s->line_charpos == 0) + find_source_lines (s, desc); + + if (lineNo < 1 || lineNo > s->nlines) + { + close (desc); + printf_unfiltered ( + "Line number %d out of range; %s has %d lines.\n", + lineNo, s->filename, s->nlines); + } + else if (lseek (desc, s->line_charpos[lineNo - 1], 0) < 0) + { + close (desc); + perror_with_name (s->filename); + } + else + { + register int offset, curLineNo, curLine, curLen, threshold; + TuiGenWinInfoPtr locator = locatorWinInfoPtr (); + TuiSourceInfoPtr src = &srcWin->detail.sourceInfo; + + if (srcWin->generic.title) + xfree (srcWin->generic.title); + srcWin->generic.title = xstrdup (s->filename); + + if (src->filename) + xfree (src->filename); + src->filename = xstrdup (s->filename); + + /* Determine the threshold for the length of the line + and the offset to start the display. */ + offset = src->horizontalOffset; + threshold = (lineWidth - 1) + offset; + stream = fdopen (desc, FOPEN_RT); + clearerr (stream); + curLine = 0; + curLineNo = src->startLineOrAddr.lineNo = lineNo; + if (offset > 0) + srcLine = (char *) xmalloc ( + (threshold + 1) * sizeof (char)); + while (curLine < nlines) + { + TuiWinElementPtr element = (TuiWinElementPtr) + srcWin->generic.content[curLine]; + + /* get the first character in the line */ + c = fgetc (stream); + + if (offset == 0) + srcLine = ((TuiWinElementPtr) + srcWin->generic.content[ + curLine])->whichElement.source.line; + /* Init the line with the line number */ + sprintf (srcLine, "%-6d", curLineNo); + curLen = strlen (srcLine); + i = curLen - + ((curLen / tuiDefaultTabLen ()) * tuiDefaultTabLen ()); + while (i < tuiDefaultTabLen ()) + { + srcLine[curLen] = ' '; + i++; + curLen++; + } + srcLine[curLen] = (char) 0; + + /* Set whether element is the execution point and + whether there is a break point on it. */ + element->whichElement.source.lineOrAddr.lineNo = + curLineNo; + element->whichElement.source.isExecPoint = + (strcmp (((TuiWinElementPtr) + locator->content[0])->whichElement.locator.fileName, + s->filename) == 0 + && curLineNo == ((TuiWinElementPtr) + locator->content[0])->whichElement.locator.lineNo); + if (c != EOF) + { + i = strlen (srcLine) - 1; + do + { + if ((c != '\n') && + (c != '\r') && (++i < threshold)) + { + if (c < 040 && c != '\t') + { + srcLine[i++] = '^'; + srcLine[i] = c + 0100; + } + else if (c == 0177) + { + srcLine[i++] = '^'; + srcLine[i] = '?'; + } + else + { /* Store the charcter in the line + buffer. If it is a tab, then + translate to the correct number of + chars so we don't overwrite our + buffer. */ + if (c == '\t') + { + int j, maxTabLen = tuiDefaultTabLen (); + + for (j = i - ( + (i / maxTabLen) * maxTabLen); + ((j < maxTabLen) && + i < threshold); + i++, j++) + srcLine[i] = ' '; + i--; + } + else + srcLine[i] = c; + } + srcLine[i + 1] = 0; + } + else + { /* If we have not reached EOL, then eat + chars until we do */ + while (c != EOF && c != '\n' && c != '\r') + c = fgetc (stream); + } + } + while (c != EOF && c != '\n' && c != '\r' && + i < threshold && (c = fgetc (stream))); + } + /* Now copy the line taking the offset into account */ + if (strlen (srcLine) > offset) + strcpy (((TuiWinElementPtr) srcWin->generic.content[ + curLine])->whichElement.source.line, + &srcLine[offset]); + else + ((TuiWinElementPtr) + srcWin->generic.content[ + curLine])->whichElement.source.line[0] = (char) 0; + curLine++; + curLineNo++; + } + if (offset > 0) + tuiFree (srcLine); + fclose (stream); + srcWin->generic.contentSize = nlines; + ret = TUI_SUCCESS; + } + } + } + } + return ret; +} + + +/* elz: this function sets the contents of the source window to empty + except for a line in the middle with a warning message about the + source not being available. This function is called by + tuiEraseSourceContents, which in turn is invoked when the source files + cannot be accessed */ + +void +tuiSetSourceContentNil (TuiWinInfoPtr winInfo, char *warning_string) +{ + int lineWidth; + int nLines; + int curr_line = 0; + + lineWidth = winInfo->generic.width - 1; + nLines = winInfo->generic.height - 2; + + /* set to empty each line in the window, except for the one + which contains the message */ + while (curr_line < winInfo->generic.contentSize) + { + /* set the information related to each displayed line + to null: i.e. the line number is 0, there is no bp, + it is not where the program is stopped */ + + TuiWinElementPtr element = + (TuiWinElementPtr) winInfo->generic.content[curr_line]; + element->whichElement.source.lineOrAddr.lineNo = 0; + element->whichElement.source.isExecPoint = FALSE; + element->whichElement.source.hasBreak = FALSE; + + /* set the contents of the line to blank */ + element->whichElement.source.line[0] = (char) 0; + + /* if the current line is in the middle of the screen, then we want to + display the 'no source available' message in it. + Note: the 'weird' arithmetic with the line width and height comes from + the function tuiEraseSourceContent. We need to keep the screen and the + window's actual contents in synch */ + + if (curr_line == (nLines / 2 + 1)) + { + int i; + int xpos; + int warning_length = strlen (warning_string); + char *srcLine; + + srcLine = element->whichElement.source.line; + + if (warning_length >= ((lineWidth - 1) / 2)) + xpos = 1; + else + xpos = (lineWidth - 1) / 2 - warning_length; + + for (i = 0; i < xpos; i++) + srcLine[i] = ' '; + + sprintf (srcLine + i, "%s", warning_string); + + for (i = xpos + warning_length; i < lineWidth; i++) + srcLine[i] = ' '; + + srcLine[i] = '\n'; + + } /* end if */ + + curr_line++; + + } /* end while */ +} + + +/* Function to display source in the source window. This function + initializes the horizontal scroll to 0. */ +void +tuiShowSource (struct symtab *s, TuiLineOrAddress line, int noerror) +{ + srcWin->detail.sourceInfo.horizontalOffset = 0; + tuiUpdateSourceWindowAsIs(srcWin, s, line, noerror); +} + + +/* Answer whether the source is currently displayed in the source window. */ +int +tuiSourceIsDisplayed (char *fname) +{ + return (srcWin->generic.contentInUse && + (strcmp (((TuiWinElementPtr) (locatorWinInfoPtr ())-> + content[0])->whichElement.locator.fileName, fname) == 0)); +} + + +/* Scroll the source forward or backward vertically. */ +void +tuiVerticalSourceScroll (TuiScrollDirection scrollDirection, + int numToScroll) +{ + if (srcWin->generic.content != (OpaquePtr) NULL) + { + TuiLineOrAddress l; + struct symtab *s; + TuiWinContent content = (TuiWinContent) srcWin->generic.content; + struct symtab_and_line cursal = get_current_source_symtab_and_line (); + + if (cursal.symtab == (struct symtab *) NULL) + s = find_pc_symtab (get_frame_pc (deprecated_selected_frame)); + else + s = cursal.symtab; + + if (scrollDirection == FORWARD_SCROLL) + { + l.lineNo = content[0]->whichElement.source.lineOrAddr.lineNo + + numToScroll; + if (l.lineNo > s->nlines) + /*line = s->nlines - winInfo->generic.contentSize + 1; */ + /*elz: fix for dts 23398 */ + l.lineNo = content[0]->whichElement.source.lineOrAddr.lineNo; + } + else + { + l.lineNo = content[0]->whichElement.source.lineOrAddr.lineNo - + numToScroll; + if (l.lineNo <= 0) + l.lineNo = 1; + } + + print_source_lines (s, l.lineNo, l.lineNo + 1, 0); + } +} diff --git a/gdb/tui/tui-source.h b/gdb/tui/tui-source.h new file mode 100644 index 00000000000..96cf8652aca --- /dev/null +++ b/gdb/tui/tui-source.h @@ -0,0 +1,33 @@ +/* TUI display source window. + Copyright 1998, 1999, 2000, 2001, 2002 Free Software Foundation, Inc. + Contributed by Hewlett-Packard Company. + + This file is part of GDB. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. */ + +#ifndef _TUI_SOURCE_H +#define _TUI_SOURCE_H + +#include "defs.h" + +extern TuiStatus tuiSetSourceContent (struct symtab *, int, int); +extern void tuiShowSource (struct symtab *, TuiLineOrAddress, int); +extern int tuiSourceIsDisplayed (char *); +extern void tuiVerticalSourceScroll (TuiScrollDirection, int); + +#endif +/*_TUI_SOURCE_H*/ diff --git a/gdb/tui/tui-stack.c b/gdb/tui/tui-stack.c new file mode 100644 index 00000000000..6bf64bb4b19 --- /dev/null +++ b/gdb/tui/tui-stack.c @@ -0,0 +1,435 @@ +/* TUI display locator. + + Copyright 1998, 1999, 2000, 2001, 2002, 2003 Free Software Foundation, + Inc. + + Contributed by Hewlett-Packard Company. + + This file is part of GDB. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. */ + +#include "defs.h" +#include "symtab.h" +#include "breakpoint.h" +#include "frame.h" +#include "command.h" +#include "inferior.h" +#include "target.h" +#include "top.h" + +#include "tui/tui.h" +#include "tui/tui-data.h" +#include "tui/tui-stack.h" +#include "tui/tui-wingeneral.h" +#include "tui/tui-source.h" +#include "tui/tui-winsource.h" +#include "tui/tui-file.h" + +#ifdef HAVE_NCURSES_H +#include <ncurses.h> +#else +#ifdef HAVE_CURSES_H +#include <curses.h> +#endif +#endif + +/* Get a printable name for the function at the address. + The symbol name is demangled if demangling is turned on. + Returns a pointer to a static area holding the result. */ +static char* tui_get_function_from_frame (struct frame_info *fi); + +/* Set the filename portion of the locator. */ +static void tui_set_locator_filename (const char *filename); + +/* Update the locator, with the provided arguments. */ +static void tui_set_locator_info (const char *filename, const char *procname, + int lineno, CORE_ADDR addr); + +static void tui_update_command (char *, int); + + +/* Create the status line to display as much information as we + can on this single line: target name, process number, current + function, current line, current PC, SingleKey mode. */ +static char* +tui_make_status_line (TuiLocatorElement* loc) +{ + char* string; + char line_buf[50], *pname; + char* buf; + int status_size; + int i, proc_width; + const char* pid_name; + const char* pc_buf; + int target_width; + int pid_width; + int line_width; + int pc_width; + struct ui_file *pc_out; + + if (ptid_equal (inferior_ptid, null_ptid)) + pid_name = "No process"; + else + pid_name = target_pid_to_str (inferior_ptid); + + target_width = strlen (target_shortname); + if (target_width > MAX_TARGET_WIDTH) + target_width = MAX_TARGET_WIDTH; + + pid_width = strlen (pid_name); + if (pid_width > MAX_PID_WIDTH) + pid_width = MAX_PID_WIDTH; + + status_size = termWidth (); + string = (char *) xmalloc (status_size + 1); + buf = (char*) alloca (status_size + 1); + + /* Translate line number and obtain its size. */ + if (loc->lineNo > 0) + sprintf (line_buf, "%d", loc->lineNo); + else + strcpy (line_buf, "??"); + line_width = strlen (line_buf); + if (line_width < MIN_LINE_WIDTH) + line_width = MIN_LINE_WIDTH; + + /* Translate PC address. */ + pc_out = tui_sfileopen (128); + print_address_numeric (loc->addr, 1, pc_out); + pc_buf = tui_file_get_strbuf (pc_out); + pc_width = strlen (pc_buf); + + /* First determine the amount of proc name width we have available. + The +1 are for a space separator between fields. + The -1 are to take into account the \0 counted by sizeof. */ + proc_width = (status_size + - (target_width + 1) + - (pid_width + 1) + - (sizeof (PROC_PREFIX) - 1 + 1) + - (sizeof (LINE_PREFIX) - 1 + line_width + 1) + - (sizeof (PC_PREFIX) - 1 + pc_width + 1) + - (tui_current_key_mode == tui_single_key_mode + ? (sizeof (SINGLE_KEY) - 1 + 1) + : 0)); + + /* If there is no room to print the function name, try by removing + some fields. */ + if (proc_width < MIN_PROC_WIDTH) + { + proc_width += target_width + 1; + target_width = 0; + if (proc_width < MIN_PROC_WIDTH) + { + proc_width += pid_width + 1; + pid_width = 0; + if (proc_width <= MIN_PROC_WIDTH) + { + proc_width += pc_width + sizeof (PC_PREFIX) - 1 + 1; + pc_width = 0; + if (proc_width < 0) + { + proc_width += line_width + sizeof (LINE_PREFIX) - 1 + 1; + line_width = 0; + if (proc_width < 0) + proc_width = 0; + } + } + } + } + + /* Now convert elements to string form */ + pname = loc->procName; + + /* Now create the locator line from the string version + of the elements. We could use sprintf() here but + that wouldn't ensure that we don't overrun the size + of the allocated buffer. strcat_to_buf() will. */ + *string = (char) 0; + + if (target_width > 0) + { + sprintf (buf, "%*.*s ", + -target_width, target_width, target_shortname); + strcat_to_buf (string, status_size, buf); + } + if (pid_width > 0) + { + sprintf (buf, "%*.*s ", + -pid_width, pid_width, pid_name); + strcat_to_buf (string, status_size, buf); + } + + /* Show whether we are in SingleKey mode. */ + if (tui_current_key_mode == tui_single_key_mode) + { + strcat_to_buf (string, status_size, SINGLE_KEY); + strcat_to_buf (string, status_size, " "); + } + + /* procedure/class name */ + if (proc_width > 0) + { + if (strlen (pname) > proc_width) + sprintf (buf, "%s%*.*s* ", PROC_PREFIX, + 1 - proc_width, proc_width - 1, pname); + else + sprintf (buf, "%s%*.*s ", PROC_PREFIX, + -proc_width, proc_width, pname); + strcat_to_buf (string, status_size, buf); + } + + if (line_width > 0) + { + sprintf (buf, "%s%*.*s ", LINE_PREFIX, + -line_width, line_width, line_buf); + strcat_to_buf (string, status_size, buf); + } + if (pc_width > 0) + { + strcat_to_buf (string, status_size, PC_PREFIX); + strcat_to_buf (string, status_size, pc_buf); + } + + + for (i = strlen (string); i < status_size; i++) + string[i] = ' '; + string[status_size] = (char) 0; + + ui_file_delete (pc_out); + return string; +} + +/* Get a printable name for the function at the address. + The symbol name is demangled if demangling is turned on. + Returns a pointer to a static area holding the result. */ +static char* +tui_get_function_from_frame (struct frame_info *fi) +{ + static char name[256]; + struct ui_file *stream = tui_sfileopen (256); + char *p; + + print_address_symbolic (get_frame_pc (fi), stream, demangle, ""); + p = tui_file_get_strbuf (stream); + + /* Use simple heuristics to isolate the function name. The symbol can + be demangled and we can have function parameters. Remove them because + the status line is too short to display them. */ + if (*p == '<') + p++; + strncpy (name, p, sizeof (name)); + p = strchr (name, '('); + if (!p) + p = strchr (name, '>'); + if (p) + *p = 0; + p = strchr (name, '+'); + if (p) + *p = 0; + ui_file_delete (stream); + return name; +} + +/* + ** tuiShowLocatorContent() + */ +void +tuiShowLocatorContent (void) +{ + char *string; + TuiGenWinInfoPtr locator; + + locator = locatorWinInfoPtr (); + + if (m_genWinPtrNotNull (locator) && locator->handle != (WINDOW *) NULL) + { + TuiWinElementPtr element; + + element = (TuiWinElementPtr) locator->content[0]; + + string = tui_make_status_line (&element->whichElement.locator); + wmove (locator->handle, 0, 0); + wstandout (locator->handle); + waddstr (locator->handle, string); + wclrtoeol (locator->handle); + wstandend (locator->handle); + tuiRefreshWin (locator); + wmove (locator->handle, 0, 0); + xfree (string); + locator->contentInUse = TRUE; + } +} + + +/* Set the filename portion of the locator. */ +static void +tui_set_locator_filename (const char *filename) +{ + TuiGenWinInfoPtr locator = locatorWinInfoPtr (); + TuiLocatorElementPtr element; + + if (locator->content[0] == (Opaque) NULL) + { + tui_set_locator_info (filename, NULL, 0, 0); + return; + } + + element = &((TuiWinElementPtr) locator->content[0])->whichElement.locator; + element->fileName[0] = 0; + strcat_to_buf (element->fileName, MAX_LOCATOR_ELEMENT_LEN, filename); +} + +/* Update the locator, with the provided arguments. */ +static void +tui_set_locator_info (const char *filename, const char *procname, int lineno, + CORE_ADDR addr) +{ + TuiGenWinInfoPtr locator = locatorWinInfoPtr (); + TuiLocatorElementPtr element; + + /* Allocate the locator content if necessary. */ + if (locator->contentSize <= 0) + { + locator->content = (OpaquePtr) allocContent (1, locator->type); + locator->contentSize = 1; + } + + element = &((TuiWinElementPtr) locator->content[0])->whichElement.locator; + element->procName[0] = (char) 0; + strcat_to_buf (element->procName, MAX_LOCATOR_ELEMENT_LEN, procname); + element->lineNo = lineno; + element->addr = addr; + tui_set_locator_filename (filename); +} + +/* Update only the filename portion of the locator. */ +void +tuiUpdateLocatorFilename (const char *filename) +{ + tui_set_locator_filename (filename); + tuiShowLocatorContent (); +} + +/* Function to print the frame information for the TUI. */ +void +tuiShowFrameInfo (struct frame_info *fi) +{ + TuiWinInfoPtr winInfo; + register int i; + + if (fi) + { + register int startLine, i; + CORE_ADDR low; + TuiGenWinInfoPtr locator = locatorWinInfoPtr (); + int sourceAlreadyDisplayed; + struct symtab_and_line sal; + + find_frame_sal (fi, &sal); + + sourceAlreadyDisplayed = sal.symtab != 0 + && tuiSourceIsDisplayed (sal.symtab->filename); + tui_set_locator_info (sal.symtab == 0 ? "??" : sal.symtab->filename, + tui_get_function_from_frame (fi), + sal.line, + get_frame_pc (fi)); + tuiShowLocatorContent (); + startLine = 0; + for (i = 0; i < (sourceWindows ())->count; i++) + { + TuiWhichElement *item; + winInfo = (TuiWinInfoPtr) (sourceWindows ())->list[i]; + + item = &((TuiWinElementPtr) locator->content[0])->whichElement; + if (winInfo == srcWin) + { + startLine = (item->locator.lineNo - + (winInfo->generic.viewportHeight / 2)) + 1; + if (startLine <= 0) + startLine = 1; + } + else + { + if (find_pc_partial_function (get_frame_pc (fi), (char **) NULL, + &low, (CORE_ADDR) NULL) == 0) + error ("No function contains program counter for selected frame.\n"); + else + low = tuiGetLowDisassemblyAddress (low, get_frame_pc (fi)); + } + + if (winInfo == srcWin) + { + TuiLineOrAddress l; + l.lineNo = startLine; + if (!(sourceAlreadyDisplayed + && tuiLineIsDisplayed (item->locator.lineNo, winInfo, TRUE))) + tuiUpdateSourceWindow (winInfo, sal.symtab, l, TRUE); + else + { + l.lineNo = item->locator.lineNo; + tuiSetIsExecPointAt (l, winInfo); + } + } + else + { + if (winInfo == disassemWin) + { + TuiLineOrAddress a; + a.addr = low; + if (!tuiAddrIsDisplayed (item->locator.addr, winInfo, TRUE)) + tuiUpdateSourceWindow (winInfo, sal.symtab, a, TRUE); + else + { + a.addr = item->locator.addr; + tuiSetIsExecPointAt (a, winInfo); + } + } + } + tuiUpdateExecInfo (winInfo); + } + } + else + { + tui_set_locator_info (NULL, NULL, 0, (CORE_ADDR) 0); + tuiShowLocatorContent (); + for (i = 0; i < (sourceWindows ())->count; i++) + { + winInfo = (TuiWinInfoPtr) (sourceWindows ())->list[i]; + tuiClearSourceContent (winInfo, EMPTY_SOURCE_PROMPT); + tuiUpdateExecInfo (winInfo); + } + } +} + +/* Function to initialize gdb commands, for tui window stack manipulation. */ +void +_initialize_tuiStack (void) +{ + add_com ("update", class_tui, tui_update_command, + "Update the source window and locator to display the current " + "execution point.\n"); +} + +/* Command to update the display with the current execution point. */ +static void +tui_update_command (char *arg, int from_tty) +{ + char cmd[sizeof("frame 0")]; + + strcpy (cmd, "frame 0"); + execute_command (cmd, from_tty); +} diff --git a/gdb/tui/tui-stack.h b/gdb/tui/tui-stack.h new file mode 100644 index 00000000000..14be4974bed --- /dev/null +++ b/gdb/tui/tui-stack.h @@ -0,0 +1,33 @@ +/* TUI display locator. + Copyright 1998, 1999, 2000, 2001, 2002 Free Software Foundation, Inc. + Contributed by Hewlett-Packard Company. + + This file is part of GDB. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. */ + +#ifndef _TUI_STACK_H +#define _TUI_STACK_H +/* + ** This header file supports + */ + +extern void tuiUpdateLocatorFilename (const char *); +extern void tuiShowLocatorContent (void); +extern void tuiShowFrameInfo (struct frame_info *); + +#endif +/*_TUI_STACK_H*/ diff --git a/gdb/tui/tui-win.c b/gdb/tui/tui-win.c new file mode 100644 index 00000000000..a7d35ce93f4 --- /dev/null +++ b/gdb/tui/tui-win.c @@ -0,0 +1,1615 @@ +/* TUI window generic functions. + + Copyright 1998, 1999, 2000, 2001, 2002, 2003, 2004 Free Software + Foundation, Inc. + + Contributed by Hewlett-Packard Company. + + This file is part of GDB. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. */ + +/* This module contains procedures for handling tui window functions + like resize, scrolling, scrolling, changing focus, etc. + + Author: Susan B. Macchia */ + +#include "defs.h" +#include "command.h" +#include "symtab.h" +#include "breakpoint.h" +#include "frame.h" +#include "cli/cli-cmds.h" +#include "top.h" +#include "source.h" + +#include "tui/tui.h" +#include "tui/tui-data.h" +#include "tui/tui-wingeneral.h" +#include "tui/tui-stack.h" +#include "tui/tui-regs.h" +#include "tui/tui-disasm.h" +#include "tui/tui-source.h" +#include "tui/tui-winsource.h" +#include "tui/tui-windata.h" + +#ifdef HAVE_NCURSES_H +#include <ncurses.h> +#else +#ifdef HAVE_CURSES_H +#include <curses.h> +#endif +#endif + +#include <string.h> +#include <ctype.h> +#include <readline/readline.h> + +/******************************* +** Static Local Decls +********************************/ +static void _makeVisibleWithNewHeight (TuiWinInfoPtr); +static void _makeInvisibleAndSetNewHeight (TuiWinInfoPtr, int); +static TuiStatus _tuiAdjustWinHeights (TuiWinInfoPtr, int); +static int _newHeightOk (TuiWinInfoPtr, int); +static void _tuiSetTabWidth_command (char *, int); +static void _tuiRefreshAll_command (char *, int); +static void _tuiSetWinHeight_command (char *, int); +static void _tuiXDBsetWinHeight_command (char *, int); +static void _tuiAllWindowsInfo (char *, int); +static void _tuiSetFocus_command (char *, int); +static void _tuiScrollForward_command (char *, int); +static void _tuiScrollBackward_command (char *, int); +static void _tuiScrollLeft_command (char *, int); +static void _tuiScrollRight_command (char *, int); +static void _parseScrollingArgs (char *, TuiWinInfoPtr *, int *); + + +/*************************************** +** DEFINITIONS +***************************************/ +#define WIN_HEIGHT_USAGE "Usage: winheight <win_name> [+ | -] <#lines>\n" +#define XDBWIN_HEIGHT_USAGE "Usage: w <#lines>\n" +#define FOCUS_USAGE "Usage: focus {<win> | next | prev}\n" + +/*************************************** +** PUBLIC FUNCTIONS +***************************************/ + +#ifndef ACS_LRCORNER +# define ACS_LRCORNER '+' +#endif +#ifndef ACS_LLCORNER +# define ACS_LLCORNER '+' +#endif +#ifndef ACS_ULCORNER +# define ACS_ULCORNER '+' +#endif +#ifndef ACS_URCORNER +# define ACS_URCORNER '+' +#endif +#ifndef ACS_HLINE +# define ACS_HLINE '-' +#endif +#ifndef ACS_VLINE +# define ACS_VLINE '|' +#endif + +/* Possible values for tui-border-kind variable. */ +static const char *tui_border_kind_enums[] = { + "space", + "ascii", + "acs", + NULL +}; + +/* Possible values for tui-border-mode and tui-active-border-mode. */ +static const char *tui_border_mode_enums[] = { + "normal", + "standout", + "reverse", + "half", + "half-standout", + "bold", + "bold-standout", + NULL +}; + +struct tui_translate +{ + const char *name; + int value; +}; + +/* Translation table for border-mode variables. + The list of values must be terminated by a NULL. + After the NULL value, an entry defines the default. */ +struct tui_translate tui_border_mode_translate[] = { + { "normal", A_NORMAL }, + { "standout", A_STANDOUT }, + { "reverse", A_REVERSE }, + { "half", A_DIM }, + { "half-standout", A_DIM | A_STANDOUT }, + { "bold", A_BOLD }, + { "bold-standout", A_BOLD | A_STANDOUT }, + { 0, 0 }, + { "normal", A_NORMAL } +}; + +/* Translation tables for border-kind, one for each border + character (see wborder, border curses operations). + -1 is used to indicate the ACS because ACS characters + are determined at run time by curses (depends on terminal). */ +struct tui_translate tui_border_kind_translate_vline[] = { + { "space", ' ' }, + { "ascii", '|' }, + { "acs", -1 }, + { 0, 0 }, + { "ascii", '|' } +}; + +struct tui_translate tui_border_kind_translate_hline[] = { + { "space", ' ' }, + { "ascii", '-' }, + { "acs", -1 }, + { 0, 0 }, + { "ascii", '-' } +}; + +struct tui_translate tui_border_kind_translate_ulcorner[] = { + { "space", ' ' }, + { "ascii", '+' }, + { "acs", -1 }, + { 0, 0 }, + { "ascii", '+' } +}; + +struct tui_translate tui_border_kind_translate_urcorner[] = { + { "space", ' ' }, + { "ascii", '+' }, + { "acs", -1 }, + { 0, 0 }, + { "ascii", '+' } +}; + +struct tui_translate tui_border_kind_translate_llcorner[] = { + { "space", ' ' }, + { "ascii", '+' }, + { "acs", -1 }, + { 0, 0 }, + { "ascii", '+' } +}; + +struct tui_translate tui_border_kind_translate_lrcorner[] = { + { "space", ' ' }, + { "ascii", '+' }, + { "acs", -1 }, + { 0, 0 }, + { "ascii", '+' } +}; + + +/* Tui configuration variables controlled with set/show command. */ +const char *tui_active_border_mode = "bold-standout"; +const char *tui_border_mode = "normal"; +const char *tui_border_kind = "acs"; + +/* Tui internal configuration variables. These variables are + updated by tui_update_variables to reflect the tui configuration + variables. */ +chtype tui_border_vline; +chtype tui_border_hline; +chtype tui_border_ulcorner; +chtype tui_border_urcorner; +chtype tui_border_llcorner; +chtype tui_border_lrcorner; + +int tui_border_attrs; +int tui_active_border_attrs; + +/* Identify the item in the translation table. + When the item is not recognized, use the default entry. */ +static struct tui_translate * +translate (const char *name, struct tui_translate *table) +{ + while (table->name) + { + if (name && strcmp (table->name, name) == 0) + return table; + table++; + } + + /* Not found, return default entry. */ + table++; + return table; +} + +/* Update the tui internal configuration according to gdb settings. + Returns 1 if the configuration has changed and the screen should + be redrawn. */ +int +tui_update_variables () +{ + int need_redraw = 0; + struct tui_translate *entry; + + entry = translate (tui_border_mode, tui_border_mode_translate); + if (tui_border_attrs != entry->value) + { + tui_border_attrs = entry->value; + need_redraw = 1; + } + entry = translate (tui_active_border_mode, tui_border_mode_translate); + if (tui_active_border_attrs != entry->value) + { + tui_active_border_attrs = entry->value; + need_redraw = 1; + } + + /* If one corner changes, all characters are changed. + Only check the first one. The ACS characters are determined at + run time by curses terminal management. */ + entry = translate (tui_border_kind, tui_border_kind_translate_lrcorner); + if (tui_border_lrcorner != (chtype) entry->value) + { + tui_border_lrcorner = (entry->value < 0) ? ACS_LRCORNER : entry->value; + need_redraw = 1; + } + entry = translate (tui_border_kind, tui_border_kind_translate_llcorner); + tui_border_llcorner = (entry->value < 0) ? ACS_LLCORNER : entry->value; + + entry = translate (tui_border_kind, tui_border_kind_translate_ulcorner); + tui_border_ulcorner = (entry->value < 0) ? ACS_ULCORNER : entry->value; + + entry = translate (tui_border_kind, tui_border_kind_translate_urcorner); + tui_border_urcorner = (entry->value < 0) ? ACS_URCORNER : entry->value; + + entry = translate (tui_border_kind, tui_border_kind_translate_hline); + tui_border_hline = (entry->value < 0) ? ACS_HLINE : entry->value; + + entry = translate (tui_border_kind, tui_border_kind_translate_vline); + tui_border_vline = (entry->value < 0) ? ACS_VLINE : entry->value; + + return need_redraw; +} + +static void +set_tui_cmd (char *args, int from_tty) +{ +} + +static void +show_tui_cmd (char *args, int from_tty) +{ +} + +/* + ** _initialize_tuiWin(). + ** Function to initialize gdb commands, for tui window manipulation. + */ +void +_initialize_tuiWin (void) +{ + struct cmd_list_element *c; + static struct cmd_list_element *tui_setlist; + static struct cmd_list_element *tui_showlist; + + /* Define the classes of commands. + They will appear in the help list in the reverse of this order. */ + add_cmd ("tui", class_tui, NULL, + "Text User Interface commands.", + &cmdlist); + + add_prefix_cmd ("tui", class_tui, set_tui_cmd, + "TUI configuration variables", + &tui_setlist, "set tui ", + 0/*allow-unknown*/, &setlist); + add_prefix_cmd ("tui", class_tui, show_tui_cmd, + "TUI configuration variables", + &tui_showlist, "show tui ", + 0/*allow-unknown*/, &showlist); + + add_com ("refresh", class_tui, _tuiRefreshAll_command, + "Refresh the terminal display.\n"); + if (xdb_commands) + add_com_alias ("U", "refresh", class_tui, 0); + add_com ("tabset", class_tui, _tuiSetTabWidth_command, + "Set the width (in characters) of tab stops.\n\ +Usage: tabset <n>\n"); + add_com ("winheight", class_tui, _tuiSetWinHeight_command, + "Set the height of a specified window.\n\ +Usage: winheight <win_name> [+ | -] <#lines>\n\ +Window names are:\n\ +src : the source window\n\ +cmd : the command window\n\ +asm : the disassembly window\n\ +regs : the register display\n"); + add_com_alias ("wh", "winheight", class_tui, 0); + add_info ("win", _tuiAllWindowsInfo, + "List of all displayed windows.\n"); + add_com ("focus", class_tui, _tuiSetFocus_command, + "Set focus to named window or next/prev window.\n\ +Usage: focus {<win> | next | prev}\n\ +Valid Window names are:\n\ +src : the source window\n\ +asm : the disassembly window\n\ +regs : the register display\n\ +cmd : the command window\n"); + add_com_alias ("fs", "focus", class_tui, 0); + add_com ("+", class_tui, _tuiScrollForward_command, + "Scroll window forward.\nUsage: + [win] [n]\n"); + add_com ("-", class_tui, _tuiScrollBackward_command, + "Scroll window backward.\nUsage: - [win] [n]\n"); + add_com ("<", class_tui, _tuiScrollLeft_command, + "Scroll window forward.\nUsage: < [win] [n]\n"); + add_com (">", class_tui, _tuiScrollRight_command, + "Scroll window backward.\nUsage: > [win] [n]\n"); + if (xdb_commands) + add_com ("w", class_xdb, _tuiXDBsetWinHeight_command, + "XDB compatibility command for setting the height of a command window.\n\ +Usage: w <#lines>\n"); + + /* Define the tui control variables. */ + c = add_set_enum_cmd + ("border-kind", no_class, + tui_border_kind_enums, &tui_border_kind, + "Set the kind of border for TUI windows.\n" + "This variable controls the border of TUI windows:\n" + "space use a white space\n" + "ascii use ascii characters + - | for the border\n" + "acs use the Alternate Character Set\n", + &tui_setlist); + add_show_from_set (c, &tui_showlist); + + c = add_set_enum_cmd + ("border-mode", no_class, + tui_border_mode_enums, &tui_border_mode, + "Set the attribute mode to use for the TUI window borders.\n" + "This variable controls the attributes to use for the window borders:\n" + "normal normal display\n" + "standout use highlight mode of terminal\n" + "reverse use reverse video mode\n" + "half use half bright\n" + "half-standout use half bright and standout mode\n" + "bold use extra bright or bold\n" + "bold-standout use extra bright or bold with standout mode\n", + &tui_setlist); + add_show_from_set (c, &tui_showlist); + + c = add_set_enum_cmd + ("active-border-mode", no_class, + tui_border_mode_enums, &tui_active_border_mode, + "Set the attribute mode to use for the active TUI window border.\n" + "This variable controls the attributes to use for the active window border:\n" + "normal normal display\n" + "standout use highlight mode of terminal\n" + "reverse use reverse video mode\n" + "half use half bright\n" + "half-standout use half bright and standout mode\n" + "bold use extra bright or bold\n" + "bold-standout use extra bright or bold with standout mode\n", + &tui_setlist); + add_show_from_set (c, &tui_showlist); +} + +/* Update gdb's knowledge of the terminal size. */ +void +tui_update_gdb_sizes () +{ + char cmd[50]; + int screenheight, screenwidth; + + rl_get_screen_size (&screenheight, &screenwidth); + /* Set to TUI command window dimension or use readline values. */ + sprintf (cmd, "set width %d", + tui_active ? cmdWin->generic.width : screenwidth); + execute_command (cmd, 0); + sprintf (cmd, "set height %d", + tui_active ? cmdWin->generic.height : screenheight); + execute_command (cmd, 0); +} + + +/* + ** tuiSetWinFocusTo + ** Set the logical focus to winInfo + */ +void +tuiSetWinFocusTo (TuiWinInfoPtr winInfo) +{ + if (m_winPtrNotNull (winInfo)) + { + TuiWinInfoPtr winWithFocus = tuiWinWithFocus (); + + if (m_winPtrNotNull (winWithFocus) && + winWithFocus->generic.type != CMD_WIN) + unhighlightWin (winWithFocus); + tuiSetWinWithFocus (winInfo); + if (winInfo->generic.type != CMD_WIN) + highlightWin (winInfo); + } + + return; +} /* tuiSetWinFocusTo */ + + +/* + ** tuiScrollForward(). + */ +void +tuiScrollForward (TuiWinInfoPtr winToScroll, int numToScroll) +{ + if (winToScroll != cmdWin) + { + int _numToScroll = numToScroll; + + if (numToScroll == 0) + _numToScroll = winToScroll->generic.height - 3; + /* + ** If we are scrolling the source or disassembly window, do a + ** "psuedo" scroll since not all of the source is in memory, + ** only what is in the viewport. If winToScroll is the + ** command window do nothing since the term should handle it. + */ + if (winToScroll == srcWin) + tuiVerticalSourceScroll (FORWARD_SCROLL, _numToScroll); + else if (winToScroll == disassemWin) + tui_vertical_disassem_scroll (FORWARD_SCROLL, _numToScroll); + else if (winToScroll == dataWin) + tuiVerticalDataScroll (FORWARD_SCROLL, _numToScroll); + } + + return; +} /* tuiScrollForward */ + + +/* + ** tuiScrollBackward(). + */ +void +tuiScrollBackward (TuiWinInfoPtr winToScroll, int numToScroll) +{ + if (winToScroll != cmdWin) + { + int _numToScroll = numToScroll; + + if (numToScroll == 0) + _numToScroll = winToScroll->generic.height - 3; + /* + ** If we are scrolling the source or disassembly window, do a + ** "psuedo" scroll since not all of the source is in memory, + ** only what is in the viewport. If winToScroll is the + ** command window do nothing since the term should handle it. + */ + if (winToScroll == srcWin) + tuiVerticalSourceScroll (BACKWARD_SCROLL, _numToScroll); + else if (winToScroll == disassemWin) + tui_vertical_disassem_scroll (BACKWARD_SCROLL, _numToScroll); + else if (winToScroll == dataWin) + tuiVerticalDataScroll (BACKWARD_SCROLL, _numToScroll); + } + return; +} /* tuiScrollBackward */ + + +/* + ** tuiScrollLeft(). + */ +void +tuiScrollLeft (TuiWinInfoPtr winToScroll, int numToScroll) +{ + if (winToScroll != cmdWin) + { + int _numToScroll = numToScroll; + + if (_numToScroll == 0) + _numToScroll = 1; + /* + ** If we are scrolling the source or disassembly window, do a + ** "psuedo" scroll since not all of the source is in memory, + ** only what is in the viewport. If winToScroll is the + ** command window do nothing since the term should handle it. + */ + if (winToScroll == srcWin || winToScroll == disassemWin) + tuiHorizontalSourceScroll (winToScroll, LEFT_SCROLL, _numToScroll); + } + return; +} /* tuiScrollLeft */ + + +/* + ** tuiScrollRight(). + */ +void +tuiScrollRight (TuiWinInfoPtr winToScroll, int numToScroll) +{ + if (winToScroll != cmdWin) + { + int _numToScroll = numToScroll; + + if (_numToScroll == 0) + _numToScroll = 1; + /* + ** If we are scrolling the source or disassembly window, do a + ** "psuedo" scroll since not all of the source is in memory, + ** only what is in the viewport. If winToScroll is the + ** command window do nothing since the term should handle it. + */ + if (winToScroll == srcWin || winToScroll == disassemWin) + tuiHorizontalSourceScroll (winToScroll, RIGHT_SCROLL, _numToScroll); + } + return; +} /* tuiScrollRight */ + + +/* + ** tui_scroll(). + ** Scroll a window. Arguments are passed through a va_list. + */ +void +tui_scroll (TuiScrollDirection direction, + TuiWinInfoPtr winToScroll, + int numToScroll) +{ + switch (direction) + { + case FORWARD_SCROLL: + tuiScrollForward (winToScroll, numToScroll); + break; + case BACKWARD_SCROLL: + tuiScrollBackward (winToScroll, numToScroll); + break; + case LEFT_SCROLL: + tuiScrollLeft (winToScroll, numToScroll); + break; + case RIGHT_SCROLL: + tuiScrollRight (winToScroll, numToScroll); + break; + default: + break; + } +} + + +/* + ** tuiRefreshAll(). + */ +void +tuiRefreshAll (void) +{ + TuiWinType type; + + clearok (curscr, TRUE); + refreshAll (winList); + for (type = SRC_WIN; type < MAX_MAJOR_WINDOWS; type++) + { + if (winList[type] && winList[type]->generic.isVisible) + { + switch (type) + { + case SRC_WIN: + case DISASSEM_WIN: + tuiShowSourceContent (winList[type]); + checkAndDisplayHighlightIfNeeded (winList[type]); + tuiEraseExecInfoContent (winList[type]); + tuiUpdateExecInfo (winList[type]); + break; + case DATA_WIN: + tuiRefreshDataWin (); + break; + default: + break; + } + } + } + tuiShowLocatorContent (); +} + + +/* + ** tuiResizeAll(). + ** Resize all the windows based on the the terminal size. This + ** function gets called from within the readline sinwinch handler. + */ +void +tuiResizeAll (void) +{ + int heightDiff, widthDiff; + int screenheight, screenwidth; + + rl_get_screen_size (&screenheight, &screenwidth); + widthDiff = screenwidth - termWidth (); + heightDiff = screenheight - termHeight (); + if (heightDiff || widthDiff) + { + TuiLayoutType curLayout = currentLayout (); + TuiWinInfoPtr winWithFocus = tuiWinWithFocus (); + TuiWinInfoPtr firstWin, secondWin; + TuiGenWinInfoPtr locator = locatorWinInfoPtr (); + TuiWinType winType; + int newHeight, splitDiff, cmdSplitDiff, numWinsDisplayed = 2; + + /* turn keypad off while we resize */ + if (winWithFocus != cmdWin) + keypad (cmdWin->generic.handle, FALSE); + tui_update_gdb_sizes (); + setTermHeightTo (screenheight); + setTermWidthTo (screenwidth); + if (curLayout == SRC_DISASSEM_COMMAND || + curLayout == SRC_DATA_COMMAND || curLayout == DISASSEM_DATA_COMMAND) + numWinsDisplayed++; + splitDiff = heightDiff / numWinsDisplayed; + cmdSplitDiff = splitDiff; + if (heightDiff % numWinsDisplayed) + { + if (heightDiff < 0) + cmdSplitDiff--; + else + cmdSplitDiff++; + } + /* now adjust each window */ + clear (); + refresh (); + switch (curLayout) + { + case SRC_COMMAND: + case DISASSEM_COMMAND: + firstWin = (TuiWinInfoPtr) (sourceWindows ())->list[0]; + firstWin->generic.width += widthDiff; + locator->width += widthDiff; + /* check for invalid heights */ + if (heightDiff == 0) + newHeight = firstWin->generic.height; + else if ((firstWin->generic.height + splitDiff) >= + (screenheight - MIN_CMD_WIN_HEIGHT - 1)) + newHeight = screenheight - MIN_CMD_WIN_HEIGHT - 1; + else if ((firstWin->generic.height + splitDiff) <= 0) + newHeight = MIN_WIN_HEIGHT; + else + newHeight = firstWin->generic.height + splitDiff; + + _makeInvisibleAndSetNewHeight (firstWin, newHeight); + cmdWin->generic.origin.y = locator->origin.y + 1; + cmdWin->generic.width += widthDiff; + newHeight = screenheight - cmdWin->generic.origin.y; + _makeInvisibleAndSetNewHeight (cmdWin, newHeight); + _makeVisibleWithNewHeight (firstWin); + _makeVisibleWithNewHeight (cmdWin); + if (firstWin->generic.contentSize <= 0) + tuiEraseSourceContent (firstWin, EMPTY_SOURCE_PROMPT); + break; + default: + if (curLayout == SRC_DISASSEM_COMMAND) + { + firstWin = srcWin; + firstWin->generic.width += widthDiff; + secondWin = disassemWin; + secondWin->generic.width += widthDiff; + } + else + { + firstWin = dataWin; + firstWin->generic.width += widthDiff; + secondWin = (TuiWinInfoPtr) (sourceWindows ())->list[0]; + secondWin->generic.width += widthDiff; + } + /* Change the first window's height/width */ + /* check for invalid heights */ + if (heightDiff == 0) + newHeight = firstWin->generic.height; + else if ((firstWin->generic.height + + secondWin->generic.height + (splitDiff * 2)) >= + (screenheight - MIN_CMD_WIN_HEIGHT - 1)) + newHeight = (screenheight - MIN_CMD_WIN_HEIGHT - 1) / 2; + else if ((firstWin->generic.height + splitDiff) <= 0) + newHeight = MIN_WIN_HEIGHT; + else + newHeight = firstWin->generic.height + splitDiff; + _makeInvisibleAndSetNewHeight (firstWin, newHeight); + + if (firstWin == dataWin && widthDiff != 0) + firstWin->detail.dataDisplayInfo.regsColumnCount = + tui_calculate_regs_column_count ( + firstWin->detail.dataDisplayInfo.regsDisplayType); + locator->width += widthDiff; + + /* Change the second window's height/width */ + /* check for invalid heights */ + if (heightDiff == 0) + newHeight = secondWin->generic.height; + else if ((firstWin->generic.height + + secondWin->generic.height + (splitDiff * 2)) >= + (screenheight - MIN_CMD_WIN_HEIGHT - 1)) + { + newHeight = screenheight - MIN_CMD_WIN_HEIGHT - 1; + if (newHeight % 2) + newHeight = (newHeight / 2) + 1; + else + newHeight /= 2; + } + else if ((secondWin->generic.height + splitDiff) <= 0) + newHeight = MIN_WIN_HEIGHT; + else + newHeight = secondWin->generic.height + splitDiff; + secondWin->generic.origin.y = firstWin->generic.height - 1; + _makeInvisibleAndSetNewHeight (secondWin, newHeight); + + /* Change the command window's height/width */ + cmdWin->generic.origin.y = locator->origin.y + 1; + _makeInvisibleAndSetNewHeight ( + cmdWin, cmdWin->generic.height + cmdSplitDiff); + _makeVisibleWithNewHeight (firstWin); + _makeVisibleWithNewHeight (secondWin); + _makeVisibleWithNewHeight (cmdWin); + if (firstWin->generic.contentSize <= 0) + tuiEraseSourceContent (firstWin, EMPTY_SOURCE_PROMPT); + if (secondWin->generic.contentSize <= 0) + tuiEraseSourceContent (secondWin, EMPTY_SOURCE_PROMPT); + break; + } + /* + ** Now remove all invisible windows, and their content so that they get + ** created again when called for with the new size + */ + for (winType = SRC_WIN; (winType < MAX_MAJOR_WINDOWS); winType++) + { + if (winType != CMD_WIN && m_winPtrNotNull (winList[winType]) && + !winList[winType]->generic.isVisible) + { + freeWindow (winList[winType]); + winList[winType] = (TuiWinInfoPtr) NULL; + } + } + tuiSetWinResizedTo (TRUE); + /* turn keypad back on, unless focus is in the command window */ + if (winWithFocus != cmdWin) + keypad (cmdWin->generic.handle, TRUE); + } + return; +} /* tuiResizeAll */ + + +/* + ** tuiSigwinchHandler() + ** SIGWINCH signal handler for the tui. This signal handler is + ** always called, even when the readline package clears signals + ** because it is set as the old_sigwinch() (TUI only) + */ +void +tuiSigwinchHandler (int signal) +{ + /* + ** Say that a resize was done so that the readline can do it + ** later when appropriate. + */ + tuiSetWinResizedTo (TRUE); + + return; +} /* tuiSigwinchHandler */ + + + +/************************* +** STATIC LOCAL FUNCTIONS +**************************/ + + +/* + ** _tuiScrollForward_command(). + */ +static void +_tuiScrollForward_command (char *arg, int fromTTY) +{ + int numToScroll = 1; + TuiWinInfoPtr winToScroll; + + /* Make sure the curses mode is enabled. */ + tui_enable (); + if (arg == (char *) NULL) + _parseScrollingArgs (arg, &winToScroll, (int *) NULL); + else + _parseScrollingArgs (arg, &winToScroll, &numToScroll); + tui_scroll (FORWARD_SCROLL, winToScroll, numToScroll); +} + + +/* + ** _tuiScrollBackward_command(). + */ +static void +_tuiScrollBackward_command (char *arg, int fromTTY) +{ + int numToScroll = 1; + TuiWinInfoPtr winToScroll; + + /* Make sure the curses mode is enabled. */ + tui_enable (); + if (arg == (char *) NULL) + _parseScrollingArgs (arg, &winToScroll, (int *) NULL); + else + _parseScrollingArgs (arg, &winToScroll, &numToScroll); + tui_scroll (BACKWARD_SCROLL, winToScroll, numToScroll); +} + + +/* + ** _tuiScrollLeft_command(). + */ +static void +_tuiScrollLeft_command (char *arg, int fromTTY) +{ + int numToScroll; + TuiWinInfoPtr winToScroll; + + /* Make sure the curses mode is enabled. */ + tui_enable (); + _parseScrollingArgs (arg, &winToScroll, &numToScroll); + tui_scroll (LEFT_SCROLL, winToScroll, numToScroll); +} + + +/* + ** _tuiScrollRight_command(). + */ +static void +_tuiScrollRight_command (char *arg, int fromTTY) +{ + int numToScroll; + TuiWinInfoPtr winToScroll; + + /* Make sure the curses mode is enabled. */ + tui_enable (); + _parseScrollingArgs (arg, &winToScroll, &numToScroll); + tui_scroll (RIGHT_SCROLL, winToScroll, numToScroll); +} + + +/* + ** _tuiSetFocus(). + ** Set focus to the window named by 'arg' + */ +static void +_tuiSetFocus (char *arg, int fromTTY) +{ + if (arg != (char *) NULL) + { + char *bufPtr = (char *) xstrdup (arg); + int i; + TuiWinInfoPtr winInfo = (TuiWinInfoPtr) NULL; + + for (i = 0; (i < strlen (bufPtr)); i++) + bufPtr[i] = toupper (arg[i]); + + if (subset_compare (bufPtr, "NEXT")) + winInfo = tuiNextWin (tuiWinWithFocus ()); + else if (subset_compare (bufPtr, "PREV")) + winInfo = tuiPrevWin (tuiWinWithFocus ()); + else + winInfo = partialWinByName (bufPtr); + + if (winInfo == (TuiWinInfoPtr) NULL || !winInfo->generic.isVisible) + warning ("Invalid window specified. \n\ +The window name specified must be valid and visible.\n"); + else + { + tuiSetWinFocusTo (winInfo); + keypad (cmdWin->generic.handle, (winInfo != cmdWin)); + } + + if (dataWin && dataWin->generic.isVisible) + tuiRefreshDataWin (); + tuiFree (bufPtr); + printf_filtered ("Focus set to %s window.\n", + winName ((TuiGenWinInfoPtr) tuiWinWithFocus ())); + } + else + warning ("Incorrect Number of Arguments.\n%s", FOCUS_USAGE); + + return; +} /* _tuiSetFocus */ + +/* + ** _tuiSetFocus_command() + */ +static void +_tuiSetFocus_command (char *arg, int fromTTY) +{ + /* Make sure the curses mode is enabled. */ + tui_enable (); + _tuiSetFocus (arg, fromTTY); +} + + +/* + ** _tuiAllWindowsInfo(). + */ +static void +_tuiAllWindowsInfo (char *arg, int fromTTY) +{ + TuiWinType type; + TuiWinInfoPtr winWithFocus = tuiWinWithFocus (); + + for (type = SRC_WIN; (type < MAX_MAJOR_WINDOWS); type++) + if (winList[type] && winList[type]->generic.isVisible) + { + if (winWithFocus == winList[type]) + printf_filtered (" %s\t(%d lines) <has focus>\n", + winName (&winList[type]->generic), + winList[type]->generic.height); + else + printf_filtered (" %s\t(%d lines)\n", + winName (&winList[type]->generic), + winList[type]->generic.height); + } + + return; +} /* _tuiAllWindowsInfo */ + + +/* + ** _tuiRefreshAll_command(). + */ +static void +_tuiRefreshAll_command (char *arg, int fromTTY) +{ + /* Make sure the curses mode is enabled. */ + tui_enable (); + + tuiRefreshAll (); +} + + +/* + ** _tuiSetWinTabWidth_command(). + ** Set the height of the specified window. + */ +static void +_tuiSetTabWidth_command (char *arg, int fromTTY) +{ + /* Make sure the curses mode is enabled. */ + tui_enable (); + if (arg != (char *) NULL) + { + int ts; + + ts = atoi (arg); + if (ts > 0) + tuiSetDefaultTabLen (ts); + else + warning ("Tab widths greater than 0 must be specified.\n"); + } + + return; +} /* _tuiSetTabWidth_command */ + + +/* + ** _tuiSetWinHeight(). + ** Set the height of the specified window. + */ +static void +_tuiSetWinHeight (char *arg, int fromTTY) +{ + /* Make sure the curses mode is enabled. */ + tui_enable (); + if (arg != (char *) NULL) + { + char *buf = xstrdup (arg); + char *bufPtr = buf; + char *wname = (char *) NULL; + int newHeight, i; + TuiWinInfoPtr winInfo; + + wname = bufPtr; + bufPtr = strchr (bufPtr, ' '); + if (bufPtr != (char *) NULL) + { + *bufPtr = (char) 0; + + /* + ** Validate the window name + */ + for (i = 0; i < strlen (wname); i++) + wname[i] = toupper (wname[i]); + winInfo = partialWinByName (wname); + + if (winInfo == (TuiWinInfoPtr) NULL || !winInfo->generic.isVisible) + warning ("Invalid window specified. \n\ +The window name specified must be valid and visible.\n"); + else + { + /* Process the size */ + while (*(++bufPtr) == ' ') + ; + + if (*bufPtr != (char) 0) + { + int negate = FALSE; + int fixedSize = TRUE; + int inputNo;; + + if (*bufPtr == '+' || *bufPtr == '-') + { + if (*bufPtr == '-') + negate = TRUE; + fixedSize = FALSE; + bufPtr++; + } + inputNo = atoi (bufPtr); + if (inputNo > 0) + { + if (negate) + inputNo *= (-1); + if (fixedSize) + newHeight = inputNo; + else + newHeight = winInfo->generic.height + inputNo; + /* + ** Now change the window's height, and adjust all + ** other windows around it + */ + if (_tuiAdjustWinHeights (winInfo, + newHeight) == TUI_FAILURE) + warning ("Invalid window height specified.\n%s", + WIN_HEIGHT_USAGE); + else + tui_update_gdb_sizes (); + } + else + warning ("Invalid window height specified.\n%s", + WIN_HEIGHT_USAGE); + } + } + } + else + printf_filtered (WIN_HEIGHT_USAGE); + + if (buf != (char *) NULL) + tuiFree (buf); + } + else + printf_filtered (WIN_HEIGHT_USAGE); + + return; +} /* _tuiSetWinHeight */ + +/* + ** _tuiSetWinHeight_command(). + ** Set the height of the specified window, with va_list. + */ +static void +_tuiSetWinHeight_command (char *arg, int fromTTY) +{ + /* Make sure the curses mode is enabled. */ + tui_enable (); + _tuiSetWinHeight (arg, fromTTY); +} + + +/* + ** _tuiXDBsetWinHeight(). + ** XDB Compatibility command for setting the window height. This will + ** increase or decrease the command window by the specified amount. + */ +static void +_tuiXDBsetWinHeight (char *arg, int fromTTY) +{ + /* Make sure the curses mode is enabled. */ + tui_enable (); + if (arg != (char *) NULL) + { + int inputNo = atoi (arg); + + if (inputNo > 0) + { /* Add 1 for the locator */ + int newHeight = termHeight () - (inputNo + 1); + + if (!_newHeightOk (winList[CMD_WIN], newHeight) || + _tuiAdjustWinHeights (winList[CMD_WIN], + newHeight) == TUI_FAILURE) + warning ("Invalid window height specified.\n%s", + XDBWIN_HEIGHT_USAGE); + } + else + warning ("Invalid window height specified.\n%s", + XDBWIN_HEIGHT_USAGE); + } + else + warning ("Invalid window height specified.\n%s", XDBWIN_HEIGHT_USAGE); + + return; +} /* _tuiXDBsetWinHeight */ + +/* + ** _tuiSetWinHeight_command(). + ** Set the height of the specified window, with va_list. + */ +static void +_tuiXDBsetWinHeight_command (char *arg, int fromTTY) +{ + _tuiXDBsetWinHeight (arg, fromTTY); +} + + +/* + ** _tuiAdjustWinHeights(). + ** Function to adjust all window heights around the primary + */ +static TuiStatus +_tuiAdjustWinHeights (TuiWinInfoPtr primaryWinInfo, int newHeight) +{ + TuiStatus status = TUI_FAILURE; + + if (_newHeightOk (primaryWinInfo, newHeight)) + { + status = TUI_SUCCESS; + if (newHeight != primaryWinInfo->generic.height) + { + int diff; + TuiWinInfoPtr winInfo; + TuiGenWinInfoPtr locator = locatorWinInfoPtr (); + TuiLayoutType curLayout = currentLayout (); + + diff = (newHeight - primaryWinInfo->generic.height) * (-1); + if (curLayout == SRC_COMMAND || curLayout == DISASSEM_COMMAND) + { + TuiWinInfoPtr srcWinInfo; + + _makeInvisibleAndSetNewHeight (primaryWinInfo, newHeight); + if (primaryWinInfo->generic.type == CMD_WIN) + { + winInfo = (TuiWinInfoPtr) (sourceWindows ())->list[0]; + srcWinInfo = winInfo; + } + else + { + winInfo = winList[CMD_WIN]; + srcWinInfo = primaryWinInfo; + } + _makeInvisibleAndSetNewHeight (winInfo, + winInfo->generic.height + diff); + cmdWin->generic.origin.y = locator->origin.y + 1; + _makeVisibleWithNewHeight (winInfo); + _makeVisibleWithNewHeight (primaryWinInfo); + if (srcWinInfo->generic.contentSize <= 0) + tuiEraseSourceContent (srcWinInfo, EMPTY_SOURCE_PROMPT); + } + else + { + TuiWinInfoPtr firstWin, secondWin; + + if (curLayout == SRC_DISASSEM_COMMAND) + { + firstWin = srcWin; + secondWin = disassemWin; + } + else + { + firstWin = dataWin; + secondWin = (TuiWinInfoPtr) (sourceWindows ())->list[0]; + } + if (primaryWinInfo == cmdWin) + { /* + ** Split the change in height accross the 1st & 2nd windows + ** adjusting them as well. + */ + int firstSplitDiff = diff / 2; /* subtract the locator */ + int secondSplitDiff = firstSplitDiff; + + if (diff % 2) + { + if (firstWin->generic.height > + secondWin->generic.height) + if (diff < 0) + firstSplitDiff--; + else + firstSplitDiff++; + else + { + if (diff < 0) + secondSplitDiff--; + else + secondSplitDiff++; + } + } + /* make sure that the minimum hieghts are honored */ + while ((firstWin->generic.height + firstSplitDiff) < 3) + { + firstSplitDiff++; + secondSplitDiff--; + } + while ((secondWin->generic.height + secondSplitDiff) < 3) + { + secondSplitDiff++; + firstSplitDiff--; + } + _makeInvisibleAndSetNewHeight ( + firstWin, + firstWin->generic.height + firstSplitDiff); + secondWin->generic.origin.y = firstWin->generic.height - 1; + _makeInvisibleAndSetNewHeight ( + secondWin, secondWin->generic.height + secondSplitDiff); + cmdWin->generic.origin.y = locator->origin.y + 1; + _makeInvisibleAndSetNewHeight (cmdWin, newHeight); + } + else + { + if ((cmdWin->generic.height + diff) < 1) + { /* + ** If there is no way to increase the command window + ** take real estate from the 1st or 2nd window. + */ + if ((cmdWin->generic.height + diff) < 1) + { + int i; + for (i = cmdWin->generic.height + diff; + (i < 1); i++) + if (primaryWinInfo == firstWin) + secondWin->generic.height--; + else + firstWin->generic.height--; + } + } + if (primaryWinInfo == firstWin) + _makeInvisibleAndSetNewHeight (firstWin, newHeight); + else + _makeInvisibleAndSetNewHeight ( + firstWin, + firstWin->generic.height); + secondWin->generic.origin.y = firstWin->generic.height - 1; + if (primaryWinInfo == secondWin) + _makeInvisibleAndSetNewHeight (secondWin, newHeight); + else + _makeInvisibleAndSetNewHeight ( + secondWin, secondWin->generic.height); + cmdWin->generic.origin.y = locator->origin.y + 1; + if ((cmdWin->generic.height + diff) < 1) + _makeInvisibleAndSetNewHeight (cmdWin, 1); + else + _makeInvisibleAndSetNewHeight ( + cmdWin, cmdWin->generic.height + diff); + } + _makeVisibleWithNewHeight (cmdWin); + _makeVisibleWithNewHeight (secondWin); + _makeVisibleWithNewHeight (firstWin); + if (firstWin->generic.contentSize <= 0) + tuiEraseSourceContent (firstWin, EMPTY_SOURCE_PROMPT); + if (secondWin->generic.contentSize <= 0) + tuiEraseSourceContent (secondWin, EMPTY_SOURCE_PROMPT); + } + } + } + + return status; +} /* _tuiAdjustWinHeights */ + + +/* + ** _makeInvisibleAndSetNewHeight(). + ** Function make the target window (and auxillary windows associated + ** with the targer) invisible, and set the new height and location. + */ +static void +_makeInvisibleAndSetNewHeight (TuiWinInfoPtr winInfo, int height) +{ + int i; + TuiGenWinInfoPtr genWinInfo; + + + m_beInvisible (&winInfo->generic); + winInfo->generic.height = height; + if (height > 1) + winInfo->generic.viewportHeight = height - 1; + else + winInfo->generic.viewportHeight = height; + if (winInfo != cmdWin) + winInfo->generic.viewportHeight--; + + /* Now deal with the auxillary windows associated with winInfo */ + switch (winInfo->generic.type) + { + case SRC_WIN: + case DISASSEM_WIN: + genWinInfo = winInfo->detail.sourceInfo.executionInfo; + m_beInvisible (genWinInfo); + genWinInfo->height = height; + genWinInfo->origin.y = winInfo->generic.origin.y; + if (height > 1) + genWinInfo->viewportHeight = height - 1; + else + genWinInfo->viewportHeight = height; + if (winInfo != cmdWin) + genWinInfo->viewportHeight--; + + if (m_hasLocator (winInfo)) + { + genWinInfo = locatorWinInfoPtr (); + m_beInvisible (genWinInfo); + genWinInfo->origin.y = winInfo->generic.origin.y + height; + } + break; + case DATA_WIN: + /* delete all data item windows */ + for (i = 0; i < winInfo->generic.contentSize; i++) + { + genWinInfo = (TuiGenWinInfoPtr) & ((TuiWinElementPtr) + winInfo->generic.content[i])->whichElement.dataWindow; + tuiDelwin (genWinInfo->handle); + genWinInfo->handle = (WINDOW *) NULL; + } + break; + default: + break; + } +} + + +/* + ** _makeVisibleWithNewHeight(). + ** Function to make the windows with new heights visible. + ** This means re-creating the windows' content since the window + ** had to be destroyed to be made invisible. + */ +static void +_makeVisibleWithNewHeight (TuiWinInfoPtr winInfo) +{ + struct symtab *s; + + m_beVisible (&winInfo->generic); + checkAndDisplayHighlightIfNeeded (winInfo); + switch (winInfo->generic.type) + { + case SRC_WIN: + case DISASSEM_WIN: + freeWinContent (winInfo->detail.sourceInfo.executionInfo); + m_beVisible (winInfo->detail.sourceInfo.executionInfo); + if (winInfo->generic.content != (OpaquePtr) NULL) + { + TuiLineOrAddress lineOrAddr; + struct symtab_and_line cursal + = get_current_source_symtab_and_line (); + + if (winInfo->generic.type == SRC_WIN) + lineOrAddr.lineNo = + winInfo->detail.sourceInfo.startLineOrAddr.lineNo; + else + lineOrAddr.addr = + winInfo->detail.sourceInfo.startLineOrAddr.addr; + freeWinContent (&winInfo->generic); + tuiUpdateSourceWindow (winInfo, + cursal.symtab, lineOrAddr, TRUE); + } + else if (deprecated_selected_frame != (struct frame_info *) NULL) + { + TuiLineOrAddress line; + struct symtab_and_line cursal = get_current_source_symtab_and_line (); + + + s = find_pc_symtab (get_frame_pc (deprecated_selected_frame)); + if (winInfo->generic.type == SRC_WIN) + line.lineNo = cursal.line; + else + { + find_line_pc (s, cursal.line, &line.addr); + } + tuiUpdateSourceWindow (winInfo, s, line, TRUE); + } + if (m_hasLocator (winInfo)) + { + m_beVisible (locatorWinInfoPtr ()); + tuiShowLocatorContent (); + } + break; + case DATA_WIN: + tuiDisplayAllData (); + break; + case CMD_WIN: + winInfo->detail.commandInfo.curLine = 0; + winInfo->detail.commandInfo.curch = 0; + wmove (winInfo->generic.handle, + winInfo->detail.commandInfo.curLine, + winInfo->detail.commandInfo.curch); + break; + default: + break; + } + + return; +} /* _makeVisibleWithNewHeight */ + + +static int +_newHeightOk (TuiWinInfoPtr primaryWinInfo, int newHeight) +{ + int ok = (newHeight < termHeight ()); + + if (ok) + { + int diff; + TuiLayoutType curLayout = currentLayout (); + + diff = (newHeight - primaryWinInfo->generic.height) * (-1); + if (curLayout == SRC_COMMAND || curLayout == DISASSEM_COMMAND) + { + ok = ((primaryWinInfo->generic.type == CMD_WIN && + newHeight <= (termHeight () - 4) && + newHeight >= MIN_CMD_WIN_HEIGHT) || + (primaryWinInfo->generic.type != CMD_WIN && + newHeight <= (termHeight () - 2) && + newHeight >= MIN_WIN_HEIGHT)); + if (ok) + { /* check the total height */ + TuiWinInfoPtr winInfo; + + if (primaryWinInfo == cmdWin) + winInfo = (TuiWinInfoPtr) (sourceWindows ())->list[0]; + else + winInfo = cmdWin; + ok = ((newHeight + + (winInfo->generic.height + diff)) <= termHeight ()); + } + } + else + { + int curTotalHeight, totalHeight, minHeight = 0; + TuiWinInfoPtr firstWin, secondWin; + + if (curLayout == SRC_DISASSEM_COMMAND) + { + firstWin = srcWin; + secondWin = disassemWin; + } + else + { + firstWin = dataWin; + secondWin = (TuiWinInfoPtr) (sourceWindows ())->list[0]; + } + /* + ** We could simply add all the heights to obtain the same result + ** but below is more explicit since we subtract 1 for the + ** line that the first and second windows share, and add one + ** for the locator. + */ + totalHeight = curTotalHeight = + (firstWin->generic.height + secondWin->generic.height - 1) + + cmdWin->generic.height + 1 /*locator */ ; + if (primaryWinInfo == cmdWin) + { + /* locator included since first & second win share a line */ + ok = ((firstWin->generic.height + + secondWin->generic.height + diff) >= + (MIN_WIN_HEIGHT * 2) && + newHeight >= MIN_CMD_WIN_HEIGHT); + if (ok) + { + totalHeight = newHeight + (firstWin->generic.height + + secondWin->generic.height + diff); + minHeight = MIN_CMD_WIN_HEIGHT; + } + } + else + { + minHeight = MIN_WIN_HEIGHT; + /* + ** First see if we can increase/decrease the command + ** window. And make sure that the command window is + ** at least 1 line + */ + ok = ((cmdWin->generic.height + diff) > 0); + if (!ok) + { /* + ** Looks like we have to increase/decrease one of + ** the other windows + */ + if (primaryWinInfo == firstWin) + ok = (secondWin->generic.height + diff) >= minHeight; + else + ok = (firstWin->generic.height + diff) >= minHeight; + } + if (ok) + { + if (primaryWinInfo == firstWin) + totalHeight = newHeight + + secondWin->generic.height + + cmdWin->generic.height + diff; + else + totalHeight = newHeight + + firstWin->generic.height + + cmdWin->generic.height + diff; + } + } + /* + ** Now make sure that the proposed total height doesn't exceed + ** the old total height. + */ + if (ok) + ok = (newHeight >= minHeight && totalHeight <= curTotalHeight); + } + } + + return ok; +} /* _newHeightOk */ + + +/* + ** _parseScrollingArgs(). + */ +static void +_parseScrollingArgs (char *arg, TuiWinInfoPtr * winToScroll, int *numToScroll) +{ + if (numToScroll) + *numToScroll = 0; + *winToScroll = tuiWinWithFocus (); + + /* + ** First set up the default window to scroll, in case there is no + ** window name arg + */ + if (arg != (char *) NULL) + { + char *buf, *bufPtr; + + /* process the number of lines to scroll */ + buf = bufPtr = xstrdup (arg); + if (isdigit (*bufPtr)) + { + char *numStr; + + numStr = bufPtr; + bufPtr = strchr (bufPtr, ' '); + if (bufPtr != (char *) NULL) + { + *bufPtr = (char) 0; + if (numToScroll) + *numToScroll = atoi (numStr); + bufPtr++; + } + else if (numToScroll) + *numToScroll = atoi (numStr); + } + + /* process the window name if one is specified */ + if (bufPtr != (char *) NULL) + { + char *wname; + int i; + + if (*bufPtr == ' ') + while (*(++bufPtr) == ' ') + ; + + if (*bufPtr != (char) 0) + wname = bufPtr; + else + wname = "?"; + + /* Validate the window name */ + for (i = 0; i < strlen (wname); i++) + wname[i] = toupper (wname[i]); + *winToScroll = partialWinByName (wname); + + if (*winToScroll == (TuiWinInfoPtr) NULL || + !(*winToScroll)->generic.isVisible) + warning ("Invalid window specified. \n\ +The window name specified must be valid and visible.\n"); + else if (*winToScroll == cmdWin) + *winToScroll = (TuiWinInfoPtr) (sourceWindows ())->list[0]; + } + tuiFree (buf); + } + + return; +} /* _parseScrollingArgs */ diff --git a/gdb/tui/tui-win.h b/gdb/tui/tui-win.h new file mode 100644 index 00000000000..bc260804888 --- /dev/null +++ b/gdb/tui/tui-win.h @@ -0,0 +1,59 @@ +/* TUI window generic functions. + Copyright 1998, 1999, 2000, 2001, 2002 Free Software Foundation, Inc. + Contributed by Hewlett-Packard Company. + + This file is part of GDB. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. */ + +#ifndef _TUI_WIN_H +#define _TUI_WIN_H + +/***************************************** +** TYPE DEFINITIONS ** +******************************************/ + + + +/***************************************** +** PUBLIC FUNCTION EXTERNAL DECLS ** +******************************************/ +extern void tuiScrollForward (TuiWinInfoPtr, int); +extern void tuiScrollBackward (TuiWinInfoPtr, int); +extern void tuiScrollLeft (TuiWinInfoPtr, int); +extern void tuiScrollRight (TuiWinInfoPtr, int); +extern void tui_scroll (TuiScrollDirection, TuiWinInfoPtr, int); +extern void tuiSetWinFocusTo (TuiWinInfoPtr); +extern void tuiResizeAll (void); +extern void tuiRefreshAll (void); +extern void tuiSigwinchHandler (int); + +extern chtype tui_border_ulcorner; +extern chtype tui_border_urcorner; +extern chtype tui_border_lrcorner; +extern chtype tui_border_llcorner; +extern chtype tui_border_vline; +extern chtype tui_border_hline; +extern int tui_border_attrs; +extern int tui_active_border_attrs; + +extern int tui_update_variables (); + +/* Update gdb's knowledge of the terminal size. */ +extern void tui_update_gdb_sizes (void); + +#endif +/*_TUI_WIN_H*/ diff --git a/gdb/tui/tui-windata.c b/gdb/tui/tui-windata.c new file mode 100644 index 00000000000..f504f7fc6c7 --- /dev/null +++ b/gdb/tui/tui-windata.c @@ -0,0 +1,349 @@ +/* Data/register window display. + + Copyright 1998, 1999, 2000, 2001, 2002, 2003, 2004 Free Software + Foundation, Inc. + + Contributed by Hewlett-Packard Company. + + This file is part of GDB. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. */ + +#include "defs.h" +#include "tui/tui.h" +#include "tui/tui-data.h" +#include "tui/tui-wingeneral.h" +#include "tui/tui-regs.h" + +#ifdef HAVE_NCURSES_H +#include <ncurses.h> +#else +#ifdef HAVE_CURSES_H +#include <curses.h> +#endif +#endif + + +/***************************************** +** STATIC LOCAL FUNCTIONS FORWARD DECLS ** +******************************************/ + + + +/***************************************** +** PUBLIC FUNCTIONS ** +******************************************/ + + +/* + ** tuiFirstDataItemDisplayed() + ** Answer the index first element displayed. + ** If none are displayed, then return (-1). + */ +int +tuiFirstDataItemDisplayed (void) +{ + int elementNo = (-1); + int i; + + for (i = 0; (i < dataWin->generic.contentSize && elementNo < 0); i++) + { + TuiGenWinInfoPtr dataItemWin; + + dataItemWin = &((TuiWinContent) + dataWin->generic.content)[i]->whichElement.dataWindow; + if (dataItemWin->handle != (WINDOW *) NULL && dataItemWin->isVisible) + elementNo = i; + } + + return elementNo; +} /* tuiFirstDataItemDisplayed */ + + +/* + ** tuiFirstDataElementNoInLine() + ** Answer the index of the first element in lineNo. If lineNo is + ** past the data area (-1) is returned. + */ +int +tuiFirstDataElementNoInLine (int lineNo) +{ + int firstElementNo = (-1); + + /* + ** First see if there is a register on lineNo, and if so, set the + ** first element number + */ + if ((firstElementNo = tui_first_reg_element_no_inline (lineNo)) == -1) + { /* + ** Looking at the general data, the 1st element on lineNo + */ + } + + return firstElementNo; +} /* tuiFirstDataElementNoInLine */ + + +/* + ** tuiDeleteDataContentWindows() + ** Function to delete all the item windows in the data window. + ** This is usually done when the data window is scrolled. + */ +void +tuiDeleteDataContentWindows (void) +{ + int i; + TuiGenWinInfoPtr dataItemWinPtr; + + for (i = 0; (i < dataWin->generic.contentSize); i++) + { + dataItemWinPtr = &((TuiWinContent) + dataWin->generic.content)[i]->whichElement.dataWindow; + tuiDelwin (dataItemWinPtr->handle); + dataItemWinPtr->handle = (WINDOW *) NULL; + dataItemWinPtr->isVisible = FALSE; + } + + return; +} /* tuiDeleteDataContentWindows */ + + +void +tuiEraseDataContent (char *prompt) +{ + werase (dataWin->generic.handle); + checkAndDisplayHighlightIfNeeded (dataWin); + if (prompt != (char *) NULL) + { + int halfWidth = (dataWin->generic.width - 2) / 2; + int xPos; + + if (strlen (prompt) >= halfWidth) + xPos = 1; + else + xPos = halfWidth - strlen (prompt); + mvwaddstr (dataWin->generic.handle, + (dataWin->generic.height / 2), + xPos, + prompt); + } + wrefresh (dataWin->generic.handle); + + return; +} /* tuiEraseDataContent */ + + +/* + ** tuiDisplayAllData(). + ** This function displays the data that is in the data window's + ** content. It does not set the content. + */ +void +tuiDisplayAllData (void) +{ + if (dataWin->generic.contentSize <= 0) + tuiEraseDataContent (NO_DATA_STRING); + else + { + tuiEraseDataContent ((char *) NULL); + tuiDeleteDataContentWindows (); + checkAndDisplayHighlightIfNeeded (dataWin); + tui_display_registers_from (0); + /* + ** Then display the other data + */ + if (dataWin->detail.dataDisplayInfo.dataContent != + (TuiWinContent) NULL && + dataWin->detail.dataDisplayInfo.dataContentCount > 0) + { + } + } + return; +} /* tuiDisplayAllData */ + + +/* + ** tuiDisplayDataFromLine() + ** Function to display the data starting at line, lineNo, in the + ** data window. + */ +void +tuiDisplayDataFromLine (int lineNo) +{ + int _lineNo = lineNo; + + if (lineNo < 0) + _lineNo = 0; + + checkAndDisplayHighlightIfNeeded (dataWin); + + /* there is no general data, force regs to display (if there are any) */ + if (dataWin->detail.dataDisplayInfo.dataContentCount <= 0) + tui_display_registers_from_line (_lineNo, TRUE); + else + { + int elementNo, startLineNo; + int regsLastLine = tui_last_regs_line_no (); + + + /* display regs if we can */ + if (tui_display_registers_from_line (_lineNo, FALSE) < 0) + { /* + ** _lineNo is past the regs display, so calc where the + ** start data element is + */ + if (regsLastLine < _lineNo) + { /* figure out how many lines each element is to obtain + the start elementNo */ + } + } + else + { /* + ** calculate the starting element of the data display, given + ** regsLastLine and how many lines each element is, up to + ** _lineNo + */ + } + /* Now display the data , starting at elementNo */ + } + + return; +} /* tuiDisplayDataFromLine */ + + +/* + ** tuiDisplayDataFrom() + ** Display data starting at element elementNo + */ +void +tuiDisplayDataFrom (int elementNo, int reuseWindows) +{ + int firstLine = (-1); + + if (elementNo < dataWin->detail.dataDisplayInfo.regsContentCount) + firstLine = tui_line_from_reg_element_no (elementNo); + else + { /* calculate the firstLine from the element number */ + } + + if (firstLine >= 0) + { + tuiEraseDataContent ((char *) NULL); + if (!reuseWindows) + tuiDeleteDataContentWindows (); + tuiDisplayDataFromLine (firstLine); + } + + return; +} /* tuiDisplayDataFrom */ + + +/* + ** tuiRefreshDataWin() + ** Function to redisplay the contents of the data window. + */ +void +tuiRefreshDataWin (void) +{ + tuiEraseDataContent ((char *) NULL); + if (dataWin->generic.contentSize > 0) + { + int firstElement = tuiFirstDataItemDisplayed (); + + if (firstElement >= 0) /* re-use existing windows */ + tuiDisplayDataFrom (firstElement, TRUE); + } + + return; +} /* tuiRefreshDataWin */ + + +/* + ** tuiCheckDataValues(). + ** Function to check the data values and hilite any that have changed + */ +void +tuiCheckDataValues (struct frame_info *frame) +{ + tui_check_register_values (frame); + + /* Now check any other data values that there are */ + if (m_winPtrNotNull (dataWin) && dataWin->generic.isVisible) + { + int i; + + for (i = 0; dataWin->detail.dataDisplayInfo.dataContentCount; i++) + { +#ifdef LATER + TuiDataElementPtr dataElementPtr; + TuiGenWinInfoPtr dataItemWinPtr; + Opaque newValue; + + dataItemPtr = &dataWin->detail.dataDisplayInfo. + dataContent[i]->whichElement.dataWindow; + dataElementPtr = &((TuiWinContent) + dataItemWinPtr->content)[0]->whichElement.data; + if value + has changed (dataElementPtr, frame, &newValue) + { + dataElementPtr->value = newValue; + update the display with the new value, hiliting it. + } +#endif + } + } +} /* tuiCheckDataValues */ + + +/* + ** tuiVerticalDataScroll() + ** Scroll the data window vertically forward or backward. + */ +void +tuiVerticalDataScroll (TuiScrollDirection scrollDirection, int numToScroll) +{ + int firstElementNo; + int firstLine = (-1); + + firstElementNo = tuiFirstDataItemDisplayed (); + if (firstElementNo < dataWin->detail.dataDisplayInfo.regsContentCount) + firstLine = tui_line_from_reg_element_no (firstElementNo); + else + { /* calculate the first line from the element number which is in + ** the general data content + */ + } + + if (firstLine >= 0) + { + int lastElementNo, lastLine; + + if (scrollDirection == FORWARD_SCROLL) + firstLine += numToScroll; + else + firstLine -= numToScroll; + tuiEraseDataContent ((char *) NULL); + tuiDeleteDataContentWindows (); + tuiDisplayDataFromLine (firstLine); + } + + return; +} /* tuiVerticalDataScroll */ + + +/***************************************** +** STATIC LOCAL FUNCTIONS ** +******************************************/ diff --git a/gdb/tui/tui-windata.h b/gdb/tui/tui-windata.h new file mode 100644 index 00000000000..0b1e700f1bb --- /dev/null +++ b/gdb/tui/tui-windata.h @@ -0,0 +1,47 @@ +/* Data/register window display. + Copyright 1998, 1999, 2000, 2001 Free Software Foundation, Inc. + Contributed by Hewlett-Packard Company. + + This file is part of GDB. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. */ + +#ifndef _TUI_DATAWIN_H +#define _TUI_DATAWIN_H + + +/***************************************** +** TYPE DEFINITIONS ** +******************************************/ + + + +/***************************************** +** PUBLIC FUNCTION EXTERNAL DECLS ** +******************************************/ +extern void tuiEraseDataContent (char *); +extern void tuiDisplayAllData (void); +extern void tuiCheckDataValues (struct frame_info *); +extern void tuiDisplayDataFromLine (int); +extern int tuiFirstDataItemDisplayed (void); +extern int tuiFirstDataElementNoInLine (int); +extern void tuiDeleteDataContentWindows (void); +extern void tuiRefreshDataWin (void); +extern void tuiDisplayDataFrom (int, int); +extern void tuiVerticalDataScroll (TuiScrollDirection, int); + +#endif +/*_TUI_DATAWIN_H*/ diff --git a/gdb/tui/tui-wingeneral.c b/gdb/tui/tui-wingeneral.c new file mode 100644 index 00000000000..2f32f646c74 --- /dev/null +++ b/gdb/tui/tui-wingeneral.c @@ -0,0 +1,285 @@ +/* General window behavior. + + Copyright 1998, 1999, 2000, 2001, 2002, 2003 Free Software Foundation, + Inc. + + Contributed by Hewlett-Packard Company. + + This file is part of GDB. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. */ + +#include "defs.h" +#include "tui/tui.h" +#include "tui/tui-data.h" +#include "tui/tui-wingeneral.h" +#include "tui/tui-win.h" + +#ifdef HAVE_NCURSES_H +#include <ncurses.h> +#else +#ifdef HAVE_CURSES_H +#include <curses.h> +#endif +#endif + +/*********************** +** PUBLIC FUNCTIONS +***********************/ +/* + ** tuiRefreshWin() + ** Refresh the window + */ +void +tuiRefreshWin (TuiGenWinInfoPtr winInfo) +{ + if (winInfo->type == DATA_WIN && winInfo->contentSize > 0) + { + int i; + + for (i = 0; (i < winInfo->contentSize); i++) + { + TuiGenWinInfoPtr dataItemWinPtr; + + dataItemWinPtr = &((TuiWinContent) + winInfo->content)[i]->whichElement.dataWindow; + if (m_genWinPtrNotNull (dataItemWinPtr) && + dataItemWinPtr->handle != (WINDOW *) NULL) + wrefresh (dataItemWinPtr->handle); + } + } + else if (winInfo->type == CMD_WIN) + { + /* Do nothing */ + } + else + { + if (winInfo->handle != (WINDOW *) NULL) + wrefresh (winInfo->handle); + } + + return; +} /* tuiRefreshWin */ + + +/* + ** tuiDelwin() + ** Function to delete the curses window, checking for null + */ +void +tuiDelwin (WINDOW * window) +{ + if (window != (WINDOW *) NULL) + delwin (window); + + return; +} /* tuiDelwin */ + + +/* Draw a border arround the window. */ +void +boxWin (TuiGenWinInfoPtr winInfo, int highlightFlag) +{ + if (winInfo && winInfo->handle) + { + WINDOW *win; + int attrs; + + win = winInfo->handle; + if (highlightFlag == HILITE) + attrs = tui_active_border_attrs; + else + attrs = tui_border_attrs; + + wattron (win, attrs); + wborder (win, tui_border_vline, tui_border_vline, + tui_border_hline, tui_border_hline, + tui_border_ulcorner, tui_border_urcorner, + tui_border_llcorner, tui_border_lrcorner); + if (winInfo->title) + mvwaddstr (win, 0, 3, winInfo->title); + wattroff (win, attrs); + } +} + + +/* + ** unhighlightWin(). + */ +void +unhighlightWin (TuiWinInfoPtr winInfo) +{ + if (m_winPtrNotNull (winInfo) && winInfo->generic.handle != (WINDOW *) NULL) + { + boxWin ((TuiGenWinInfoPtr) winInfo, NO_HILITE); + wrefresh (winInfo->generic.handle); + m_setWinHighlightOff (winInfo); + } +} /* unhighlightWin */ + + +/* + ** highlightWin(). + */ +void +highlightWin (TuiWinInfoPtr winInfo) +{ + if (m_winPtrNotNull (winInfo) && + winInfo->canHighlight && winInfo->generic.handle != (WINDOW *) NULL) + { + boxWin ((TuiGenWinInfoPtr) winInfo, HILITE); + wrefresh (winInfo->generic.handle); + m_setWinHighlightOn (winInfo); + } +} /* highlightWin */ + + +/* + ** checkAndDisplayHighlightIfNecessay + */ +void +checkAndDisplayHighlightIfNeeded (TuiWinInfoPtr winInfo) +{ + if (m_winPtrNotNull (winInfo) && winInfo->generic.type != CMD_WIN) + { + if (winInfo->isHighlighted) + highlightWin (winInfo); + else + unhighlightWin (winInfo); + + } + return; +} /* checkAndDisplayHighlightIfNeeded */ + + +/* + ** makeWindow(). + */ +void +makeWindow (TuiGenWinInfoPtr winInfo, int boxIt) +{ + WINDOW *handle; + + handle = newwin (winInfo->height, + winInfo->width, + winInfo->origin.y, + winInfo->origin.x); + winInfo->handle = handle; + if (handle != (WINDOW *) NULL) + { + if (boxIt == BOX_WINDOW) + boxWin (winInfo, NO_HILITE); + winInfo->isVisible = TRUE; + scrollok (handle, TRUE); + } +} + + +/* + ** makeVisible(). + ** We can't really make windows visible, or invisible. So we + ** have to delete the entire window when making it visible, + ** and create it again when making it visible. + */ +void +makeVisible (TuiGenWinInfoPtr winInfo, int visible) +{ + /* Don't tear down/recreate command window */ + if (winInfo->type == CMD_WIN) + return; + + if (visible) + { + if (!winInfo->isVisible) + { + makeWindow ( + winInfo, + (winInfo->type != CMD_WIN && !m_winIsAuxillary (winInfo->type))); + winInfo->isVisible = TRUE; + } + } + else if (!visible && + winInfo->isVisible && winInfo->handle != (WINDOW *) NULL) + { + winInfo->isVisible = FALSE; + tuiDelwin (winInfo->handle); + winInfo->handle = (WINDOW *) NULL; + } + + return; +} /* makeVisible */ + + +/* + ** makeAllVisible(). + ** Makes all windows invisible (except the command and locator windows) + */ +void +makeAllVisible (int visible) +{ + int i; + + for (i = 0; i < MAX_MAJOR_WINDOWS; i++) + { + if (m_winPtrNotNull (winList[i]) && + ((winList[i])->generic.type) != CMD_WIN) + { + if (m_winIsSourceType ((winList[i])->generic.type)) + makeVisible ((winList[i])->detail.sourceInfo.executionInfo, + visible); + makeVisible ((TuiGenWinInfoPtr) winList[i], visible); + } + } + + return; +} /* makeAllVisible */ + +/* + ** refreshAll(). + ** Function to refresh all the windows currently displayed + */ +void +refreshAll (TuiWinInfoPtr * list) +{ + TuiWinType type; + TuiGenWinInfoPtr locator = locatorWinInfoPtr (); + + for (type = SRC_WIN; (type < MAX_MAJOR_WINDOWS); type++) + { + if (list[type] && list[type]->generic.isVisible) + { + if (type == SRC_WIN || type == DISASSEM_WIN) + { + touchwin (list[type]->detail.sourceInfo.executionInfo->handle); + tuiRefreshWin (list[type]->detail.sourceInfo.executionInfo); + } + touchwin (list[type]->generic.handle); + tuiRefreshWin (&list[type]->generic); + } + } + if (locator->isVisible) + { + touchwin (locator->handle); + tuiRefreshWin (locator); + } + + return; +} /* refreshAll */ + + +/********************************* +** Local Static Functions +*********************************/ diff --git a/gdb/tui/tui-wingeneral.h b/gdb/tui/tui-wingeneral.h new file mode 100644 index 00000000000..42d1ce46add --- /dev/null +++ b/gdb/tui/tui-wingeneral.h @@ -0,0 +1,49 @@ +/* General window behavior. + Copyright 1998, 1999, 2000, 2001, 2002 Free Software Foundation, Inc. + Contributed by Hewlett-Packard Company. + + This file is part of GDB. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. */ + +#ifndef TUI_GENERAL_WIN_H +#define TUI_GENERAL_WIN_H + +/* + ** Functions + */ +extern void unhighlightWin (TuiWinInfoPtr); +extern void makeVisible (TuiGenWinInfoPtr, int); +extern void makeAllVisible (int); +extern void makeWindow (TuiGenWinInfoPtr, int); +extern TuiWinInfoPtr copyWin (TuiWinInfoPtr); +extern void boxWin (TuiGenWinInfoPtr, int); +extern void highlightWin (TuiWinInfoPtr); +extern void checkAndDisplayHighlightIfNeeded (TuiWinInfoPtr); +extern void refreshAll (TuiWinInfoPtr *); +extern void tuiDelwin (WINDOW * window); +extern void tuiRefreshWin (TuiGenWinInfoPtr); + +/* + ** Macros + */ +#define m_beVisible(winInfo) makeVisible((TuiGenWinInfoPtr)(winInfo), TRUE) +#define m_beInvisible(winInfo) \ + makeVisible((TuiGenWinInfoPtr)(winInfo), FALSE) +#define m_allBeVisible() makeAllVisible(TRUE) +#define m_allBeInvisible() makeAllVisible(FALSE) + +#endif /*TUI_GENERAL_WIN_H */ diff --git a/gdb/tui/tui-winsource.c b/gdb/tui/tui-winsource.c new file mode 100644 index 00000000000..87609b4cde8 --- /dev/null +++ b/gdb/tui/tui-winsource.c @@ -0,0 +1,715 @@ +/* TUI display source/assembly window. + + Copyright 1998, 1999, 2000, 2001, 2002, 2003, 2004 Free Software + Foundation, Inc. + + Contributed by Hewlett-Packard Company. + + This file is part of GDB. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. */ + +#include "defs.h" +#include <ctype.h> +#include "symtab.h" +#include "frame.h" +#include "breakpoint.h" +#include "value.h" +#include "source.h" + +#include "tui/tui.h" +#include "tui/tui-data.h" +#include "tui/tui-stack.h" +#include "tui/tui-win.h" +#include "tui/tui-wingeneral.h" +#include "tui/tui-winsource.h" +#include "tui/tui-source.h" +#include "tui/tui-disasm.h" + +#ifdef HAVE_NCURSES_H +#include <ncurses.h> +#else +#ifdef HAVE_CURSES_H +#include <curses.h> +#endif +#endif + +/* Function to display the "main" routine. */ +void +tui_display_main (void) +{ + if ((sourceWindows ())->count > 0) + { + CORE_ADDR addr; + + addr = tui_get_begin_asm_address (); + if (addr != (CORE_ADDR) 0) + { + struct symtab_and_line sal; + + tuiUpdateSourceWindowsWithAddr (addr); + sal = find_pc_line (addr, 0); + if (sal.symtab) + tuiUpdateLocatorFilename (sal.symtab->filename); + else + tuiUpdateLocatorFilename ("??"); + } + } +} + + + +/* + ** tuiUpdateSourceWindow(). + ** Function to display source in the source window. This function + ** initializes the horizontal scroll to 0. + */ +void +tuiUpdateSourceWindow (TuiWinInfoPtr winInfo, struct symtab *s, + TuiLineOrAddress lineOrAddr, int noerror) +{ + winInfo->detail.sourceInfo.horizontalOffset = 0; + tuiUpdateSourceWindowAsIs (winInfo, s, lineOrAddr, noerror); + + return; +} /* tuiUpdateSourceWindow */ + + +/* + ** tuiUpdateSourceWindowAsIs(). + ** Function to display source in the source/asm window. This + ** function shows the source as specified by the horizontal offset. + */ +void +tuiUpdateSourceWindowAsIs (TuiWinInfoPtr winInfo, struct symtab *s, + TuiLineOrAddress lineOrAddr, int noerror) +{ + TuiStatus ret; + + if (winInfo->generic.type == SRC_WIN) + ret = tuiSetSourceContent (s, lineOrAddr.lineNo, noerror); + else + ret = tui_set_disassem_content (lineOrAddr.addr); + + if (ret == TUI_FAILURE) + { + tuiClearSourceContent (winInfo, EMPTY_SOURCE_PROMPT); + tuiClearExecInfoContent (winInfo); + } + else + { + tui_update_breakpoint_info (winInfo, 0); + tuiShowSourceContent (winInfo); + tuiUpdateExecInfo (winInfo); + if (winInfo->generic.type == SRC_WIN) + { + struct symtab_and_line sal; + + sal.line = lineOrAddr.lineNo + + (winInfo->generic.contentSize - 2); + sal.symtab = s; + set_current_source_symtab_and_line (&sal); + /* + ** If the focus was in the asm win, put it in the src + ** win if we don't have a split layout + */ + if (tuiWinWithFocus () == disassemWin && + currentLayout () != SRC_DISASSEM_COMMAND) + tuiSetWinFocusTo (srcWin); + } + } + + + return; +} /* tuiUpdateSourceWindowAsIs */ + + +/* + ** tuiUpdateSourceWindowsWithAddr(). + ** Function to ensure that the source and/or disassemly windows + ** reflect the input address. + */ +void +tuiUpdateSourceWindowsWithAddr (CORE_ADDR addr) +{ + if (addr != 0) + { + struct symtab_and_line sal; + TuiLineOrAddress l; + + switch (currentLayout ()) + { + case DISASSEM_COMMAND: + case DISASSEM_DATA_COMMAND: + tui_show_disassem (addr); + break; + case SRC_DISASSEM_COMMAND: + tui_show_disassem_and_update_source (addr); + break; + default: + sal = find_pc_line (addr, 0); + l.lineNo = sal.line; + tuiShowSource (sal.symtab, l, FALSE); + break; + } + } + else + { + int i; + + for (i = 0; i < (sourceWindows ())->count; i++) + { + TuiWinInfoPtr winInfo = (TuiWinInfoPtr) (sourceWindows ())->list[i]; + + tuiClearSourceContent (winInfo, EMPTY_SOURCE_PROMPT); + tuiClearExecInfoContent (winInfo); + } + } + + return; +} /* tuiUpdateSourceWindowsWithAddr */ + +/* + ** tuiUpdateSourceWindowsWithLine(). + ** Function to ensure that the source and/or disassemly windows + ** reflect the input address. + */ +void +tuiUpdateSourceWindowsWithLine (struct symtab *s, int line) +{ + CORE_ADDR pc; + TuiLineOrAddress l; + + switch (currentLayout ()) + { + case DISASSEM_COMMAND: + case DISASSEM_DATA_COMMAND: + find_line_pc (s, line, &pc); + tuiUpdateSourceWindowsWithAddr (pc); + break; + default: + l.lineNo = line; + tuiShowSource (s, l, FALSE); + if (currentLayout () == SRC_DISASSEM_COMMAND) + { + find_line_pc (s, line, &pc); + tui_show_disassem (pc); + } + break; + } + + return; +} /* tuiUpdateSourceWindowsWithLine */ + +/* + ** tuiClearSourceContent(). + */ +void +tuiClearSourceContent (TuiWinInfoPtr winInfo, int displayPrompt) +{ + if (m_winPtrNotNull (winInfo)) + { + register int i; + + winInfo->generic.contentInUse = FALSE; + tuiEraseSourceContent (winInfo, displayPrompt); + for (i = 0; i < winInfo->generic.contentSize; i++) + { + TuiWinElementPtr element = + (TuiWinElementPtr) winInfo->generic.content[i]; + element->whichElement.source.hasBreak = FALSE; + element->whichElement.source.isExecPoint = FALSE; + } + } + + return; +} /* tuiClearSourceContent */ + + +/* + ** tuiEraseSourceContent(). + */ +void +tuiEraseSourceContent (TuiWinInfoPtr winInfo, int displayPrompt) +{ + int xPos; + int halfWidth = (winInfo->generic.width - 2) / 2; + + if (winInfo->generic.handle != (WINDOW *) NULL) + { + werase (winInfo->generic.handle); + checkAndDisplayHighlightIfNeeded (winInfo); + if (displayPrompt == EMPTY_SOURCE_PROMPT) + { + char *noSrcStr; + + if (winInfo->generic.type == SRC_WIN) + noSrcStr = NO_SRC_STRING; + else + noSrcStr = NO_DISASSEM_STRING; + if (strlen (noSrcStr) >= halfWidth) + xPos = 1; + else + xPos = halfWidth - strlen (noSrcStr); + mvwaddstr (winInfo->generic.handle, + (winInfo->generic.height / 2), + xPos, + noSrcStr); + + /* elz: added this function call to set the real contents of + the window to what is on the screen, so that later calls + to refresh, do display + the correct stuff, and not the old image */ + + tuiSetSourceContentNil (winInfo, noSrcStr); + } + tuiRefreshWin (&winInfo->generic); + } + return; +} /* tuiEraseSourceContent */ + + +/* Redraw the complete line of a source or disassembly window. */ +static void +tui_show_source_line (TuiWinInfoPtr winInfo, int lineno) +{ + TuiWinElementPtr line; + int x, y; + + line = (TuiWinElementPtr) winInfo->generic.content[lineno - 1]; + if (line->whichElement.source.isExecPoint) + wattron (winInfo->generic.handle, A_STANDOUT); + + mvwaddstr (winInfo->generic.handle, lineno, 1, + line->whichElement.source.line); + if (line->whichElement.source.isExecPoint) + wattroff (winInfo->generic.handle, A_STANDOUT); + + /* Clear to end of line but stop before the border. */ + getyx (winInfo->generic.handle, y, x); + while (x + 1 < winInfo->generic.width) + { + waddch (winInfo->generic.handle, ' '); + getyx (winInfo->generic.handle, y, x); + } +} + +/* + ** tuiShowSourceContent(). + */ +void +tuiShowSourceContent (TuiWinInfoPtr winInfo) +{ + if (winInfo->generic.contentSize > 0) + { + int lineno; + + for (lineno = 1; lineno <= winInfo->generic.contentSize; lineno++) + tui_show_source_line (winInfo, lineno); + } + else + tuiEraseSourceContent (winInfo, TRUE); + + checkAndDisplayHighlightIfNeeded (winInfo); + tuiRefreshWin (&winInfo->generic); + winInfo->generic.contentInUse = TRUE; +} + + +/* + ** tuiHorizontalSourceScroll(). + ** Scroll the source forward or backward horizontally + */ +void +tuiHorizontalSourceScroll (TuiWinInfoPtr winInfo, + TuiScrollDirection direction, + int numToScroll) +{ + if (winInfo->generic.content != (OpaquePtr) NULL) + { + int offset; + struct symtab *s; + struct symtab_and_line cursal = get_current_source_symtab_and_line (); + + if (cursal.symtab == (struct symtab *) NULL) + s = find_pc_symtab (get_frame_pc (deprecated_selected_frame)); + else + s = cursal.symtab; + + if (direction == LEFT_SCROLL) + offset = winInfo->detail.sourceInfo.horizontalOffset + numToScroll; + else + { + if ((offset = + winInfo->detail.sourceInfo.horizontalOffset - numToScroll) < 0) + offset = 0; + } + winInfo->detail.sourceInfo.horizontalOffset = offset; + tuiUpdateSourceWindowAsIs ( + winInfo, + s, + ((TuiWinElementPtr) + winInfo->generic.content[0])->whichElement.source.lineOrAddr, + FALSE); + } + + return; +} /* tuiHorizontalSourceScroll */ + + +/* Set or clear the hasBreak flag in the line whose line is lineNo. */ +void +tuiSetIsExecPointAt (TuiLineOrAddress l, TuiWinInfoPtr winInfo) +{ + int changed = 0; + int i; + TuiWinContent content = (TuiWinContent) winInfo->generic.content; + + i = 0; + while (i < winInfo->generic.contentSize) + { + int newState; + + if (content[i]->whichElement.source.lineOrAddr.addr == l.addr) + newState = TRUE; + else + newState = FALSE; + if (newState != content[i]->whichElement.source.isExecPoint) + { + changed++; + content[i]->whichElement.source.isExecPoint = newState; + tui_show_source_line (winInfo, i + 1); + } + i++; + } + if (changed) + tuiRefreshWin (&winInfo->generic); +} + +/* Update the execution windows to show the active breakpoints. + This is called whenever a breakpoint is inserted, removed or + has its state changed. */ +void +tui_update_all_breakpoint_info () +{ + TuiList* list = sourceWindows (); + int i; + + for (i = 0; i < list->count; i++) + { + TuiWinInfoPtr win = (TuiWinInfoPtr) list->list[i]; + + if (tui_update_breakpoint_info (win, FALSE)) + { + tuiUpdateExecInfo (win); + } + } +} + + +/* Scan the source window and the breakpoints to update the + hasBreak information for each line. + Returns 1 if something changed and the execution window + must be refreshed. */ +int +tui_update_breakpoint_info (TuiWinInfoPtr win, int current_only) +{ + int i; + int need_refresh = 0; + TuiSourceInfoPtr src = &win->detail.sourceInfo; + + for (i = 0; i < win->generic.contentSize; i++) + { + struct breakpoint *bp; + extern struct breakpoint *breakpoint_chain; + int mode; + TuiSourceElement* line; + + line = &((TuiWinElementPtr) win->generic.content[i])->whichElement.source; + if (current_only && !line->isExecPoint) + continue; + + /* Scan each breakpoint to see if the current line has something to + do with it. Identify enable/disabled breakpoints as well as + those that we already hit. */ + mode = 0; + for (bp = breakpoint_chain; + bp != (struct breakpoint *) NULL; + bp = bp->next) + { + if ((win == srcWin + && bp->source_file + && (strcmp (src->filename, bp->source_file) == 0) + && bp->line_number == line->lineOrAddr.lineNo) + || (win == disassemWin + && bp->loc->address == line->lineOrAddr.addr)) + { + if (bp->enable_state == bp_disabled) + mode |= TUI_BP_DISABLED; + else + mode |= TUI_BP_ENABLED; + if (bp->hit_count) + mode |= TUI_BP_HIT; + if (bp->cond) + mode |= TUI_BP_CONDITIONAL; + if (bp->type == bp_hardware_breakpoint) + mode |= TUI_BP_HARDWARE; + } + } + if (line->hasBreak != mode) + { + line->hasBreak = mode; + need_refresh = 1; + } + } + return need_refresh; +} + + +/* + ** tuiSetExecInfoContent(). + ** Function to initialize the content of the execution info window, + ** based upon the input window which is either the source or + ** disassembly window. + */ +TuiStatus +tuiSetExecInfoContent (TuiWinInfoPtr winInfo) +{ + TuiStatus ret = TUI_SUCCESS; + + if (winInfo->detail.sourceInfo.executionInfo != (TuiGenWinInfoPtr) NULL) + { + TuiGenWinInfoPtr execInfoPtr = winInfo->detail.sourceInfo.executionInfo; + + if (execInfoPtr->content == (OpaquePtr) NULL) + execInfoPtr->content = + (OpaquePtr) allocContent (winInfo->generic.height, + execInfoPtr->type); + if (execInfoPtr->content != (OpaquePtr) NULL) + { + int i; + + tui_update_breakpoint_info (winInfo, 1); + for (i = 0; i < winInfo->generic.contentSize; i++) + { + TuiWinElementPtr element; + TuiWinElementPtr srcElement; + int mode; + + element = (TuiWinElementPtr) execInfoPtr->content[i]; + srcElement = (TuiWinElementPtr) winInfo->generic.content[i]; + + memset(element->whichElement.simpleString, ' ', + sizeof(element->whichElement.simpleString)); + element->whichElement.simpleString[TUI_EXECINFO_SIZE - 1] = 0; + + /* Now update the exec info content based upon the state + of each line as indicated by the source content. */ + mode = srcElement->whichElement.source.hasBreak; + if (mode & TUI_BP_HIT) + element->whichElement.simpleString[TUI_BP_HIT_POS] = + (mode & TUI_BP_HARDWARE) ? 'H' : 'B'; + else if (mode & (TUI_BP_ENABLED | TUI_BP_DISABLED)) + element->whichElement.simpleString[TUI_BP_HIT_POS] = + (mode & TUI_BP_HARDWARE) ? 'h' : 'b'; + + if (mode & TUI_BP_ENABLED) + element->whichElement.simpleString[TUI_BP_BREAK_POS] = '+'; + else if (mode & TUI_BP_DISABLED) + element->whichElement.simpleString[TUI_BP_BREAK_POS] = '-'; + + if (srcElement->whichElement.source.isExecPoint) + element->whichElement.simpleString[TUI_EXEC_POS] = '>'; + } + execInfoPtr->contentSize = winInfo->generic.contentSize; + } + else + ret = TUI_FAILURE; + } + + return ret; +} + + +/* + ** tuiShowExecInfoContent(). + */ +void +tuiShowExecInfoContent (TuiWinInfoPtr winInfo) +{ + TuiGenWinInfoPtr execInfo = winInfo->detail.sourceInfo.executionInfo; + int curLine; + + werase (execInfo->handle); + tuiRefreshWin (execInfo); + for (curLine = 1; (curLine <= execInfo->contentSize); curLine++) + mvwaddstr (execInfo->handle, + curLine, + 0, + ((TuiWinElementPtr) + execInfo->content[curLine - 1])->whichElement.simpleString); + tuiRefreshWin (execInfo); + execInfo->contentInUse = TRUE; + + return; +} /* tuiShowExecInfoContent */ + + +/* + ** tuiEraseExecInfoContent(). + */ +void +tuiEraseExecInfoContent (TuiWinInfoPtr winInfo) +{ + TuiGenWinInfoPtr execInfo = winInfo->detail.sourceInfo.executionInfo; + + werase (execInfo->handle); + tuiRefreshWin (execInfo); + + return; +} /* tuiEraseExecInfoContent */ + +/* + ** tuiClearExecInfoContent(). + */ +void +tuiClearExecInfoContent (TuiWinInfoPtr winInfo) +{ + winInfo->detail.sourceInfo.executionInfo->contentInUse = FALSE; + tuiEraseExecInfoContent (winInfo); + + return; +} /* tuiClearExecInfoContent */ + +/* + ** tuiUpdateExecInfo(). + ** Function to update the execution info window + */ +void +tuiUpdateExecInfo (TuiWinInfoPtr winInfo) +{ + tuiSetExecInfoContent (winInfo); + tuiShowExecInfoContent (winInfo); +} /* tuiUpdateExecInfo */ + +TuiStatus +tuiAllocSourceBuffer (TuiWinInfoPtr winInfo) +{ + register char *srcLineBuf; + register int i, lineWidth, maxLines; + TuiStatus ret = TUI_FAILURE; + + maxLines = winInfo->generic.height; /* less the highlight box */ + lineWidth = winInfo->generic.width - 1; + /* + ** Allocate the buffer for the source lines. Do this only once since they + ** will be re-used for all source displays. The only other time this will + ** be done is when a window's size changes. + */ + if (winInfo->generic.content == (OpaquePtr) NULL) + { + srcLineBuf = (char *) xmalloc ((maxLines * lineWidth) * sizeof (char)); + if (srcLineBuf == (char *) NULL) + fputs_unfiltered ( + "Unable to Allocate Memory for Source or Disassembly Display.\n", + gdb_stderr); + else + { + /* allocate the content list */ + if ((winInfo->generic.content = + (OpaquePtr) allocContent (maxLines, SRC_WIN)) == (OpaquePtr) NULL) + { + tuiFree (srcLineBuf); + srcLineBuf = (char *) NULL; + fputs_unfiltered ( + "Unable to Allocate Memory for Source or Disassembly Display.\n", + gdb_stderr); + } + } + for (i = 0; i < maxLines; i++) + ((TuiWinElementPtr) + winInfo->generic.content[i])->whichElement.source.line = + srcLineBuf + (lineWidth * i); + ret = TUI_SUCCESS; + } + else + ret = TUI_SUCCESS; + + return ret; +} /* tuiAllocSourceBuffer */ + + +/* + ** tuiLineIsDisplayed(). + ** Answer whether the a particular line number or address is displayed + ** in the current source window. + */ +int +tuiLineIsDisplayed (int line, TuiWinInfoPtr winInfo, + int checkThreshold) +{ + int isDisplayed = FALSE; + int i, threshold; + + if (checkThreshold) + threshold = SCROLL_THRESHOLD; + else + threshold = 0; + i = 0; + while (i < winInfo->generic.contentSize - threshold && !isDisplayed) + { + isDisplayed = (((TuiWinElementPtr) + winInfo->generic.content[i])->whichElement.source.lineOrAddr.lineNo + == (int) line); + i++; + } + + return isDisplayed; +} /* tuiLineIsDisplayed */ + + +/* + ** tuiLineIsDisplayed(). + ** Answer whether the a particular line number or address is displayed + ** in the current source window. + */ +int +tuiAddrIsDisplayed (CORE_ADDR addr, TuiWinInfoPtr winInfo, + int checkThreshold) +{ + int isDisplayed = FALSE; + int i, threshold; + + if (checkThreshold) + threshold = SCROLL_THRESHOLD; + else + threshold = 0; + i = 0; + while (i < winInfo->generic.contentSize - threshold && !isDisplayed) + { + isDisplayed = (((TuiWinElementPtr) + winInfo->generic.content[i])->whichElement.source.lineOrAddr.addr + == addr); + i++; + } + + return isDisplayed; +} + + +/***************************************** +** STATIC LOCAL FUNCTIONS ** +******************************************/ diff --git a/gdb/tui/tui-winsource.h b/gdb/tui/tui-winsource.h new file mode 100644 index 00000000000..cb00449ed2d --- /dev/null +++ b/gdb/tui/tui-winsource.h @@ -0,0 +1,68 @@ +/* TUI display source/assembly window. + Copyright 1998, 1999, 2000, 2001, 2002 Free Software Foundation, Inc. + Contributed by Hewlett-Packard Company. + + This file is part of GDB. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. */ + +#ifndef _TUI_SOURCEWIN_H +#define _TUI_SOURCEWIN_H + +/* Update the execution windows to show the active breakpoints. + This is called whenever a breakpoint is inserted, removed or + has its state changed. */ +extern void tui_update_all_breakpoint_info (void); + +/* Scan the source window and the breakpoints to update the + hasBreak information for each line. + Returns 1 if something changed and the execution window + must be refreshed. */ +extern int tui_update_breakpoint_info (TuiWinInfoPtr win, int current_only); + +/* Function to display the "main" routine. */ +extern void tui_display_main (void); +extern void tuiUpdateSourceWindow (TuiWinInfoPtr, struct symtab *, TuiLineOrAddress, + int); +extern void tuiUpdateSourceWindowAsIs (TuiWinInfoPtr, struct symtab *, TuiLineOrAddress, + int); +extern void tuiUpdateSourceWindowsWithAddr (CORE_ADDR); +extern void tuiUpdateSourceWindowsWithLine (struct symtab *, int); +extern void tuiClearSourceContent (TuiWinInfoPtr, int); +extern void tuiEraseSourceContent (TuiWinInfoPtr, int); +extern void tuiSetSourceContentNil (TuiWinInfoPtr, char *); +extern void tuiShowSourceContent (TuiWinInfoPtr); +extern void tuiHorizontalSourceScroll (TuiWinInfoPtr, TuiScrollDirection, + int); +extern TuiStatus tuiSetExecInfoContent (TuiWinInfoPtr); +extern void tuiShowExecInfoContent (TuiWinInfoPtr); +extern void tuiEraseExecInfoContent (TuiWinInfoPtr); +extern void tuiClearExecInfoContent (TuiWinInfoPtr); +extern void tuiUpdateExecInfo (TuiWinInfoPtr); + +extern void tuiSetIsExecPointAt (TuiLineOrAddress, TuiWinInfoPtr); +extern TuiStatus tuiAllocSourceBuffer (TuiWinInfoPtr); +extern int tuiLineIsDisplayed (int, TuiWinInfoPtr, int); +extern int tuiAddrIsDisplayed (CORE_ADDR, TuiWinInfoPtr, int); + + +/* + ** Constant definitions + */ +#define SCROLL_THRESHOLD 2 /* threshold for lazy scroll */ + +#endif +/*_TUI_SOURCEWIN_H */ |