* ppc-linux-tdep.c (ppc64_call_dummy_address): New function.

(ppc_linux_init_abi): Set it as the gdbarch's call_dummy_address
method.
This commit is contained in:
Jim Blandy 2003-06-24 23:03:31 +00:00
parent d64558a59f
commit e716d87a00
2 changed files with 18 additions and 0 deletions

View File

@ -1,5 +1,9 @@
2003-06-24 Jim Blandy <jimb@redhat.com>
* ppc-linux-tdep.c (ppc64_call_dummy_address): New function.
(ppc_linux_init_abi): Set it as the gdbarch's call_dummy_address
method.
* ppc-linux-tdep.c (ppc64_desc_entry_point): New function.
(ppc64_standard_linkage_target): Use it.

View File

@ -894,6 +894,18 @@ ppc64_skip_trampoline_code (CORE_ADDR pc)
}
/* On 64-bit PowerPC Linux, the ELF header's e_entry field is the
address of a function descriptor for the entry point function, not
the actual entry point itself. So to find the actual address at
which execution should begin, we need to fetch the function's entry
point from that descriptor. */
static CORE_ADDR
ppc64_call_dummy_address (void)
{
return ppc64_desc_entry_point (entry_point_address ());
}
enum {
ELF_NGREG = 48,
ELF_NFPREG = 33,
@ -1015,6 +1027,8 @@ ppc_linux_init_abi (struct gdbarch_info info,
if (tdep->wordsize == 8)
{
set_gdbarch_call_dummy_address (gdbarch, ppc64_call_dummy_address);
set_gdbarch_in_solib_call_trampoline
(gdbarch, ppc64_in_solib_call_trampoline);
set_gdbarch_skip_trampoline_code (gdbarch, ppc64_skip_trampoline_code);