diff options
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" |