From bb41a796b6ca26a28ef309814aba7f723ff3b345 Mon Sep 17 00:00:00 2001 From: Mark Kettenis Date: Sat, 15 Nov 2003 14:02:58 +0000 Subject: [PATCH] * 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. --- gdb/ChangeLog | 14 ++++++++++++++ gdb/arm-linux-tdep.c | 7 +------ gdb/config/arm/tm-linux.h | 8 -------- gdb/config/i386/tm-linux.h | 8 -------- gdb/glibc-tdep.c | 2 +- gdb/glibc-tdep.h | 5 ++++- gdb/i386-linux-tdep.c | 9 +-------- 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 + + * 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 * 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); } -- 2.7.4