diff options
author | Andrew Cagney <cagney@redhat.com> | 2004-02-23 16:27:40 +0000 |
---|---|---|
committer | Andrew Cagney <cagney@redhat.com> | 2004-02-23 16:27:40 +0000 |
commit | da6bab63686f2c2c2726a51b3bb9fec66eb82e0b (patch) | |
tree | 0758fb1fcfc6733c59122ff11dbc16a16159f16a /gdb/infcall.c | |
parent | 1e1b3428933fa5258434a47f58004320a47a4a62 (diff) | |
download | gdb-da6bab63686f2c2c2726a51b3bb9fec66eb82e0b.zip gdb-da6bab63686f2c2c2726a51b3bb9fec66eb82e0b.tar.gz gdb-da6bab63686f2c2c2726a51b3bb9fec66eb82e0b.tar.bz2 |
2004-02-23 Andrew Cagney <cagney@redhat.com>
* infcall.c (legacy_push_dummy_code): Don't call deprecated
FIX_CALL_DUMMY when push_dummy_call is available.
(call_function_by_hand, push_dummy_code): Ditto.
Diffstat (limited to 'gdb/infcall.c')
-rw-r--r-- | gdb/infcall.c | 27 |
1 files changed, 16 insertions, 11 deletions
diff --git a/gdb/infcall.c b/gdb/infcall.c index 860d9cf..11ce018 100644 --- a/gdb/infcall.c +++ b/gdb/infcall.c @@ -275,18 +275,21 @@ legacy_push_dummy_code (struct gdbarch *gdbarch, DUMMY_ADDR is pretty messed up. It comes from constant tinkering with the values. Instead a DEPRECATED_FIX_CALL_DUMMY replacement (PUSH_DUMMY_BREAKPOINT?) should just do everything. */ + if (!gdbarch_push_dummy_call_p (current_gdbarch)) + { #ifdef GDB_TARGET_IS_HPPA - (*real_pc) = DEPRECATED_FIX_CALL_DUMMY (dummy1, start_sp, funaddr, nargs, - args, value_type, using_gcc); + (*real_pc) = DEPRECATED_FIX_CALL_DUMMY (dummy1, start_sp, funaddr, nargs, + args, value_type, using_gcc); #else - if (DEPRECATED_FIX_CALL_DUMMY_P ()) - { - /* gdb_assert (CALL_DUMMY_LOCATION == ON_STACK) true? */ - DEPRECATED_FIX_CALL_DUMMY (dummy1, start_sp, funaddr, nargs, args, - value_type, using_gcc); - } - (*real_pc) = start_sp; + if (DEPRECATED_FIX_CALL_DUMMY_P ()) + { + /* gdb_assert (CALL_DUMMY_LOCATION == ON_STACK) true? */ + DEPRECATED_FIX_CALL_DUMMY (dummy1, start_sp, funaddr, nargs, args, + value_type, using_gcc); + } + (*real_pc) = start_sp; #endif + } /* Yes, the offset is applied to the real_pc and not the dummy addr. Ulgh! Blame the HP/UX target. */ (*bp_addr) = (*real_pc) + DEPRECATED_CALL_DUMMY_BREAKPOINT_OFFSET; @@ -348,7 +351,8 @@ push_dummy_code (struct gdbarch *gdbarch, if (gdbarch_push_dummy_code_p (gdbarch)) return gdbarch_push_dummy_code (gdbarch, sp, funaddr, using_gcc, args, nargs, value_type, real_pc, bp_addr); - else if (DEPRECATED_FIX_CALL_DUMMY_P ()) + else if (DEPRECATED_FIX_CALL_DUMMY_P () + && !gdbarch_push_dummy_call_p (gdbarch)) return legacy_push_dummy_code (gdbarch, sp, funaddr, using_gcc, args, nargs, value_type, real_pc, bp_addr); else @@ -546,7 +550,8 @@ call_function_by_hand (struct value *function, int nargs, struct value **args) } break; case AT_ENTRY_POINT: - if (DEPRECATED_FIX_CALL_DUMMY_P ()) + if (DEPRECATED_FIX_CALL_DUMMY_P () + && !gdbarch_push_dummy_call_p (current_gdbarch)) { /* Sigh. Some targets use DEPRECATED_FIX_CALL_DUMMY to shove extra stuff onto the stack or into registers. That |