[sparc] inferior SEGV while calling Ada subprogram
gdb/ChangeLog: * sparc-tdep.c (sparc32_frame_align): New function. (sparc32_gdbarch_init): Set the frame_align gdbarch method. * sparc64-tdep.c (sparc64_frame_align): New function. (sparc64_gdbarch_init): Set the frame_align gdbarch method.
This commit is contained in:
parent
bacff3ab9c
commit
49a45ecfd2
3 changed files with 23 additions and 0 deletions
|
@ -1,3 +1,10 @@
|
|||
2010-10-01 Joel Brobecker <brobecker@adacore.com>
|
||||
|
||||
* sparc-tdep.c (sparc32_frame_align): New function.
|
||||
(sparc32_gdbarch_init): Set the frame_align gdbarch method.
|
||||
* sparc64-tdep.c (sparc64_frame_align): New function.
|
||||
(sparc64_gdbarch_init): Set the frame_align gdbarch method.
|
||||
|
||||
2010-09-30 H.J. Lu <hongjiu.lu@intel.com>
|
||||
|
||||
* defs.h (MAX_REGISTER_SIZE): Set to 64.
|
||||
|
|
|
@ -398,6 +398,13 @@ sparc32_pseudo_register_write (struct gdbarch *gdbarch,
|
|||
}
|
||||
|
||||
|
||||
static CORE_ADDR
|
||||
sparc32_frame_align (struct gdbarch *gdbarch, CORE_ADDR address)
|
||||
{
|
||||
/* The ABI requires double-word alignment. */
|
||||
return address & ~0x7;
|
||||
}
|
||||
|
||||
static CORE_ADDR
|
||||
sparc32_push_dummy_code (struct gdbarch *gdbarch, CORE_ADDR sp,
|
||||
CORE_ADDR funcaddr,
|
||||
|
@ -1407,6 +1414,7 @@ sparc32_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
|
|||
set_gdbarch_fp0_regnum (gdbarch, SPARC_F0_REGNUM); /* %f0 */
|
||||
|
||||
/* Call dummy code. */
|
||||
set_gdbarch_frame_align (gdbarch, sparc32_frame_align);
|
||||
set_gdbarch_call_dummy_location (gdbarch, ON_STACK);
|
||||
set_gdbarch_push_dummy_code (gdbarch, sparc32_push_dummy_code);
|
||||
set_gdbarch_push_dummy_call (gdbarch, sparc32_push_dummy_call);
|
||||
|
|
|
@ -937,6 +937,13 @@ sparc64_store_arguments (struct regcache *regcache, int nargs,
|
|||
return sp;
|
||||
}
|
||||
|
||||
static CORE_ADDR
|
||||
sparc64_frame_align (struct gdbarch *gdbarch, CORE_ADDR address)
|
||||
{
|
||||
/* The ABI requires 16-byte alignment. */
|
||||
return address & ~0xf;
|
||||
}
|
||||
|
||||
static CORE_ADDR
|
||||
sparc64_push_dummy_call (struct gdbarch *gdbarch, struct value *function,
|
||||
struct regcache *regcache, CORE_ADDR bp_addr,
|
||||
|
@ -1136,6 +1143,7 @@ sparc64_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch)
|
|||
set_gdbarch_pc_regnum (gdbarch, SPARC64_PC_REGNUM); /* %pc */
|
||||
|
||||
/* Call dummy code. */
|
||||
set_gdbarch_frame_align (gdbarch, sparc64_frame_align);
|
||||
set_gdbarch_call_dummy_location (gdbarch, AT_ENTRY_POINT);
|
||||
set_gdbarch_push_dummy_code (gdbarch, NULL);
|
||||
set_gdbarch_push_dummy_call (gdbarch, sparc64_push_dummy_call);
|
||||
|
|
Loading…
Reference in a new issue