(<windows.h>): Include under Windows.
(<io.h>): Likeiwse.
(gdb_select): New function.
(gdb_wait_for_event): Use it.
* Makefile.in (event-loop.o): Depend on $(gdb_assert_h).
signal return stub symbol names, __restore and __restore_rt are
the i386 symbol names not the sparc ones.
(sparc32_linux_sigtramp_frame_cache): Document bits/sigcontext.h
as where the offsets were obtained from.
* sparc64-linux-tdep.c (LINUX64_RT_SIGTRAMP_INSN0,
LINUX64_RT_SIGTRAMP_INSN1): New defines.
(sparc64_linux_sigtramp_start, sparc64_linux_sigtramp_p,
sparc64_linux_sigtramp_frame_cache,
sparc64_linux_sigtramp_frame_this_id,
sparc64_linux_sigtramp_frame_prev_register,
sparc64_linux_sigtramp_frame_sniffer): New functions.
(sparc64_linux_sigtramp_frame_unwind): New frame unwinder.
(sparc64_linux_init_abi): Register sigtramp frame sniffer.
* Makefile.in (sparc64-linux-tdep.o): Update dependencies.
"inf-ptrace.h".
(hppabsd_fetch_registers): Renamed from fetch_inferior_registers;
made static.
(hppabsd_store_registers): Renamed from store_inferior_registers;
made static.
(_initialize_hppabsd_nat): New function and prototype.
* config/pa/obsd.mh (NATDEPFILES): Remove infptrace.o and
inftarg.o. Add inf-ptrace.o.
(NAT_FILE): Remove.
* Makefile.in (hppabsd-nat.o): Update dependencies.
and "tramp-frame.h".
(ppcobsd_sigtramp_cache_init): New function.
(ppcobsd_sigtramp): New variable.
(ppcobsd_init_abi): Prepend signal trampoline unwinder.
* Makefile.in (ppcobsd-tdep.o): Update dependencies.
* symtab.c: Include "observer.h".
(find_main_name): New function.
(main_name): If name_of_main is unset, then compute it
using find_main_name.
(symtab_observer_executable_changed): New function.
(_initialize_symtab): Attach executable_changed observer.
* exec.c: Include "observer.h".
(exec_file_attach): Emit executable_changed notification.
* symfile.c: Include "observer.h".
(reread_symbols): Send an executable_changed if appropriate.
* Makefile.in (exec.o): Add dependency on observer.h.
(symfile.o): Likewise.
(symtab.o): Likewise.
PR exp/1821
* cp-valprint.c: Include "language.h".
(cp_print_value_fields): Pass the current language to
fprintf_symbol_filtered.
* Makefile.in (cp-valprint.o): Update dependencies.
testsuite/
From Ramana Radhakrishnan <ramana.radhakrishnan@codito.com>:
PR exp/1821
* gdb.base/gdb1821.c: New test file.
* gdb.base/gdb1821.exp: New test file.
* cli/cli-script.c: Include "exceptions.h".
(struct wrapped_read_command_file_args): Define.
(wrapped_read_command_file): New function.
(script_from_file): Replace direct call to read_command_file by
one wrapped by an exception handler.
* exceptions.c (throw_it): Free the old message after creating the
new.
* Makefile.in: Update dependencies.
Index: testsuite/ChangeLog
2005-01-16 Andrew Cagney <cagney@gnu.org>
* gdb.base/source.exp: Delete KFAIL gdb/1846, simplify.
(_initialize_sparc64fbsd_nat): Add some extra features to the
generic SPARC target.
* Makefile.in (sparc64fbsd-nat.o): Update dependencies.
* config/sparc/fbsd.mh (NATDEPFILES): Add fbsd-nat.o and gcore.o.
(NAT_FILE): Set to solib.h.
* config/sparc/nm-fbsd.h: Remove file.
* Makefile.in (pa64solib_h, somsolib_h): Delete.
(solib_pa64_h, solib_som_h): New.
(HFILES_NO_SRCDIR, ALLDEPFILES): Replace somsolib.h with solib-som.h.
(hppa-hpux-tdep.o, hpread.o): Update dependencies.
(pa64solib.o, somsolib.o): Delete.
(solib-pa64.o, solib-som.o): New.
* hppa-hpux-tdep.c: Include new solib interfaces.
(hppa_hpux_som_init_abi): Attach to SOM solib interface.
(hppa_hpux_elf_init_abi): Attach to PA64 ELF solib interface.
* hppa-tdep.c (internalize_unwinds): If solib_get_text_base method
is available, use it to determine the base of unwind records.
* hppa-tdep.h (gdbarch_tdep): Add new solib methods.
* hpread.c: Replace somsolib.h with solib-som.h.
(hpread_process_one_debug_symbol): Use target vector to get thread
start address.
* config/pa/hppa64.mt (TDEPFILES): Use new solib interface.
* config/pa/hppahpux.mt (TDEPFILES): Likewise.
* config/pa/hpux.mh (NATDEPFILES): Delete references to target objects.
* config/pa/tm-hppah.h: Use new solib interface.
(inf_ttrace_num_lwps): New variable.
(inf_ttrace_num_lwps_in_syscall): Renamed from
inf_ttrace_num_threads_in_syscall.
(inf_ttrace_him): Track TTEVT_LWP_CREATE, TTEVT_LWP_EXIT and
TTEVT_LWP_TERMINATE events.
(inf_ttrace_create_inferior): Assert that INF_TTRACE_NUM_LWPS is
zero.
(inf_ttrace_mourn_inferior): Set INF_TTRACE_NUM_LWPS to zero.
(inf_ttrace_attach): Assert that INF_TTRACE_NUM_LWPS is zero.
Track TTEVT_LWP_CREATE, TTEVT_LWP_EXIT and TTEVT_LWP_TERMINATE
events.
(inf_ttrace_wait): Report status as TARGET_WAITKIND_SPURIOUS by
default. Handle TTEVT_LWP_CREATE, TTEVT_LWP_EXIT and
TTEVT_LWP_TERMINATE events.
(inf_ttrace_thread_alive, inf_ttrace_pid_to_str): New functions.
(inf_ttrace_target): Set to_thread_alive and to_pid_to_str.
* Makefile.in (inf-ttrace.o): Update dependencies.
* inf-ttrace.h: New file.
* hppa-hpux-nat.c [HAVE_TTRACE]: Include <sys/ttrace>.
Include "inf-ttrace.h".
(ss_mpsfu_high): Define to ss_tlsp if necessary.
(hppa_hpux_fetch_register, hppa_hpux_store_register): Use
ptid_get_pid instead of PIDGET. Modify to handle both ttrace and
ptrace systems.
(_initialize_hppa_hpux_nat) [HAVE_TTRACE]: Call inf_ttrace_traget
instead of inf_ptrace_target.
* config/pa/hpux.mh (NATDEPFILES): Add inf-ttrace.o.
* Makefile.in (inf_ttrace_h): New variable.
(hppa-hpux-nat.o): Update dependency.
(inf-ttrace.o): New dependency.
(ALLDEPFILES): Add inf-ptrace.c and inf-ttrace.c.
(record_minimal_symbol, read_ofile_symtab): Replace
DEPRECATED_STREQ and DEPRECATED_STREQN with strcmp and strncmp.
* Makefile.in (dbxread.o): Update dependencies.
* i386-linux-tdep.c (i386_linux_dwarf_signal_frame_p): New.
(i386_linux_init_abi): Call dwarf2_frame_set_signal_frame_p.
* inf-ptrace.c (inf_ptrace_attach): Call
observer_notify_inferior_created.
* inftarg.c (child_attach): Likewise.
* symfile-mem.c: Include "observer.h", "auxv.h", and "elf/common.h".
(symbol_file_add_from_memory): Take NAME argument. Use it for
the new BFD's filename.
(add_symbol_file_from_memory_command): Update call to
symbol_file_add_from_memory.
(struct symbol_file_add_from_memory_args, add_vsyscall_page)
(symbol_file_add_from_memory_wrapper): New.
(_initialize_symfile_mem): Register add_vsyscall_page as an
inferior_created observer.
(mipsnbsd_fetch_inferior_registers): Rename from
fetch_inferior_registers. Make static.
(mipsnbsd_store_inferior_registers): Rename from
store_inferior_registers. Make static.
(_initialize_mipsnbsd_nat): New function and prototype.
* Makefile.in (mipsnbsd-nat.o): Update dependencies.
* config/mips/nbsd.mh (NAT_CLIBS, NAT_FILE): Remove variables.
(NATDEPFILES): Remove infptrace.o and inftarg.o. Add
inf-ptrace.o.
(fill_fpregset): Do not compile for 64-bit systems.
* i386-sol2-nat.c: Don't include "i386v4-nat.c".
* Makefile.in (i386-sol2-nat.o): Update dependencies.
* config/i386/i386sol2.mh (NATDEPFILES): Add back i386v4-nat.c.
(mips_mdebug_frame_cache, mips16_scan_prologue)
(mips32_scan_prologue, mips_stub_frame_cache)
(heuristic_proc_start, heuristic_proc_desc)
(mips_eabi_push_dummy_call, mips_n32n64_push_dummy_call)
(mips_n32n64_return_value, mips_o32_push_dummy_call)
(mips_o32_return_value, mips_o64_push_dummy_call)
(mips_step_skips_delay, mips_skip_trampoline_code)
(mips_gdbarch_init): Use MIPS_A0_REGNUM instead of A0_REGNUM,
MIPS_RA_REGNUM instead of RA_REGNUM, MIPS_T9_REGNUM instead of
T9_REGNUM, MIPS_V0_REGNUM instead of V0_REGNUM, MIPS_ZERO_REGNUM
instead of ZERO_REGNUM, MIPS32_SIZE_INSN instead of MIPS_INSTLEN
and MIPS16_INSN_SIZE instead of MIPS16_INSTLEN.
(mips_dump_tdep): Don't print A0_REGNUM, RA_REGNUM,
T9_REGNUM, V0_REGNUM, ZERO_REGNUM, MIPS_INSTLEN and
MIPS16_INSTLEN. Use MIPS_A0_REGNUM instead of A0_REGNUM.
* mips-linux-tdep.c (mips_linux_o32_sigframe_init)
(mips_linux_n32n64_sigframe_init): Use MIPS_ZERO_REGNUM instead of
ZERO_REGNUM.
* mipsnbsd-tdep.c (mipsnbsd_cannot_fetch_register)
(mipsnbsd_cannot_store_register): Use MIPS_ZERO_REGNUM instead of
ZERO_REGNUM.
(mipsnbsd_get_longjmp_target): Use MIPS_A0_REGNUM instead of
A0_REGNUM.
* mipsnbsd-nat.c: Include "mips-tdep.h".
(getregs_supplies): Use MIPS_ZERO_REGNUM instead of ZERO_REGNUM.
* Makefile.in (mipsnbsd-nat.o): Update dependencies.
* ada-exp.y, ada-lex.l: Use xmalloc and xrealloc through out.
* inf-ptrace.c: Include "gdb_wait.h" instead of <wait.h>.
* Makefile.in (.y.c, .l.c): Don't replace xmalloc with xxmalloc.
Update dependencies.
(fetch_fpregs): Use i387_supply_fxsave to fill the floating-point
registers when the floating-point state isn't initialized.
* Makefile.in (i386gnu-nat.o): Update dependencies.
* Makefile.in (.l.c): Do conversions of names of alloc and free
functions that are done for .y.c files, plus special one
for yy_flex_realloc. Also, correct missing-file tests here.
* ada-lex.l (malloc, free): Remove macros.
(resize_tempbuf): Use "realloc"; rely on sed changes to convert to
xrealloc.
(ada_flex_use): Dummy definition to remove warnings about unused
functions.
* ada-exp.y (dummy_string_to_ada_operator): Temporary definition
to suppress warning.
(m88kbsd_fetch_inferior_registers): Rename from
fetch_inferior_registers. Make static.
(m88kbsd_store_inferior_registers): Rename from
store_inferior_registers. Make static.
(_initialize_m88kbsd_nat): New prototype and function.
* config/m88k/obsd.mh (NATDEPFILES): Remove infptrace.o and
inftarg.o. Add inf-child.o and inf-ptrace.o.
(NAT_FILE): Remove.
* Makefile.in (m88kbsd-nat.o): Update dependencies.
(amd64bsd_target): New prototype.
* amd64bsd-nat.c: Include "target.h" and "inf-ptrace.h".
(amd64bsd_target): New function.
(amd64bsd_fetch_inferior_registers): Rename from
fetch_inferior_registers. Make static.
(amd64bsd_store_inferior_registers): Rename from
store_inferior_registers. Make static.
* amd64fbsd-nat.c: Include "target.h" and "fbsd-nat.h".
(_initialize_amd64fbsd_nat): Construct and add target vector.
* amd64nbsd-nat.o: Include "target.h".
(_initialize_amd64nbsd_nat): Construct and add target vector.
* amd64obsd-nat.c: Include "target.h".
(_initialize_amd64obsd_nat): Construct and add target vector.
* config/i386/nm-fbsd64.h (CHILD_PID_TO_EXEC_FILE): Remove define.
* config/i386/fbsd64.mh (NATDEPFILES): Remove infptrace.o,
inftarg.o and fbsd-proc.o. Add inf-child.o, inf-ptrace.o and
fbsd-nat.o.
* config/i386/nbsd64.mh, config/i386/obsd64.mh (NATDEPFILES):
Remove infptrace.o and inftarg.o. Add inf-child.o and
inf-ptrace.o.
* Makefile.in (amd64bsd-nat.o, amd64fbsd-nat.o, amd64nbsd-nat.o)
(amd64obsd-nat.o): Update dependencies.
(sparc64nbsd_init_abi): Set in_solib_call_trampoline and
skip_trampoline_code. Set solib_svr4_fetch_link_map_offsets to
svr4_lp64_fetch_link_map_offsets.
* sparc64obsd-tdep.c: Include "objfiles.h". Don't include
"nbsd-tdep.h".
(sparc64obsd_init_abi): Set in_solib_call_trampoline and
skip_trampoline_code. Set solib_svr4_fetch_link_map_offsets to
svr4_lp64_fetch_link_map_offsets.
* Makefile.in (sparc64nbsd-tdep.o, sparc64obsd-tdep.o): Update
dependencies.
* inf-child.c: Include "gdb_string.h".
(inf_child_core_file_to_sym_file): Delete.
(inf_child_target): Set to_fetch_registers and to_store_registers.
* inf-ptrace.c: Include "gdb_string.h".
* Makefile.in: Update all dependencies.
* language.c (hex_string, hex_string_custom): Move from here ...
* utils.c (hex_string, hex_string_custom): ... to here, rewrite.
(CELLSIZE): Increase to 50.
* language.h (hex_string, hex_string_custom): Move from here ...
* defs.h: ... to here.
* Makefile.in: Update all dependencies.
* symfile.c (copy_section_addr_info): New function.
(symbol_file_add_with_addrs_or_offsets): Use it to save the
original set of address arguments, instead of handwritten code
that uses one length to allocate and a different length to
initialize. Use make_cleanup_free_section_addr_info.
* symfile.h (copy_section_addr_info): New declaration.
* utils.c: #include "symfile.h".
(do_free_section_addr_info, make_cleanup_free_section_addr_info):
New functions.
* defs.h (make_cleanup_free_section_addr_info): New declaration.
* Makefile.in (utils.o): Update dependencies.
solib_svr4_fetch_link_map_offsets to
svr4_ilp32_fetch_link_map_offsets.
* sparcobsd-tdep.c: Don't include "nbsd-tdep.h".
(sparc32obsd_init_abi): Set solib_svr4_fetch_link_map_offsets to
svr4_ilp32_fetch_link_map_offsets.
* Makefile.in (sparcobsd-tdep.o): Update dependencies.
* observer.sh: Add struct so_list declaration.
* Makefile.in: Add dependencies on observer.h for solib.c and
breakpoint.c.
* breakpoint.c (disable_breakpoints_in_unloaded_shlib): New
function.
(_initialize_breakpoint): Register
disable_breakpoints_in_unloaded_shlib as an observer of the
"solib unloaded" observation event.
(re_enable_breakpoints_in_shlibs): For bp_shlib_disabled breakpoints,
call decode_line_1 so unfound breakpoint errors are silent.
* solib.c (update_solib_list): When a solib is discovered to have
been unloaded by the program, notify all observers of the
"solib unloaded" observation event.
Reorder includes.
(fetch_register, store_register): Remove prototypes.
(child_resume): Reorganize code and comments such that it is
grouped a bit more logically.
(attach): Explicitly compare errno against 0.
(detach): Likewise. Use perror_with_name instead of
print_sys_errmsg.
* Makefile.in (infptrace.o): Update dependencies.
"gdbcore.h", "regcache.h", and "bsd-kvm.h".
(ppcnbsd_supply_pcb): New function.
(_initialize_ppcnbsd_nat): New prototype and function.
* config/powerpc/nbsd.mh (NATDEPFILES): Add bsd-kvm.o.
(LOADLIBES): New variable.
* Makefile.in (ppcnbsd-nat.o): Update dependencies.
the lower 32-bit halves of the GPRS to be their own raw registers,
not pseudoregisters.
* ppc-tdep.h (struct gdbarch_tdep): Remove ppc_gprs_pseudo_p flag;
add ppc_ev0_upper_regnum flag.
* rs6000-tdep.c: #include "reggroups.h".
(spe_register_p): Recognize the ev upper half registers as SPE
registers.
(init_sim_regno_table): Build gdb->sim mappings for the upper-half
registers.
(e500_move_ev_register): New function.
(e500_pseudo_register_read, e500_pseudo_register_write): The 'ev'
vector registers are the pseudo-registers now, formed by splicing
together the gprs and the upper-half registers.
(e500_register_reggroup_p): New function.
(P): Macro deleted.
(P8, A4): New macro.
(PPC_EV_REGS, PPC_GPRS_PSEUDO_REGS): Macros deleted.
(PPC_SPE_GP_REGS, PPC_SPE_UPPER_GP_REGS, PPC_EV_PSEUDO_REGS): New
macros.
(registers_e500): Rearrange register set so that the raw register
set contains 32-bit GPRs and upper-half registers, and the SPE
vector registers become pseudo-registers.
(rs6000_gdbarch_init): Don't initialize tdep->ppc_gprs_pseudo_p;
it has been deleted. Initialize ppc_ev0_upper_regnum. Many other
register numbers are now the same for the E500 as they are for
other PowerPC variants. Register e500_register_reggroup_p as the
register group function for the E500.
* Makefile.in (rs6000-tdep.o): Update dependencies.
Adapt PPC E500 native support to the new raw regcache layout.
* ppc-linux-nat.c (struct gdb_evrregset_t): Doc fixes.
(read_spliced_spe_reg, write_spliced_spe_reg): Deleted.
(fetch_spe_register, store_spe_register): Handle fetching/storing
all the SPE registers at once, if regno == -1. These now take
over the job of fetch_spe_registers and store_spe_registers.
(fetch_spe_registers, store_spe_registers): Deleted.
(fetch_ppc_registers, store_ppc_registers): Fetch/store gprs
unconditionally; they're always raw. Fetch/store SPE upper half
registers, if present, instead of ev registers.
(fetch_register, store_register): Remove sanity checks: gprs are
never pseudo-registers now, so we never need to even mention any
registers that are ever pseudoregisters.
2004-07-20 Jim Blandy <jimb@redhat.com>
Use a fixed register numbering when communicating with the PowerPC
simulator.
* ppc-tdep.h (struct gdbarch_tdep): New member: 'sim_regno'.
* rs6000-tdep.c: #include "sim-regno.h" and "gdb/sim-ppc.h".
(set_sim_regno, init_sim_regno_table, rs6000_register_sim_regno):
New functions.
(rs6000_gdbarch_init): Register rs6000_register_sim_regno. Call
init_sim_regno_table.
* Makefile.in (gdb_sim_ppc_h): New variable.
(rs6000-tdep.o): Update dependencies.
include/gdb/ChangeLog:
2004-07-20 Jim Blandy <jimb@redhat.com>
* sim-ppc.h: New file.
sim/ppc/ChangeLog:
2004-07-20 Jim Blandy <jimb@redhat.com>
Use a fixed register numbering when communicating with the PowerPC
simulator.
* sim_calls.c: #include "registers.h" and "gdb/sim-ppc.h"; do not
include GDB's "defs.h".
(gdb_register_name_table): New variable.
(gdb_register_name_table_size): New enum constant.
(gdb_register_name): New function.
(sim_fetch_register, sim_store_register): Use gdb_register_name,
instead of calling gdbarch_register_name.
* Makefile.in (GDB_SIM_PPC_H): New variable.
(DEFS_H): Delete variable.
(sim_calls.o): Update dependencies.
<machine/pcb.h> and "bsd-kvm.h".
(PCB_REGS_FP, PCB_REGS_SP): Define if not already defined.
(m68kbsd_supply_pcb): New function.
(_initialize_m68kbsd_nat): New prototype and function.
* Makefile.in (m68kbsd-nat.o): Update dependencies.
* config/m68k/nbsdelf.mh (NATDEPFILES): Add bsd-kvm.o.
(LOADLIBES): New variable.
* config/m68k/obsd.mh (NATDEPFILES): Add bsd-kvm.o.
(LOADLIBES): New variable.
* hppa-tdep.h (struct value): Forward declaration.
(gdbarch_tdep): Define tdep find_global_pointer method.
* hppa-tdep.c (hppa32_push_dummy_call): Find the global pointer
associated with the function we are trying to call, and write it
to the gp register.
(hppa32_convert_from_funct_ptr_addr): New function.
(hppa_find_global_pointer): New function.
(hppa_gdbarch_init): Set default find_global_pointer method; set
convert_from_func_ptr_addr method.
* hppa-linux-tdep.c (hppa_linux_find_global_pointer): New function.
(hppa_linux_init_abi): Set find_global_pointer method.
* Makefile.in (hppa-linux-tdep.o): Add value.h dependency.
"gdb_assert.h". Con't include "gregset.h".
(fbsd_make_corefile_notes): Use regset-based core file support
instead off fill_gregset and fill_fpregset.
* Makefile.in (fbsd-proc.o): Update dependencies.
* symfile.h (symbol_file_add_from_memory): Delete declaration.
* symfile-mem.h: Delete file.
* symfile-mem.c: Do not include "symfile-mem.h".
(symbol_file_add_from_memory): Make static. Use "struct bfd" and
"struct bfd_section". When an error do not bother returning NULL.
(add_symbol_file_from_memory_command): Use "struct bfd" and
"struct bfd_section".
* Makefile.in (symfile_mem_h): Delete.
(symfile-mem.o): Update dependencies.
ppc_fp0_regnum and ppc_fpscr_regnum: if they are -1, then this
processor variant lacks those registers.
(ppc_floating_point_unit_p): Change description to make it clear
that this returns info about the ISA, not the ABI.
* rs6000-tdep.c (ppc_floating_point_unit_p): Decide whether to
return true or false by checking tdep->ppc_fp0_regnum and
tdep->ppc_fpscr_regnum. The original code replicated the BFD
arch/mach switching done in rs6000_gdbarch_init; it's better to
keep that logic there, and just check the results here.
(rs6000_gdbarch_init): On the E500, set tdep->ppc_fp0_regnum and
tdep->ppc_fpscr_regnum to -1 to indicate that we have no
floating-point registers.
(ppc_supply_fpregset, ppc_collect_fpregset)
(rs6000_push_dummy_call, rs6000_extract_return_value)
(rs6000_store_return_value): Assert that we have floating-point
registers.
(rs6000_dwarf2_stab_reg_to_regnum): Add FIXME.
(rs6000_frame_cache): Don't note the locations at which
floating-point registers were saved if we have no fprs.
* aix-thread.c (supply_fprs, fill_fprs): Assert that we have FP
registers.
(fetch_regs_user_thread, fetch_regs_kernel_thread)
(store_regs_user_thread, store_regs_kernel_thread): Only call
supply_fprs / fill_fprs if we actually have floating-point
registers.
(special_register_p): Check ppc_fpscr_regnum before matching
against it.
(supply_sprs64, supply_sprs32, fill_sprs64, fill_sprs32): Don't
supply / collect fpscr if we don't have it.
* ppc-bdm.c: #include "gdb_assert.h".
(bdm_ppc_fetch_registers, bdm_ppc_store_registers): Assert that we
have floating-point registers, since I can't test this code on
FP-free systems to adapt it.
* ppc-linux-nat.c (ppc_register_u_addr): Don't match against the
fpscr and floating point register numbers if they don't exist.
(fetch_register): Assert that we have floating-point registers
before we reach the code that handles them.
(store_register): Same. And use tdep instead of calling
gdbarch_tdep again.
(fill_fpregset): Don't try to collect FP registers and fpscr if we
don't have them.
(ppc_linux_sigtramp_cache): Don't record the saved locations of
fprs and fpscr if we don't have them.
(ppc_linux_supply_fpregset): Don't supply fp regs and fpscr if we
don't have them.
* ppcnbsd-nat.c: #include "gdb_assert.h".
(getfpregs_supplies): Assert that we have floating-point registers.
* ppcnbsd-tdep.c (ppcnbsd_supply_fpreg, ppcnbsd_fill_fpreg): Same.
* ppcobsd-tdep.c: #include "gdb_assert.h".
(ppcobsd_supply_gregset, ppcobsd_collect_gregset): Assert that we
have floating-point registers.
* rs6000-nat.c (regmap): Don't match against the fpscr and
floating point register numbers if they don't exist.
(fetch_inferior_registers, store_inferior_registers,
fetch_core_registers): Only fetch / store / supply the
floating-point registers and the fpscr if we have them.
* Makefile.in (ppc-bdm.o, ppc-linux-nat.o, ppcnbsd-nat.o)
(ppcobsd-tdep.o): Update dependencies.
ppc_fp0_regnum and ppc_fpscr_regnum: if they are -1, then this
processor variant lacks those registers.
(ppc_floating_point_unit_p): Change description to make it clear
that this returns info about the ISA, not the ABI.
* rs6000-tdep.c (ppc_floating_point_unit_p): Decide whether to
return true or false by checking tdep->ppc_fp0_regnum and
tdep->ppc_fpscr_regnum. The original code replicated the BFD
arch/mach switching done in rs6000_gdbarch_init; it's better to
keep that logic there, and just check the results here.
(rs6000_gdbarch_init): On the E500, set tdep->ppc_fp0_regnum and
tdep->ppc_fpscr_regnum to -1 to indicate that we have no
floating-point registers.
(ppc_supply_fpregset, ppc_collect_fpregset)
(rs6000_push_dummy_call, rs6000_extract_return_value)
(rs6000_store_return_value): Assert that we have floating-point
registers.
(rs6000_dwarf2_stab_reg_to_regnum): Add FIXME.
(rs6000_frame_cache): Don't note the locations at which
floating-point registers were saved if we have no fprs.
* aix-thread.c (supply_fprs, fill_fprs): Assert that we have FP
registers.
(fetch_regs_user_thread, fetch_regs_kernel_thread)
(store_regs_user_thread, store_regs_kernel_thread): Only call
supply_fprs / fill_fprs if we actually have floating-point
registers.
(special_register_p): Check ppc_fpscr_regnum before matching
against it.
(supply_sprs64, supply_sprs32, fill_sprs64, fill_sprs32): Don't
supply / collect fpscr if we don't have it.
* ppc-bdm.c: #include "gdb_assert.h".
(bdm_ppc_fetch_registers, bdm_ppc_store_registers): Assert that we
have floating-point registers, since I can't test this code on
FP-free systems to adapt it.
* ppc-linux-nat.c (ppc_register_u_addr): Don't match against the
fpscr and floating point register numbers if they don't exist.
(fetch_register): Assert that we have floating-point registers
before we reach the code that handles them.
(store_register): Same. And use tdep instead of calling
gdbarch_tdep again.
(fill_fpregset): Don't try to collect FP registers and fpscr if we
don't have them.
(ppc_linux_sigtramp_cache): Don't record the saved locations of
fprs and fpscr if we don't have them.
(ppc_linux_supply_fpregset): Don't supply fp regs and fpscr if we
don't have them.
* ppcnbsd-nat.c: #include "gdb_assert.h".
(getfpregs_supplies): Assert that we have floating-point registers.
* ppcnbsd-tdep.c (ppcnbsd_supply_fpreg, ppcnbsd_fill_fpreg): Same.
* ppcobsd-tdep.c: #include "gdb_assert.h".
(ppcobsd_supply_gregset, ppcobsd_collect_gregset): Assert that we
have floating-point registers.
* rs6000-nat.c (regmap): Don't match against the fpscr and
floating point register numbers if they don't exist.
(fetch_inferior_registers, store_inferior_registers,
fetch_core_registers): Only fetch / store / supply the
floating-point registers and the fpscr if we have them.
* Makefile.in (ppc-bdm.o, ppc-linux-nat.o, ppcnbsd-nat.o)
(ppcobsd-tdep.o): Update dependencies.
include "symtab.h", "opcode/vax.h" and "inferior.h".
(vax_skip_prologue): Replace calls to read_memory_integer by calls
to read_memory_unsigned_integer.
(vax_gdbarch_init): Reorder.
(_initialize_vax_tdep): Spell out prototype.
* Makefile.in (vax-tdep.o): Update dependencies.
* Makefile.in (ALLDEPFILES): Add hppa-linux-tdep.c and
hppa-linux-nat.c.
(hppa-linux-tdep.o, hppa-linux-nat.o): Define rules.
* hppa-linux-nat.c (fetch_register, store_register): Define.
(fetch_inferior_registers, store_inferior_registers): Define.
(supply_gregset): Add comment and clean up some unneeded code.
(fill_gregset): Add comment and fix so that it saves registers in
the right place in the gregset.
(fill_fpregset): Fix buffer overrun problem.
* config/pa/nm-linux.h (FETCH_INFERIOR_REGISTERS): Define.
struct_value_regnum.
(m68k_svr4_init_abi): New prototype.
* m68k-tdep.c: Include "floatformat.h". Add comment about all the
different calling conventions.
(m68k_extract_return_value): Remove code dealing with single-field
structs.
(m68k_store_return_value): Remove code dealing with single-field
structs. Correctly store return values of 5, 6, 7 or 8 bytes.
(m68k_extract_struct_value_address): Remove function.
(m68k_svr4_extract_return_value,m68k_svr4_store_return_value)
(m68k_reg_struct_return_p, m68k_return_value)
(m68k_svr4_return_value): New functions.
(m68k_use_struct_convention): Remove function.
(m68k_push_dummy_call): Use new struct_value_regnum member of
`struct gdbarch_tdep' instead of hardcoded register number to
store STRUCT_ADDR.
(m68k_svr4_init_abi): New function.
(m68k_gdbarch_init): Don't set extract_return_value,
store_return_values, deprecated_extract_struct_value_address and
use_struct_convention. Set return_value instead. Initialize new
struct_value_regnum member of `struct gdbarch_tdep'.
* m68klinux-tdep.c: Update copyright year.
(m68k_linux_extract_return_value, m68k_linux_store_return_value)
(m68k_linux_extract_struct_value_address): Remove function.
(m68k_linux_init_abi): Don't set extract_return_value,
store_return_values, deprecated_extract_struct_value_address and
use_struct_convention. Call m68k_svr4_init_abi but override the
new struct_value_regnum member of `struct gdbarch_tdep'.
* Makefile.in (m68k-tdep.o): Update dependencies.
* Makefile.in (m68klinux-nat.o): Update dependencies.
* m68klinux-tdep.c: Include "trad-frame.h" and "frame-unwind.h".
(m68k_linux_sigtramp_frame_cache)
(m68k_linux_sigtramp_frame_this_id)
(m68k_linux_sigtramp_frame_prev_register)
(m68k_linux_sigtramp_frame_unwind)
(m68k_linux_sigtramp_frame_sniffer)
(struct m68k_linux_sigtramp_info, m68k_linux_init_abi): Code from
m68k-tdep.h and m68k-tdep.c, add "linux" to function and variable
names, use trad-frame.h.
* m68k-tdep.h (struct gdbarch_tdep): Delete get_sigtramp_info.
(struct m68k_sigtramp_info): Delete.
* m68k-tdep.c (m68k_sigtramp_frame_cache)
(m68k_sigtramp_frame_this_id, m68k_sigtramp_frame_prev_register)
(m68k_sigtramp_frame_unwind, m68k_sigtramp_frame_sniffer)
(m68k_gdbarch_init): Delete all the sigtramp code, moved to
"m68klinux-tdep.c".
* frv-linux-tdep.c: Include "trad-frame.h" and "frame-unwind.h".
(frv_linux_sigtramp_frame_cache)
(frv_linux_sigtramp_frame_this_id)
(frv_linux_sigtramp_frame_prev_register)
(frv_linux_sigtramp_frame_unwind)
(frv_linux_sigtramp_frame_sniffer): Copied from frv-tdep.c,
include "linux" in function and variable names, directly call
frv_linux_pc_in_sigtramp and frv_linux_sigcontext_reg_addr, use
the latest trad-frame code.
(frv_linux_init_abi): Append frv_linux_sigtramp_frame_sniffer, do
not set frv_sigcontext_reg_addr or deprecated_pc_in_sigtramp
* Makefile.in (frv-linux-tdep.o): Update dependencies.
* frv-tdep.h (frv_set_sigcontext_reg_addr): Delete declaration.
* frv-tdep.c (frv_sigtramp_frame_cache)
(frv_sigtramp_frame_this_id, frv_sigtramp_frame_prev_register)
(frv_sigtramp_frame_unwind, frv_sigtramp_frame_sniffer): Moved to
frv-linux-tdep.c.
(frv_gdbarch_init): Do not append a sigtramp sniffer.
(struct gdbarch_tdep): Delete sigcontext_reg_addr.
(frv_set_sigcontext_reg_addr): Delete function.
* Makefile.in (hppa-hpux-tdep.o): Add $(hppa_tdep_h).
* hppa-hpux-tdep.c (hppa-tdep.h): Include.
(hppa_hpux_som_init_abi): Set is_elf to 0.
(hppa_hpux_elf_init_abi): Set is_elf to 1.
* hppa-tdep.c (low_text_segment_address): Remove global.
(record_text_segment_lowaddr): Pass in low address as parameter. Use
section offset to calculate segment address.
(internalize_unwinds): Define low_text_segment_address as local and
pass to record_text_segment_lowaddr for ELF targets.
(hppa_gdbarch_init): Zero fill tdep structure.
(hppa_dump_tdep): Print tdep structure.
* hppa-tdep.h (gdbarch_tdep): Add is_elf member to tdep structure.
(struct dwarf2_cu): Add partial_dies, comp_unit_obstack,
has_namespace_info.
(struct partial_die_info): Add comments. Use bitfields to reduce
memory footprint. Add scope, scope_set, has_specification,
spec_offset, die_parent, die_child, and die_sibling.
(peek_die_abbrev): Add prototype.
(partial_read_comp_unit_head): New function, broken out from
dwarf2_build_psymtabs_hard.
(dwarf2_build_psymtabs_hard): Remove unused variable abbrev_ptr.
Use partial_read_comp_unit_head. Initialize the CU and
comp_unit_obstack. Update calls to read_partial_die and
scan_partial_symbols. Use free_stack_comp_unit and
load_partial_dies.
(scan_partial_symbols): Change PDI to a pointer. Use the child and
sibling pointers to walk partial DIEs. Call fixup_partial_die.
Update calls to helper functions. Remove NAMESPACE argument.
Update comments.
(partial_die_parent_scope, partial_die_full_name): New functions.
(add_partial_symbol): Remove namespace argument. Update call to
pdi_needs_namespace. Use partial_die_full_name. Handle
DW_TAG_namespace. Check has_namespace_info flag.
(pdi_needs_namespace): Remove NAMESPACE argument. Just check the
tag. Handle namespaces.
(add_partial_namespace, add_partial_enumeration): Simplify.
(guess_structure_name): New function, derived from
add_partial_structure.
(add_partial_structure): Remove.
(determine_class_name): Update comment.
(dwarf2_read_abbrevs): Set has_namespace_info flag.
(is_type_tag_for_partial, load_partial_dies): New functions.
(read_partial_die): Pass abbrev and abbrev_len as arguments.
Record specifications instead of following them immediately.
(find_partial_die_in_comp_unit, find_partial_die)
(fixup_partial_die, free_stack_comp_unit)
(hashtab_obstack_allocate, dummy_obstack_deallocate)
(partial_die_hash, partial_die_eq): New functions.
* Makefile.in (hashtab_h): Define.
(dwarf2read.o): Update dependencies.
(observer_inc, observer_h): Move to the correct section.
(vax_supply_gregset): New function.
(vax_gregset): New variable.
(vax_regset_from_core_section): New function.
(vax_gdbarch_init): Set regset_from_core_section.
* Makefile.in (vax-tdep.o): Update dependencies.
* Makefile.in (vaxnbsd-tdep.o): New dependency.
* configure.tgt: Add vax-*-netbsd* and vax-*-openbsd*.
* config/vax/nbsd.mt: New file.
* config/vax/tm-nbsd.h: New file.
sigtramp_p member of `struct gdbarch_tdep'. Also check whether
the program counter is in the range specified by `struct
gdbarch_tdep'.
* amd64-linux-tdep.c: Include "symtab.h".
(amd64_linux_pc_in_sigtramp): Remove function.
(amd64_linux_sigtramp_p): New function.
(amd64_linux_init_abi): Initialize TDEP->sigtramp_p. Don't set
deprecated_pc_in_sigtramp.
* amd64nbsd-tdep.c: Include "symtab.h".
(amd64nbsd_sigtramp_p): New function.
(amd64nbsd_init_abi): Initialize TDEP->sigtramp_p. Don't set
deprecated_pc_in_sigtramp.
* amd64obsd-tdep.c: Include "symtab.h" and "objfiles.h". Add a
few comments.
(amd64obsd_pc_in_sigtramp): Remove function.
(amd64obsd_sigtramp_p): New function.
(amd64obsd_init_abi): Initialize TDEP->sigtramp_p. Don't set
deprecated_pc_in_sigtramp.
* i386-tdep.h (struct gdbarch_tdep): Add sigtramp_p member.
(i386bsd_pc_ins_sigtramp): Remove prototype.
(i386bsd_sigtramp_start, i386bsd_sigtramp_end): Remove prototypes.
* i386-tdep.c (i386_sigtramp_frame_sniffer): Rewrite to use new
sigtramp_p member of `struct gdbarch_tdep'. Also check whether
the program counter is in the range specified by `struct
gdbarch_tdep'.
(i386_pc_in_sigtramp, i386_svr4_pc_in_sigtramp): Remove functions.
(i386_sigtramp_p, i386_svr4_sigtramp_p): New functions.
(i386_go32_pc_in_sigtramp): Remove function.
(i386_svr4_init_abi): Don't set deprecated_pc_in_sigtramp.
Initialize TDEP->sigtramp_p.
(i386_go32_init_abi): Initialize TDEP->sigtramp_p to NULL.
(i386_gdbarch_init): Initialize TDEP->sigtramp_p. Don't set
deprecated_pc_in_sigtramp.
* i386-linux-tdep.c: Adjust comments.
(i386_linux_pc_in_sigtramp): Remove function.
(i386_linux_sigtramp_p): New function.
(i386_linux_init_abi): Initialize TDEP->sigtramp_p. Don't set
deprecated_pc_in_sigtramp.
* i386-nto-tdep.c: Update copyright year.
(i386nto_pc_in_sigtramp): Remove function.
(i386nto_sigtramp_p): New function.
(i386nto_sigcontext_addr): Use I386_ESP_REGNUM instead of
SP_REGNUM.
(i386nto_init_abi): Initialize TDEP->sigtramp_p. Don't set
deprecated_pc_in_sigtramp.
* i386-sol2-tdep.c: Update copyright year.
(i386_sol2_pc_in_sigtramp): Remove function.
(i386_sol2_sigtramp_p): New function.
(i386_sol2_init_abi): Initialize TDEP->sigtramp_p. Don't set
deprecated_pc_in_sigtramp.
* i386bsd-tdep.c (i386bsd_pc_in_sigtramp): Remove function.
(i386bsd_sigtramp_start, i386bsd_sigtramp_end): Remove functions.
(i386bsd_init_abi): Don't set deprecated_pc_in_sigtramp,
deprecated_sigtramp_start and deprecated_sigtramp_end.
* i386nbsd-tdep.c: Include "frame.h" and "symtab.h".
(i386nbsd_pc_in_sigtramp): Remove function.
(i386nbsd_sigtramp_p): New function.
(i386nbsd_init_abi): Don't set deprecated_pc_in_sigtramp,
deprecated_sigtramp_start, deprecated_sigtramp_end. Initialize
TDEP->sigtramp_start, TDEP->sigtramp_end and TDEP->sigtramp_p.
* i386obsd-tdep.c: Include "frame.h", "symtab.h" and "objfiles.h".
(i386obsd_pc_in_sigtramp): Remove function.
(i386obsd_sigtramp_p): New function.
(i386obsd_sigtramp_start, i386obsd_sigtramp_end): Remove
functions.
(i386bsd_init_abi): Don't set deprecated_pc_in_sigtramp,
deprecated_sigtramp_start, deprecated_sigtramp_end. Initialize
TDEP->sigtramp_p.
* Makefile.in (amd64-linux-tdep.o, amd64nbsd-tdep.o,
amd64obsd-tdep.o, i386nbsd-tdep.o, i386obsd-tdep.o): Update
dependencies.
* mips-tdep.c (mips_gdbarch_init): Move frame predicates
to after osabi initialization.
* mips-linux-tdep.c: Include "trad-frame.h" and "tramp-frame.h".
(mips_linux_o32_sigframe_init, mips_linux_n32n64_sigframe_init): New
functions.
(mips_linux_o32_sigframe, mips_linux_o32_rt_sigframe)
(mips_linux_n32_rt_sigframe, mips_linux_n64_rt_sigframe): New
variables.
(mips_linux_init_abi): Append signal trampoline unwinders.
* tramp-frame.h, tramp-frame.h: New files.
* Makefile.in (SFILES, tramp_frame_h, COMMON_OBS, tramp-frame.o):
Update rules to include "tramp-frame.h" and "tramp-frame.c".