This is the mail archive of the binutils@sourceware.org mailing list for the binutils project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH] MIPS/BFD: Correct/clean up ELF FP attribute warning messages


On Mon, 19 Nov 2012, Maciej W. Rozycki wrote:

>  Meanwhile I'll look into keeping that first input BFD file name for 
> reporting.  And actually, after a bit of thinking, I believe it may even 
> make sense to say e.g.:
> 
> Warning: foobar uses -mdouble-float (set by foo.o), baz.o uses -mips32r2 -mfp64
> 
> to emphasize both the ABI chosen for output and where it came from.  What 
> do you think?

 As a follow-up, here's an outline in implementation terms of what I have 
had in my mind.  I have decided to keep the name of the input BFD locally 
after all (rather than say attaching it to the output BFD structure) for 
one reason and a half:

1.0. The way attribute merging is performed is target specific and for 
     other targets it may well not be the first input that determines the 
     final (or any intermediate) attribute setting, e.g. it may change as 
     inputs are processed.

1.5. And this is actually already the case for the MIPS target, that I 
     didn't notice outright, that is any inputs that have the value of the 
     FP ABI attribute set to zero (absent normally as that setting is 
     ignored by BFD on output, although still processed correctly when 
     present) do not influence the FP ABI and cannot conflict with 
     anything.  That is it is actually the first input with a non-zero FP 
     ABI attribute that determines the ABI.

These observations are reflected in the change proposed below.

 As you did not comment on my "set by" proposal I decided to implement it 
that way; although I have no strong preference either way.  Once we have 
agreed on that I'll follow with further changes to the "unknown floating 
point ABI" message that I think should be updated accordingly and as I 
find it rather silly to report the same message for the output BFD 
multiple times (even if the originating input is mentioned too), I'm 
tempted to move the two messages to the switch statements below as the 
default cases and change them to report the ABI of the other BFD as well 
(this may in particular be a different "unknown ABI").

 So please confirm which format you prefer and whether you have any 
further comments and I'll proceed accordingly.  Thanks.

2012-11-21  Maciej W. Rozycki  <macro@codesourcery.com>

	bfd/
	* elfxx-mips.c (mips_elf_merge_obj_attributes): Report the 
	originating input BFD on attribute conflicts.

	ld/testsuite/
	* ld-mips-elf/attr-gnu-4-12.d: Update the warning message.
	* ld-mips-elf/attr-gnu-4-13.d: Likewise.
	* ld-mips-elf/attr-gnu-4-14.d: Likewise.
	* ld-mips-elf/attr-gnu-4-21.d: Likewise.
	* ld-mips-elf/attr-gnu-4-23.d: Likewise.
	* ld-mips-elf/attr-gnu-4-24.d: Likewise.
	* ld-mips-elf/attr-gnu-4-31.d: Likewise.
	* ld-mips-elf/attr-gnu-4-32.d: Likewise.
	* ld-mips-elf/attr-gnu-4-34.d: Likewise.
	* ld-mips-elf/attr-gnu-4-41.d: Likewise.
	* ld-mips-elf/attr-gnu-4-42.d: Likewise.
	* ld-mips-elf/attr-gnu-4-43.d: Likewise.

  Maciej

