* 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:
parent
d64558a59f
commit
e716d87a00
2 changed files with 18 additions and 0 deletions
|
@ -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.
|
||||
|
||||
|
|
|
@ -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);
|
||||
|
|
Loading…
Reference in a new issue