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.
This commit is contained in:
parent
c6d1029f18
commit
84674fe179
5 changed files with 21 additions and 7 deletions
|
@ -1,3 +1,11 @@
|
|||
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.
|
||||
|
||||
2004-10-31 Mark Kettenis <kettenis@gnu.org>
|
||||
|
||||
* mipsnbsd-nat.c: Include "target.h" and "inf-ptrace.h".
|
||||
|
|
|
@ -1407,11 +1407,9 @@ hppa_hpux_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch)
|
|||
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);
|
||||
|
|
|
@ -563,8 +563,7 @@ hppa_linux_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch)
|
|||
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);
|
||||
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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);
|
||||
};
|
||||
|
||||
/*
|
||||
|
|
Loading…
Reference in a new issue