|
|
|
@ -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); |
|
|
|
|