aboutsummaryrefslogtreecommitdiff
path: root/gdb/infcall.c
diff options
context:
space:
mode:
authorAndrew Cagney <cagney@redhat.com>2003-08-28 02:53:08 +0000
committerAndrew Cagney <cagney@redhat.com>2003-08-28 02:53:08 +0000
commit0285512f2902753c8185679567b0d0dc95c3c129 (patch)
tree227065985c6f2310d9d775eb4e9b351ad5dbfe6b /gdb/infcall.c
parentcdcd555211255de4f4f1fd0d9ad0e11b16d5d81b (diff)
downloadgdb-0285512f2902753c8185679567b0d0dc95c3c129.zip
gdb-0285512f2902753c8185679567b0d0dc95c3c129.tar.gz
gdb-0285512f2902753c8185679567b0d0dc95c3c129.tar.bz2
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.
Diffstat (limited to 'gdb/infcall.c')
-rw-r--r--gdb/infcall.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/gdb/infcall.c b/gdb/infcall.c
index 98e7da5..6baa88a 100644
--- a/gdb/infcall.c
+++ b/gdb/infcall.c
@@ -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;
}