mirror of
https://github.com/darlinghq/darling-gdb.git
synced 2024-11-24 04:29:49 +00:00
* arm-tdep.h (enum struct_return): New.
(struct gdbarch_tdep): Add struct_return member. * arm-tdep.c (arm_return_value): Return RETURN_VALUE_STRUCT_CONVENTION for aggregates when the ABI uses pcc_struct_return. (arm_gdbarch_init): Default to reg_struct_return. * armobsd-tdep.c (armobsd_init_abi): Set pcc_struct_return.
This commit is contained in:
parent
cfde7f7078
commit
7c00367c28
@ -1,3 +1,13 @@
|
|||||||
|
2006-08-01 Mark Kettenis <kettenis@gnu.org>
|
||||||
|
|
||||||
|
* arm-tdep.h (enum struct_return): New.
|
||||||
|
(struct gdbarch_tdep): Add struct_return member.
|
||||||
|
* arm-tdep.c (arm_return_value): Return
|
||||||
|
RETURN_VALUE_STRUCT_CONVENTION for aggregates when the ABI uses
|
||||||
|
pcc_struct_return.
|
||||||
|
(arm_gdbarch_init): Default to reg_struct_return.
|
||||||
|
* armobsd-tdep.c (armobsd_init_abi): Set pcc_struct_return.
|
||||||
|
|
||||||
2006-07-31 Mark Kettenis <kettenis@gnu.org>
|
2006-07-31 Mark Kettenis <kettenis@gnu.org>
|
||||||
|
|
||||||
* alpha-tdep.h (ALPHA_S0_REGNUM): New define.
|
* alpha-tdep.h (ALPHA_S0_REGNUM): New define.
|
||||||
|
@ -2259,11 +2259,14 @@ arm_return_value (struct gdbarch *gdbarch, struct type *valtype,
|
|||||||
struct regcache *regcache, gdb_byte *readbuf,
|
struct regcache *regcache, gdb_byte *readbuf,
|
||||||
const gdb_byte *writebuf)
|
const gdb_byte *writebuf)
|
||||||
{
|
{
|
||||||
|
struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
|
||||||
|
|
||||||
if (TYPE_CODE (valtype) == TYPE_CODE_STRUCT
|
if (TYPE_CODE (valtype) == TYPE_CODE_STRUCT
|
||||||
|| TYPE_CODE (valtype) == TYPE_CODE_UNION
|
|| TYPE_CODE (valtype) == TYPE_CODE_UNION
|
||||||
|| TYPE_CODE (valtype) == TYPE_CODE_ARRAY)
|
|| TYPE_CODE (valtype) == TYPE_CODE_ARRAY)
|
||||||
{
|
{
|
||||||
if (arm_return_in_memory (gdbarch, valtype))
|
if (tdep->struct_return == pcc_struct_return
|
||||||
|
|| arm_return_in_memory (gdbarch, valtype))
|
||||||
return RETURN_VALUE_STRUCT_CONVENTION;
|
return RETURN_VALUE_STRUCT_CONVENTION;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2757,6 +2760,10 @@ arm_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
|
|||||||
tdep->lowest_pc = 0x20;
|
tdep->lowest_pc = 0x20;
|
||||||
tdep->jb_pc = -1; /* Longjump support not enabled by default. */
|
tdep->jb_pc = -1; /* Longjump support not enabled by default. */
|
||||||
|
|
||||||
|
/* The default, for both APCS and AAPCS, is to return small
|
||||||
|
structures in registers. */
|
||||||
|
tdep->struct_return = reg_struct_return;
|
||||||
|
|
||||||
set_gdbarch_push_dummy_call (gdbarch, arm_push_dummy_call);
|
set_gdbarch_push_dummy_call (gdbarch, arm_push_dummy_call);
|
||||||
set_gdbarch_frame_align (gdbarch, arm_frame_align);
|
set_gdbarch_frame_align (gdbarch, arm_frame_align);
|
||||||
|
|
||||||
|
@ -125,6 +125,14 @@ enum arm_abi_kind
|
|||||||
ARM_ABI_LAST
|
ARM_ABI_LAST
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/* Convention for returning structures. */
|
||||||
|
|
||||||
|
enum struct_return
|
||||||
|
{
|
||||||
|
pcc_struct_return, /* Return "short" structures in memory. */
|
||||||
|
reg_struct_return /* Return "short" structures in registers. */
|
||||||
|
};
|
||||||
|
|
||||||
/* Target-dependent structure in gdbarch. */
|
/* Target-dependent structure in gdbarch. */
|
||||||
struct gdbarch_tdep
|
struct gdbarch_tdep
|
||||||
{
|
{
|
||||||
@ -147,10 +155,15 @@ struct gdbarch_tdep
|
|||||||
will be disabled. */
|
will be disabled. */
|
||||||
size_t jb_elt_size; /* And the size of each entry in the buf. */
|
size_t jb_elt_size; /* And the size of each entry in the buf. */
|
||||||
|
|
||||||
|
/* Convention for returning structures. */
|
||||||
|
enum struct_return struct_return;
|
||||||
|
|
||||||
/* Cached core file helpers. */
|
/* Cached core file helpers. */
|
||||||
struct regset *gregset, *fpregset;
|
struct regset *gregset, *fpregset;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#ifndef LOWEST_PC
|
#ifndef LOWEST_PC
|
||||||
#define LOWEST_PC (gdbarch_tdep (current_gdbarch)->lowest_pc)
|
#define LOWEST_PC (gdbarch_tdep (current_gdbarch)->lowest_pc)
|
||||||
#endif
|
#endif
|
||||||
|
@ -88,6 +88,9 @@ armobsd_init_abi (struct gdbarch_info info,
|
|||||||
|
|
||||||
tdep->jb_pc = 24;
|
tdep->jb_pc = 24;
|
||||||
tdep->jb_elt_size = 4;
|
tdep->jb_elt_size = 4;
|
||||||
|
|
||||||
|
/* OpenBSD/arm uses -fpcc-struct-return by default. */
|
||||||
|
tdep->struct_return = pcc_struct_return;
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
Loading…
Reference in New Issue
Block a user