2003-08-27 Andrew Cagney <cagney@redhat.com>
* ppc-linux-tdep.c (ppc64_call_dummy_address): Delete function. (ppc_linux_init_abi): For PPC64, do not set call_dummy_address. * infcall.c (call_function_by_hand): Convert the entry point address into a code address.
This commit is contained in:
parent
cdcd555211
commit
0285512f29
3 changed files with 15 additions and 14 deletions
|
@ -1,3 +1,10 @@
|
|||
2003-08-27 Andrew Cagney <cagney@redhat.com>
|
||||
|
||||
* ppc-linux-tdep.c (ppc64_call_dummy_address): Delete function.
|
||||
(ppc_linux_init_abi): For PPC64, do not set call_dummy_address.
|
||||
* infcall.c (call_function_by_hand): Convert the entry point
|
||||
address into a code address.
|
||||
|
||||
2003-08-27 Andrew Cagney <cagney@redhat.com>
|
||||
|
||||
* dsrec.c: Include "gdb_string.h".
|
||||
|
|
|
@ -558,6 +558,9 @@ call_function_by_hand (struct value *function, int nargs, struct value **args)
|
|||
}
|
||||
real_pc = funaddr;
|
||||
dummy_addr = CALL_DUMMY_ADDRESS ();
|
||||
/* Make certain that the address points at real code, and not a
|
||||
function descriptor. */
|
||||
dummy_addr = CONVERT_FROM_FUNC_PTR_ADDR (dummy_addr);
|
||||
/* A call dummy always consists of just a single breakpoint, so
|
||||
it's address is the same as the address of the dummy. */
|
||||
bp_addr = dummy_addr;
|
||||
|
@ -576,6 +579,11 @@ call_function_by_hand (struct value *function, int nargs, struct value **args)
|
|||
dummy_addr = SYMBOL_VALUE_ADDRESS (sym);
|
||||
else
|
||||
dummy_addr = entry_point_address ();
|
||||
/* Make certain that the address points at real code, and not
|
||||
a function descriptor. */
|
||||
dummy_addr = CONVERT_FROM_FUNC_PTR_ADDR (dummy_addr);
|
||||
/* A call dummy always consists of just a single breakpoint,
|
||||
so it's address is the same as the address of the dummy. */
|
||||
bp_addr = dummy_addr;
|
||||
break;
|
||||
}
|
||||
|
|
|
@ -929,18 +929,6 @@ ppc64_linux_convert_from_func_ptr_addr (CORE_ADDR addr)
|
|||
}
|
||||
|
||||
|
||||
/* On 64-bit PowerPC GNU/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,
|
||||
|
@ -1067,8 +1055,6 @@ ppc_linux_init_abi (struct gdbarch_info info,
|
|||
set_gdbarch_convert_from_func_ptr_addr
|
||||
(gdbarch, ppc64_linux_convert_from_func_ptr_addr);
|
||||
|
||||
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