* mips-tdep.c (mips_gdbarch_init): Use Tag_GNU_MIPS_ABI_FP to

determine the file's FPU type.
This commit is contained in:
Daniel Jacobowitz 2007-08-22 15:16:56 +00:00
parent 8d26208a1e
commit 609ca2b957
2 changed files with 30 additions and 0 deletions

View File

@ -1,3 +1,8 @@
2007-08-22 Daniel Jacobowitz <dan@codesourcery.com>
* mips-tdep.c (mips_gdbarch_init): Use Tag_GNU_MIPS_ABI_FP to
determine the file's FPU type.
2007-08-22 Daniel Jacobowitz <dan@codesourcery.com>
* mips-tdep.c (mips_n32n64_fp_arg_chunk_p): New.

View File

@ -4913,6 +4913,7 @@ mips_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
int i, num_regs;
enum mips_fpu_type fpu_type;
struct tdesc_arch_data *tdesc_data = NULL;
int elf_fpu_type = 0;
/* Check any target description for validity. */
if (tdesc_has_registers (info.target_desc))
@ -5120,8 +5121,32 @@ mips_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
mips64_transfers_32bit_regs_p);
/* Determine the MIPS FPU type. */
#ifdef HAVE_ELF
if (info.abfd
&& bfd_get_flavour (info.abfd) == bfd_target_elf_flavour)
elf_fpu_type = bfd_elf_get_obj_attr_int (info.abfd, OBJ_ATTR_GNU,
Tag_GNU_MIPS_ABI_FP);
#endif /* HAVE_ELF */
if (!mips_fpu_type_auto)
fpu_type = mips_fpu_type;
else if (elf_fpu_type != 0)
{
switch (elf_fpu_type)
{
case 1:
fpu_type = MIPS_FPU_DOUBLE;
break;
case 2:
fpu_type = MIPS_FPU_SINGLE;
break;
case 3:
default:
/* Soft float or unknown. */
fpu_type = MIPS_FPU_NONE;
break;
}
}
else if (info.bfd_arch_info != NULL
&& info.bfd_arch_info->arch == bfd_arch_mips)
switch (info.bfd_arch_info->mach)