From a859124df20f6544dbef96084e4e024bccebd853 Mon Sep 17 00:00:00 2001 From: Alan Modra Date: Wed, 18 Mar 2020 07:31:47 +1030 Subject: [PATCH] tidy elf_backend calls Function pointers in elfNN_bed that are initialized by elfxx-target.h to non-zero values generally don't need a non-NULL test before calling them. Targets don't set a non-NULL function to NULL. The one exception being elfnn-ia64.c and that exception is removed here. * elf.c (_bfd_elf_setup_sections): Don't test known non-NULL backend functions for NULL before calling. (copy_special_section_fields, _bfd_elf_copy_private_bfd_data), (bfd_section_from_shdr, assign_section_numbers): Likewise. * elfcode.h (elf_write_relocs, elf_slurp_reloc_table): Likewise. * elfnn-ia64.c (ignore_errors): New function. (elf_backend_link_order_error_handler): Redefine as ignore_errors. --- bfd/ChangeLog | 10 ++++++++++ bfd/elf.c | 33 +++++++++++++++------------------ bfd/elfcode.h | 14 ++++++-------- bfd/elfnn-ia64.c | 7 ++++++- 4 files changed, 37 insertions(+), 27 deletions(-) diff --git a/bfd/ChangeLog b/bfd/ChangeLog index c58277203bc..6c2e26d24ef 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,3 +1,13 @@ +2020-03-20 Alan Modra + + * elf.c (_bfd_elf_setup_sections): Don't test known non-NULL + backend functions for NULL before calling. + (copy_special_section_fields, _bfd_elf_copy_private_bfd_data), + (bfd_section_from_shdr, assign_section_numbers): Likewise. + * elfcode.h (elf_write_relocs, elf_slurp_reloc_table): Likewise. + * elfnn-ia64.c (ignore_errors): New function. + (elf_backend_link_order_error_handler): Redefine as ignore_errors. + 2020-03-19 Nick Clifton PR 25676 diff --git a/bfd/elf.c b/bfd/elf.c index 6cbc389999d..975eeb06b80 100644 --- a/bfd/elf.c +++ b/bfd/elf.c @@ -857,11 +857,10 @@ _bfd_elf_setup_sections (bfd *abfd) if (elfsec == 0) { const struct elf_backend_data *bed = get_elf_backend_data (abfd); - if (bed->link_order_error_handler) - bed->link_order_error_handler - /* xgettext:c-format */ - (_("%pB: warning: sh_link not set for section `%pA'"), - abfd, s); + bed->link_order_error_handler + /* xgettext:c-format */ + (_("%pB: warning: sh_link not set for section `%pA'"), + abfd, s); } else { @@ -1424,9 +1423,8 @@ copy_special_section_fields (const bfd *ibfd, } /* Allow the target a chance to decide how these fields should be set. */ - if (bed->elf_backend_copy_special_section_fields != NULL - && bed->elf_backend_copy_special_section_fields - (ibfd, obfd, iheader, oheader)) + if (bed->elf_backend_copy_special_section_fields (ibfd, obfd, + iheader, oheader)) return TRUE; /* We have an iheader which might match oheader, and which has non-zero @@ -1610,8 +1608,8 @@ _bfd_elf_copy_private_bfd_data (bfd *ibfd, bfd *obfd) { /* Final attempt. Call the backend copy function with a NULL input section. */ - if (bed->elf_backend_copy_special_section_fields != NULL) - (void) bed->elf_backend_copy_special_section_fields (ibfd, obfd, NULL, oheader); + (void) bed->elf_backend_copy_special_section_fields (ibfd, obfd, + NULL, oheader); } } @@ -2462,12 +2460,12 @@ bfd_section_from_shdr (bfd *abfd, unsigned int shindex) sections. */ if (*p_hdr != NULL) { - if (bed->init_secondary_reloc_section == NULL - || ! bed->init_secondary_reloc_section (abfd, hdr, name, shindex)) + if (!bed->init_secondary_reloc_section (abfd, hdr, name, shindex)) { _bfd_error_handler /* xgettext:c-format */ - (_("%pB: warning: secondary relocation section '%s' for section %pA found - ignoring"), + (_("%pB: warning: secondary relocation section '%s' " + "for section %pA found - ignoring"), abfd, name, target_sect); } goto success; @@ -3940,11 +3938,10 @@ assign_section_numbers (bfd *abfd, struct bfd_link_info *link_info) where s is NULL. */ const struct elf_backend_data *bed = get_elf_backend_data (abfd); - if (bed->link_order_error_handler) - bed->link_order_error_handler - /* xgettext:c-format */ - (_("%pB: warning: sh_link not set for section `%pA'"), - abfd, sec); + bed->link_order_error_handler + /* xgettext:c-format */ + (_("%pB: warning: sh_link not set for section `%pA'"), + abfd, sec); } } diff --git a/bfd/elfcode.h b/bfd/elfcode.h index 7745c537658..68db3e9ee3d 100644 --- a/bfd/elfcode.h +++ b/bfd/elfcode.h @@ -987,12 +987,11 @@ elf_write_relocs (bfd *abfd, asection *sec, void *data) (*swap_out) (abfd, &src_rela, dst_rela); } - if (bed->write_secondary_relocs != NULL) - if (! bed->write_secondary_relocs (abfd, sec)) - { - *failedp = TRUE; - return; - } + if (!bed->write_secondary_relocs (abfd, sec)) + { + *failedp = TRUE; + return; + } } /* Write out the program headers. */ @@ -1596,8 +1595,7 @@ elf_slurp_reloc_table (bfd *abfd, symbols, dynamic)) return FALSE; - if (bed->slurp_secondary_relocs != NULL - && ! bed->slurp_secondary_relocs (abfd, asect, symbols)) + if (!bed->slurp_secondary_relocs (abfd, asect, symbols)) return FALSE; asect->relocation = relents; diff --git a/bfd/elfnn-ia64.c b/bfd/elfnn-ia64.c index 208b85df903..cd94158aba1 100644 --- a/bfd/elfnn-ia64.c +++ b/bfd/elfnn-ia64.c @@ -5015,6 +5015,11 @@ elfNN_hpux_backend_symbol_processing (bfd *abfd ATTRIBUTE_UNUSED, break; } } + +static void +ignore_errors (const char *fmt ATTRIBUTE_UNUSED, ...) +{ +} #define TARGET_LITTLE_SYM ia64_elfNN_le_vec #define TARGET_LITTLE_NAME "elfNN-ia64-little" @@ -5112,7 +5117,7 @@ elfNN_hpux_backend_symbol_processing (bfd *abfd ATTRIBUTE_UNUSED, We don't want to flood users with so many error messages. We turn off the warning for now. It will be turned on later when the Intel compiler is fixed. */ -#define elf_backend_link_order_error_handler NULL +#define elf_backend_link_order_error_handler ignore_errors #include "elfNN-target.h" -- 2.30.2