aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gdb/ChangeLog14
-rw-r--r--gdb/arm-linux-tdep.c7
-rw-r--r--gdb/config/arm/tm-linux.h8
-rw-r--r--gdb/config/i386/tm-linux.h8
-rw-r--r--gdb/glibc-tdep.c2
-rw-r--r--gdb/glibc-tdep.h5
-rw-r--r--gdb/i386-linux-tdep.c9
7 files changed, 21 insertions, 32 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index cc68252..3c59bc5 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,17 @@
+2003-11-15 Mark Kettenis <kettenis@gnu.org>
+
+ * glibc-tdep.h (struct gdbarch): Declare opaque.
+ (glibc_skip_solib_resolver): Adjust prototype.
+ * glibc-tdep.c (glibc_skip_solib_resolver): Adjust.
+ * arm-linux-tdep.c (arm_linux_skip_solib_resolver): Remove.
+ (arm_linux_init_abi): Set skip_solib_resolver.
+ * i386-linux-tdep.c (i386_linux_skip_solib_resolver): Remove.
+ (i386_linux_init_abi): Set skip_solib_resolver.
+ * config/arm/tm-linux.h (SKIP_SOLIB_RESOLVER): Remove.
+ (arm_linux_skip_solib_resolver): Remove prototype.
+ * config/i386/tm-linux.h (SKIP_SOLIB_RESOLVER): Remove.
+ (i386_linux_skip_solib_resolver): Remove prototype.
+
2003-11-14 Mark Kettenis <kettenis@gnu.org>
* gdbarch.sh (skip_solib_resolver): Change into a multi-arch
diff --git a/gdb/arm-linux-tdep.c b/gdb/arm-linux-tdep.c
index c91c0fd..42d4438 100644
--- a/gdb/arm-linux-tdep.c
+++ b/gdb/arm-linux-tdep.c
@@ -387,12 +387,6 @@ arm_linux_svr4_fetch_link_map_offsets (void)
return lmp;
}
-CORE_ADDR
-arm_linux_skip_solib_resolver (CORE_ADDR pc)
-{
- return glibc_skip_solib_resolver (pc);
-}
-
/* The constants below were determined by examining the following files
in the linux kernel sources:
@@ -506,6 +500,7 @@ arm_linux_init_abi (struct gdbarch_info info,
/* Shared library handling. */
set_gdbarch_in_solib_call_trampoline (gdbarch, in_plt_section);
set_gdbarch_skip_trampoline_code (gdbarch, find_solib_trampoline_target);
+ set_gdbarch_skip_solib_resolver (gdbarch, glibc_skip_solib_resolver);
}
void
diff --git a/gdb/config/arm/tm-linux.h b/gdb/config/arm/tm-linux.h
index 995ba73..dd41540 100644
--- a/gdb/config/arm/tm-linux.h
+++ b/gdb/config/arm/tm-linux.h
@@ -44,14 +44,6 @@
need to skip over the dynamic linker call. This function decides
when to skip, and where to skip to. See the comments for
SKIP_SOLIB_RESOLVER at the top of infrun.c. */
-extern CORE_ADDR arm_linux_skip_solib_resolver (CORE_ADDR pc);
-#define SKIP_SOLIB_RESOLVER arm_linux_skip_solib_resolver
-
-/* When we call a function in a shared library, and the PLT sends us
- into the dynamic linker to find the function's real address, we
- need to skip over the dynamic linker call. This function decides
- when to skip, and where to skip to. See the comments for
- SKIP_SOLIB_RESOLVER at the top of infrun.c. */
#if 0
#undef IN_SOLIB_DYNSYM_RESOLVE_CODE
extern CORE_ADDR arm_in_solib_dynsym_resolve_code (CORE_ADDR pc, char *name);
diff --git a/gdb/config/i386/tm-linux.h b/gdb/config/i386/tm-linux.h
index 799678e..83440a8 100644
--- a/gdb/config/i386/tm-linux.h
+++ b/gdb/config/i386/tm-linux.h
@@ -29,14 +29,6 @@
/* The following works around a problem with /usr/include/sys/procfs.h */
#define sys_quotactl 1
-/* When we call a function in a shared library, and the PLT sends us
- into the dynamic linker to find the function's real address, we
- need to skip over the dynamic linker call. This function decides
- when to skip, and where to skip to. See the comments for
- SKIP_SOLIB_RESOLVER at the top of infrun.c. */
-#define SKIP_SOLIB_RESOLVER i386_linux_skip_solib_resolver
-extern CORE_ADDR i386_linux_skip_solib_resolver (CORE_ADDR pc);
-
/* N_FUN symbols in shared libaries have 0 for their values and need
to be relocated. */
#define SOFUN_ADDRESS_MAYBE_MISSING
diff --git a/gdb/glibc-tdep.c b/gdb/glibc-tdep.c
index 46aa749..04bb683 100644
--- a/gdb/glibc-tdep.c
+++ b/gdb/glibc-tdep.c
@@ -66,7 +66,7 @@ find_minsym_and_objfile (char *name, struct objfile **objfile_p)
trigger when the dynamic linker is done. */
CORE_ADDR
-glibc_skip_solib_resolver (CORE_ADDR pc)
+glibc_skip_solib_resolver (struct gdbarch *gdbarch, CORE_ADDR pc)
{
/* The GNU dynamic linker is part of the GNU C library, and is used
by all GNU systems (GNU/Hurd, GNU/Linux). An unresolved PLT
diff --git a/gdb/glibc-tdep.h b/gdb/glibc-tdep.h
index 31c77b9..75598d5 100644
--- a/gdb/glibc-tdep.h
+++ b/gdb/glibc-tdep.h
@@ -22,6 +22,9 @@
#ifndef GLIBC_TDEP_H
#define GLIBC_TDEP_H
-extern CORE_ADDR glibc_skip_solib_resolver (CORE_ADDR);
+struct gdbarch;
+
+extern CORE_ADDR glibc_skip_solib_resolver (struct gdbarch *gdbarch,
+ CORE_ADDR);
#endif /* glibc-tdep.h */
diff --git a/gdb/i386-linux-tdep.c b/gdb/i386-linux-tdep.c
index 48caf4d..50073b1 100644
--- a/gdb/i386-linux-tdep.c
+++ b/gdb/i386-linux-tdep.c
@@ -306,14 +306,6 @@ i386_linux_write_pc (CORE_ADDR pc, ptid_t ptid)
write_register_pid (I386_LINUX_ORIG_EAX_REGNUM, -1, ptid);
}
-/* Calling functions in shared libraries. */
-
-CORE_ADDR
-i386_linux_skip_solib_resolver (CORE_ADDR pc)
-{
- return glibc_skip_solib_resolver (pc);
-}
-
/* Fetch (and possibly build) an appropriate link_map_offsets
structure for native GNU/Linux x86 targets using the struct offsets
defined in link.h (but without actual reference to that file).
@@ -453,6 +445,7 @@ i386_linux_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch)
to support backtracing through calls to signal handlers. */
set_gdbarch_pc_in_sigtramp (gdbarch, i386_linux_pc_in_sigtramp);
+ set_gdbarch_skip_solib_resolver (gdbarch, glibc_skip_solib_resolver);
set_solib_svr4_fetch_link_map_offsets (gdbarch,
i386_linux_svr4_fetch_link_map_offsets);
}