diff options
author | Richard Earnshaw <richard.earnshaw@arm.com> | 2002-02-23 22:17:12 +0000 |
---|---|---|
committer | Richard Earnshaw <richard.earnshaw@arm.com> | 2002-02-23 22:17:12 +0000 |
commit | 67452436ea3f83d25285a3e9ad14a4b963e4137c (patch) | |
tree | cb09e99afb627dc7c55a5d0b6e7fa5d903b3fa5b /gdb | |
parent | 9d365a45dda3f4e9dc64642a4854afd2247a3f60 (diff) | |
download | gdb-67452436ea3f83d25285a3e9ad14a4b963e4137c.tar.gz |
* arm-linux-tdep.c (arm_linux_init_abi): Register
IN_SOLIB_CALL_TRAMPOLINE and SKIP_TRAMPOLINE_CODE
* config/arm/tm-linux.h (IN_SOLIB_CALL_TRAMPOLINE): Replace old
definition with undef, since we don't want the sysvr4 definition.
(SKIP_TRAMPOLINE_CODE): Likewise.
Diffstat (limited to 'gdb')
-rw-r--r-- | gdb/ChangeLog | 8 | ||||
-rw-r--r-- | gdb/arm-linux-tdep.c | 6 | ||||
-rw-r--r-- | gdb/config/arm/tm-linux.h | 16 |
3 files changed, 17 insertions, 13 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 3361c1ec392..ec1ca5af399 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,11 @@ +2002-02-23 Richard Earnshaw <rearnsha@arm.com> + + * arm-linux-tdep.c (arm_linux_init_abi): Register + IN_SOLIB_CALL_TRAMPOLINE and SKIP_TRAMPOLINE_CODE + * config/arm/tm-linux.h (IN_SOLIB_CALL_TRAMPOLINE): Replace old + definition with undef, since we don't want the sysvr4 definition. + (SKIP_TRAMPOLINE_CODE): Likewise. + 2002-02-23 Andrew Cagney <ac131313@redhat.com> From 2002-02-22 Alfred M. Szmidt <ams@kemisten.nu>: diff --git a/gdb/arm-linux-tdep.c b/gdb/arm-linux-tdep.c index 30a698e03d6..af100a573b3 100644 --- a/gdb/arm-linux-tdep.c +++ b/gdb/arm-linux-tdep.c @@ -30,7 +30,7 @@ #include "arm-tdep.h" -/* For arm_linux_skip_solib_resolver. */ +/* For shared library handling. */ #include "symtab.h" #include "symfile.h" #include "objfiles.h" @@ -534,6 +534,10 @@ arm_linux_init_abi (struct gdbarch_info info, /* The following two overrides shouldn't be needed. */ set_gdbarch_extract_return_value (gdbarch, arm_linux_extract_return_value); set_gdbarch_push_arguments (gdbarch, arm_linux_push_arguments); + + /* Shared library handling. */ + set_gdbarch_in_solib_call_trampoline (gdbarch, in_plt_section); + set_gdbarch_skip_trampoline_code (gdbarch, find_solib_trampoline_target); } void diff --git a/gdb/config/arm/tm-linux.h b/gdb/config/arm/tm-linux.h index f51756e18f6..6a0d0e42c96 100644 --- a/gdb/config/arm/tm-linux.h +++ b/gdb/config/arm/tm-linux.h @@ -37,23 +37,15 @@ extern struct link_map_offsets *arm_linux_svr4_fetch_link_map_offsets (void); /* Offset to saved PC in sigcontext structure, from <asm/sigcontext.h> */ #define SIGCONTEXT_PC_OFFSET (sizeof(unsigned long) * 18) -/* On ARM GNU/Linux, each call to a library routine goes through a - small piece of trampoline code in the ".plt" section. The - wait_for_inferior() routine uses this macro to detect when we have - stepped into one of these fragments. We do not use - lookup_solib_trampoline_symbol_by_pc, because we cannot always find - the shared library trampoline symbols. */ -extern int in_plt_section (CORE_ADDR, char *); -#define IN_SOLIB_CALL_TRAMPOLINE(pc, name) in_plt_section((pc), (name)) +/* We've multi-arched this. */ +#undef IN_SOLIB_CALL_TRAMPOLINE /* On ARM GNU/Linux, a call to a library routine does not have to go through any trampoline code. */ #define IN_SOLIB_RETURN_TRAMPOLINE(pc, name) 0 -/* If PC is in a shared library trampoline code, return the PC - where the function itself actually starts. If not, return 0. */ -extern CORE_ADDR find_solib_trampoline_target (CORE_ADDR pc); -#define SKIP_TRAMPOLINE_CODE(pc) find_solib_trampoline_target (pc) +/* 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 |