mirror of
https://github.com/darlinghq/darling-gdb.git
synced 2024-11-29 15:00:34 +00:00
2003-09-11 Andrew Cagney <cagney@redhat.com>
* rs6000-tdep.c (rs6000_push_dummy_call): Use regcache_raw_write_signed to set SP_REGNUM, move the operation to near the function's end. (rs6000_gdbarch_init): Do not set "deprecated_dummy_write_sp". * ppc-sysv-tdep.c (ppc_sysv_abi_push_dummy_call): Use regcache_raw_write_signed to set SP_REGNUM.
This commit is contained in:
parent
63cd24fec9
commit
33a7c2fc4d
@ -1,3 +1,12 @@
|
||||
2003-09-11 Andrew Cagney <cagney@redhat.com>
|
||||
|
||||
* rs6000-tdep.c (rs6000_push_dummy_call): Use
|
||||
regcache_raw_write_signed to set SP_REGNUM, move the operation to
|
||||
near the function's end.
|
||||
(rs6000_gdbarch_init): Do not set "deprecated_dummy_write_sp".
|
||||
* ppc-sysv-tdep.c (ppc_sysv_abi_push_dummy_call): Use
|
||||
regcache_raw_write_signed to set SP_REGNUM.
|
||||
|
||||
2003-09-11 Elena Zannoni <ezannoni@redhat.com>
|
||||
|
||||
* symfile.c (symbol_file_add_with_addrs_or_offsets): Make sure
|
||||
|
@ -189,8 +189,8 @@ ppc_sysv_abi_push_dummy_call (struct gdbarch *gdbarch, CORE_ADDR func_addr,
|
||||
/* Make sure that we maintain 16 byte alignment */
|
||||
sp &= ~0x0f;
|
||||
|
||||
/* Update %sp before proceeding any further */
|
||||
write_register (SP_REGNUM, sp);
|
||||
/* Update %sp before proceeding any further. */
|
||||
regcache_raw_write_signed (regcache, SP_REGNUM, sp);
|
||||
|
||||
/* write the backchain */
|
||||
store_unsigned_integer (old_sp_buf, 4, saved_sp);
|
||||
|
@ -1246,14 +1246,6 @@ ran_out_of_registers_for_arguments:
|
||||
space = (space + 15) & -16;
|
||||
sp -= space;
|
||||
|
||||
/* This is another instance we need to be concerned about
|
||||
securing our stack space. If we write anything underneath %sp
|
||||
(r1), we might conflict with the kernel who thinks he is free
|
||||
to use this area. So, update %sp first before doing anything
|
||||
else. */
|
||||
|
||||
write_register (SP_REGNUM, sp);
|
||||
|
||||
/* If the last argument copied into the registers didn't fit there
|
||||
completely, push the rest of it into stack. */
|
||||
|
||||
@ -1294,14 +1286,17 @@ ran_out_of_registers_for_arguments:
|
||||
ii += ((len + 3) & -4) / 4;
|
||||
}
|
||||
}
|
||||
else
|
||||
/* Secure stack areas first, before doing anything else. */
|
||||
write_register (SP_REGNUM, sp);
|
||||
|
||||
/* set back chain properly */
|
||||
store_unsigned_integer (tmp_buffer, 4, saved_sp);
|
||||
write_memory (sp, tmp_buffer, 4);
|
||||
|
||||
/* Set the stack pointer. According to the ABI, the SP is ment to
|
||||
be set _before_ the corresponding stack space is used. No need
|
||||
for that here though - the target has been completly stopped - it
|
||||
isn't possible for an exception handler to stomp on the stack. */
|
||||
regcache_raw_write_signed (regcache, SP_REGNUM, sp);
|
||||
|
||||
/* Point the inferior function call's return address at the dummy's
|
||||
breakpoint. */
|
||||
regcache_raw_write_signed (regcache, tdep->ppc_lr_regnum, bp_addr);
|
||||
@ -2896,7 +2891,6 @@ rs6000_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
|
||||
set_gdbarch_print_insn (gdbarch, gdb_print_insn_powerpc);
|
||||
|
||||
set_gdbarch_write_pc (gdbarch, generic_target_write_pc);
|
||||
set_gdbarch_deprecated_dummy_write_sp (gdbarch, deprecated_write_sp);
|
||||
|
||||
set_gdbarch_num_regs (gdbarch, v->nregs);
|
||||
set_gdbarch_num_pseudo_regs (gdbarch, v->npregs);
|
||||
|
Loading…
Reference in New Issue
Block a user