Commit Graph

12 Commits

Author SHA1 Message Date
Richard Henderson baa490c486 * 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-04 06:22:17 +00:00
Richard Henderson f1a559ae83 * alpha-linux-tdep.c (alpha_linux_init_abi): Install dwarf2 unwinder. 2003-06-01 15:53:56 +00:00
Richard Henderson d2427a719b * 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 23:02:53 +00:00
Andrew Cagney 1c615f7a40 2003-01-08 Andrew Cagney <cagney@redhat.com>
* alpha-linux-tdep.c (alpha_linux_sigcontext_addr): Use
	get_frame_base.
2003-01-09 00:24:50 +00:00
Daniel Jacobowitz 4be87837a2 * 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.

Plus updates to alpha, arm, hppa, i386, mips, ns32k, ppc, sh, sparc, and vax
ports to match.
2003-01-04 23:38:46 +00:00
Mark Kettenis 05816f706e * osabi.c: Include "gdb_assert.h" and "gdb_string.h".
(struct gdb_osabi_handler): Remove member `arch'.  Add member
`arch_info'.
(gdbarch_register_osabi): Add new argument `machine'.  Use ot to
construct a `struct bfd_arch_info' and store it in the `struct
gdb_osabi_handler' that is created.
(gdbarch_init_osabi): Check for compatibility based on machine
type and architecture.
* osabi.h (gdbarch_register_osabi): Adjust prototype and update
comment.
* alpha-linux-tdep.c (_initialize_alpha_linux_tdep): Add 0 as
second argument in call to gdbarch_register_osabi.
* alpha-osf1-tdep.c (_initialize_alpha_osf1_tdep): Likewise.
* alphafbsd-tdep.c (_initialize_alphafbsd_tdep): Likewise.
* alphanbsd-tdep.c (_initialize_alphanbsd_tdep): Likewise.
* arm-linux-tdep.c (_initialize_arm_linux_tdep): Likewise.
* arm-tdep.c (_initialize_arm_tdep): Likewise.
* armnbsd-tdep.c (_initialize_armnbsd_tdep): Likewise.
* hppa-hpux-tdep.c (_initialize_hppa_hpux_tdep): Likewise.
* i386-interix-tdep.c (_initialize_i386_interix_tdep): Likewise.
* i386-linux-tdep.c (_initialize_i386_linux_tdep): Likewise.
* i386-sol2-tdep.c (_initialize_i386_sol2_tdep): Likewise.
* i386-tdep.c (_initialize_i386_tdep): Likewise.
* i386bsd-tdep.c (_initialize_i386bsd_tdep): Likewise.
* i386gnu-tdep.c (_initialize_i386gnu_tdep): Likewise.
* i386ly-tdep.c (_initialize_i386lynx_tdep): Renamed from
_initialize_i386bsd_tdep and updated likewise.
* i386nbsd-tdep.c (_initialize_i386nbsd_tdep): Likewise.
* i386obsd-tdep.c (_initialize_i386obsd_tdep): Likewise.
* mips-irix-tdep.c (_initialize_mips_irix_tdep): Likewise.
* mips-linux-tdep.c (_initialize_mips_linux_tdep): Likewise.
* mipsnbsd-tdep.c (_initialize_mipsnbsd__tdep): Likewise.
* ns32knbsd-tdep.c (_initialize_ns32kmnsd_tdep): Likewise.
* ppc-linux-tdep.c (_initialize_ppc_linux_tdep): Likewise.
* ppcnbsd-tdep.c (_initialize_ppcnbsd_tdep): Likewise.
* shnbsd-tdep.c (_initialize_shnbsd_tdep): Likewise.
* sparcnbsd-tdep.c (_initialize_sparcnbsd_tdep): Likewise.
2002-12-21 19:58:07 +00:00
Jason Thorpe 70f80edf7c * Makefile.in (SFILES): Add osabi.c.
(COMMON_OBS): Add osabi.o.
(osabi.o): New dependency list.
* osabi.c: New file.
* osabi.h: New file.
* doc/gdbint.texinfo: Document new generic OS ABI framework.

* Makefile.in (alpha_tdep_h): Define and use instead of
alpha-tdep.h.
* alpha-tdep.c (alpha_abi_names, process_note_abi_tag_sections,
get_elfosabi, alpha_abi_handler_list, alpha_gdbarch_register_os_abi):
Remove.
(alpha_gdbarch_init, alpha_dump_tdep): Use generic OS ABI framework.
* alpha-tdep.h: Include osabi.h.
(alpha_abi): Remove.
(gdbarch_tdep): Use generic OS ABI framework.
* alpha-linux-tdep.c (_initialize_alpha_linux_tdep): Use
gdbarch_register_osabi.
* alpha-osf1-tdep.c (_initialize_alpha_osf1_tdep): Likewise.
* alphafbsd-tdep.c (_initialize_alphafbsd_tdep): Likewise.
* alphanbsd-tdep.c (_initialize_alphanbsd_tdep): Likewise.

