aboutsummaryrefslogtreecommitdiff
path: root/bfd
diff options
context:
space:
mode:
authorAlan Modra <amodra@gmail.com>2008-07-26 13:10:48 +0000
committerAlan Modra <amodra@gmail.com>2008-07-26 13:10:48 +0000
commit3c7b98977c0b44c19630cb2d6b699e90ba294e52 (patch)
tree9e45df98d39889a8008eea788918356e4889c7c7 /bfd
parentd72314c67b7cc65ae935ad3dd80a6b1840b57d1a (diff)
downloadfsf-binutils-gdb-3c7b98977c0b44c19630cb2d6b699e90ba294e52.zip
fsf-binutils-gdb-3c7b98977c0b44c19630cb2d6b699e90ba294e52.tar.gz
fsf-binutils-gdb-3c7b98977c0b44c19630cb2d6b699e90ba294e52.tar.bz2
Support PowerPC single-precision float.
Diffstat (limited to 'bfd')
-rw-r--r--bfd/ChangeLog5
-rw-r--r--bfd/elf32-ppc.c16
2 files changed, 19 insertions, 2 deletions
diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index 23b8d93..02dbbb1 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -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.
diff --git a/bfd/elf32-ppc.c b/bfd/elf32-ppc.c
index 92f812f..22b90b2 100644
--- a/bfd/elf32-ppc.c
+++ b/bfd/elf32-ppc.c
@@ -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);