summaryrefslogtreecommitdiff
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
commit6ccbd9fd94af44f34b90063c380861f3d2e64ff1 (patch)
treef88ceff2f06b76ce36b85f6a0ce99e01b8734639 /gdb/infcall.c
parent3e44f89e68542205dabaad43f1529bf818a1b2f9 (diff)
downloadgdb-6ccbd9fd94af44f34b90063c380861f3d2e64ff1.tar.gz
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 98e7da5fc3d..6baa88a337d 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;
}