Support PowerPC single-precision float.

This commit is contained in:
Alan Modra 2008-07-26 13:10:48 +00:00
parent d72314c67b
commit 3c7b98977c
20 changed files with 119 additions and 8 deletions

View File

@ -1,3 +1,8 @@
2008-07-26 Michael Eager <eager@eagercon.com>
* elf32-ppc.c (ppc_elf_merge_obj_attributes): Check compatibility
between single-float, double-float, and soft-float.
2008-07-24 Daniel Jacobowitz <dan@codesourcery.com>
* elf32-mips.c (elf_backend_write_section): Define.

View File

@ -3883,10 +3883,22 @@ ppc_elf_merge_obj_attributes (bfd *ibfd, bfd *obfd)
else if (out_attr->i == 1 && in_attr->i == 2)
_bfd_error_handler
(_("Warning: %B uses hard float, %B uses soft float"), obfd, ibfd);
else if (out_attr->i == 2 && in_attr->i == 1)
else if (out_attr->i == 1 && in_attr->i == 3)
_bfd_error_handler
(_("Warning: %B uses double-precision hard float, %B uses single-precision hard float"),
obfd, ibfd);
else if (out_attr->i == 3 && in_attr->i == 1)
_bfd_error_handler
(_("Warning: %B uses double-precision hard float, %B uses single-precision hard float"),
ibfd, obfd);
else if (out_attr->i == 3 && in_attr->i == 2)
_bfd_error_handler
(_("Warning: %B uses soft float, %B uses single-precision hard float"),
ibfd, obfd);
else if (out_attr->i == 2 && (in_attr->i == 1 || in_attr->i == 3))
_bfd_error_handler
(_("Warning: %B uses hard float, %B uses soft float"), ibfd, obfd);
else if (in_attr->i > 2)
else if (in_attr->i > 3)
_bfd_error_handler
(_("Warning: %B uses unknown floating point ABI %d"), ibfd,
in_attr->i);

View File

@ -9037,6 +9037,9 @@ display_power_gnu_attribute (unsigned char *p, int tag)
case 2:
printf ("Soft float\n");
break;
case 3:
printf ("Single-precision hard float\n");
break;
default:
printf ("??? (%d)\n", val);
break;

View File

@ -1,3 +1,7 @@
2008-07-26 Michael Eager <eager@eagercon.com>
* doc/as.texinfo: Add description of single-precision attribute.
2008-07-24 Jie Zhang <jie.zhang@analog.com>
* config/bfin-parse.y (asm_1): Error if plain symbol is used

View File

@ -6513,9 +6513,11 @@ The floating-point ABI used by this object file. The value will be:
@item
0 for files not affected by the floating-point ABI.
@item
1 for files using the hardware floating-point ABI.
1 for files using double-precision hardware floating-point ABI.
@item
2 for files using the software floating-point ABI.
@item
3 for files using single-precision hardware floating-point ABI.
@end itemize
@item Tag_GNU_Power_ABI_Vector (8)

View File

@ -1,3 +1,7 @@
2008-07-26 Michael Eager <eager@eagercon.com>
* ppc.h: Add description of single-precision.
2008-07-21 Luis Machado <luisgpm@br.ibm.com>
* common.h: Define NT_PPC_VSX.

View File

@ -1,5 +1,5 @@
/* PPC ELF support for BFD.
Copyright 1995, 1996, 1998, 2000, 2001, 2002, 2003, 2005
Copyright 1995, 1996, 1998, 2000, 2001, 2002, 2003, 2005, 2007, 2008
Free Software Foundation, Inc.
By Michael Meissner, Cygnus Support, <meissner@cygnus.com>, from information
@ -177,7 +177,8 @@ enum
{
/* 0-3 are generic. */
Tag_GNU_Power_ABI_FP = 4, /* Value 1 for hard-float, 2 for
soft-float; 0 for not tagged or not
soft-float, 3 for single=precision
hard-float; 0 for not tagged or not
using any ABIs affected by the
differences. */

View File

