mirror of
https://github.com/bminor/binutils-gdb.git
synced 2025-12-29 02:20:51 +00:00
Ensure softfloat and singlefloat take precedence in consistency checks
gas/ * tc-mips.c (check_fpabi): Move softfloat and singlefloat checks higher. gas/testsuite/ * gas/mips/attr-gnu-4-5-msingle-float.l: New file. * gas/mips/attr-gnu-4-5-msingle-float.s: Likewise. * gas/mips/attr-gnu-4-5-msoft-float.l: Likewise. * gas/mips/attr-gnu-4-5-msoft-float.s: Likewise. * gas/mips/attr-gnu-4-6-msingle-float.l: Update expected output. * gas/mips/attr-gnu-4-6-msoft-float.l: Likewise. * gas/mips/attr-gnu-4-7-msingle-float.l: Likewise. * gas/mips/attr-gnu-4-7-msoft-float.l: Likewise. * gas/mips/mips.exp: Update expected output for FP ABI 5,6,7.
This commit is contained in:
@@ -3672,39 +3672,44 @@ fpabi_requires (int fpabi, const char *what)
|
||||
static void
|
||||
check_fpabi (int fpabi)
|
||||
{
|
||||
bfd_boolean needs_check = FALSE;
|
||||
switch (fpabi)
|
||||
{
|
||||
case Val_GNU_MIPS_ABI_FP_DOUBLE:
|
||||
if (file_mips_opts.soft_float)
|
||||
fpabi_incompatible_with (fpabi, "softfloat");
|
||||
else if (file_mips_opts.single_float)
|
||||
fpabi_incompatible_with (fpabi, "singlefloat");
|
||||
if (file_mips_opts.gp == 64 && file_mips_opts.fp == 32)
|
||||
fpabi_incompatible_with (fpabi, "gp=64 fp=32");
|
||||
else if (file_mips_opts.gp == 32 && file_mips_opts.fp == 64)
|
||||
fpabi_incompatible_with (fpabi, "gp=32 fp=64");
|
||||
else
|
||||
needs_check = TRUE;
|
||||
break;
|
||||
|
||||
case Val_GNU_MIPS_ABI_FP_XX:
|
||||
if (mips_abi != O32_ABI)
|
||||
fpabi_requires (fpabi, "-mabi=32");
|
||||
else if (file_mips_opts.soft_float)
|
||||
fpabi_incompatible_with (fpabi, "softfloat");
|
||||
else if (file_mips_opts.single_float)
|
||||
fpabi_incompatible_with (fpabi, "singlefloat");
|
||||
else if (file_mips_opts.fp != 0)
|
||||
fpabi_requires (fpabi, "fp=xx");
|
||||
else
|
||||
needs_check = TRUE;
|
||||
break;
|
||||
|
||||
case Val_GNU_MIPS_ABI_FP_64A:
|
||||
case Val_GNU_MIPS_ABI_FP_64:
|
||||
if (mips_abi != O32_ABI)
|
||||
fpabi_requires (fpabi, "-mabi=32");
|
||||
else if (file_mips_opts.soft_float)
|
||||
fpabi_incompatible_with (fpabi, "softfloat");
|
||||
else if (file_mips_opts.single_float)
|
||||
fpabi_incompatible_with (fpabi, "singlefloat");
|
||||
else if (file_mips_opts.fp != 64)
|
||||
fpabi_requires (fpabi, "fp=64");
|
||||
else if (fpabi == Val_GNU_MIPS_ABI_FP_64 && !file_mips_opts.oddspreg)
|
||||
fpabi_incompatible_with (fpabi, "nooddspreg");
|
||||
else if (fpabi == Val_GNU_MIPS_ABI_FP_64A && file_mips_opts.oddspreg)
|
||||
fpabi_requires (fpabi, "nooddspreg");
|
||||
else
|
||||
needs_check = TRUE;
|
||||
break;
|
||||
|
||||
case Val_GNU_MIPS_ABI_FP_SINGLE:
|
||||
@@ -3729,11 +3734,6 @@ check_fpabi (int fpabi)
|
||||
" floating-point ABI"), Tag_GNU_MIPS_ABI_FP, fpabi);
|
||||
break;
|
||||
}
|
||||
|
||||
if (needs_check && file_mips_opts.soft_float)
|
||||
fpabi_incompatible_with (fpabi, "softfloat");
|
||||
else if (needs_check && file_mips_opts.single_float)
|
||||
fpabi_incompatible_with (fpabi, "singlefloat");
|
||||
}
|
||||
|
||||
/* Perform consistency checks on the current options. */
|
||||
|
||||
Reference in New Issue
Block a user