* Makefile.in (sh_tdep_h): Add osabi.h.
* sh-tdep.h (sh_osabi): Remove.
(gdbarch_tdep): Use generic OS ABI framework.
* sh-tdep.c (sh_osabi_names, process_note_abi_tag_sections,
sh_osabi_handler_list, sh_gdbarch_register_os_abi): Remove.
(sh_gdbarch_init, sh_dump_tdep): Use generic OS ABI framework.
* shnbsd-tdep.c (_initialize_shnbsd_tdep): Use gdbarch_register_osabi.

* Makefile.in (arm_tdep_h): Define and use instead of arm-tdep.h.
* arm-linux-tdep.c (_initialize_arm_linux_tdep): Use
gdbarch_register_osabi.
* arm-tdep.c (arm_abi_names, process_note_abi_tag_sections,
arm_abi_handler_list, arm_gdbarch_register_os_abi): Remove.
(get_elfosabi): Rename to...
(arm_elf_osabi_sniffer): ...this.  Adjust to use generic OS
ABI framework support routines.
(arm_gdbarch_init): Use generic OS ABI framework.
(arm_dump_tdep): Likewise.
(_initialize_arm_tdep): Likewise.
* arm-tdep.h: Include osabi.h.
(arm_abi): Remove.
(gdbarch_tdep): Remove arm_abi and abi_name members.  Add
osabi member.
(arm_gdbarch_register_os_abi): Remove prototype.
* armnbsd-tdep.c (arm_netbsd_aout_osabi_sniffer): New function.
(_initialize_arm_netbsd_tdep): Use gdbarch_register_osabi.

