summaryrefslogtreecommitdiff
path: root/gdb
diff options
context:
space:
mode:
authorRichard Earnshaw <richard.earnshaw@arm.com>2002-02-23 22:17:12 +0000
committerRichard Earnshaw <richard.earnshaw@arm.com>2002-02-23 22:17:12 +0000
commit67452436ea3f83d25285a3e9ad14a4b963e4137c (patch)
treecb09e99afb627dc7c55a5d0b6e7fa5d903b3fa5b /gdb
parent9d365a45dda3f4e9dc64642a4854afd2247a3f60 (diff)
downloadgdb-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/ChangeLog8
-rw-r--r--gdb/arm-linux-tdep.c6
-rw-r--r--gdb/config/arm/tm-linux.h16
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