From: Mark Kettenis Date: Sat, 15 Nov 2003 14:02:58 +0000 (+0000) Subject: * glibc-tdep.h (struct gdbarch): Declare opaque. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=bb41a796b6ca26a28ef309814aba7f723ff3b345;p=binutils-gdb.git * 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. --- diff --git a/gdb/ChangeLog b/gdb/ChangeLog index cc68252874c..3c59bc5be18 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 c91c0fd7ba0..42d4438d55d 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 995ba7312fb..dd41540786b 100644 --- a/gdb/config/arm/tm-linux.h +++ b/gdb/config/arm/tm-linux.h @@ -39,14 +39,6 @@ /* We've multi-arched this. */ #undef SKIP_TRAMPOLINE_CODE -/* 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. */ -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 diff --git a/gdb/config/i386/tm-linux.h b/gdb/config/i386/tm-linux.h index 799678ed8f0..83440a8722f 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 46aa74912e8..04bb6834ad1 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 31c77b920e2..75598d5e08b 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 48caf4da06f..50073b1239f 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); }