* gdbarch.sh (skip_solib_resolver): Change into a multi-arch
authorMark Kettenis <kettenis@gnu.org>
Fri, 14 Nov 2003 21:22:42 +0000 (21:22 +0000)
committerMark Kettenis <kettenis@gnu.org>
Fri, 14 Nov 2003 21:22:42 +0000 (21:22 +0000)
function.
* gdbarch.c, gdbarch.h: Regenerate.
* infrun.c (handle_inferior_event): Call
gdbarch_skip_solib_resolver instead of SKIP_SOLIB_RESOLVER.
* arch-utils.c (generic_in_solib_call_trampoline): Adjust function
definition.
* arch-utils.h (generic_in_solib_call_trampoline): Adjust function
prototype.

gdb/ChangeLog
gdb/arch-utils.c
gdb/arch-utils.h
gdb/gdbarch.c
gdb/gdbarch.h
gdb/gdbarch.sh
gdb/infrun.c

index 94ef4d237a2864b43c75b950df1a5b4e04202fe1..cc68252874c05ef6ef0cbbb8579c018da5a16f11 100644 (file)
@@ -1,3 +1,15 @@
+2003-11-14  Mark Kettenis  <kettenis@gnu.org>
+
+       * gdbarch.sh (skip_solib_resolver): Change into a multi-arch
+       function.
+       * gdbarch.c, gdbarch.h: Regenerate.
+       * infrun.c (handle_inferior_event): Call
+       gdbarch_skip_solib_resolver instead of SKIP_SOLIB_RESOLVER.
+       * arch-utils.c (generic_in_solib_call_trampoline): Adjust function
+       definition.
+       * arch-utils.h (generic_in_solib_call_trampoline): Adjust function
+       prototype.
+
 2003-11-14  Jeff Johnston  <jjohnstn@redhat.com>
 
        * libunwind-frame.c: New file.
index 4234cb6dd639eb1304619bda1b147bb356c5384e..a5d8a1c11b12a6ae579efabe376c72ed09b9f453 100644 (file)
@@ -103,7 +103,7 @@ generic_skip_trampoline_code (CORE_ADDR pc)
 }
 
 CORE_ADDR
-generic_skip_solib_resolver (CORE_ADDR pc)
+generic_skip_solib_resolver (struct gdbarch *gdbarch, CORE_ADDR pc)
 {
   return 0;
 }
index 32fbc4d2ce3eed1d966ca301befe7f87f94bd6df..9cc8b0007bfb088a397b879ca724b6a05e4ae4a1 100644 (file)
@@ -110,7 +110,8 @@ extern gdbarch_virtual_frame_pointer_ftype legacy_virtual_frame_pointer;
 
 extern CORE_ADDR generic_skip_trampoline_code (CORE_ADDR pc);
 
-extern CORE_ADDR generic_skip_solib_resolver (CORE_ADDR pc);
+extern CORE_ADDR generic_skip_solib_resolver (struct gdbarch *gdbarch,
+                                             CORE_ADDR pc);
 
 extern int generic_in_solib_call_trampoline (CORE_ADDR pc, char *name);
 
index f73a4f6f3aebf85501aeaa2ba115ec0a4e29bfe8..bac577b1ad1ee9920ee11c6bfc5a6522d523494a 100644 (file)
@@ -420,7 +420,7 @@ struct gdbarch startup_gdbarch =
   0,  /* software_single_step */
   0,  /* print_insn */
   0,  /* skip_trampoline_code */
-  0,  /* skip_solib_resolver */
+  generic_skip_solib_resolver,  /* skip_solib_resolver */
   0,  /* in_solib_call_trampoline */
   0,  /* in_solib_return_trampoline */
   0,  /* pc_in_sigtramp */
@@ -2217,16 +2217,9 @@ gdbarch_dump (struct gdbarch *current_gdbarch, struct ui_file *file)
                       (long) current_gdbarch->skip_prologue
                       /*SKIP_PROLOGUE ()*/);
 #endif
