aboutsummaryrefslogtreecommitdiff
path: root/gdb/gdbarch.h
diff options
context:
space:
mode:
authorMark Kettenis <kettenis@gnu.org>2003-11-09 12:07:16 +0000
committerMark Kettenis <kettenis@gnu.org>2003-11-09 12:07:16 +0000
commitdea0c52f825dd14c6608c86e38a948d22115cd38 (patch)
treefa706dfaad281b4c3502f178f63796150df83ae7 /gdb/gdbarch.h
parent292da8136c57a208bf9bde712a3952198994edd3 (diff)
downloadgdb-dea0c52f825dd14c6608c86e38a948d22115cd38.zip
gdb-dea0c52f825dd14c6608c86e38a948d22115cd38.tar.gz
gdb-dea0c52f825dd14c6608c86e38a948d22115cd38.tar.bz2
From David S. Miller <davem@redhat.com>:
* gdbarch.sh (SKIP_SOLIB_RESOLVER): New method. * gdbarch.c, gdbarch.h: Regenerated. * arch-utils.c (generic_skip_solib_resolver): New function. * arch-utils.h (generic_skip_solib_resolver): New prototype. * infrun.c (SKIP_SOLIB_RESOLVER): Don't define.
Diffstat (limited to 'gdb/gdbarch.h')
-rw-r--r--gdb/gdbarch.h14
1 files changed, 14 insertions, 0 deletions
diff --git a/gdb/gdbarch.h b/gdb/gdbarch.h
index 36e0e7a..021ab36 100644
--- a/gdb/gdbarch.h
+++ b/gdb/gdbarch.h
@@ -2134,6 +2134,20 @@ extern void set_gdbarch_skip_trampoline_code (struct gdbarch *gdbarch, gdbarch_s
#define SKIP_TRAMPOLINE_CODE(pc) (gdbarch_skip_trampoline_code (current_gdbarch, pc))
#endif
+/* 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. */
+
+typedef CORE_ADDR (gdbarch_skip_solib_resolver_ftype) (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
to nonzero if we are currently stopped in one of these. */