aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--bfd/ChangeLog5
-rw-r--r--bfd/elfxx-mips.c43
-rw-r--r--binutils/ChangeLog5
-rw-r--r--binutils/readelf.c3
-rw-r--r--gas/ChangeLog4
-rw-r--r--gas/doc/as.texinfo4
-rw-r--r--include/ChangeLog5
-rw-r--r--include/elf/mips.h6
-rw-r--r--ld/testsuite/ChangeLog14
-rw-r--r--ld/testsuite/ld-mips-elf/attr-gnu-4-04.d10
-rw-r--r--ld/testsuite/ld-mips-elf/attr-gnu-4-05.d10
-rw-r--r--ld/testsuite/ld-mips-elf/attr-gnu-4-14.d2
-rw-r--r--ld/testsuite/ld-mips-elf/attr-gnu-4-15.d11
-rw-r--r--ld/testsuite/ld-mips-elf/attr-gnu-4-24.d6
-rw-r--r--ld/testsuite/ld-mips-elf/attr-gnu-4-25.d11
-rw-r--r--ld/testsuite/ld-mips-elf/attr-gnu-4-34.d6
-rw-r--r--ld/testsuite/ld-mips-elf/attr-gnu-4-35.d11
-rw-r--r--ld/testsuite/ld-mips-elf/attr-gnu-4-40.d10
-rw-r--r--ld/testsuite/ld-mips-elf/attr-gnu-4-41.d2
-rw-r--r--ld/testsuite/ld-mips-elf/attr-gnu-4-42.d6
-rw-r--r--ld/testsuite/ld-mips-elf/attr-gnu-4-43.d6
-rw-r--r--ld/testsuite/ld-mips-elf/attr-gnu-4-44.d10
-rw-r--r--ld/testsuite/ld-mips-elf/attr-gnu-4-45.d10
-rw-r--r--ld/testsuite/ld-mips-elf/attr-gnu-4-5.s1
-rw-r--r--ld/testsuite/ld-mips-elf/attr-gnu-4-51.d6
-rw-r--r--ld/testsuite/ld-mips-elf/mips-elf.exp13
26 files changed, 213 insertions, 7 deletions
diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index 07b29bd..abdf115 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -1,3 +1,8 @@
+2007-11-17 Thiemo Seufer <ths@mips.com>
+
+ * elfxx-mips.c (mips_elf_merge_obj_attributes): Handle -mips32r2
+ -mfp64 attribute.
+
2007-11-16 Nick Clifton <nickc@redhat.com>
* elf-m10300.c (mn10300_elf_check_relocs): Fix memory leak and
diff --git a/bfd/elfxx-mips.c b/bfd/elfxx-mips.c
index 470bed9..f674e13 100644
--- a/bfd/elfxx-mips.c
+++ b/bfd/elfxx-mips.c
@@ -11325,11 +11325,11 @@ mips_elf_merge_obj_attributes (bfd *ibfd, bfd *obfd)
out_attr[Tag_GNU_MIPS_ABI_FP].i = in_attr[Tag_GNU_MIPS_ABI_FP].i;
else if (in_attr[Tag_GNU_MIPS_ABI_FP].i == 0)
;
- else if (in_attr[Tag_GNU_MIPS_ABI_FP].i > 3)
+ else if (in_attr[Tag_GNU_MIPS_ABI_FP].i > 4)
_bfd_error_handler
(_("Warning: %B uses unknown floating point ABI %d"), ibfd,
in_attr[Tag_GNU_MIPS_ABI_FP].i);
- else if (out_attr[Tag_GNU_MIPS_ABI_FP].i > 3)
+ else if (out_attr[Tag_GNU_MIPS_ABI_FP].i > 4)
_bfd_error_handler
(_("Warning: %B uses unknown floating point ABI %d"), obfd,
out_attr[Tag_GNU_MIPS_ABI_FP].i);
@@ -11351,6 +11351,12 @@ mips_elf_merge_obj_attributes (bfd *ibfd, bfd *obfd)
obfd, ibfd);
break;
+ case 4:
+ _bfd_error_handler
+ (_("Warning: %B uses -msingle-float, %B uses -mips32r2 -mfp64"),
+ obfd, ibfd);
+ break;
+
default:
abort ();
}
@@ -11371,6 +11377,12 @@ mips_elf_merge_obj_attributes (bfd *ibfd, bfd *obfd)
obfd, ibfd);
break;
+ case 4:
+ _bfd_error_handler
+ (_("Warning: %B uses -mdouble-float, %B uses -mips32r2 -mfp64"),
+ obfd, ibfd);
+ break;
+
default:
abort ();
}
@@ -11381,6 +11393,7 @@ mips_elf_merge_obj_attributes (bfd *ibfd, bfd *obfd)
{
case 1:
case 2:
+ case 4:
_bfd_error_handler
(_("Warning: %B uses hard float, %B uses soft float"),
ibfd, obfd);
@@ -11391,6 +11404,32 @@ mips_elf_merge_obj_attributes (bfd *ibfd, bfd *obfd)
}
break;
+ case 4:
+ switch (in_attr[Tag_GNU_MIPS_ABI_FP].i)
+ {
+ case 1:
+ _bfd_error_handler
+ (_("Warning: %B uses -msingle-float, %B uses -mips32r2 -mfp64"),
+ ibfd, obfd);
+ break;
+
+ case 2:
+ _bfd_error_handler
+ (_("Warning: %B uses -mdouble-float, %B uses -mips32r2 -mfp64"),
+ ibfd, obfd);
+ break;
+
+ case 3:
+ _bfd_error_handler
+ (_("Warning: %B uses hard float, %B uses soft float"),
+ obfd, ibfd);
+ break;
+
+ default:
+ abort ();
+ }
+ break;
+
default:
abort ();
}
diff --git a/binutils/ChangeLog b/binutils/ChangeLog
index a339f03..fe2d199 100644
--- a/binutils/ChangeLog
+++ b/binutils/ChangeLog
@@ -1,3 +1,8 @@
+2007-11-17 Thiemo Seufer <ths@mips.com>
+
+ * readelf.c (display_mips_gnu_attribute): Recognize -mips32r2 -mfp64
+ objects.
+
2007-11-16 Nick Clifton <nickc@redhat.com>
* dwarf.c (process_extended_line_op): Add cases for HP extensions
diff --git a/binutils/readelf.c b/binutils/readelf.c
index b1357f8..41cf2bc 100644
--- a/binutils/readelf.c
+++ b/binutils/readelf.c
@@ -8833,6 +8833,9 @@ display_mips_gnu_attribute (unsigned char *p, int tag)
case 3:
printf ("Soft float\n");
break;
+ case 4:
+ printf ("64-bit float (-mips32r2 -mfp64)\n");
+ break;
default:
printf ("??? (%d)\n", val);
break;
diff --git a/gas/ChangeLog b/gas/ChangeLog
index 1fc6f9a..0a182bf 100644
--- a/gas/ChangeLog
+++ b/gas/ChangeLog
@@ -1,3 +1,7 @@
+2007-11-17 Thiemo Seufer <ths@mips.com>
+
+ * doc/as.texinfo: Document the new attribute value.
+
2007-11-16 Eric B. Weddington <eric.weddington@atmel.com>
* config/tc-avr.c (mcu_types): Add ATmega32HVB device.
diff --git a/gas/doc/as.texinfo b/gas/doc/as.texinfo
index aa0c44d..81c105a 100644
--- a/gas/doc/as.texinfo
+++ b/gas/doc/as.texinfo
@@ -6483,6 +6483,10 @@ FPU.
2 for files using the hardware floating-point ABI with a single-precision FPU.
@item
3 for files using the software floating-point ABI.
+@item
+4 for files using the hardware floating-point ABI with 64-bit wide
+double-precision floating-point registers and 32-bit wide general
+purpose registers.
@end itemize
@end table
diff --git a/include/ChangeLog b/include/ChangeLog
index 1bde4c5..c856121 100644
--- a/include/ChangeLog
+++ b/include/ChangeLog
@@ -1,3 +1,8 @@
+2007-11-17 Thiemo Seufer <ths@mips.com>
+
+ * elf/mips.h (Tag_GNU_MIPS_ABI_FP): Mention -mips32r2 -mfp64 variant
+ in comment.
+
2007-11-07 Joseph Myers <joseph@codesourcery.com>
Daniel Jacobowitz <dan@codesourcery.com>
diff --git a/include/elf/mips.h b/include/elf/mips.h
index 4f60675..f54ef70 100644
--- a/include/elf/mips.h
+++ b/include/elf/mips.h
@@ -1012,9 +1012,9 @@ enum
/* 0-3 are generic. */
Tag_GNU_MIPS_ABI_FP = 4, /* Value 1 for hard-float -mdouble-float, 2
for hard-float -msingle-float, 3 for
- soft-float; 0 for not tagged or not
- using any ABIs affected by the
- differences. */
+ soft-float, 4 for -mips32r2 -mfp64; 0 for
+ not tagged or not using any ABIs affected
+ by the differences. */
};
#endif /* _ELF_MIPS_H */
diff --git a/ld/testsuite/ChangeLog b/ld/testsuite/ChangeLog
index 76ff53b..5d601f2 100644
--- a/ld/testsuite/ChangeLog
+++ b/ld/testsuite/ChangeLog
@@ -1,3 +1,17 @@
+2007-11-17 Thiemo Seufer <ths@mips.com>
+
+ * ld-mips-elf/attr-gnu-4-14.d, ld-mips-elf/attr-gnu-4-41.d:
+ Adjust warning message for -mfp64 flag.
+ * ld-mips-elf/attr-gnu-4-5.s, ld-mips-elf/attr-gnu-4-04.d,
+ ld-mips-elf/attr-gnu-4-51.d, ld-mips-elf/attr-gnu-4-05.d,
+ ld-mips-elf/attr-gnu-4-15.d, ld-mips-elf/attr-gnu-4-24.d,
+ ld-mips-elf/attr-gnu-4-25.d, ld-mips-elf/attr-gnu-4-34.d,
+ ld-mips-elf/attr-gnu-4-35.d, ld-mips-elf/attr-gnu-4-42.d,
+ ld-mips-elf/attr-gnu-4-43.d, ld-mips-elf/attr-gnu-4-44.d,
+ ld-mips-elf/attr-gnu-4-45.d, ld-mips-elf/attr-gnu-4-40.d,
+ ld-mips-elf/attr-gnu-4-14.d: New testcases files.
+ * ld-mips-elf/mips-elf.exp: Run new testcases.
+
2007-11-16 Nick Clifton <nickc@redhat.com>
* ld-mn10300/mn10300.exp: Fix the start address of the .bss
diff --git a/ld/testsuite/ld-mips-elf/attr-gnu-4-04.d b/ld/testsuite/ld-mips-elf/attr-gnu-4-04.d
new file mode 100644
index 0000000..992ed04
--- /dev/null
+++ b/ld/testsuite/ld-mips-elf/attr-gnu-4-04.d
@@ -0,0 +1,10 @@
+#source: attr-gnu-4-0.s
+#source: attr-gnu-4-4.s
+#as: -EB -32
+#ld: -r -melf32btsmip
+#readelf: -A
+#target: mips*-*-*
+
+Attribute Section: gnu
+File Attributes
+ Tag_GNU_MIPS_ABI_FP: 64-bit float \(-mips32r2 -mfp64\)
diff --git a/ld/testsuite/ld-mips-elf/attr-gnu-4-05.d b/ld/testsuite/ld-mips-elf/attr-gnu-4-05.d
new file mode 100644
index 0000000..ebfc6d8
--- /dev/null
+++ b/ld/testsuite/ld-mips-elf/attr-gnu-4-05.d
@@ -0,0 +1,10 @@
+#source: attr-gnu-4-0.s
+#source: attr-gnu-4-5.s
+#as: -EB -32
+#ld: -r -melf32btsmip
+#readelf: -A
+#target: mips*-*-*
+
+Attribute Section: gnu
+File Attributes
+ Tag_GNU_MIPS_ABI_FP: \?\?\? \(5\)
diff --git a/ld/testsuite/ld-mips-elf/attr-gnu-4-14.d b/ld/testsuite/ld-mips-elf/attr-gnu-4-14.d
index 7b15327..e899382 100644
--- a/ld/testsuite/ld-mips-elf/attr-gnu-4-14.d
+++ b/ld/testsuite/ld-mips-elf/attr-gnu-4-14.d
@@ -2,5 +2,5 @@
#source: attr-gnu-4-4.s
#as: -EB -32
#ld: -r -melf32btsmip
-#warning: Warning: .* uses unknown floating point ABI 4
+#warning: Warning: .* uses -msingle-float, .* uses -mips32r2 -mfp64
#target: mips*-*-*
diff --git a/ld/testsuite/ld-mips-elf/attr-gnu-4-15.d b/ld/testsuite/ld-mips-elf/attr-gnu-4-15.d
new file mode 100644
index 0000000..cf32302
--- /dev/null
+++ b/ld/testsuite/ld-mips-elf/attr-gnu-4-15.d
@@ -0,0 +1,11 @@
+#source: attr-gnu-4-1.s
+#source: attr-gnu-4-5.s
+#as: -EB -32
+#ld: -r -melf32btsmip
+#readelf: -A
+#warning: Warning: .* uses unknown floating point ABI 5
+#target: mips*-*-*
+
+Attribute Section: gnu
+File Attributes
+ Tag_GNU_MIPS_ABI_FP: Hard float \(-mdouble-float\)
diff --git a/ld/testsuite/ld-mips-elf/attr-gnu-4-24.d b/ld/testsuite/ld-mips-elf/attr-gnu-4-24.d
new file mode 100644
index 0000000..09e8175
--- /dev/null
+++ b/ld/testsuite/ld-mips-elf/attr-gnu-4-24.d
@@ -0,0 +1,6 @@
+#source: attr-gnu-4-2.s
+#source: attr-gnu-4-4.s
+#as: -EB -32
+#ld: -r -melf32btsmip
+#warning: Warning: .* uses -mips32r2 -mfp64
+#target: mips*-*-*
diff --git a/ld/testsuite/ld-mips-elf/attr-gnu-4-25.d b/ld/testsuite/ld-mips-elf/attr-gnu-4-25.d
new file mode 100644
index 0000000..7701397
--- /dev/null
+++ b/ld/testsuite/ld-mips-elf/attr-gnu-4-25.d
@@ -0,0 +1,11 @@
+#source: attr-gnu-4-2.s
+#source: attr-gnu-4-5.s
+#as: -EB -32
+#ld: -r -melf32btsmip
+#readelf: -A
+#warning: Warning: .* uses unknown floating point ABI 5
+#target: mips*-*-*
+
+Attribute Section: gnu
+File Attributes
+ Tag_GNU_MIPS_ABI_FP: Hard float \(-msingle-float\)
diff --git a/ld/testsuite/ld-mips-elf/attr-gnu-4-34.d b/ld/testsuite/ld-mips-elf/attr-gnu-4-34.d
new file mode 100644
index 0000000..2a9b0f3
--- /dev/null
+++ b/ld/testsuite/ld-mips-elf/attr-gnu-4-34.d
@@ -0,0 +1,6 @@
+#source: attr-gnu-4-3.s
+#source: attr-gnu-4-4.s
+#as: -EB -32
+#ld: -r -melf32btsmip
+#warning: Warning: .* uses hard float, .* uses soft float
+#target: mips*-*-*
diff --git a/ld/testsuite/ld-mips-elf/attr-gnu-4-35.d b/ld/testsuite/ld-mips-elf/attr-gnu-4-35.d
new file mode 100644
index 0000000..c3ad25f
--- /dev/null
+++ b/ld/testsuite/ld-mips-elf/attr-gnu-4-35.d
@@ -0,0 +1,11 @@
+#source: attr-gnu-4-3.s
+#source: attr-gnu-4-5.s
+#as: -EB -32
+#ld: -r -melf32btsmip
+#readelf: -A
+#warning: Warning: .* uses unknown floating point ABI 5
+#target: mips*-*-*
+
+Attribute Section: gnu
+File Attributes
+ Tag_GNU_MIPS_ABI_FP: Soft float
diff --git a/ld/testsuite/ld-mips-elf/attr-gnu-4-40.d b/ld/testsuite/ld-mips-elf/attr-gnu-4-40.d
new file mode 100644
index 0000000..f84e95b
--- /dev/null
+++ b/ld/testsuite/ld-mips-elf/attr-gnu-4-40.d
@@ -0,0 +1,10 @@
+#source: attr-gnu-4-4.s
+#source: attr-gnu-4-0.s
+#as: -EB -32
+#ld: -r -melf32btsmip
+#readelf: -A
+#target: mips*-*-*
+
+Attribute Section: gnu
+File Attributes
+ Tag_GNU_MIPS_ABI_FP: 64-bit float \(-mips32r2 -mfp64\)
diff --git a/ld/testsuite/ld-mips-elf/attr-gnu-4-41.d b/ld/testsuite/ld-mips-elf/attr-gnu-4-41.d
index 5fffe75..71f74a9 100644
--- a/ld/testsuite/ld-mips-elf/attr-gnu-4-41.d
+++ b/ld/testsuite/ld-mips-elf/attr-gnu-4-41.d
@@ -2,5 +2,5 @@
#source: attr-gnu-4-1.s
#as: -EB -32
#ld: -r -melf32btsmip
-#warning: Warning: .* uses unknown floating point ABI 4
+#warning: Warning: .* uses -msingle-float, .* uses -mips32r2 -mfp64
#target: mips*-*-*
diff --git a/ld/testsuite/ld-mips-elf/attr-gnu-4-42.d b/ld/testsuite/ld-mips-elf/attr-gnu-4-42.d
new file mode 100644
index 0000000..c095695
--- /dev/null
+++ b/ld/testsuite/ld-mips-elf/attr-gnu-4-42.d
@@ -0,0 +1,6 @@
+#source: attr-gnu-4-4.s
+#source: attr-gnu-4-2.s
+#as: -EB -32
+#ld: -r -melf32btsmip
+#warning: Warning: .* uses -mips32r2 -mfp64
+#target: mips*-*-*
diff --git a/ld/testsuite/ld-mips-elf/attr-gnu-4-43.d b/ld/testsuite/ld-mips-elf/attr-gnu-4-43.d
new file mode 100644
index 0000000..8396e38
--- /dev/null
+++ b/ld/testsuite/ld-mips-elf/attr-gnu-4-43.d
@@ -0,0 +1,6 @@
+#source: attr-gnu-4-4.s
+#source: attr-gnu-4-3.s
+#as: -EB -32
+#ld: -r -melf32btsmip
+#warning: Warning: .* uses hard float, .* uses soft float
+#target: mips*-*-*
diff --git a/ld/testsuite/ld-mips-elf/attr-gnu-4-44.d b/ld/testsuite/ld-mips-elf/attr-gnu-4-44.d
new file mode 100644
index 0000000..6e8cac2
--- /dev/null
+++ b/ld/testsuite/ld-mips-elf/attr-gnu-4-44.d
@@ -0,0 +1,10 @@
+#source: attr-gnu-4-4.s
+#source: attr-gnu-4-4.s
+#as: -EB -32
+#ld: -r -melf32btsmip
+#readelf: -A
+#target: mips*-*-*
+
+Attribute Section: gnu
+File Attributes
+ Tag_GNU_MIPS_ABI_FP: 64-bit float \(-mips32r2 -mfp64\)
diff --git a/ld/testsuite/ld-mips-elf/attr-gnu-4-45.d b/ld/testsuite/ld-mips-elf/attr-gnu-4-45.d
new file mode 100644
index 0000000..11738c5
--- /dev/null
+++ b/ld/testsuite/ld-mips-elf/attr-gnu-4-45.d
@@ -0,0 +1,10 @@
+#source: attr-gnu-4-4.s
+#source: attr-gnu-4-5.s
+#as: -EB -32
+#ld: -r -melf32btsmip
+#warning: Warning: .* uses unknown floating point ABI 5
+#target: mips*-*-*
+
+Attribute Section: gnu
+File Attributes
+ Tag_GNU_MIPS_ABI_FP: 64-bit float \(-mips32r2 -mfp64\)
diff --git a/ld/testsuite/ld-mips-elf/attr-gnu-4-5.s b/ld/testsuite/ld-mips-elf/attr-gnu-4-5.s
new file mode 100644
index 0000000..b21ec3b
--- /dev/null
+++ b/ld/testsuite/ld-mips-elf/attr-gnu-4-5.s
@@ -0,0 +1 @@
+.gnu_attribute 4,5
diff --git a/ld/testsuite/ld-mips-elf/attr-gnu-4-51.d b/ld/testsuite/ld-mips-elf/attr-gnu-4-51.d
new file mode 100644
index 0000000..b5f1c22
--- /dev/null
+++ b/ld/testsuite/ld-mips-elf/attr-gnu-4-51.d
@@ -0,0 +1,6 @@
+#source: attr-gnu-4-5.s
+#source: attr-gnu-4-1.s
+#as: -EB -32
+#ld: -r -melf32btsmip
+#warning: Warning: .* uses unknown floating point ABI 5
+#target: mips*-*-*
diff --git a/ld/testsuite/ld-mips-elf/mips-elf.exp b/ld/testsuite/ld-mips-elf/mips-elf.exp
index 63af733..fb32f5c 100644
--- a/ld/testsuite/ld-mips-elf/mips-elf.exp
+++ b/ld/testsuite/ld-mips-elf/mips-elf.exp
@@ -290,17 +290,30 @@ run_dump_test "attr-gnu-4-00"
run_dump_test "attr-gnu-4-01"
run_dump_test "attr-gnu-4-02"
run_dump_test "attr-gnu-4-03"
+run_dump_test "attr-gnu-4-04"
+run_dump_test "attr-gnu-4-05"
run_dump_test "attr-gnu-4-10"
run_dump_test "attr-gnu-4-11"
run_dump_test "attr-gnu-4-12"
run_dump_test "attr-gnu-4-13"
run_dump_test "attr-gnu-4-14"
+run_dump_test "attr-gnu-4-15"
run_dump_test "attr-gnu-4-20"
run_dump_test "attr-gnu-4-21"
run_dump_test "attr-gnu-4-22"
run_dump_test "attr-gnu-4-23"
+run_dump_test "attr-gnu-4-24"
+run_dump_test "attr-gnu-4-25"
run_dump_test "attr-gnu-4-30"
run_dump_test "attr-gnu-4-31"
run_dump_test "attr-gnu-4-32"
run_dump_test "attr-gnu-4-33"
+run_dump_test "attr-gnu-4-34"
+run_dump_test "attr-gnu-4-35"
+run_dump_test "attr-gnu-4-40"
run_dump_test "attr-gnu-4-41"
+run_dump_test "attr-gnu-4-42"
+run_dump_test "attr-gnu-4-43"
+run_dump_test "attr-gnu-4-44"
+run_dump_test "attr-gnu-4-45"
+run_dump_test "attr-gnu-4-51"