binutils-mips-bfd-attr-bfd.diff
Index: binutils-fsf-trunk-quilt/bfd/elfxx-mips.c
===================================================================
--- binutils-fsf-trunk-quilt.orig/bfd/elfxx-mips.c	2012-11-20 23:15:43.000000000 +0000
+++ binutils-fsf-trunk-quilt/bfd/elfxx-mips.c	2012-11-21 18:00:37.481172436 +0000
@@ -13749,6 +13749,11 @@ mips_elf_merge_obj_attributes (bfd *ibfd
 {
   obj_attribute *in_attr;
   obj_attribute *out_attr;
+  static bfd *attr_bfd;
+
+  in_attr = elf_known_obj_attributes (ibfd)[OBJ_ATTR_GNU];
+  if (!attr_bfd && in_attr[Tag_GNU_MIPS_ABI_FP].i != 0)
+    attr_bfd = ibfd;
 
   if (!elf_known_obj_attributes_proc (obfd)[0].i)
     {
@@ -13764,7 +13769,6 @@ mips_elf_merge_obj_attributes (bfd *ibfd
 
   /* Check for conflicting Tag_GNU_MIPS_ABI_FP attributes and merge
      non-conflicting ones.  */
-  in_attr = elf_known_obj_attributes (ibfd)[OBJ_ATTR_GNU];
   out_attr = elf_known_obj_attributes (obfd)[OBJ_ATTR_GNU];
   if (in_attr[Tag_GNU_MIPS_ABI_FP].i != out_attr[Tag_GNU_MIPS_ABI_FP].i)
     {
@@ -13789,20 +13793,23 @@ mips_elf_merge_obj_attributes (bfd *ibfd
 	      {
 	      case 2:
 		_bfd_error_handler
-		  (_("Warning: %B uses -mdouble-float, %B uses -msingle-float"),
-		   obfd, ibfd);
+		  (_("Warning: %B uses -mdouble-float (set by %B), "
+		     "%B uses -msingle-float"),
+		   obfd, attr_bfd, ibfd);
 		break;
 
 	      case 3:
 		_bfd_error_handler
-		  (_("Warning: %B uses hard float, %B uses soft float"),
-		   obfd, ibfd);
+		  (_("Warning: %B uses hard float (set by %B), "
+		     "%B uses soft float"),
+		   obfd, attr_bfd, ibfd);
 		break;
 
 	      case 4:
 		_bfd_error_handler
-		  (_("Warning: %B uses -mdouble-float, %B uses -mips32r2 -mfp64"),
-		   obfd, ibfd);
+		  (_("Warning: %B uses -mdouble-float (set by %B), "
+		     "%B uses -mips32r2 -mfp64"),
+		   obfd, attr_bfd, ibfd);
 		break;
 
 	      default:
@@ -13815,20 +13822,23 @@ mips_elf_merge_obj_attributes (bfd *ibfd
 	      {
 	      case 1:
 		_bfd_error_handler
-		  (_("Warning: %B uses -msingle-float, %B uses -mdouble-float"),
-		   obfd, ibfd);
+		  (_("Warning: %B uses -msingle-float (set by %B), "
+		     "%B uses -mdouble-float"),
+		   obfd, attr_bfd, ibfd);
 		break;
 
 	      case 3:
 		_bfd_error_handler
-		  (_("Warning: %B uses hard float, %B uses soft float"),
-		   obfd, ibfd);
+		  (_("Warning: %B uses hard float (set by %B), "
+		     "%B uses soft float"),
+		   obfd, attr_bfd, ibfd);
 		break;
 
 	      case 4:
 		_bfd_error_handler
-		  (_("Warning: %B uses -msingle-float, %B uses -mips32r2 -mfp64"),
-		   obfd, ibfd);
+		  (_("Warning: %B uses -msingle-float (set by %B), "
+		     "%B uses -mips32r2 -mfp64"),
+		   obfd, attr_bfd, ibfd);
 		break;
 
 	      default:
@@ -13843,8 +13853,9 @@ mips_elf_merge_obj_attributes (bfd *ibfd
 	      case 2:
 	      case 4:
 		_bfd_error_handler
-		  (_("Warning: %B uses soft float, %B uses hard float"),
-		   obfd, ibfd);
+		  (_("Warning: %B uses soft float (set by %B), "
+		     "%B uses hard float"),
+		   obfd, attr_bfd, ibfd);
 		break;
 
 	      default:
@@ -13857,20 +13868,23 @@ mips_elf_merge_obj_attributes (bfd *ibfd
 	      {
 	      case 1:
 		_bfd_error_handler
-		  (_("Warning: %B uses -mips32r2 -mfp64, %B uses -mdouble-float"),
-		   obfd, ibfd);
+		  (_("Warning: %B uses -mips32r2 -mfp64 (set by %B), "
+		     "%B uses -mdouble-float"),
+		   obfd, attr_bfd, ibfd);
 		break;
 
 	      case 2:
 		_bfd_error_handler
-		  (_("Warning: %B uses -mips32r2 -mfp64, %B uses -msingle-float"),
-		   obfd, ibfd);
+		  (_("Warning: %B uses -mips32r2 -mfp64 (set by %B), "
+		     "%B uses -msingle-float"),
+		   obfd, attr_bfd, ibfd);
 		break;
 
 	      case 3:
 		_bfd_error_handler
-		  (_("Warning: %B uses hard float, %B uses soft float"),
-		   obfd, ibfd);
+		  (_("Warning: %B uses hard float (set by %B), "
+		     "%B uses soft float"),
+		   obfd, attr_bfd, ibfd);
 		break;
 
 	      default:
Index: binutils-fsf-trunk-quilt/ld/testsuite/ld-mips-elf/attr-gnu-4-12.d
===================================================================
--- binutils-fsf-trunk-quilt.orig/ld/testsuite/ld-mips-elf/attr-gnu-4-12.d	2012-11-10 15:19:59.000000000 +0000
+++ binutils-fsf-trunk-quilt/ld/testsuite/ld-mips-elf/attr-gnu-4-12.d	2012-11-21 07:02:45.520681553 +0000
@@ -1,5 +1,5 @@
 #source: attr-gnu-4-1.s
 #source: attr-gnu-4-2.s
 #ld: -r
-#warning: Warning: .* uses -mdouble-float, .* uses -msingle-float
+#warning: Warning: .* uses -mdouble-float \(set by .*\), .* uses -msingle-float
 #target: mips*-*-*
Index: binutils-fsf-trunk-quilt/ld/testsuite/ld-mips-elf/attr-gnu-4-13.d
===================================================================
--- binutils-fsf-trunk-quilt.orig/ld/testsuite/ld-mips-elf/attr-gnu-4-13.d	2012-07-04 12:07:13.000000000 +0100
+++ binutils-fsf-trunk-quilt/ld/testsuite/ld-mips-elf/attr-gnu-4-13.d	2012-11-21 07:02:49.920952185 +0000
@@ -1,5 +1,5 @@
 #source: attr-gnu-4-1.s
 #source: attr-gnu-4-3.s
 #ld: -r
-#warning: Warning: .* uses hard float, .* uses soft float
+#warning: Warning: .* uses hard float \(set by .*\), .* uses soft float
 #target: mips*-*-*
Index: binutils-fsf-trunk-quilt/ld/testsuite/ld-mips-elf/attr-gnu-4-14.d
===================================================================
--- binutils-fsf-trunk-quilt.orig/ld/testsuite/ld-mips-elf/attr-gnu-4-14.d	2012-11-10 15:19:59.000000000 +0000
+++ binutils-fsf-trunk-quilt/ld/testsuite/ld-mips-elf/attr-gnu-4-14.d	2012-11-21 07:02:55.100673328 +0000
@@ -1,5 +1,5 @@
 #source: attr-gnu-4-1.s
 #source: attr-gnu-4-4.s
 #ld: -r
-#warning: Warning: .* uses -mdouble-float, .* uses -mips32r2 -mfp64
+#warning: Warning: .* uses -mdouble-float \(set by .*\), .* uses -mips32r2 -mfp64
 #target: mips*-*-*
Index: binutils-fsf-trunk-quilt/ld/testsuite/ld-mips-elf/attr-gnu-4-21.d
===================================================================
--- binutils-fsf-trunk-quilt.orig/ld/testsuite/ld-mips-elf/attr-gnu-4-21.d	2012-07-04 12:07:12.000000000 +0100
+++ binutils-fsf-trunk-quilt/ld/testsuite/ld-mips-elf/attr-gnu-4-21.d	2012-11-21 07:03:52.220608909 +0000
@@ -1,5 +1,5 @@
 #source: attr-gnu-4-2.s
 #source: attr-gnu-4-1.s
 #ld: -r
-#warning: Warning: .* uses -msingle-float, .* uses -mdouble-float
+#warning: Warning: .* uses -msingle-float \(set by .*\), .* uses -mdouble-float
 #target: mips*-*-*
Index: binutils-fsf-trunk-quilt/ld/testsuite/ld-mips-elf/attr-gnu-4-23.d
===================================================================
--- binutils-fsf-trunk-quilt.orig/ld/testsuite/ld-mips-elf/attr-gnu-4-23.d	2012-07-04 12:07:12.000000000 +0100
+++ binutils-fsf-trunk-quilt/ld/testsuite/ld-mips-elf/attr-gnu-4-23.d	2012-11-21 07:03:57.550701367 +0000
@@ -1,5 +1,5 @@
 #source: attr-gnu-4-2.s
 #source: attr-gnu-4-3.s
 #ld: -r
-#warning: Warning: .* uses hard float, .* uses soft float
+#warning: Warning: .* uses hard float \(set by .*\), .* uses soft float
 #target: mips*-*-*
Index: binutils-fsf-trunk-quilt/ld/testsuite/ld-mips-elf/attr-gnu-4-24.d
===================================================================
--- binutils-fsf-trunk-quilt.orig/ld/testsuite/ld-mips-elf/attr-gnu-4-24.d	2012-07-04 12:07:12.000000000 +0100
+++ binutils-fsf-trunk-quilt/ld/testsuite/ld-mips-elf/attr-gnu-4-24.d	2012-11-21 07:04:01.510650868 +0000
@@ -1,5 +1,5 @@
 #source: attr-gnu-4-2.s
 #source: attr-gnu-4-4.s
 #ld: -r
-#warning: Warning: .* uses -mips32r2 -mfp64
+#warning: Warning: .* uses -msingle-float \(set by .*\), .* uses -mips32r2 -mfp64
 #target: mips*-*-*
Index: binutils-fsf-trunk-quilt/ld/testsuite/ld-mips-elf/attr-gnu-4-31.d
===================================================================
--- binutils-fsf-trunk-quilt.orig/ld/testsuite/ld-mips-elf/attr-gnu-4-31.d	2012-11-10 15:19:59.000000000 +0000
+++ binutils-fsf-trunk-quilt/ld/testsuite/ld-mips-elf/attr-gnu-4-31.d	2012-11-21 07:04:09.561340318 +0000
@@ -1,5 +1,5 @@
 #source: attr-gnu-4-3.s
 #source: attr-gnu-4-1.s
 #ld: -r
-#warning: Warning: .* uses soft float, .* uses hard float
+#warning: Warning: .* uses soft float \(set by .*\), .* uses hard float
 #target: mips*-*-*
Index: binutils-fsf-trunk-quilt/ld/testsuite/ld-mips-elf/attr-gnu-4-32.d
===================================================================
--- binutils-fsf-trunk-quilt.orig/ld/testsuite/ld-mips-elf/attr-gnu-4-32.d	2012-11-10 15:19:59.000000000 +0000
+++ binutils-fsf-trunk-quilt/ld/testsuite/ld-mips-elf/attr-gnu-4-32.d	2012-11-21 07:04:13.711633507 +0000
@@ -1,5 +1,5 @@
 #source: attr-gnu-4-3.s
 #source: attr-gnu-4-2.s
 #ld: -r
-#warning: Warning: .* uses soft float, .* uses hard float
+#warning: Warning: .* uses soft float \(set by .*\), .* uses hard float
 #target: mips*-*-*
Index: binutils-fsf-trunk-quilt/ld/testsuite/ld-mips-elf/attr-gnu-4-34.d
===================================================================
--- binutils-fsf-trunk-quilt.orig/ld/testsuite/ld-mips-elf/attr-gnu-4-34.d	2012-11-10 15:19:59.000000000 +0000
+++ binutils-fsf-trunk-quilt/ld/testsuite/ld-mips-elf/attr-gnu-4-34.d	2012-11-21 07:04:19.671312229 +0000
@@ -1,5 +1,5 @@
 #source: attr-gnu-4-3.s
 #source: attr-gnu-4-4.s
 #ld: -r
-#warning: Warning: .* uses soft float, .* uses hard float
+#warning: Warning: .* uses soft float \(set by .*\), .* uses hard float
 #target: mips*-*-*
Index: binutils-fsf-trunk-quilt/ld/testsuite/ld-mips-elf/attr-gnu-4-41.d
===================================================================
--- binutils-fsf-trunk-quilt.orig/ld/testsuite/ld-mips-elf/attr-gnu-4-41.d	2012-11-10 15:19:59.000000000 +0000
+++ binutils-fsf-trunk-quilt/ld/testsuite/ld-mips-elf/attr-gnu-4-41.d	2012-11-21 07:04:25.610648553 +0000
@@ -1,5 +1,5 @@
 #source: attr-gnu-4-4.s
 #source: attr-gnu-4-1.s
 #ld: -r
-#warning: Warning: .* uses -mips32r2 -mfp64, .* uses -mdouble-float
+#warning: Warning: .* uses -mips32r2 -mfp64 \(set by .*\), .* uses -mdouble-float
 #target: mips*-*-*
Index: binutils-fsf-trunk-quilt/ld/testsuite/ld-mips-elf/attr-gnu-4-42.d
===================================================================
--- binutils-fsf-trunk-quilt.orig/ld/testsuite/ld-mips-elf/attr-gnu-4-42.d	2012-07-04 12:07:12.000000000 +0100
+++ binutils-fsf-trunk-quilt/ld/testsuite/ld-mips-elf/attr-gnu-4-42.d	2012-11-21 07:04:30.201757206 +0000
@@ -1,5 +1,5 @@
 #source: attr-gnu-4-4.s
 #source: attr-gnu-4-2.s
 #ld: -r
-#warning: Warning: .* uses -mips32r2 -mfp64
+#warning: Warning: .* uses -mips32r2 -mfp64 \(set by .*\), .* uses -msingle-float
 #target: mips*-*-*
Index: binutils-fsf-trunk-quilt/ld/testsuite/ld-mips-elf/attr-gnu-4-43.d
===================================================================
--- binutils-fsf-trunk-quilt.orig/ld/testsuite/ld-mips-elf/attr-gnu-4-43.d	2012-07-04 12:07:12.000000000 +0100
+++ binutils-fsf-trunk-quilt/ld/testsuite/ld-mips-elf/attr-gnu-4-43.d	2012-11-21 07:04:35.081631773 +0000
@@ -1,5 +1,5 @@
 #source: attr-gnu-4-4.s
 #source: attr-gnu-4-3.s
 #ld: -r
-#warning: Warning: .* uses hard float, .* uses soft float
+#warning: Warning: .* uses hard float \(set by .*\), .* uses soft float
 #target: mips*-*-*


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]