2004-05-01 Andrew Cagney <cagney@redhat.com>
authorAndrew Cagney <cagney@redhat.com>
Sat, 1 May 2004 15:34:49 +0000 (15:34 +0000)
committerAndrew Cagney <cagney@redhat.com>
Sat, 1 May 2004 15:34:49 +0000 (15:34 +0000)
* alpha-tdep.c (alpha_sigtramp_frame_sniffer): Use pc_in_sigtramp.
* alpha-tdep.h (struct gdbarch_tdep): Add pc_in_sigtramp.
* alphafbsd-tdep.c (alphafbsd_init_abi): Update.
* alpha-osf1-tdep.c (alpha_osf1_init_abi): Update.
* alpha-linux-tdep.c (alpha_linux_init_abi): Update.

gdb/ChangeLog
gdb/alpha-linux-tdep.c
gdb/alpha-osf1-tdep.c
gdb/alpha-tdep.c
gdb/alpha-tdep.h
gdb/alphafbsd-tdep.c
gdb/alphanbsd-tdep.c

index f0ee01654d0b9dbc484280c7e33cd18011beddba..c6f4bccc203a596775a63a93bd2d36e3dab0a6bb 100644 (file)
@@ -1,5 +1,11 @@
 2004-05-01  Andrew Cagney  <cagney@redhat.com>
 
+       * alpha-tdep.c (alpha_sigtramp_frame_sniffer): Use pc_in_sigtramp.
+       * alpha-tdep.h (struct gdbarch_tdep): Add pc_in_sigtramp.
+       * alphafbsd-tdep.c (alphafbsd_init_abi): Update.
+       * alpha-osf1-tdep.c (alpha_osf1_init_abi): Update.
+       * alpha-linux-tdep.c (alpha_linux_init_abi): Update.
+
        * Makefile.in (m68klinux-nat.o): Update dependencies.
        * m68klinux-tdep.c: Include "trad-frame.h" and "frame-unwind.h".
        (m68k_linux_sigtramp_frame_cache)
index 344195eee496e165fa1d9f9a3dd5dc489b655f7e..02036ba3a594501ee4c23e8855ee0ed48666996c 100644 (file)
@@ -134,11 +134,10 @@ alpha_linux_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch)
   /* Hook into the MDEBUG frame unwinder.  */
   alpha_mdebug_init_abi (info, gdbarch);
 
-  set_gdbarch_deprecated_pc_in_sigtramp (gdbarch, alpha_linux_pc_in_sigtramp);
-
   tdep = gdbarch_tdep (gdbarch);
   tdep->dynamic_sigtramp_offset = alpha_linux_sigtramp_offset;
   tdep->sigcontext_addr = alpha_linux_sigcontext_addr;
+  tdep->pc_in_sigtramp = alpha_linux_pc_in_sigtramp;
   tdep->jb_pc = 2;
   tdep->jb_elt_size = 8;
 }
