aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--bfd/ChangeLog5
-rw-r--r--bfd/elfxx-mips.c12
-rw-r--r--ld/ChangeLog19
-rw-r--r--ld/testsuite/ld-mips-elf/attr-gnu-4-14.d4
-rw-r--r--ld/testsuite/ld-mips-elf/attr-gnu-4-24.d4
-rw-r--r--ld/testsuite/ld-mips-elf/attr-gnu-4-34.d4
-rw-r--r--ld/testsuite/ld-mips-elf/attr-gnu-4-41.d4
-rw-r--r--ld/testsuite/ld-mips-elf/attr-gnu-4-42.d4
-rw-r--r--ld/testsuite/ld-mips-elf/attr-gnu-4-43.d4
-rw-r--r--ld/testsuite/ld-mips-elf/attr-gnu-4-45.d4
-rw-r--r--ld/testsuite/ld-mips-elf/attr-gnu-4-46.d4
-rw-r--r--ld/testsuite/ld-mips-elf/attr-gnu-4-47.d4
-rw-r--r--ld/testsuite/ld-mips-elf/attr-gnu-4-48.d4
-rw-r--r--ld/testsuite/ld-mips-elf/attr-gnu-4-49.d4
-rw-r--r--ld/testsuite/ld-mips-elf/attr-gnu-4-54.d4
-rw-r--r--ld/testsuite/ld-mips-elf/attr-gnu-4-64.d4
-rw-r--r--ld/testsuite/ld-mips-elf/attr-gnu-4-74.d4
17 files changed, 59 insertions, 33 deletions
diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index 85b56a3..5a2c3bd 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -1,5 +1,10 @@
2016-01-04 Maciej W. Rozycki <macro@imgtec.com>
+ * elfxx-mips.c (_bfd_mips_elf_merge_private_bfd_data): Move
+ attribute check after ELF file header flag check.
+
+2016-01-04 Maciej W. Rozycki <macro@imgtec.com>
+
* elfxx-mips.c (mips_elf_merge_obj_attributes): Propagate the
return status from `_bfd_elf_merge_object_attributes'.
diff --git a/bfd/elfxx-mips.c b/bfd/elfxx-mips.c
index a5d47d6..63c7d7e 100644
--- a/bfd/elfxx-mips.c
+++ b/bfd/elfxx-mips.c
@@ -15220,6 +15220,7 @@ _bfd_mips_elf_merge_private_bfd_data (bfd *ibfd, bfd *obfd)
bfd_boolean null_input_bfd = TRUE;
asection *sec;
obj_attribute *out_attr;
+ bfd_boolean ok;
/* Check if we have the same endianness. */
if (! _bfd_generic_verify_endian_match (ibfd, obfd))
@@ -15321,9 +15322,6 @@ _bfd_mips_elf_merge_private_bfd_data (bfd *ibfd, bfd *obfd)
in_tdata->abiflags_valid = TRUE;
}
- if (!mips_elf_merge_obj_attributes (ibfd, obfd))
- return FALSE;
-
if (!out_tdata->abiflags_valid)
{
/* Copy input abiflags if output abiflags are not already valid. */
@@ -15351,8 +15349,12 @@ _bfd_mips_elf_merge_private_bfd_data (bfd *ibfd, bfd *obfd)
update_mips_abiflags_isa (obfd, &out_tdata->abiflags);
}
- return TRUE;
+ ok = TRUE;
}
+ else
+ ok = mips_elf_merge_obj_e_flags (ibfd, obfd);
+
+ ok = mips_elf_merge_obj_attributes (ibfd, obfd) && ok;
/* Update the output abiflags fp_abi using the computed fp_abi. */
out_attr = elf_known_obj_attributes (obfd)[OBJ_ATTR_GNU];
@@ -15374,7 +15376,7 @@ _bfd_mips_elf_merge_private_bfd_data (bfd *ibfd, bfd *obfd)
out_tdata->abiflags.ases |= in_tdata->abiflags.ases;
out_tdata->abiflags.flags1 |= in_tdata->abiflags.flags1;
- if (!mips_elf_merge_obj_e_flags (ibfd, obfd))
+ if (!ok)
{
bfd_set_error (bfd_error_bad_value);
return FALSE;
diff --git a/ld/ChangeLog b/ld/ChangeLog
index 64eeded..8a062e1 100644
--- a/ld/ChangeLog
+++ b/ld/ChangeLog
@@ -1,3 +1,22 @@
+2016-01-04 Maciej W. Rozycki <macro@imgtec.com>
+
+ * testsuite/ld-mips-elf/attr-gnu-4-14.d: Update the order of
+ messages expected according to MIPS BFD private data merge
+ changes.
+ * testsuite/ld-mips-elf/attr-gnu-4-24.d: Likewise.
+ * testsuite/ld-mips-elf/attr-gnu-4-34.d: Likewise.
+ * testsuite/ld-mips-elf/attr-gnu-4-41.d: Likewise.
+ * testsuite/ld-mips-elf/attr-gnu-4-42.d: Likewise.
+ * testsuite/ld-mips-elf/attr-gnu-4-43.d: Likewise.
+ * testsuite/ld-mips-elf/attr-gnu-4-45.d: Likewise.
+ * testsuite/ld-mips-elf/attr-gnu-4-46.d: Likewise.
+ * testsuite/ld-mips-elf/attr-gnu-4-47.d: Likewise.
+ * testsuite/ld-mips-elf/attr-gnu-4-48.d: Likewise.
+ * testsuite/ld-mips-elf/attr-gnu-4-49.d: Likewise.
+ * testsuite/ld-mips-elf/attr-gnu-4-54.d: Likewise.
+ * testsuite/ld-mips-elf/attr-gnu-4-64.d: Likewise.
+ * testsuite/ld-mips-elf/attr-gnu-4-74.d: Likewise.
+
2016-01-01 Alan Modra <amodra@gmail.com>
Update year range in copyright notice of all files.
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 58cfd24..417ad0a 100644
--- a/ld/testsuite/ld-mips-elf/attr-gnu-4-14.d
+++ b/ld/testsuite/ld-mips-elf/attr-gnu-4-14.d
@@ -1,6 +1,6 @@
#source: attr-gnu-4-1.s
#source: attr-gnu-4-4.s -W
#ld: -r
-#error: \A[^\n]*: Warning: .* uses -mdouble-float \(set by .*\), .* uses -mips32r2 -mfp64 \(12 callee-saved\)\n
-#error: [^\n]*: [^\n]* linking -mfp64 module with previous -mfp32 modules\n
+#error: \A[^\n]*: [^\n]* linking -mfp64 module with previous -mfp32 modules\n
+#error: [^\n]*: Warning: .* uses -mdouble-float \(set by .*\), .* uses -mips32r2 -mfp64 \(12 callee-saved\)\n
#error: [^\n]*: failed to merge target specific data of file [^\n]*\.o\Z
diff --git a/ld/testsuite/ld-mips-elf/attr-gnu-4-24.d b/ld/testsuite/ld-mips-elf/attr-gnu-4-24.d
index e48e5bb..608ef0e 100644
--- a/ld/testsuite/ld-mips-elf/attr-gnu-4-24.d
+++ b/ld/testsuite/ld-mips-elf/attr-gnu-4-24.d
@@ -1,6 +1,6 @@
#source: attr-gnu-4-2.s
#source: attr-gnu-4-4.s -W
#ld: -r
-#error: \A[^\n]*: Warning: .* uses -msingle-float \(set by .*\), .* uses -mips32r2 -mfp64 \(12 callee-saved\)\n
-#error: [^\n]*: [^\n]* linking -mfp64 module with previous -mfp32 modules\n
+#error: \A[^\n]*: [^\n]* linking -mfp64 module with previous -mfp32 modules\n
+#error: [^\n]*: Warning: .* uses -msingle-float \(set by .*\), .* uses -mips32r2 -mfp64 \(12 callee-saved\)\n
#error: [^\n]*: failed to merge target specific data of file [^\n]*\.o\Z
diff --git a/ld/testsuite/ld-mips-elf/attr-gnu-4-34.d b/ld/testsuite/ld-mips-elf/attr-gnu-4-34.d
index 314515a..f8328b5 100644
--- a/ld/testsuite/ld-mips-elf/attr-gnu-4-34.d
+++ b/ld/testsuite/ld-mips-elf/attr-gnu-4-34.d
@@ -1,6 +1,6 @@
#source: attr-gnu-4-3.s
#source: attr-gnu-4-4.s -W
#ld: -r
-#error: \A[^\n]*: Warning: .* uses -msoft-float \(set by .*\), .* uses -mhard-float\n
-#error: [^\n]*: [^\n]* linking -mfp64 module with previous -mfp32 modules\n
+#error: \A[^\n]*: [^\n]* linking -mfp64 module with previous -mfp32 modules\n
+#error: [^\n]*: Warning: .* uses -msoft-float \(set by .*\), .* uses -mhard-float\n
#error: [^\n]*: failed to merge target specific data of file [^\n]*\.o\Z
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 7c61365..ff6e6e4 100644
--- a/ld/testsuite/ld-mips-elf/attr-gnu-4-41.d
+++ b/ld/testsuite/ld-mips-elf/attr-gnu-4-41.d
@@ -1,6 +1,6 @@
#source: attr-gnu-4-4.s -W
#source: attr-gnu-4-1.s
#ld: -r
-#error: \A[^\n]*: Warning: .* uses -mips32r2 -mfp64 \(12 callee-saved\) \(set by .*\), .* uses -mdouble-float\n
-#error: [^\n]*: [^\n]* linking -mfp32 module with previous -mfp64 modules\n
+#error: \A[^\n]*: [^\n]* linking -mfp32 module with previous -mfp64 modules\n
+#error: [^\n]*: Warning: .* uses -mips32r2 -mfp64 \(12 callee-saved\) \(set by .*\), .* uses -mdouble-float\n
#error: [^\n]*: failed to merge target specific data of file [^\n]*\.o\Z
diff --git a/ld/testsuite/ld-mips-elf/attr-gnu-4-42.d b/ld/testsuite/ld-mips-elf/attr-gnu-4-42.d
index dad0421..aa17693 100644
--- a/ld/testsuite/ld-mips-elf/attr-gnu-4-42.d
+++ b/ld/testsuite/ld-mips-elf/attr-gnu-4-42.d
@@ -1,6 +1,6 @@
#source: attr-gnu-4-4.s -W
#source: attr-gnu-4-2.s
#ld: -r
-#error: \A[^\n]*: Warning: .* uses -mips32r2 -mfp64 \(12 callee-saved\) \(set by .*\), .* uses -msingle-float\n
-#error: [^\n]*: [^\n]* linking -mfp32 module with previous -mfp64 modules\n
+#error: \A[^\n]*: [^\n]* linking -mfp32 module with previous -mfp64 modules\n
+#error: [^\n]*: Warning: .* uses -mips32r2 -mfp64 \(12 callee-saved\) \(set by .*\), .* uses -msingle-float\n
#error: [^\n]*: failed to merge target specific data of file [^\n]*\.o\Z
diff --git a/ld/testsuite/ld-mips-elf/attr-gnu-4-43.d b/ld/testsuite/ld-mips-elf/attr-gnu-4-43.d
index f30c18e..ddc0199 100644
--- a/ld/testsuite/ld-mips-elf/attr-gnu-4-43.d
+++ b/ld/testsuite/ld-mips-elf/attr-gnu-4-43.d
@@ -1,6 +1,6 @@
#source: attr-gnu-4-4.s -W
#source: attr-gnu-4-3.s
#ld: -r
-#error: \A[^\n]*: Warning: .* uses -mhard-float \(set by .*\), .* uses -msoft-float\n
-#error: [^\n]*: [^\n]* linking -mfp32 module with previous -mfp64 modules\n
+#error: \A[^\n]*: [^\n]* linking -mfp32 module with previous -mfp64 modules\n
+#error: [^\n]*: Warning: .* uses -mhard-float \(set by .*\), .* uses -msoft-float\n
#error: [^\n]*: failed to merge target specific data of file [^\n]*\.o\Z
diff --git a/ld/testsuite/ld-mips-elf/attr-gnu-4-45.d b/ld/testsuite/ld-mips-elf/attr-gnu-4-45.d
index c8716e3..b60b983 100644
--- a/ld/testsuite/ld-mips-elf/attr-gnu-4-45.d
+++ b/ld/testsuite/ld-mips-elf/attr-gnu-4-45.d
@@ -1,6 +1,6 @@
#source: attr-gnu-4-4.s -W -mips32r2
#source: attr-gnu-4-5.s
#ld: -r
-#error: \A[^\n]*: Warning: .* uses -mips32r2 -mfp64 \(12 callee-saved\) \(set by .*\), .* uses -mfpxx\n
-#error: [^\n]*: [^\n]* linking -mfp32 module with previous -mfp64 modules\n
+#error: \A[^\n]*: [^\n]* linking -mfp32 module with previous -mfp64 modules\n
+#error: [^\n]*: Warning: .* uses -mips32r2 -mfp64 \(12 callee-saved\) \(set by .*\), .* uses -mfpxx\n
#error: [^\n]*: failed to merge target specific data of file [^\n]*\.o\Z
diff --git a/ld/testsuite/ld-mips-elf/attr-gnu-4-46.d b/ld/testsuite/ld-mips-elf/attr-gnu-4-46.d
index 9fa1b01..82dd22b 100644
--- a/ld/testsuite/ld-mips-elf/attr-gnu-4-46.d
+++ b/ld/testsuite/ld-mips-elf/attr-gnu-4-46.d
@@ -1,6 +1,6 @@
#source: attr-gnu-4-4.s -W -mips32r2
#source: attr-gnu-4-6.s
#ld: -r
-#error: \A[^\n]*: Warning: .* uses -mips32r2 -mfp64 \(12 callee-saved\) \(set by .*\), .* uses -mgp32 -mfp64\n
-#error: [^\n]*: [^\n]* linking -mfp32 module with previous -mfp64 modules\n
+#error: \A[^\n]*: [^\n]* linking -mfp32 module with previous -mfp64 modules\n
+#error: [^\n]*: Warning: .* uses -mips32r2 -mfp64 \(12 callee-saved\) \(set by .*\), .* uses -mgp32 -mfp64\n
#error: [^\n]*: failed to merge target specific data of file [^\n]*\.o\Z
diff --git a/ld/testsuite/ld-mips-elf/attr-gnu-4-47.d b/ld/testsuite/ld-mips-elf/attr-gnu-4-47.d
index acb736b..eda8a27 100644
--- a/ld/testsuite/ld-mips-elf/attr-gnu-4-47.d
+++ b/ld/testsuite/ld-mips-elf/attr-gnu-4-47.d
@@ -1,6 +1,6 @@
#source: attr-gnu-4-4.s -W -mips32r2
#source: attr-gnu-4-7.s
#ld: -r
-#error: \A[^\n]*: Warning: .* uses -mips32r2 -mfp64 \(12 callee-saved\) \(set by .*\), .* uses -mgp32 -mfp64 -mno-odd-spreg\n
-#error: [^\n]*: [^\n]* linking -mfp32 module with previous -mfp64 modules\n
+#error: \A[^\n]*: [^\n]* linking -mfp32 module with previous -mfp64 modules\n
+#error: [^\n]*: Warning: .* uses -mips32r2 -mfp64 \(12 callee-saved\) \(set by .*\), .* uses -mgp32 -mfp64 -mno-odd-spreg\n
#error: [^\n]*: failed to merge target specific data of file [^\n]*\.o\Z
diff --git a/ld/testsuite/ld-mips-elf/attr-gnu-4-48.d b/ld/testsuite/ld-mips-elf/attr-gnu-4-48.d
index cb4dcb6..084922b 100644
--- a/ld/testsuite/ld-mips-elf/attr-gnu-4-48.d
+++ b/ld/testsuite/ld-mips-elf/attr-gnu-4-48.d
@@ -1,6 +1,6 @@
#source: attr-gnu-4-4.s -W
#source: attr-gnu-4-8.s -W
#ld: -r
-#error: \A[^\n]*: Warning: .* uses -mips32r2 -mfp64 \(12 callee-saved\) \(set by .*\), .* uses unknown floating point ABI 8\n
-#error: [^\n]*: [^\n]* linking -mfp32 module with previous -mfp64 modules\n
+#error: \A[^\n]*: [^\n]* linking -mfp32 module with previous -mfp64 modules\n
+#error: [^\n]*: Warning: .* uses -mips32r2 -mfp64 \(12 callee-saved\) \(set by .*\), .* uses unknown floating point ABI 8\n
#error: [^\n]*: failed to merge target specific data of file [^\n]*\.o\Z
diff --git a/ld/testsuite/ld-mips-elf/attr-gnu-4-49.d b/ld/testsuite/ld-mips-elf/attr-gnu-4-49.d
index d03074e..24e5145 100644
--- a/ld/testsuite/ld-mips-elf/attr-gnu-4-49.d
+++ b/ld/testsuite/ld-mips-elf/attr-gnu-4-49.d
@@ -1,6 +1,6 @@
#source: attr-gnu-4-4.s -W
#source: attr-gnu-4-9.s -W
#ld: -r
-#error: \A[^\n]*: Warning: .* uses -mips32r2 -mfp64 \(12 callee-saved\) \(set by .*\), .* uses unknown floating point ABI 9\n
-#error: [^\n]*: [^\n]* linking -mfp32 module with previous -mfp64 modules\n
+#error: \A[^\n]*: [^\n]* linking -mfp32 module with previous -mfp64 modules\n
+#error: [^\n]*: Warning: .* uses -mips32r2 -mfp64 \(12 callee-saved\) \(set by .*\), .* uses unknown floating point ABI 9\n
#error: [^\n]*: failed to merge target specific data of file [^\n]*\.o\Z
diff --git a/ld/testsuite/ld-mips-elf/attr-gnu-4-54.d b/ld/testsuite/ld-mips-elf/attr-gnu-4-54.d
index 04155af..70d6b94 100644
--- a/ld/testsuite/ld-mips-elf/attr-gnu-4-54.d
+++ b/ld/testsuite/ld-mips-elf/attr-gnu-4-54.d
@@ -1,6 +1,6 @@
#source: attr-gnu-4-5.s
#source: attr-gnu-4-4.s -W -mips32r2
#ld: -r
-#error: \A[^\n]*: Warning: .* uses -mfpxx \(set by .*\), .* uses -mips32r2 -mfp64 \(12 callee-saved\)\n
-#error: [^\n]*: [^\n]* linking -mfp64 module with previous -mfp32 modules\n
+#error: \A[^\n]*: [^\n]* linking -mfp64 module with previous -mfp32 modules\n
+#error: [^\n]*: Warning: .* uses -mfpxx \(set by .*\), .* uses -mips32r2 -mfp64 \(12 callee-saved\)\n
#error: [^\n]*: failed to merge target specific data of file [^\n]*\.o\Z
diff --git a/ld/testsuite/ld-mips-elf/attr-gnu-4-64.d b/ld/testsuite/ld-mips-elf/attr-gnu-4-64.d
index 98a3b34..9b4fbd8 100644
--- a/ld/testsuite/ld-mips-elf/attr-gnu-4-64.d
+++ b/ld/testsuite/ld-mips-elf/attr-gnu-4-64.d
@@ -1,6 +1,6 @@
#source: attr-gnu-4-6.s
#source: attr-gnu-4-4.s -W -mips32r2
#ld: -r
-#error: \A[^\n]*: Warning: .* uses -mgp32 -mfp64 \(set by .*\), .* uses -mips32r2 -mfp64 \(12 callee-saved\)\n
-#error: [^\n]*: [^\n]* linking -mfp64 module with previous -mfp32 modules\n
+#error: \A[^\n]*: [^\n]* linking -mfp64 module with previous -mfp32 modules\n
+#error: [^\n]*: Warning: .* uses -mgp32 -mfp64 \(set by .*\), .* uses -mips32r2 -mfp64 \(12 callee-saved\)\n
#error: [^\n]*: failed to merge target specific data of file [^\n]*\.o\Z
diff --git a/ld/testsuite/ld-mips-elf/attr-gnu-4-74.d b/ld/testsuite/ld-mips-elf/attr-gnu-4-74.d
index 90eeaff..e281ae5 100644
--- a/ld/testsuite/ld-mips-elf/attr-gnu-4-74.d
+++ b/ld/testsuite/ld-mips-elf/attr-gnu-4-74.d
@@ -1,6 +1,6 @@
#source: attr-gnu-4-7.s
#source: attr-gnu-4-4.s -W -mips32r2
#ld: -r
-#error: \A[^\n]*: Warning: .* uses -mgp32 -mfp64 -mno-odd-spreg \(set by .*\), .* uses -mips32r2 -mfp64 \(12 callee-saved\)\n
-#error: [^\n]*: [^\n]* linking -mfp64 module with previous -mfp32 modules\n
+#error: \A[^\n]*: [^\n]* linking -mfp64 module with previous -mfp32 modules\n
+#error: [^\n]*: Warning: .* uses -mgp32 -mfp64 -mno-odd-spreg \(set by .*\), .* uses -mips32r2 -mfp64 \(12 callee-saved\)\n
#error: [^\n]*: failed to merge target specific data of file [^\n]*\.o\Z