From 44466e45c51b1c68ed2f95f86bcdb1f18f08b380 Mon Sep 17 00:00:00 2001 From: Nick Clifton Date: Thu, 20 Aug 2020 10:19:47 +0100 Subject: Apply a workaround to mitigate a quadratic performance hit in the linker when writing out secondary reloc sections. PR 26406 * elf-bfd.h (struct bfd_elf_section_data): Add has_secondary_relocs field. * elf.c (_bfd_elf_copy_special_section_fields): Set the has_secondary_relocs field for sections which have associated secondary relocs. * elfcode.h (elf_write_relocs): Only call write_secondary_relocs on sections which have associated secondary relocs. --- bfd/elfcode.h | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'bfd/elfcode.h') diff --git a/bfd/elfcode.h b/bfd/elfcode.h index 84b08b5..2ed2f13 100644 --- a/bfd/elfcode.h +++ b/bfd/elfcode.h @@ -999,7 +999,8 @@ elf_write_relocs (bfd *abfd, asection *sec, void *data) (*swap_out) (abfd, &src_rela, dst_rela); } - if (!bed->write_secondary_relocs (abfd, sec)) + if (elf_section_data (sec)->has_secondary_relocs + && !bed->write_secondary_relocs (abfd, sec)) { *failedp = TRUE; return; -- cgit v1.1