* Makefile.in (mips-tdep.o): Add osabi.h to dependency list.
* mips-tdep.c: Include osabi.h.
(gdbarch_tdep, mips_gdbarch_init, mips_dump_tdep): Use generic
OS ABI framework.
2002-05-21 15:36:03 +00:00
Jason Thorpe 5868c862e2 * alpha-tdep.h (gdbarch_tdep): Add sigcontext_addr member.
* alpha-tdep.c (alpha_sigcontext_addr): New function.
(alpha_find_saved_regs): Use alpha_sigcontext_addr.
(alpha_gdbarch_init): Initialize tdep->sigcontext_addr.
* alpha-linux-tdep.c: Include frame.h.
(alpha_linux_sigcontext_addr): New function.
(alpha_linux_init_abi): Set tdep->sigcontext_addr to
alpha_linux_sigcontext_addr.
* alpha-osf1-tdep.c: Include gdbcore.h.
(alpha_osf1_sigcontext_addr): New function.
(alpha_osf1_init_abi): Set tdep->sigcontext_addr to
alpha_osf1_sigcontext_addr.
* config/alpha/tm-alpha.h (SIGCONTEXT_ADDR): Remove.
* config/alpha/tm-alphalinux.h (SIGCONTEXT_ADDR): Remove.
2002-04-26 07:05:35 +00:00
Jason Thorpe accc6d1ff3 * alpha-tdep.h (gdbarch_tdep): Add jb_pc and jb_elt_size members.
* alpha-linux-tdep.c (alpha_linux_init_abi): Initialize
tdep->jb_pc and tdep->jb_elt_size.
* alpha-osf1-tdep.c (alpha_osf1_init_abi): Likewise.
* alphafbsd-tdep.c (alphafbsd_init_abi): Likewise.
* alphanbsd-tdep.c (alphanbsd_init_abi): Likewise.
* alpha-nat.c (get_longjmp_target): Remove.
(JB_ELEMENT_SIZE): Ditto.
(JB_PC): Ditto.
* alpha-tdep.c (alpha_get_longjmp_target): New function.
(alpha_gdbarch_init): Default tdep->jb_pc to -1.  If the
OS ABI sets jb_pc to a valid value, set gdbarch_get_longjmp_target
to alpha_get_longjmp_target.
(alpha_dump_tdep): Report tdep->jb_pc and tdep->jb_elt_size.
* config/alpha/nm-linux.h (GET_LONGJMP_TARGET): Remove.
* config/alpha/nm-osf.h (GET_LONGJMP_TARGET): Remove.
2002-04-26 01:08:19 +00:00
Jason Thorpe 6c72f9f974 * alpha-linux-tdep.c (alpha_linux_pc_in_sigtramp): New function.
(alpha_linux_init_abi): Set gdbarch_pc_in_sigtramp to
alpha_linux_pc_in_sigtramp.
* alpha-osf1-tdep.c (alpha_osf1_pc_in_sigtramp): New function.
(alpha_osf1_init_abi): Set gdbarch_pc_in_sigtramp to
alpha_osf1_pc_in_sigtramp.
* alpha-tdep.c (alpha_osf_in_sigtramp): Remove.
* alphafbsd-tdep.c (alphafbsd_pc_in_sigtramp): New function.
(alphafbsd_init_abi): Set gdbarch_pc_in_sigtramp to
alphafbsd_pc_in_sigtramp.
* alphanbsd-tdep.c (alphanbsd_pc_in_sigtramp): New function.
(alphanbsd_init_abi): Set gdbarch_pc_in_sigtramp to
alphanbsd_pc_in_sigtramp.
* config/alpha/tm-alpha.h (IN_SIGTRAMP): Remove.
* config/alpha/tm-alphalinux.h (IN_SIGTRAMP): Remove.
2002-04-25 05:06:08 +00:00
Jason Thorpe 36a6271d5e * Makefile.in (ALLDEPFILES): Add alpha-osf1-tdep.c.
(alpha-osf1-tdep.o): New dependency list.
* alpha-tdep.h (gdbarch_tdep): Add dynamic_sigtramp_offset
and skip_sigtramp_frame members.
* alpha-linux-tdep.c: Include gdbcore.h.
(alpha_linux_sigtramp_offset): Change return type to LONGEST.
(alpha_linux_init_abi): Initialize tdep->dynamic_sigtramp_offset.
* alpha-osf1-tdep.c: New file.
* alpha-tdep.c (alpha_osf_skip_sigtramp_frame): Moved to
alpha-osf1-dep.c.
(alpha_frame_past_sigtramp_frame): New function.
(alpha_dynamic_sigtramp_offset): Ditto.
(alpha_proc_desc_is_dyn_sigtramp): Ditto.
(alpha_set_proc_desc_is_dyn_sigtramp): Ditto.
(ALPHA_PROC_SIGTRAMP_MAGIC): Define.
(push_sigtramp_desc): Use alpha_set_proc_desc_is_dyn_sigtramp.
(after_prologue): Use alpha_proc_desc_is_dyn_sigtramp.
(find_proc_desc): Use alpha_dynamic_sigtramp_offset.
(alpha_frame_chain): Use alpha_frame_past_sigtramp_frame.
(alpha_init_extra_frame_info): Use alpha_proc_desc_is_dyn_sigtramp.
(alpha_pop_frame): Use alpha_proc_desc_is_dyn_sigtramp.
(alpha_gdbarch_init): Initialize tdep->dynamic_sigtramp_offset
and tdep->skip_sigtramp_frame.  Set gdbarch_skip_trampoline_code
to find_solib_trampoline_target.
* config/alpha/alpha-osf1.mt (TDEPFILES): Add alpha-osf1-tdep.o.
* config/alpha/tm-alpha.h: Remove inclusion of regcache.h.
(SKIP_TRAMPOLINE_CODE): Remove.
(PROC_DESC_IS_DYN_SIGTRAMP): Ditto.
(SET_PROC_DESC_IS_DYN_SIGTRAMP): Ditto.
(DYNAMIC_SIGTRAMP_OFFSET): Ditto.
(FRAME_PAST_SIGTRAMP_FRAME): Ditto.
* config/alpha/tm-alphalinux.h (PROC_DESC_IS_DYN_SIGTRAMP): Remove.
(PROC_SIGTRAMP_MAGIC): Ditto.
(PROC_DESC_IS_DYN_SIGTRAMP): Ditto.
(SET_PROC_DESC_IS_DYN_SIGTRAMP): Ditto.
(SET_PROC_DESC_IS_DYN_SIGTRAMP): Ditto.
(DYNAMIC_SIGTRAMP_OFFSET): Ditto.
(FRAME_PAST_SIGTRAMP_FRAME): Ditto.
2002-04-25 02:28:57 +00:00
Jason Thorpe 3379287ac9 * alpha-linux-tdep.c: New file. Move alpha_linux_sigtramp_offset
to here...
* alpha-tdep.c: ...from here.
* config/alpha/alpha-linux.mt (TDEPFILES): Add alpha-linux-tdep.o.
2002-04-21 21:07:58 +00:00