Set SEC_ELF_REVERSE_COPY earlier

Alan Modra amodra@gmail.com
Thu Jan 13 03:36:22 GMT 2022


Let's not rely on .init/.fini having relocs for the size sanity check.
This is mainly to squash reports of "my fuzzed object made ld hang".

diff --git a/bfd/elflink.c b/bfd/elflink.c
index 107480286f3..4529f83dbca 100644
--- a/bfd/elflink.c
+++ b/bfd/elflink.c
@@ -11834,9 +11834,10 @@ elf_link_input_bfd (struct elf_final_link_info *flinfo, bfd *input_bfd)
 		  {
 		    /* Reverse-copy input section to output.  */
 
-		    if (o->reloc_count != 0
-			&& (o->size * bed->s->int_rels_per_ext_rel
-			    != o->reloc_count * address_size))
+		    if ((o->size & (address_size - 1)) != 0
+			|| (o->reloc_count != 0
+			    && (o->size * bed->s->int_rels_per_ext_rel
+				!= o->reloc_count * address_size)))
 		      {
 			_bfd_error_handler
 			  /* xgettext:c-format */

-- 
Alan Modra
Australia Development Lab, IBM


More information about the Binutils mailing list