-#ifdef SKIP_SOLIB_RESOLVER
   fprintf_unfiltered (file,
-                      "gdbarch_dump: %s # %s\n",
-                      "SKIP_SOLIB_RESOLVER(pc)",
-                      XSTRING (SKIP_SOLIB_RESOLVER (pc)));
-  fprintf_unfiltered (file,
-                      "gdbarch_dump: SKIP_SOLIB_RESOLVER = <0x%08lx>\n",
-                      (long) current_gdbarch->skip_solib_resolver
-                      /*SKIP_SOLIB_RESOLVER ()*/);
-#endif
+                      "gdbarch_dump: skip_solib_resolver = 0x%08lx\n",
+                      (long) current_gdbarch->skip_solib_resolver);
 #ifdef SKIP_TRAMPOLINE_CODE
   fprintf_unfiltered (file,
                       "gdbarch_dump: %s # %s\n",
@@ -5220,7 +5213,7 @@ gdbarch_skip_solib_resolver (struct gdbarch *gdbarch, CORE_ADDR pc)
   gdb_assert (gdbarch->skip_solib_resolver != NULL);
   if (gdbarch_debug >= 2)
     fprintf_unfiltered (gdb_stdlog, "gdbarch_skip_solib_resolver called\n");
-  return gdbarch->skip_solib_resolver (pc);
+  return gdbarch->skip_solib_resolver (gdbarch, pc);
 }
 
 void
index 69012592cd4d3f7a54a0beca06509e52b1cad840..a9df675432738ec22790183feab14e82d2cd08ca 100644 (file)
@@ -2138,15 +2138,9 @@ extern void set_gdbarch_skip_trampoline_code (struct gdbarch *gdbarch, gdbarch_s
    evaluates non-zero, this is the address where the debugger will place
    a step-resume breakpoint to get us past the dynamic linker. */
 
-typedef CORE_ADDR (gdbarch_skip_solib_resolver_ftype) (CORE_ADDR pc);
+typedef CORE_ADDR (gdbarch_skip_solib_resolver_ftype) (struct gdbarch *gdbarch, CORE_ADDR pc);
 extern CORE_ADDR gdbarch_skip_solib_resolver (struct gdbarch *gdbarch, CORE_ADDR pc);
 extern void set_gdbarch_skip_solib_resolver (struct gdbarch *gdbarch, gdbarch_skip_solib_resolver_ftype *skip_solib_resolver);
-#if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (SKIP_SOLIB_RESOLVER)
-#error "Non multi-arch definition of SKIP_SOLIB_RESOLVER"
-#endif
-#if !defined (SKIP_SOLIB_RESOLVER)
-#define SKIP_SOLIB_RESOLVER(pc) (gdbarch_skip_solib_resolver (current_gdbarch, pc))
-#endif
 
 /* For SVR4 shared libraries, each call goes through a small piece of
    trampoline code in the ".plt" section.  IN_SOLIB_CALL_TRAMPOLINE evaluates
index 29a2efae3ad92cf5d21f46a63bd958bfa046ee73..eb015b38d74ac91ba3a917a2e71e4761c0482017 100755 (executable)
@@ -704,7 +704,7 @@ f:2:SKIP_TRAMPOLINE_CODE:CORE_ADDR:skip_trampoline_code:CORE_ADDR pc:pc:::generi
 # If IN_SOLIB_DYNSYM_RESOLVE_CODE returns true, and SKIP_SOLIB_RESOLVER
 # evaluates non-zero, this is the address where the debugger will place
 # a step-resume breakpoint to get us past the dynamic linker.
-f:2:SKIP_SOLIB_RESOLVER:CORE_ADDR:skip_solib_resolver:CORE_ADDR pc:pc:::generic_skip_solib_resolver::0
+m:2:SKIP_SOLIB_RESOLVER:CORE_ADDR:skip_solib_resolver:CORE_ADDR pc:pc:::generic_skip_solib_resolver::0
 # For SVR4 shared libraries, each call goes through a small piece of
 # trampoline code in the ".plt" section.  IN_SOLIB_CALL_TRAMPOLINE evaluates
 # to nonzero if we are currently stopped in one of these.
index 6bc22a6531bc022dfaf73082aef01f7971ea4ea6..82cbb83150f45a7e56fc31bf6a3f65b5efc3be4e 100644 (file)
@@ -2331,7 +2331,8 @@ process_event_stop_test:
   if (step_over_calls == STEP_OVER_UNDEBUGGABLE
       && IN_SOLIB_DYNSYM_RESOLVE_CODE (stop_pc))
     {
-      CORE_ADDR pc_after_resolver = SKIP_SOLIB_RESOLVER (stop_pc);
+      CORE_ADDR pc_after_resolver =
+       gdbarch_skip_solib_resolver (current_gdbarch, stop_pc);
 
       if (pc_after_resolver)
        {