diff options
-rw-r--r-- | bfd/ChangeLog | 5 | ||||
-rw-r--r-- | bfd/elfxx-mips.c | 12 | ||||
-rw-r--r-- | ld/ChangeLog | 19 | ||||
-rw-r--r-- | ld/testsuite/ld-mips-elf/attr-gnu-4-14.d | 4 | ||||
-rw-r--r-- | ld/testsuite/ld-mips-elf/attr-gnu-4-24.d | 4 | ||||
-rw-r--r-- | ld/testsuite/ld-mips-elf/attr-gnu-4-34.d | 4 | ||||
-rw-r--r-- | ld/testsuite/ld-mips-elf/attr-gnu-4-41.d | 4 | ||||
-rw-r--r-- | ld/testsuite/ld-mips-elf/attr-gnu-4-42.d | 4 | ||||
-rw-r--r-- | ld/testsuite/ld-mips-elf/attr-gnu-4-43.d | 4 | ||||
-rw-r--r-- | ld/testsuite/ld-mips-elf/attr-gnu-4-45.d | 4 | ||||
-rw-r--r-- | ld/testsuite/ld-mips-elf/attr-gnu-4-46.d | 4 | ||||
-rw-r--r-- | ld/testsuite/ld-mips-elf/attr-gnu-4-47.d | 4 | ||||
-rw-r--r-- | ld/testsuite/ld-mips-elf/attr-gnu-4-48.d | 4 | ||||
-rw-r--r-- | ld/testsuite/ld-mips-elf/attr-gnu-4-49.d | 4 | ||||
-rw-r--r-- | ld/testsuite/ld-mips-elf/attr-gnu-4-54.d | 4 | ||||
-rw-r--r-- | ld/testsuite/ld-mips-elf/attr-gnu-4-64.d | 4 | ||||
-rw-r--r-- | ld/testsuite/ld-mips-elf/attr-gnu-4-74.d | 4 |
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 |