aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthew Fortune <matthew.fortune@imgtec.com>2014-09-15 10:32:38 +0100
committerMatthew Fortune <matthew.fortune@imgtec.com>2014-09-15 11:51:07 +0100
commitea79f94a7ab96c6114b80bf78830f877325b10ff (patch)
treef284d4729398fd4f64ba6a990fafc67d8541c342
parent64034f58a5fcd7746dd588b78d41b1a2f833df85 (diff)
downloadfsf-binutils-gdb-ea79f94a7ab96c6114b80bf78830f877325b10ff.zip
fsf-binutils-gdb-ea79f94a7ab96c6114b80bf78830f877325b10ff.tar.gz
fsf-binutils-gdb-ea79f94a7ab96c6114b80bf78830f877325b10ff.tar.bz2
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.
-rw-r--r--gas/ChangeLog5
-rw-r--r--gas/config/tc-mips.c24
-rw-r--r--gas/testsuite/ChangeLog12
-rw-r--r--gas/testsuite/gas/mips/attr-gnu-4-5-msingle-float.l2
-rw-r--r--gas/testsuite/gas/mips/attr-gnu-4-5-msingle-float.s1
-rw-r--r--gas/testsuite/gas/mips/attr-gnu-4-5-msoft-float.l2
-rw-r--r--gas/testsuite/gas/mips/attr-gnu-4-5-msoft-float.s1
-rw-r--r--gas/testsuite/gas/mips/attr-gnu-4-6-msingle-float.l2
-rw-r--r--gas/testsuite/gas/mips/attr-gnu-4-6-msoft-float.l2
-rw-r--r--gas/testsuite/gas/mips/attr-gnu-4-7-msingle-float.l2
-rw-r--r--gas/testsuite/gas/mips/attr-gnu-4-7-msoft-float.l2
-rw-r--r--gas/testsuite/gas/mips/mips.exp12
12 files changed, 45 insertions, 22 deletions
diff --git a/gas/ChangeLog b/gas/ChangeLog
index 788e80b..84c90c8 100644
--- a/gas/ChangeLog
+++ b/gas/ChangeLog
@@ -1,3 +1,8 @@
+2014-09-15 Matthew Fortune <matthew.fortune@imgtec.com>
+
+ * tc-mips.c (check_fpabi): Move softfloat and singlefloat
+ checks higher.
+
2014-09-12 Jose E. Marchesi <jose.marchesi@oracle.com>
* config/tc-sparc.c (sparc_ip): Update the set of allowed hwcaps
diff --git a/gas/config/tc-mips.c b/gas/config/tc-mips.c
index 59d8635..2dabdf4 100644
--- a/gas/config/tc-mips.c
+++ b/gas/config/tc-mips.c
@@ -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. */
diff --git a/gas/testsuite/ChangeLog b/gas/testsuite/ChangeLog
index 2981cef..97d6d83 100644
--- a/gas/testsuite/ChangeLog
+++ b/gas/testsuite/ChangeLog
@@ -1,3 +1,15 @@
+2014-09-15 Matthew Fortune <matthew.fortune@imgtec.com>
+
+ * 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.
+
2014-09-12 Andrew Bennett <andrew.bennett@imgtec.com>
* gas/mips/mips.exp: Add mips*-img-elf* target triple.
diff --git a/gas/testsuite/gas/mips/attr-gnu-4-5-msingle-float.l b/gas/testsuite/gas/mips/attr-gnu-4-5-msingle-float.l
new file mode 100644
index 0000000..be2017d
--- /dev/null
+++ b/gas/testsuite/gas/mips/attr-gnu-4-5-msingle-float.l
@@ -0,0 +1,2 @@
+.*: Assembler messages:
+.*: Warning: .gnu_attribute 4,5 is incompatible with `singlefloat'
diff --git a/gas/testsuite/gas/mips/attr-gnu-4-5-msingle-float.s b/gas/testsuite/gas/mips/attr-gnu-4-5-msingle-float.s
new file mode 100644
index 0000000..b21ec3b
--- /dev/null
+++ b/gas/testsuite/gas/mips/attr-gnu-4-5-msingle-float.s
@@ -0,0 +1 @@
+.gnu_attribute 4,5
diff --git a/gas/testsuite/gas/mips/attr-gnu-4-5-msoft-float.l b/gas/testsuite/gas/mips/attr-gnu-4-5-msoft-float.l
new file mode 100644
index 0000000..3385c5f
--- /dev/null
+++ b/gas/testsuite/gas/mips/attr-gnu-4-5-msoft-float.l
@@ -0,0 +1,2 @@
+.*: Assembler messages:
+.*: Warning: .gnu_attribute 4,5 is incompatible with `softfloat'
diff --git a/gas/testsuite/gas/mips/attr-gnu-4-5-msoft-float.s b/gas/testsuite/gas/mips/attr-gnu-4-5-msoft-float.s
new file mode 100644
index 0000000..b21ec3b
--- /dev/null
+++ b/gas/testsuite/gas/mips/attr-gnu-4-5-msoft-float.s
@@ -0,0 +1 @@
+.gnu_attribute 4,5
diff --git a/gas/testsuite/gas/mips/attr-gnu-4-6-msingle-float.l b/gas/testsuite/gas/mips/attr-gnu-4-6-msingle-float.l
index 999b5e2..ab12f1d 100644
--- a/gas/testsuite/gas/mips/attr-gnu-4-6-msingle-float.l
+++ b/gas/testsuite/gas/mips/attr-gnu-4-6-msingle-float.l
@@ -1,2 +1,2 @@
.*: Assembler messages:
-.*: Warning: .gnu_attribute 4,6 is incompatible with `fp=32'
+.*: Warning: .gnu_attribute 4,6 is incompatible with `singlefloat'
diff --git a/gas/testsuite/gas/mips/attr-gnu-4-6-msoft-float.l b/gas/testsuite/gas/mips/attr-gnu-4-6-msoft-float.l
index 999b5e2..3bf1946 100644
--- a/gas/testsuite/gas/mips/attr-gnu-4-6-msoft-float.l
+++ b/gas/testsuite/gas/mips/attr-gnu-4-6-msoft-float.l
@@ -1,2 +1,2 @@
.*: Assembler messages:
-.*: Warning: .gnu_attribute 4,6 is incompatible with `fp=32'
+.*: Warning: .gnu_attribute 4,6 is incompatible with `softfloat'
diff --git a/gas/testsuite/gas/mips/attr-gnu-4-7-msingle-float.l b/gas/testsuite/gas/mips/attr-gnu-4-7-msingle-float.l
index 999b5e2..ab12f1d 100644
--- a/gas/testsuite/gas/mips/attr-gnu-4-7-msingle-float.l
+++ b/gas/testsuite/gas/mips/attr-gnu-4-7-msingle-float.l
@@ -1,2 +1,2 @@
.*: Assembler messages:
-.*: Warning: .gnu_attribute 4,6 is incompatible with `fp=32'
+.*: Warning: .gnu_attribute 4,6 is incompatible with `singlefloat'
diff --git a/gas/testsuite/gas/mips/attr-gnu-4-7-msoft-float.l b/gas/testsuite/gas/mips/attr-gnu-4-7-msoft-float.l
index 999b5e2..3bf1946 100644
--- a/gas/testsuite/gas/mips/attr-gnu-4-7-msoft-float.l
+++ b/gas/testsuite/gas/mips/attr-gnu-4-7-msoft-float.l
@@ -1,2 +1,2 @@
.*: Assembler messages:
-.*: Warning: .gnu_attribute 4,6 is incompatible with `fp=32'
+.*: Warning: .gnu_attribute 4,6 is incompatible with `softfloat'
diff --git a/gas/testsuite/gas/mips/mips.exp b/gas/testsuite/gas/mips/mips.exp
index 198d60e..4cf6e7d 100644
--- a/gas/testsuite/gas/mips/mips.exp
+++ b/gas/testsuite/gas/mips/mips.exp
@@ -1327,9 +1327,9 @@ if { [istarget mips*-*-vxworks*] } {
[mips_arch_list_matching mips32r2]
run_list_test_arches "attr-gnu-4-5-64" "-64 -mfp64" \
[mips_arch_list_matching mips3]
- run_list_test_arches "attr-gnu-4-5" "-32 -msingle-float" \
+ run_list_test_arches "attr-gnu-4-5-msingle-float" "-32 -msingle-float" \
[mips_arch_list_matching mips1]
- run_list_test_arches "attr-gnu-4-5" "-32 -msoft-float" \
+ run_list_test_arches "attr-gnu-4-5-msoft-float" "-32 -msoft-float" \
[mips_arch_list_matching mips1]
run_dump_test_arches "attr-gnu-4-5" \
[mips_arch_list_matching mips2 !r5900]
@@ -1340,9 +1340,9 @@ if { [istarget mips*-*-vxworks*] } {
[mips_arch_list_matching mips32r2]
run_list_test_arches "attr-gnu-4-6-64" "-64 -mfp64" \
[mips_arch_list_matching mips3]
- run_list_test_arches "attr-gnu-4-6" "-32 -msingle-float" \
+ run_list_test_arches "attr-gnu-4-6-msingle-float" "-32 -msingle-float" \
[mips_arch_list_matching mips1]
- run_list_test_arches "attr-gnu-4-6" "-32 -msoft-float" \
+ run_list_test_arches "attr-gnu-4-6-msoft-float" "-32 -msoft-float" \
[mips_arch_list_matching mips1]
run_list_test_arches "attr-gnu-4-6" "-32 -mfpxx" \
[mips_arch_list_matching mips2 !r5900]
@@ -1355,9 +1355,9 @@ if { [istarget mips*-*-vxworks*] } {
[mips_arch_list_matching mips32r2]
run_list_test_arches "attr-gnu-4-7-64" "-64 -mfp64" \
[mips_arch_list_matching mips3]
- run_list_test_arches "attr-gnu-4-7" "-32 -msingle-float" \
+ run_list_test_arches "attr-gnu-4-7-msingle-float" "-32 -msingle-float" \
[mips_arch_list_matching mips1]
- run_list_test_arches "attr-gnu-4-7" "-32 -msoft-float" \
+ run_list_test_arches "attr-gnu-4-7-msoft-float" "-32 -msoft-float" \
[mips_arch_list_matching mips1]
run_list_test_arches "attr-gnu-4-7" "-32 -mfpxx" \
[mips_arch_list_matching mips2 !r5900]