* ppc-sysv-tdep.c (ppc_sysv_abi_push_dummy_call): Check the selected
soft float and vector ABIs. Support the generic vector ABI for AltiVec types. (do_ppc_sysv_return_value): Likewise. Correct argument types and casts. (ppc64_sysv_abi_push_dummy_call): Assert that floating point is supported. * ppc-tdep.h (enum powerpc_vector_abi): New. (struct gdbarch_tdep): Add soft_float and vector_abi. * rs6000-tdep.c (setpowerpccmdlist, showpowerpccmdlist) (powerpc_soft_float_global, powerpc_vector_strings) (powerpc_vector_abi_global, powerpc_vector_abi_string): New. (rs6000_gdbarch_init): Check for soft-float and vector ABI markings. (set_powerpc_command, show_powerpc_command, powerpc_set_soft_float) (powerpc_set_vector_abi): New. (_initialize_rs6000_tdep): Register "set powerpc" and "show powerpc" commands. * Makefile.in (elf_ppc_h): New. (rs6000-tdep.o): Update. * gdb.texinfo (PowerPC): Document "set powerpc vector-abi" and "set powerpc soft-float". * gdb.arch/altivec-abi.exp: Run multiple times for GCC on GNU/Linux. Test "set powerpc vector-abi". Skip auto-detection tests for old toolchains.
This commit is contained in:
parent
7020f05c27
commit
55eddb0f7a
9 changed files with 431 additions and 105 deletions
|
@ -157,9 +157,24 @@ extern void ppc_collect_vrregset (const struct regset *regset,
|
|||
|
||||
/* Private data that this module attaches to struct gdbarch. */
|
||||
|
||||
/* Vector ABI used by the inferior. */
|
||||
enum powerpc_vector_abi
|
||||
{
|
||||
POWERPC_VEC_AUTO,
|
||||
POWERPC_VEC_GENERIC,
|
||||
POWERPC_VEC_ALTIVEC,
|
||||
POWERPC_VEC_SPE,
|
||||
POWERPC_VEC_LAST
|
||||
};
|
||||
|
||||
struct gdbarch_tdep
|
||||
{
|
||||
int wordsize; /* size in bytes of fixed-point word */
|
||||
int wordsize; /* Size in bytes of fixed-point word. */
|
||||
int soft_float; /* Avoid FP registers for arguments? */
|
||||
|
||||
/* How to pass vector arguments. Never set to AUTO or LAST. */
|
||||
enum powerpc_vector_abi vector_abi;
|
||||
|
||||
int ppc_gp0_regnum; /* GPR register 0 */
|
||||
int ppc_toc_regnum; /* TOC register */
|
||||
int ppc_ps_regnum; /* Processor (or machine) status (%msr) */
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue