+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
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))
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. */
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];
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;
+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.
#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
#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
#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
#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
#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
#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
#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
#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
#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
#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
#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
#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
#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
#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