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:
Andrew Cagney 2003-08-28 02:53:08 +00:00
parent cdcd555211
commit 0285512f29
3 changed files with 15 additions and 14 deletions

View file

@ -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".

View file

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

View file

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