File binutils-fix-invalid-op-errata.diff of Package cross-mips-binutils.15261

Also reported as PR25210.  There's a problem when using the two
linker options '--fix-cortex-a53-835769 --fix-cortex-a53-843419'
together.  This is the default in our distro, but not upstream so
it went unnoticed.

Leads to an error while linking any code that sports one of the
sequences that triggers the errata fixup (gcc being one of those),
namely:
ld: can not size stub section: invalid operation
ld: warning: cannot find entry symbol _start; defaulting to 0000000000400078
ld: linker stubs: file class ELFCLASSNONE incompatible with ELFCLASS64
ld: final link failed: file in wrong format

--- bfd/elfnn-aarch64.c.mm	2019-09-09 13:19:43.000000000 +0000
+++ bfd/elfnn-aarch64.c	2019-11-20 11:44:00.000000000 +0000
@@ -4313,7 +4313,8 @@ elfNN_aarch64_size_stubs (bfd *output_bfd,
 	      || (input_bfd->flags & BFD_LINKER_CREATED) != 0)
 	    continue;
 
-	  if (!_bfd_aarch64_erratum_835769_scan (input_bfd, info,
+	  if (input_bfd != stub_bfd
+	      && !_bfd_aarch64_erratum_835769_scan (input_bfd, info,
 						 &num_erratum_835769_fixes))
 	    return FALSE;
 	}
openSUSE Build Service is sponsored by