aboutsummaryrefslogtreecommitdiff
path: root/gdb/infcall.c
diff options
context:
space:
mode:
authorAndrew Cagney <cagney@redhat.com>2003-08-07 23:41:57 +0000
committerAndrew Cagney <cagney@redhat.com>2003-08-07 23:41:57 +0000
commit9710e734be97ab818b961fd5d7552cf46018e2ab (patch)
tree187df03343e09db1ec9ec21d04d3e5f69962950e /gdb/infcall.c
parent98b3ab7391f408c32fb57d3c552607f92583e2bf (diff)
downloadgdb-9710e734be97ab818b961fd5d7552cf46018e2ab.zip
gdb-9710e734be97ab818b961fd5d7552cf46018e2ab.tar.gz
gdb-9710e734be97ab818b961fd5d7552cf46018e2ab.tar.bz2
2003-08-07 Andrew Cagney <cagney@redhat.com>
* inferior.h (AT_SYMBOL): Define. * blockframe.c (inside_entry_file): Check for AT_SYMBOL. * infcall.c (call_function_by_hand): Add code to handle AT_SYMBOL. * mips-tdep.c (mips_call_dummy_address): Delete function. (mips_gdbarch_init): Set call_dummy_location to AT_SYMBOL, do not set call_dummy_address.
Diffstat (limited to 'gdb/infcall.c')
-rw-r--r--gdb/infcall.c17
1 files changed, 17 insertions, 0 deletions
diff --git a/gdb/infcall.c b/gdb/infcall.c
index 4fd97ae..a4a6ac1 100644
--- a/gdb/infcall.c
+++ b/gdb/infcall.c
@@ -547,6 +547,23 @@ call_function_by_hand (struct value *function, int nargs, struct value **args)
it's address is the same as the address of the dummy. */
bp_addr = dummy_addr;
break;
+ case AT_SYMBOL:
+ /* Some executables define a symbol __CALL_DUMMY_ADDRESS whose
+ address is the location where the breakpoint should be
+ placed. Once all targets are using the overhauled frame code
+ this can be deleted - ON_STACK is a better option. */
+ {
+ struct minimal_symbol *sym;
+
+ sym = lookup_minimal_symbol ("__CALL_DUMMY_ADDRESS", NULL, NULL);
+ real_pc = funaddr;
+ if (sym)
+ dummy_addr = SYMBOL_VALUE_ADDRESS (sym);
+ else
+ dummy_addr = entry_point_address ();
+ bp_addr = dummy_addr;
+ break;
+ }
default:
internal_error (__FILE__, __LINE__, "bad switch");
}