index 1fc988956f6b194e01a2bf7594396f95d4b7d7ad..b5879ad551cdabe02332f05d00142fc0576f8035 100644 (file)
@@ -54,13 +54,13 @@ alpha_osf1_init_abi (struct gdbarch_info info,
   /* Hook into the MDEBUG frame unwinder.  */
   alpha_mdebug_init_abi (info, gdbarch);
 
-  set_gdbarch_deprecated_pc_in_sigtramp (gdbarch, alpha_osf1_pc_in_sigtramp);
   /* The next/step support via procfs on OSF1 is broken when running
      on multi-processor machines. We need to use software single stepping
      instead.  */
   set_gdbarch_software_single_step (gdbarch, alpha_software_single_step);
 
   tdep->sigcontext_addr = alpha_osf1_sigcontext_addr;
+  tdep->pc_in_sigtramp = alpha_osf1_pc_in_sigtramp;
 
   tdep->jb_pc = 2;
   tdep->jb_elt_size = 8;
index 0f4eaa7611de55281ed53a2f3b586b761472142c..378b652feef23fb65113a7b1791058c1961b6ee5 100644 (file)
@@ -863,14 +863,20 @@ alpha_sigtramp_frame_sniffer (struct frame_info *next_frame)
   CORE_ADDR pc = frame_pc_unwind (next_frame);
   char *name;
 
-  /* We shouldn't even bother to try if the OSABI didn't register
-     a sigcontext_addr handler.  */
-  if (!gdbarch_tdep (current_gdbarch)->sigcontext_addr)
+  /* NOTE: cagney/2004-04-30: Do not copy/clone this code.  Instead
+     look at tramp-frame.h and other simplier per-architecture
+     sigtramp unwinders.  */
+
+  /* We shouldn't even bother to try if the OSABI didn't register a
+     sigcontext_addr handler or pc_in_sigtramp hander.  */
+  if (gdbarch_tdep (current_gdbarch)->sigcontext_addr == NULL)
+    return NULL;
+  if (gdbarch_tdep (current_gdbarch)->pc_in_sigtramp == NULL)
     return NULL;
 
   /* Otherwise we should be in a signal frame.  */
   find_pc_partial_function (pc, &name, NULL, NULL);
-  if (DEPRECATED_PC_IN_SIGTRAMP (pc, name))
+  if (gdbarch_tdep (current_gdbarch)->pc_in_sigtramp (pc, name))
     return &alpha_sigtramp_frame_unwind;
 
   return NULL;
index 828a3c6b2f75e937b5b62afdff4f4293d10eb4e3..b1b8516bc7c56614ea33f3af3200d96f37bc8e88 100644 (file)
@@ -83,6 +83,12 @@ struct gdbarch_tdep
      the sigcontext structure for that signal handler.  */
   CORE_ADDR (*sigcontext_addr) (struct frame_info *);
 
+  /* Does the PC fall in a signal trampoline.  */
+  /* NOTE: cagney/2004-04-30: Do not copy/clone this code.  Instead
+     look at tramp-frame.h and other simplier per-architecture
+     sigtramp unwinders.  */
+  int (*pc_in_sigtramp) (CORE_ADDR pc, char *name);
+
   /* Offset of registers in `struct sigcontext'.  */
   int sc_pc_offset;
   int sc_regs_offset;
index 77bd6eaac34100c12d3ac6270fe80c8a627f6fd7..661cf0285e9d6ecb2437c0e5abbe6694a3232a14 100644 (file)
@@ -100,10 +100,9 @@ alphafbsd_init_abi (struct gdbarch_info info,
 
   set_gdbarch_use_struct_convention (gdbarch, alphafbsd_use_struct_convention);
 
-  set_gdbarch_deprecated_pc_in_sigtramp (gdbarch, alphafbsd_pc_in_sigtramp);
-
   tdep->dynamic_sigtramp_offset = alphafbsd_sigtramp_offset;
   tdep->sigcontext_addr = alphafbsd_sigcontext_addr;
+  tdep->pc_in_sigtramp = alphafbsd_pc_in_sigtramp;
   tdep->sc_pc_offset = 288;
   tdep->sc_regs_offset = 24;
   tdep->sc_fpregs_offset = 320;
index 24fa358b82e0100a53b4c9fc8fae9c0f4c16f3c4..c8a441bb868cb75b826f731ed8061a5cf09ede25 100644 (file)
@@ -205,8 +205,6 @@ alphanbsd_init_abi (struct gdbarch_info info,
   /* Hook into the MDEBUG frame unwinder.  */
   alpha_mdebug_init_abi (info, gdbarch);
 
-  set_gdbarch_deprecated_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);
@@ -215,6 +213,7 @@ alphanbsd_init_abi (struct gdbarch_info info,
                                  nbsd_lp64_solib_svr4_fetch_link_map_offsets);
 
   tdep->dynamic_sigtramp_offset = alphanbsd_sigtramp_offset;
+  tdep->pc_in_sigtramp = alphanbsd_pc_in_sigtramp;
   tdep->sigcontext_addr = alphanbsd_sigcontext_addr;
 
   tdep->jb_pc = 2;