From 3d9b49b09003d8b0cba6ca18d1b6240f984d3e8f Mon Sep 17 00:00:00 2001 From: Jason Thorpe Date: Sat, 31 Aug 2002 20:28:37 +0000 Subject: [PATCH] * Makefile.in (mipsnbsd-tdep.o): Add nbsd-tdep.h to dependency list. (nbsd-tdep.o): Add $(gdb_string_h) to dependency list. * alphanbsd-tdep.c (alphanbsd_pc_in_sigtramp): Use nbsd_pc_in_sigtramp. * mipsnbsd-tdep.c: Include nbsd-tdep.h. (mipsnbsd_pc_in_sigtramp): Use nbsd_pc_in_sigtramp. * nbsd-tdep.c: Include gdb_string.h. (nbsd_pc_in_sigtramp): New function. * nbsd-tdep.h (nbsd_pc_in_sigtramp): New prototype. * ppcnbsd-tdep.c (ppcnbsd_pc_in_sigtramp): New function. (ppcnbsd_init_abi): Set gdbarch_pc_in_sigtramp to ppcnbsd_pc_in_sigtramp. * shnbsd-tdep.c (shnbsd_pc_in_sigtramp): New function. (shnbsd_init_abi): Set gdbarch_pc_in_sigtramp to shnbsd_pc_in_sigtramp. * sparcnbsd-tdep.c (sparcnbsd_init_abi_elf): Set gdbarch_pc_in_sigtramp to nbsd_pc_in_sigtramp. * config/mips/nbsd.mt (TDEPFILES): Add nbsd-tdep.o. --- gdb/ChangeLog | 22 ++++++++++++++++++++++ gdb/Makefile.in | 5 +++-- gdb/alphanbsd-tdep.c | 3 ++- gdb/config/mips/nbsd.mt | 3 ++- gdb/mipsnbsd-tdep.c | 4 +++- gdb/nbsd-tdep.c | 11 +++++++++++ gdb/nbsd-tdep.h | 2 ++ gdb/ppcnbsd-tdep.c | 9 +++++++++ gdb/shnbsd-tdep.c | 9 +++++++++ gdb/sparcnbsd-tdep.c | 2 ++ 10 files changed, 65 insertions(+), 5 deletions(-) diff --git a/gdb/ChangeLog b/gdb/ChangeLog index aea6c45a6c..cbb735580e 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,25 @@ +2002-08-31 Jason Thorpe + + * Makefile.in (mipsnbsd-tdep.o): Add nbsd-tdep.h to dependency + list. + (nbsd-tdep.o): Add $(gdb_string_h) to dependency list. + * alphanbsd-tdep.c (alphanbsd_pc_in_sigtramp): Use + nbsd_pc_in_sigtramp. + * mipsnbsd-tdep.c: Include nbsd-tdep.h. + (mipsnbsd_pc_in_sigtramp): Use nbsd_pc_in_sigtramp. + * nbsd-tdep.c: Include gdb_string.h. + (nbsd_pc_in_sigtramp): New function. + * nbsd-tdep.h (nbsd_pc_in_sigtramp): New prototype. + * ppcnbsd-tdep.c (ppcnbsd_pc_in_sigtramp): New function. + (ppcnbsd_init_abi): Set gdbarch_pc_in_sigtramp to + ppcnbsd_pc_in_sigtramp. + * shnbsd-tdep.c (shnbsd_pc_in_sigtramp): New function. + (shnbsd_init_abi): Set gdbarch_pc_in_sigtramp to + shnbsd_pc_in_sigtramp. + * sparcnbsd-tdep.c (sparcnbsd_init_abi_elf): Set + gdbarch_pc_in_sigtramp to nbsd_pc_in_sigtramp. + * config/mips/nbsd.mt (TDEPFILES): Add nbsd-tdep.o. + 2002-08-30 Pierre Muller * breakpoint.c (breakpoint_init_inferior): Reset the val field of diff --git a/gdb/Makefile.in b/gdb/Makefile.in index fdaaa8d978..1c9a327edd 100644 --- a/gdb/Makefile.in +++ b/gdb/Makefile.in @@ -1905,7 +1905,8 @@ mipsm3-nat.o: mipsm3-nat.c $(defs_h) $(inferior_h) $(regcache_h) mipsnbsd-nat.o: mipsnbsd-nat.c $(defs_h) $(inferior_h) $(regcache_h) \ $(mipsnbsd_tdep_h) mipsnbsd-tdep.o: mipsnbsd-tdep.c $(defs_h) $(gdbcore_h) $(regcache_h) \ - $(target_h) $(value_h) $(osabi_h) $(mipsnbsd_tdep_h) $(solib_svr4_h) + $(target_h) $(value_h) $(osabi_h) $(mipsnbsd_tdep_h) $(solib_svr4_h) \ + nbsd-tdep.h mipsread.o: mipsread.c $(defs_h) $(gdb_string_h) $(bfd_h) $(symtab_h) \ $(symfile_h) $(objfiles_h) $(buildsym_h) $(stabsread_h) \ $(coff_sym_h) $(coff_internal_h) $(coff_ecoff_h) $(libcoff_h) \ @@ -1924,7 +1925,7 @@ mon960-rom.o: mon960-rom.c $(defs_h) $(gdbcore_h) $(target_h) $(monitor_h) \ monitor.o: monitor.c $(defs_h) $(gdbcore_h) $(target_h) $(gdb_string_h) \ $(command_h) $(serial_h) $(monitor_h) $(gdbcmd_h) $(inferior_h) \ $(gdb_regex_h) $(srec_h) $(regcache_h) -nbsd-tdep.o: nbsd-tdep.c $(defs_h) $(solib_svr4_h) +nbsd-tdep.o: nbsd-tdep.c $(defs_h) $(gdb_string_h) $(solib_svr4_h) nindy-tdep.o: nindy-tdep.c $(defs_h) $(symtab_h) $(frame_h) $(gdbcore_h) nlmread.o: nlmread.c $(defs_h) $(bfd_h) $(symtab_h) $(symfile_h) \ $(objfiles_h) $(buildsym_h) $(stabsread_h) diff --git a/gdb/alphanbsd-tdep.c b/gdb/alphanbsd-tdep.c index 519d8164ca..a3a1f532a0 100644 --- a/gdb/alphanbsd-tdep.c +++ b/gdb/alphanbsd-tdep.c @@ -178,7 +178,8 @@ alphanbsd_sigtramp_offset (CORE_ADDR pc) static int alphanbsd_pc_in_sigtramp (CORE_ADDR pc, char *func_name) { - return (alphanbsd_sigtramp_offset (pc) >= 0); + return (nbsd_pc_in_sigtramp (pc, func_name) + || alphanbsd_sigtramp_offset (pc) >= 0); } static void diff --git a/gdb/config/mips/nbsd.mt b/gdb/config/mips/nbsd.mt index de529166c5..eb5d8871d7 100644 --- a/gdb/config/mips/nbsd.mt +++ b/gdb/config/mips/nbsd.mt @@ -1,5 +1,6 @@ # Target: MIPS running NetBSD -TDEPFILES= mips-tdep.o mipsnbsd-tdep.o corelow.o solib.o solib-svr4.o +TDEPFILES= mips-tdep.o mipsnbsd-tdep.o corelow.o solib.o solib-svr4.o \ + nbsd-tdep.o TM_FILE= tm-nbsd.h SIM_OBS = remote-sim.o diff --git a/gdb/mipsnbsd-tdep.c b/gdb/mipsnbsd-tdep.c index 029ae6f28b..3367e361bc 100644 --- a/gdb/mipsnbsd-tdep.c +++ b/gdb/mipsnbsd-tdep.c @@ -26,6 +26,7 @@ #include "value.h" #include "osabi.h" +#include "nbsd-tdep.h" #include "mipsnbsd-tdep.h" #include "solib-svr4.h" @@ -219,7 +220,8 @@ mipsnbsd_sigtramp_offset (CORE_ADDR pc) static int mipsnbsd_pc_in_sigtramp (CORE_ADDR pc, char *func_name) { - return (mipsnbsd_sigtramp_offset (pc) >= 0); + return (nbsd_pc_in_sigtramp (pc, func_name) + || mipsnbsd_sigtramp_offset (pc) >= 0); } /* Figure out where the longjmp will land. We expect that we have diff --git a/gdb/nbsd-tdep.c b/gdb/nbsd-tdep.c index 71e229d57b..a2d8f7d153 100644 --- a/gdb/nbsd-tdep.c +++ b/gdb/nbsd-tdep.c @@ -20,6 +20,7 @@ Boston, MA 02111-1307, USA. */ #include "defs.h" +#include "gdb_string.h" #include "solib-svr4.h" /* Fetch (and possibly build) an appropriate link_map_offsets @@ -96,3 +97,13 @@ nbsd_lp64_solib_svr4_fetch_link_map_offsets (void) return lmp; } + +int +nbsd_pc_in_sigtramp (CORE_ADDR pc, char *func_name) +{ + /* Check for libc-provided signal trampoline. All such trampolines + have function names which begin with "__sigtramp". */ + + return (func_name != NULL + && strncmp (func_name, "__sigtramp", 10) == 0); +} diff --git a/gdb/nbsd-tdep.h b/gdb/nbsd-tdep.h index ca40965184..9d26ae9f85 100644 --- a/gdb/nbsd-tdep.h +++ b/gdb/nbsd-tdep.h @@ -25,4 +25,6 @@ struct link_map_offsets *nbsd_ilp32_solib_svr4_fetch_link_map_offsets (void); struct link_map_offsets *nbsd_lp64_solib_svr4_fetch_link_map_offsets (void); +int nbsd_pc_in_sigtramp (CORE_ADDR, char *); + #endif /* NBSD_TDEP_H */ diff --git a/gdb/ppcnbsd-tdep.c b/gdb/ppcnbsd-tdep.c index 6fabab7c5b..3d052a83ff 100644 --- a/gdb/ppcnbsd-tdep.c +++ b/gdb/ppcnbsd-tdep.c @@ -196,6 +196,13 @@ static struct core_fns ppcnbsd_elfcore_fns = NULL /* next */ }; +static int +ppcnbsd_pc_in_sigtramp (CORE_ADDR pc, char *func_name) +{ + /* FIXME: Need to add support for kernel-provided signal trampolines. */ + return (nbsd_pc_in_sigtramp (pc, func_name)); +} + static void ppcnbsd_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch) @@ -203,6 +210,8 @@ ppcnbsd_init_abi (struct gdbarch_info info, /* Stop at main. */ set_gdbarch_frame_chain_valid (gdbarch, generic_func_frame_chain_valid); + set_gdbarch_pc_in_sigtramp (gdbarch, ppcnbsd_pc_in_sigtramp); + set_solib_svr4_fetch_link_map_offsets (gdbarch, nbsd_ilp32_solib_svr4_fetch_link_map_offsets); } diff --git a/gdb/shnbsd-tdep.c b/gdb/shnbsd-tdep.c index 02982267ba..b67884d2ce 100644 --- a/gdb/shnbsd-tdep.c +++ b/gdb/shnbsd-tdep.c @@ -165,10 +165,19 @@ static struct core_fns shnbsd_elfcore_fns = NULL /* next */ }; +static int +shnbsd_pc_in_sigtramp (CORE_ADDR pc, char *func_name) +{ + /* FIXME: Need to add support for kernel-provided signal trampolines. */ + return (nbsd_pc_in_sigtramp (pc, func_name)); +} + static void shnbsd_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch) { + set_gdbarch_pc_in_sigtramp (gdbarch, shnbsd_pc_in_sigtramp); + set_solib_svr4_fetch_link_map_offsets (gdbarch, nbsd_ilp32_solib_svr4_fetch_link_map_offsets); } diff --git a/gdb/sparcnbsd-tdep.c b/gdb/sparcnbsd-tdep.c index ea70e517b6..1103eaa62c 100644 --- a/gdb/sparcnbsd-tdep.c +++ b/gdb/sparcnbsd-tdep.c @@ -500,6 +500,8 @@ sparcnbsd_init_abi_elf (struct gdbarch_info info, { sparcnbsd_init_abi_common (info, gdbarch); + set_gdbarch_pc_in_sigtramp (gdbarch, nbsd_pc_in_sigtramp); + set_solib_svr4_fetch_link_map_offsets (gdbarch, gdbarch_ptr_bit (gdbarch) == 32 ? nbsd_ilp32_solib_svr4_fetch_link_map_offsets :