@ -1,3 +1,18 @@
2008-07-26 Michael Eager <eager@eagercon.com>
* ld-powerpc/powerpc.exp: Run new tests.
* ld-powerpc/attr-gnu-4-03.d: New file.
* ld-powerpc/attr-gnu-4-14.d: New file.
* ld-powerpc/attr-gnu-4-23.d: New file.
* ld-powerpc/attr-gnu-4-24.d: New file.
* ld-powerpc/attr-gnu-4-32.d: New file.
* ld-powerpc/attr-gnu-4-33.d: New file.
* ld-powerpc/attr-gnu-4-34.d: New file.
* ld-powerpc/attr-gnu-4-41.d: New file.
* ld-powerpc/attr-gnu-4-4.s: New file.
* ld-powerpc/attr-gnu-4-13.d: Adjust.
* ld-powerpc/attr-gnu-4-31.d: Adjust.
2008-07-26 Alan Modra <amodra@bigpond.net.au>
* ld-scripts/include.exp: Don't run test for aout.

View File

@ -0,0 +1,10 @@
#source: attr-gnu-4-0.s
#source: attr-gnu-4-3.s
#as: -a32
#ld: -r -melf32ppc
#readelf: -A
#target: powerpc*-*-*
Attribute Section: gnu
File Attributes
Tag_GNU_Power_ABI_FP: Single-precision hard float

View File

@ -2,5 +2,5 @@
#source: attr-gnu-4-3.s
#as: -a32
#ld: -r -melf32ppc
#warning: Warning: .* uses unknown floating point ABI 3
#warning: Warning: .* uses double-precision hard float, .* uses single-precision hard float
#target: powerpc*-*-*

View File

@ -0,0 +1,6 @@
#source: attr-gnu-4-1.s
#source: attr-gnu-4-4.s
#as: -a32
#ld: -r -melf32ppc
#warning: Warning: .* uses unknown floating point ABI 4
#target: powerpc*-*-*

View File

@ -0,0 +1,6 @@
#source: attr-gnu-4-2.s
#source: attr-gnu-4-3.s
#as: -a32
#ld: -r -melf32ppc
#warning: Warning: .* uses hard float, .* uses soft float
#target: powerpc*-*-*

View File

@ -0,0 +1,6 @@
#source: attr-gnu-4-2.s
#source: attr-gnu-4-4.s
#as: -a32
#ld: -r -melf32ppc
#warning: Warning: .* uses unknown floating point ABI 4
#target: powerpc*-*-*

View File

@ -2,5 +2,5 @@
#source: attr-gnu-4-1.s
#as: -a32
#ld: -r -melf32ppc
#warning: Warning: .* uses unknown floating point ABI 3
#warning: Warning: .* uses double-precision hard float, .* uses single-precision hard float
#target: powerpc*-*-*

View File

@ -0,0 +1,6 @@
#source: attr-gnu-4-3.s
#source: attr-gnu-4-2.s
#as: -a32
#ld: -r -melf32ppc
#warning: Warning: .* uses soft float, .* uses single-precision hard float
#target: powerpc*-*-*

View File

@ -0,0 +1,10 @@
#source: attr-gnu-4-3.s
#source: attr-gnu-4-3.s
#as: -a32
#ld: -r -melf32ppc
#readelf: -A
#target: powerpc*-*-*
Attribute Section: gnu
File Attributes
Tag_GNU_Power_ABI_FP: Single-precision hard float

View File

@ -0,0 +1,6 @@
#source: attr-gnu-4-3.s
#source: attr-gnu-4-4.s
#as: -a32
#ld: -r -melf32ppc
#warning: Warning: .* uses unknown floating point ABI 4
#target: powerpc*-*-*

View File

@ -0,0 +1 @@
.gnu_attribute 4,4

View File

@ -0,0 +1,6 @@
#source: attr-gnu-4-4.s
#source: attr-gnu-4-1.s
#as: -a32
#ld: -r -melf32ppc
#warning: Warning: .* uses unknown floating point ABI 4
#target: powerpc*-*-*

View File

@ -1,5 +1,5 @@
# Expect script for ld-powerpc tests
# Copyright 2002, 2003, 2005, 2006, 2007 Free Software Foundation
# Copyright 2002, 2003, 2005, 2006, 2007, 2008 Free Software Foundation
#
# This file is part of the GNU Binutils.
#
@ -157,14 +157,22 @@ run_dump_test "plt1"
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-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-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-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-41"
run_dump_test "attr-gnu-8-11"
run_dump_test "attr-gnu-8-23"