This is the mail archive of the
gdb-patches@sources.redhat.com
mailing list for the GDB project.
[commit] Eliminate HPPA's IN_SOLIB_CALL_TRAMPOLINE
- From: Andrew Cagney <cagney at gnu dot org>
- To: gdb-patches at sources dot redhat dot com
- Date: Sun, 31 Oct 2004 16:10:11 -0500
- Subject: [commit] Eliminate HPPA's IN_SOLIB_CALL_TRAMPOLINE
The target hppa-elf still builds, committed.
Andrew
2004-10-31 Andrew Cagney <cagney@gnu.org>
* hppa-tdep.c (hppa_stub_unwind_sniffer): Replace
IN_SOLIB_CALL_TRAMPOLINE with tdep.in_solib_call_trampoline.
* hppa-tdep.h (struct gdbarch_tdep): Add in_solib_call_trampoline.
* hppa-hpux-tdep.c (hppa_hpux_init_abi): Set same.
* hppa-linux-tdep.c (hppa_linux_init_abi): Ditto.
Index: hppa-hpux-tdep.c
===================================================================
RCS file: /cvs/src/src/gdb/hppa-hpux-tdep.c,v
retrieving revision 1.23
diff -p -u -r1.23 hppa-hpux-tdep.c
--- hppa-hpux-tdep.c 12 Jul 2004 17:09:58 -0000 1.23
+++ hppa-hpux-tdep.c 31 Oct 2004 21:07:15 -0000
@@ -1407,11 +1407,9 @@ hppa_hpux_init_abi (struct gdbarch_info
struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
if (tdep->bytes_per_address == 4)
- set_gdbarch_in_solib_call_trampoline (gdbarch,
- hppa32_hpux_in_solib_call_trampoline);
+ tdep->in_solib_call_trampoline = hppa32_hpux_in_solib_call_trampoline;
else
- set_gdbarch_in_solib_call_trampoline (gdbarch,
- hppa64_hpux_in_solib_call_trampoline);
+ tdep->in_solib_call_trampoline = hppa64_hpux_in_solib_call_trampoline;
set_gdbarch_in_solib_return_trampoline (gdbarch,
hppa_hpux_in_solib_return_trampoline);
Index: hppa-linux-tdep.c
===================================================================
RCS file: /cvs/src/src/gdb/hppa-linux-tdep.c,v
retrieving revision 1.10
diff -p -u -r1.10 hppa-linux-tdep.c
--- hppa-linux-tdep.c 20 Jul 2004 19:45:05 -0000 1.10
+++ hppa-linux-tdep.c 31 Oct 2004 21:07:15 -0000
@@ -563,8 +563,7 @@ hppa_linux_init_abi (struct gdbarch_info
set_solib_svr4_fetch_link_map_offsets
(gdbarch, svr4_ilp32_fetch_link_map_offsets);
- set_gdbarch_in_solib_call_trampoline
- (gdbarch, hppa_linux_in_solib_call_trampoline);
+ tdep->in_solib_call_trampoline = hppa_linux_in_solib_call_trampoline;
set_gdbarch_skip_trampoline_code
(gdbarch, hppa_linux_skip_trampoline_code);
Index: hppa-tdep.c
===================================================================
RCS file: /cvs/src/src/gdb/hppa-tdep.c,v
retrieving revision 1.174
diff -p -u -r1.174 hppa-tdep.c
--- hppa-tdep.c 14 Oct 2004 21:08:06 -0000 1.174
+++ hppa-tdep.c 31 Oct 2004 21:07:16 -0000
@@ -2096,9 +2096,12 @@ static const struct frame_unwind *
hppa_stub_unwind_sniffer (struct frame_info *next_frame)
{
CORE_ADDR pc = frame_pc_unwind (next_frame);
+ struct gdbarch *gdbarch = get_frame_arch (next_frame);
+ struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
if (pc == 0
- || IN_SOLIB_CALL_TRAMPOLINE (pc, NULL)
+ || (tdep->in_solib_call_trampoline != NULL
+ && tdep->in_solib_call_trampoline (pc, NULL))
|| IN_SOLIB_RETURN_TRAMPOLINE (pc, NULL))
return &hppa_stub_frame_unwind;
return NULL;
Index: hppa-tdep.h
===================================================================
RCS file: /cvs/src/src/gdb/hppa-tdep.h,v
retrieving revision 1.13
diff -p -u -r1.13 hppa-tdep.h
--- hppa-tdep.h 7 Jun 2004 02:17:29 -0000 1.13
+++ hppa-tdep.h 31 Oct 2004 21:07:16 -0000
@@ -82,6 +82,12 @@ struct gdbarch_tdep
/* Given a function address, try to find the global pointer for the
corresponding shared object. */
CORE_ADDR (*find_global_pointer) (struct value *);
+
+ /* For shared libraries, each call goes through a small piece of
+ trampoline code in the ".plt", or equivalent, section.
+ IN_SOLIB_CALL_TRAMPOLINE evaluates to nonzero if we are currently
+ stopped in one of these. */
+ int (*in_solib_call_trampoline) (CORE_ADDR pc, char *name);
};
/*