From: Daniel Jacobowitz Date: Wed, 22 Aug 2007 15:16:56 +0000 (+0000) Subject: * mips-tdep.c (mips_gdbarch_init): Use Tag_GNU_MIPS_ABI_FP to X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=609ca2b95777ae176d12721010225ad7aad86321;p=binutils-gdb.git * mips-tdep.c (mips_gdbarch_init): Use Tag_GNU_MIPS_ABI_FP to determine the file's FPU type. --- diff --git a/gdb/ChangeLog b/gdb/ChangeLog index cde1d095db8..f1edff4aaee 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,8 @@ +2007-08-22 Daniel Jacobowitz + + * mips-tdep.c (mips_gdbarch_init): Use Tag_GNU_MIPS_ABI_FP to + determine the file's FPU type. + 2007-08-22 Daniel Jacobowitz * mips-tdep.c (mips_n32n64_fp_arg_chunk_p): New. diff --git a/gdb/mips-tdep.c b/gdb/mips-tdep.c index 68621e1c40b..654ef13abc3 100644 --- a/gdb/mips-tdep.c +++ b/gdb/mips-tdep.c @@ -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)