diff --git a/gdb/ChangeLog b/gdb/ChangeLog index f77061ef83..8d35409004 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,21 @@ +2002-04-24 Jason Thorpe + + * 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-24 Jason Thorpe * config/alpha/nbsd.mh (NATDEPFILES): Remove solib-legacy.o. diff --git a/gdb/alpha-linux-tdep.c b/gdb/alpha-linux-tdep.c index f9b060dc96..ed7a7c640a 100644 --- a/gdb/alpha-linux-tdep.c +++ b/gdb/alpha-linux-tdep.c @@ -85,12 +85,20 @@ alpha_linux_sigtramp_offset (CORE_ADDR pc) return -1; } +static int +alpha_linux_pc_in_sigtramp (CORE_ADDR pc, char *func_name) +{ + return (alpha_linux_sigtramp_offset (pc) >= 0); +} + static void alpha_linux_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch) { struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch); + set_gdbarch_pc_in_sigtramp (gdbarch, alpha_linux_pc_in_sigtramp); + tdep->dynamic_sigtramp_offset = alpha_linux_sigtramp_offset; } diff --git a/gdb/alpha-osf1-tdep.c b/gdb/alpha-osf1-tdep.c index 97ac6fb1e7..cba9134b07 100644 --- a/gdb/alpha-osf1-tdep.c +++ b/gdb/alpha-osf1-tdep.c @@ -37,12 +37,20 @@ alpha_osf1_skip_sigtramp_frame (struct frame_info *frame, CORE_ADDR pc) return 0; } +static int +alpha_osf1_pc_in_sigtramp (CORE_ADDR pc, char *func_name) +{ + return (func_name != NULL && STREQ ("__sigtramp", func_name)); +} + static void alpha_osf1_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch) { struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch); + set_gdbarch_pc_in_sigtramp (gdbarch, alpha_osf1_pc_in_sigtramp); + tdep->skip_sigtramp_frame = alpha_osf1_skip_sigtramp_frame; } diff --git a/gdb/alpha-tdep.c b/gdb/alpha-tdep.c index ef0b2cd5ef..035b8d9d78 100644 --- a/gdb/alpha-tdep.c +++ b/gdb/alpha-tdep.c @@ -193,12 +193,6 @@ struct linked_proc_info } *linked_proc_desc_table = NULL; -int -alpha_osf_in_sigtramp (CORE_ADDR pc, char *func_name) -{ - return (func_name != NULL && STREQ ("__sigtramp", func_name)); -} - static CORE_ADDR alpha_frame_past_sigtramp_frame (struct frame_info *frame, CORE_ADDR pc) { diff --git a/gdb/alphafbsd-tdep.c b/gdb/alphafbsd-tdep.c index 6a3f7e8fe9..2e52252fc1 100644 --- a/gdb/alphafbsd-tdep.c +++ b/gdb/alphafbsd-tdep.c @@ -54,12 +54,21 @@ alphafbsd_use_struct_convention (int gcc_p, struct type *type) return 0; } +static int +alphafbsd_pc_in_sigtramp (CORE_ADDR pc, char *func_name) +{ + /* FIXME */ + return 0; +} + static void alphafbsd_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch) { struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch); + set_gdbarch_pc_in_sigtramp (gdbarch, alphafbsd_pc_in_sigtramp); + set_gdbarch_use_struct_convention (gdbarch, alphafbsd_use_struct_convention); } diff --git a/gdb/alphanbsd-tdep.c b/gdb/alphanbsd-tdep.c index 3f3ae529e5..c29b3f92fd 100644 --- a/gdb/alphanbsd-tdep.c +++ b/gdb/alphanbsd-tdep.c @@ -123,12 +123,20 @@ alphanbsd_sigtramp_offset (CORE_ADDR pc) return -1; } +static int +alphanbsd_pc_in_sigtramp (CORE_ADDR pc, char *func_name) +{ + return (alphanbsd_sigtramp_offset (pc) >= 0); +} + static void alphanbsd_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch) { struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch); + set_gdbarch_pc_in_sigtramp (gdbarch, alphanbsd_pc_in_sigtramp); + /* NetBSD/alpha does not provide single step support via ptrace(2); we must use software single-stepping. */ set_gdbarch_software_single_step (gdbarch, alpha_software_single_step); diff --git a/gdb/config/alpha/tm-alpha.h b/gdb/config/alpha/tm-alpha.h index 61d956176b..a37933288c 100644 --- a/gdb/config/alpha/tm-alpha.h +++ b/gdb/config/alpha/tm-alpha.h @@ -45,11 +45,6 @@ struct symbol; #define FUNCTION_START_OFFSET 0 -/* Are we currently handling a signal ? */ - -#define IN_SIGTRAMP(pc, name) alpha_osf_in_sigtramp ((pc), (name)) -extern int alpha_osf_in_sigtramp (CORE_ADDR, char *); - #define BREAKPOINT {0x80, 0, 0, 0} /* call_pal bpt */ /* Special symbol found in blocks associated with routines. We can hang diff --git a/gdb/config/alpha/tm-alphalinux.h b/gdb/config/alpha/tm-alphalinux.h index 0235758275..fae1743830 100644 --- a/gdb/config/alpha/tm-alphalinux.h +++ b/gdb/config/alpha/tm-alphalinux.h @@ -27,14 +27,9 @@ #include "alpha/tm-alpha.h" -/* Are we currently handling a signal ? */ - -extern LONGEST alpha_linux_sigtramp_offset (CORE_ADDR); -#undef IN_SIGTRAMP -#define IN_SIGTRAMP(pc, name) (alpha_linux_sigtramp_offset (pc) >= 0) - /* Get start and end address of sigtramp handler. */ +extern LONGEST alpha_linux_sigtramp_offset (CORE_ADDR); #define SIGTRAMP_START(pc) (pc - alpha_linux_sigtramp_offset (pc)) #define SIGTRAMP_END(pc) (SIGTRAMP_START(pc) + 3*4)