copy_private and merge_private functions

Alan Modra amodra@gmail.com
Fri Nov 21 23:30:01 GMT 2025


These are all called via BFD_SEND on the output bfd xvec.  Thus there
is no need to verify the output bfd flavour.  There *is* a need to
verify the input bfd flavour.  Also of course target specific data
shouldn't be accessed until the input target is verified.  Tidy these
issues in many places.

bfd_copy_private_section_data, bfd_copy_private_symbol_data, and
bfd_merge_private_bfd_data are macros.  Delete prototypes created via
synopsis entry in comments.

	* aout-target.h (MY_bfd_copy_private_section_data): Remove
	unnecessary output bfd flavour check.
	* coff-arm.c (coff_arm_merge_private_bfd_data): Likewise.
	* elf-m10300.c (_bfd_mn10300_elf_merge_private_bfd_data): Likewise.
	* ecoff.c (_bfd_ecoff_bfd_copy_private_bfd_data): Likewise, and
	move setup of pointers into target specific data after check.
	* elf.c (_bfd_elf_copy_private_bfd_data): Likewise.
	(_bfd_elf_copy_private_symbol_data): Likewise.
	(copy_private_bfd_data): Remove checks duplicating those done
	in caller.
	(_bfd_elf_copy_private_section_data): Remove unnecessary
	output bfd flavour check.
	(_bfd_elf_copy_private_header_data): Likewise.
	* elf32-arc.c (arc_elf_print_private_bfd_data): Likewise.
	(arc_elf_merge_private_bfd_data): Likewise.
	* elf32-arm.c (elf32_arm_copy_private_bfd_data): Likewise.
	(elf32_arm_merge_private_bfd_data): Likewise.
	* elf32-cr16.c (_bfd_cr16_elf_merge_private_bfd_data): Likewise.
	* elf32-cris.c (cris_elf_merge_private_bfd_data): Likewise.
	(cris_elf_merge_private_bfd_data): Likewise.
	* elf32-csky.c (csky_elf_merge_private_bfd_data): Likewise.
	* elf32-h8300.c (elf32_h8_merge_private_bfd_data): Likewise.
	* elf32-lm32.c (lm32_elf_fdpic_copy_private_bfd_data): Likewise.
	* elf32-m32r.c (m32r_elf_merge_private_bfd_data): Likewise.
	* elf32-m68hc1x.c (_bfd_m68hc11_elf_merge_private_bfd_data): Likewise.
	* elf32-m68k.c (elf32_m68k_merge_private_bfd_data): Likewise.
	* elf32-mcore.c (mcore_elf_merge_private_bfd_data): Likewise.
	* elf32-nds32.c (nds32_elf_merge_private_bfd_data): Likewise.
	* elf32-or1k.c (elf32_or1k_merge_private_bfd_data): Likewise, and
	move setup of pointers into target specific data after check.
	* elf32-ppc.c (ppc_elf_merge_private_bfd_data): Remove unnecessary
	output bfd flavour check.
	* elf32-s390.c (elf32_s390_merge_private_bfd_data): Likewise.
	* elf32-score.c (s3_elf32_score_merge_private_bfd_data): Likewise,
	and move check before target specific data accesss.
	* elf32-sh.c (sh_elf_copy_private_data): Remove unnecessary
	output bfd flavour check.
	(sh_elf_merge_private_data): Likewise.
	* elf32-sparc.c (elf32_sparc_merge_private_bfd_data): Likewise.
	* elf32-v850.c (v850_elf_merge_private_bfd_data): Likewise.
	* elf32-vax.c (elf32_vax_merge_private_bfd_data): Likewise.
	* elf32-visium.c (visium_elf_copy_private_bfd_data): Likewise.
	* elf32-xtensa.c (elf_xtensa_merge_private_bfd_data): Likewise.
	* elf64-ia64-vms.c (elf64_ia64_merge_private_bfd_data): Likewise.
	* elf64-ppc.c (ppc64_elf_merge_private_bfd_data): Likewise.
	* elf64-s390.c (elf64_s390_merge_private_bfd_data): Likewise.
	* elf64-sparc.c (elf64_sparc_merge_private_bfd_data): Likewise.
	* elfnn-aarch64.c (elfNN_aarch64_merge_private_bfd_data): Likewise.
	* elfnn-ia64.c (elfNN_ia64_merge_private_bfd_data): Likewise.
	* elfnn-kvx.c (elfNN_kvx_merge_private_bfd_data): Likewise.
	* elfnn-loongarch.c (elfNN_loongarch_merge_private_bfd_data): Likewise.
	* elfnn-riscv.c (_bfd_riscv_elf_merge_private_bfd_data): Likewise.
	* elfxx-mips.c (_bfd_mips_elf_merge_private_bfd_data): Likewise.
	* mach-o.c (bfd_mach_o_bfd_copy_private_section_data): Likewise.
	(bfd_mach_o_bfd_copy_private_header_data): Likewise.
	* mmo.c (mmo_bfd_copy_private_bfd_data): Likewise.
	* peXXigen.c (_bfd_XX_bfd_copy_private_bfd_data_common): Likewise.
	(_bfd_XX_bfd_copy_private_section_data): Likewise.
	* som.c (som_bfd_copy_private_section_data): Likewise.
	(som_bfd_copy_private_bfd_data): Likewise.
	(som_bfd_copy_private_symbol_data): Likewise, and move setup
	of pointers into target specific data after check.

	* elf32-bfin.c (elf32_bfin_merge_private_bfd_data): Check
	input bfd flavour.
	* elf32-frv.c (frv_elf_merge_private_bfd_data): Likewise.
	* elf32-iq2000.c (iq2000_elf_merge_private_bfd_data): Likewise.
	* elf32-m32c.c (m32c_elf_merge_private_bfd_data): Likewise.
	* elf32-mep.c (mep_elf_merge_private_bfd_data): Likewise.
	* elf32-rl78.c (rl78_elf_merge_private_bfd_data): Likewise.
	* elf32-rx.c (rx_elf_merge_private_bfd_data): Likewise.
	* elf32-score7.c (s7_elf32_score_merge_private_bfd_data): Likewise.
	* elf32-tic6x.c (elf32_tic6x_merge_private_bfd_data): Likewise.
	* elf32-v850.c (v850_elf_copy_notes): Likewise.
	* elf32-visium.c (visium_elf_merge_private_bfd_data): Likewise.
	* mach-o.c (bfd_mach_o_bfd_copy_private_symbol_data): Likewise.

	* linker.c (bfd_merge_private_bfd_data): Delete SYNOPSIS.
	* section.c (bfd_copy_private_section_data): Likewise.
	* syms.c (bfd_copy_private_symbol_data): Likewise.
	* bfd-in2.h: Regenerate.

diff --git a/bfd/aout-target.h b/bfd/aout-target.h
index 229e90b0175..046b1a947cf 100644
--- a/bfd/aout-target.h
+++ b/bfd/aout-target.h
@@ -218,8 +218,7 @@ MY_bfd_copy_private_section_data (bfd *ibfd,
 				  struct bfd_link_info *link_info)
 {
   if (link_info == NULL
-      && bfd_get_flavour (ibfd) == bfd_target_aout_flavour
-      && bfd_get_flavour (obfd) == bfd_target_aout_flavour)
+      && bfd_get_flavour (ibfd) == bfd_target_aout_flavour)
     obj_aout_subformat (obfd) = obj_aout_subformat (ibfd);
   return true;
 }
diff --git a/bfd/bfd-in2.h b/bfd/bfd-in2.h
index 4858fef4b1e..645c884bdb8 100644
--- a/bfd/bfd-in2.h
+++ b/bfd/bfd-in2.h
@@ -1045,10 +1045,6 @@ bool bfd_get_section_contents
 bool bfd_malloc_and_get_section
    (bfd *abfd, asection *section, bfd_byte **buf);
 
-bool bfd_copy_private_section_data
-   (bfd *ibfd, asection *isec, bfd *obfd, asection *osec,
-    struct bfd_link_info *link_info);
-
 #define bfd_copy_private_section_data(ibfd, isec, obfd, osec, link_info) \
        BFD_SEND (obfd, _bfd_copy_private_section_data, \
 		 (ibfd, isec, obfd, osec, link_info))
@@ -1272,9 +1268,6 @@ bool bfd_is_undefined_symclass (int symclass);
 
 void bfd_symbol_info (asymbol *symbol, symbol_info *ret);
 
-bool bfd_copy_private_symbol_data
-   (bfd *ibfd, asymbol *isym, bfd *obfd, asymbol *osym);
-
 #define bfd_copy_private_symbol_data(ibfd, isymbol, obfd, osymbol) \
        BFD_SEND (obfd, _bfd_copy_private_symbol_data, \
 		 (ibfd, isymbol, obfd, osymbol))
@@ -2996,9 +2989,6 @@ bool bfd_link_check_relocs
 bool _bfd_generic_link_check_relocs
    (bfd *abfd, struct bfd_link_info *info);
 
-bool bfd_merge_private_bfd_data
-   (bfd *ibfd, struct bfd_link_info *info);
-
 #define bfd_merge_private_bfd_data(ibfd, info) \
        BFD_SEND ((info)->output_bfd, _bfd_merge_private_bfd_data, \
 		 (ibfd, info))
diff --git a/bfd/coff-arm.c b/bfd/coff-arm.c
index babb1b23a63..87cea09ca62 100644
--- a/bfd/coff-arm.c
+++ b/bfd/coff-arm.c
@@ -2193,8 +2193,7 @@ coff_arm_merge_private_bfd_data (bfd * ibfd, struct bfd_link_info *info)
   /* If the two formats are different we cannot merge anything.
      This is not an error, since it is permissable to change the
      input and output formats.  */
-  if (   ibfd->xvec->flavour != bfd_target_coff_flavour
-      || obfd->xvec->flavour != bfd_target_coff_flavour)
+  if (ibfd->xvec->flavour != bfd_target_coff_flavour)
     return true;
 
   /* Determine what should happen if the input ARM architecture
diff --git a/bfd/ecoff.c b/bfd/ecoff.c
index 37cfa4a84a4..2af4519422b 100644
--- a/bfd/ecoff.c
+++ b/bfd/ecoff.c
@@ -1835,8 +1835,6 @@ _bfd_ecoff_find_nearest_line (bfd *abfd,
 bool
 _bfd_ecoff_bfd_copy_private_bfd_data (bfd *ibfd, bfd *obfd)
 {
-  struct ecoff_debug_info *iinfo = &ecoff_data (ibfd)->debug_info;
-  struct ecoff_debug_info *oinfo = &ecoff_data (obfd)->debug_info;
   int i;
   asymbol **sym_ptr_ptr;
   size_t c;
@@ -1844,8 +1842,7 @@ _bfd_ecoff_bfd_copy_private_bfd_data (bfd *ibfd, bfd *obfd)
 
   /* We only want to copy information over if both BFD's use ECOFF
      format.  */
-  if (bfd_get_flavour (ibfd) != bfd_target_ecoff_flavour
-      || bfd_get_flavour (obfd) != bfd_target_ecoff_flavour)
+  if (bfd_get_flavour (ibfd) != bfd_target_ecoff_flavour)
     return true;
 
   /* Copy the GP value and the register masks.  */
@@ -1856,6 +1853,8 @@ _bfd_ecoff_bfd_copy_private_bfd_data (bfd *ibfd, bfd *obfd)
     ecoff_data (obfd)->cprmask[i] = ecoff_data (ibfd)->cprmask[i];
 
   /* Copy the version stamp.  */
+  struct ecoff_debug_info *iinfo = &ecoff_data (ibfd)->debug_info;
+  struct ecoff_debug_info *oinfo = &ecoff_data (obfd)->debug_info;
   oinfo->symbolic_header.vstamp = iinfo->symbolic_header.vstamp;
 
   /* If there are no symbols, don't copy any debugging information.  */
diff --git a/bfd/elf-m10300.c b/bfd/elf-m10300.c
index b5babd23991..c2ed6e87a91 100644
--- a/bfd/elf-m10300.c
+++ b/bfd/elf-m10300.c
@@ -4707,8 +4707,7 @@ _bfd_mn10300_elf_merge_private_bfd_data (bfd *ibfd, struct bfd_link_info *info)
 {
   bfd *obfd = info->output_bfd;
 
-  if (bfd_get_flavour (ibfd) != bfd_target_elf_flavour
-      || bfd_get_flavour (obfd) != bfd_target_elf_flavour)
+  if (bfd_get_flavour (ibfd) != bfd_target_elf_flavour)
     return true;
 
   if (bfd_get_arch (obfd) == bfd_get_arch (ibfd)
diff --git a/bfd/elf.c b/bfd/elf.c
index bf50fc21f95..fff7e83fd34 100644
--- a/bfd/elf.c
+++ b/bfd/elf.c
@@ -1379,14 +1379,12 @@ copy_special_section_fields (const bfd *ibfd,
 bool
 _bfd_elf_copy_private_bfd_data (bfd *ibfd, bfd *obfd)
 {
-  const Elf_Internal_Shdr **iheaders
-    = (const Elf_Internal_Shdr **) elf_elfsections (ibfd);
-  Elf_Internal_Shdr **oheaders = elf_elfsections (obfd);
+  const Elf_Internal_Shdr **iheaders;
+  Elf_Internal_Shdr **oheaders;
   const struct elf_backend_data *bed;
   unsigned int i;
 
-  if (bfd_get_flavour (ibfd) != bfd_target_elf_flavour
-    || bfd_get_flavour (obfd) != bfd_target_elf_flavour)
+  if (bfd_get_flavour (ibfd) != bfd_target_elf_flavour)
     return true;
 
   if (!elf_flags_init (obfd))
@@ -1409,6 +1407,8 @@ _bfd_elf_copy_private_bfd_data (bfd *ibfd, bfd *obfd)
   /* Copy object attributes.  */
   _bfd_elf_copy_obj_attributes (ibfd, obfd);
 
+  iheaders = (const Elf_Internal_Shdr **) elf_elfsections (ibfd);
+  oheaders = elf_elfsections (obfd);
   if (iheaders == NULL || oheaders == NULL)
     return true;
 
@@ -8315,10 +8315,6 @@ copy_private_bfd_data (bfd *ibfd, bfd *obfd)
 {
   bfd_vma maxpagesize;
 
-  if (bfd_get_flavour (ibfd) != bfd_target_elf_flavour
-      || bfd_get_flavour (obfd) != bfd_target_elf_flavour)
-    return true;
-
   if (elf_tdata (ibfd)->phdr == NULL)
     return true;
 
@@ -8452,12 +8448,11 @@ copy_private_bfd_data (bfd *ibfd, bfd *obfd)
 bool
 _bfd_elf_copy_private_section_data (bfd *ibfd,
 				    asection *isec,
-				    bfd *obfd,
+				    bfd *obfd ATTRIBUTE_UNUSED,
 				    asection *osec,
 				    struct bfd_link_info *link_info)
 {
-  if (ibfd->xvec->flavour != bfd_target_elf_flavour
-      || obfd->xvec->flavour != bfd_target_elf_flavour)
+  if (ibfd->xvec->flavour != bfd_target_elf_flavour)
     return true;
 
   Elf_Internal_Shdr *ihdr = &elf_section_data (isec)->this_hdr;
@@ -8659,8 +8654,7 @@ _bfd_elf_fixup_group_sections (bfd *ibfd, asection *discarded)
 bool
 _bfd_elf_copy_private_header_data (bfd *ibfd, bfd *obfd)
 {
-  if (bfd_get_flavour (ibfd) != bfd_target_elf_flavour
-      || bfd_get_flavour (obfd) != bfd_target_elf_flavour)
+  if (bfd_get_flavour (ibfd) != bfd_target_elf_flavour)
     return true;
 
   /* Copy over private BFD data if it has not already been copied.
@@ -8692,18 +8686,14 @@ _bfd_elf_copy_private_header_data (bfd *ibfd, bfd *obfd)
 bool
 _bfd_elf_copy_private_symbol_data (bfd *ibfd,
 				   asymbol *isymarg,
-				   bfd *obfd,
+				   bfd *obfd ATTRIBUTE_UNUSED,
 				   asymbol *osymarg)
 {
-  elf_symbol_type *isym, *osym;
-
-  if (bfd_get_flavour (ibfd) != bfd_target_elf_flavour
-      || bfd_get_flavour (obfd) != bfd_target_elf_flavour)
+  if (bfd_get_flavour (ibfd) != bfd_target_elf_flavour)
     return true;
 
-  isym = elf_symbol_from (isymarg);
-  osym = elf_symbol_from (osymarg);
-
+  elf_symbol_type *isym = elf_symbol_from (isymarg);
+  elf_symbol_type *osym = elf_symbol_from (osymarg);
   if (isym != NULL
       && isym->internal_elf_sym.st_shndx != 0
       && osym != NULL
diff --git a/bfd/elf32-arc.c b/bfd/elf32-arc.c
index 5f6e9b41841..ee68cfd530c 100644
--- a/bfd/elf32-arc.c
+++ b/bfd/elf32-arc.c
@@ -485,8 +485,7 @@ arc_elf_print_private_bfd_data (bfd *abfd, void * ptr)
 static bool
 arc_elf_copy_private_bfd_data (bfd *ibfd, bfd *obfd)
 {
-  if (bfd_get_flavour (ibfd) != bfd_target_elf_flavour
-      || bfd_get_flavour (obfd) != bfd_target_elf_flavour)
+  if (bfd_get_flavour (ibfd) != bfd_target_elf_flavour)
     return true;
 
   BFD_ASSERT (!elf_flags_init (obfd)
@@ -868,8 +867,7 @@ arc_elf_merge_private_bfd_data (bfd *ibfd, struct bfd_link_info *info)
   if (! _bfd_generic_verify_endian_match (ibfd, info))
     return false;
 
-  if (bfd_get_flavour (ibfd) != bfd_target_elf_flavour
-      || bfd_get_flavour (obfd) != bfd_target_elf_flavour)
+  if (bfd_get_flavour (ibfd) != bfd_target_elf_flavour)
     return true;
 
   /* Collect ELF flags.  */
diff --git a/bfd/elf32-arm.c b/bfd/elf32-arm.c
index b1426e1744c..045837d5c42 100644
--- a/bfd/elf32-arm.c
+++ b/bfd/elf32-arm.c
@@ -13886,7 +13886,7 @@ elf32_arm_copy_private_bfd_data (bfd *ibfd, bfd *obfd)
   flagword in_flags;
   flagword out_flags;
 
-  if (! is_arm_elf (ibfd) || ! is_arm_elf (obfd))
+  if (! is_arm_elf (ibfd))
     return true;
 
   in_flags  = elf_elfheader (ibfd)->e_flags;
@@ -20412,7 +20412,7 @@ elf32_arm_merge_private_bfd_data (bfd *ibfd, struct bfd_link_info *info)
   if (! _bfd_generic_verify_endian_match (ibfd, info))
     return false;
 
-  if (! is_arm_elf (ibfd) || ! is_arm_elf (obfd))
+  if (! is_arm_elf (ibfd))
     return true;
 
   if (!elf32_arm_merge_eabi_attributes (ibfd, info))
diff --git a/bfd/elf32-bfin.c b/bfd/elf32-bfin.c
index 4da3e0ec0e7..a3f66ab138e 100644
--- a/bfd/elf32-bfin.c
+++ b/bfd/elf32-bfin.c
@@ -4759,6 +4759,9 @@ elf32_bfin_merge_private_bfd_data (bfd *ibfd, struct bfd_link_info *info)
   if ((ibfd->flags & DYNAMIC) != 0)
     return true;
 
+  if (bfd_get_flavour (ibfd) != bfd_target_elf_flavour)
+    return true;
+
   new_flags = elf_elfheader (ibfd)->e_flags;
   old_flags = elf_elfheader (obfd)->e_flags;
 
diff --git a/bfd/elf32-cr16.c b/bfd/elf32-cr16.c
index df3771bda89..9ddf654078c 100644
--- a/bfd/elf32-cr16.c
+++ b/bfd/elf32-cr16.c
@@ -1674,8 +1674,7 @@ _bfd_cr16_elf_merge_private_bfd_data (bfd *ibfd, struct bfd_link_info *info)
 {
   bfd *obfd = info->output_bfd;
 
-  if (bfd_get_flavour (ibfd) != bfd_target_elf_flavour
-      || bfd_get_flavour (obfd) != bfd_target_elf_flavour)
+  if (bfd_get_flavour (ibfd) != bfd_target_elf_flavour)
     return true;
 
   if (bfd_get_arch (obfd) == bfd_get_arch (ibfd)
diff --git a/bfd/elf32-cris.c b/bfd/elf32-cris.c
index cb88725cc50..7d90b836e35 100644
--- a/bfd/elf32-cris.c
+++ b/bfd/elf32-cris.c
@@ -3886,8 +3886,7 @@ cris_elf_merge_private_bfd_data (bfd *ibfd, struct bfd_link_info *info)
   if (! _bfd_generic_verify_endian_match (ibfd, info))
     return false;
 
-  if (bfd_get_flavour (ibfd) != bfd_target_elf_flavour
-      || bfd_get_flavour (obfd) != bfd_target_elf_flavour)
+  if (bfd_get_flavour (ibfd) != bfd_target_elf_flavour)
     return true;
 
   imach = bfd_get_mach (ibfd);
@@ -3958,8 +3957,7 @@ cris_elf_merge_private_bfd_data (bfd *ibfd, struct bfd_link_info *info)
 static bool
 cris_elf_copy_private_bfd_data (bfd *ibfd, bfd *obfd)
 {
-  if (bfd_get_flavour (ibfd) != bfd_target_elf_flavour
-      || bfd_get_flavour (obfd) != bfd_target_elf_flavour)
+  if (bfd_get_flavour (ibfd) != bfd_target_elf_flavour)
     return true;
 
   /* Call the base function.  */
diff --git a/bfd/elf32-csky.c b/bfd/elf32-csky.c
index 9ab0f49f434..e49f8b36355 100644
--- a/bfd/elf32-csky.c
+++ b/bfd/elf32-csky.c
@@ -3035,8 +3035,7 @@ csky_elf_merge_private_bfd_data (bfd *ibfd, struct bfd_link_info *info)
   if (! _bfd_generic_verify_endian_match (ibfd, info))
     return false;
 
-  if (bfd_get_flavour (ibfd) != bfd_target_elf_flavour
-      || bfd_get_flavour (obfd) != bfd_target_elf_flavour)
+  if (bfd_get_flavour (ibfd) != bfd_target_elf_flavour)
     return true;
 
   /* Merge ".csky.attribute" section.  */
diff --git a/bfd/elf32-frv.c b/bfd/elf32-frv.c
index baeb8ba3378..7dd354b8eac 100644
--- a/bfd/elf32-frv.c
+++ b/bfd/elf32-frv.c
@@ -6339,6 +6339,9 @@ frv_elf_merge_private_bfd_data (bfd *ibfd, struct bfd_link_info *info)
   if ((ibfd->flags & DYNAMIC) != 0)
     return true;
 
+  if (bfd_get_flavour (ibfd) != bfd_target_elf_flavour)
+    return true;
+
   new_opt[0] = old_opt[0] = '\0';
   new_flags = elf_elfheader (ibfd)->e_flags;
   old_flags = elf_elfheader (obfd)->e_flags;
diff --git a/bfd/elf32-h8300.c b/bfd/elf32-h8300.c
index e183577fca4..4e6649a2dbb 100644
--- a/bfd/elf32-h8300.c
+++ b/bfd/elf32-h8300.c
@@ -647,8 +647,7 @@ elf32_h8_merge_private_bfd_data (bfd *ibfd, struct bfd_link_info *info)
 {
   bfd *obfd = info->output_bfd;
 
-  if (bfd_get_flavour (ibfd) != bfd_target_elf_flavour
-      || bfd_get_flavour (obfd) != bfd_target_elf_flavour)
+  if (bfd_get_flavour (ibfd) != bfd_target_elf_flavour)
     return true;
 
   if (bfd_get_arch (obfd) == bfd_get_arch (ibfd)
diff --git a/bfd/elf32-iq2000.c b/bfd/elf32-iq2000.c
index d4d7188aa0a..4b094d22814 100644
--- a/bfd/elf32-iq2000.c
+++ b/bfd/elf32-iq2000.c
@@ -777,6 +777,9 @@ iq2000_elf_merge_private_bfd_data (bfd *ibfd, struct bfd_link_info *info)
   char new_opt[80];
   char old_opt[80];
 
+  if (bfd_get_flavour (ibfd) != bfd_target_elf_flavour)
+    return true;
+
   new_opt[0] = old_opt[0] = '\0';
   new_flags = elf_elfheader (ibfd)->e_flags;
   old_flags = elf_elfheader (obfd)->e_flags;
diff --git a/bfd/elf32-lm32.c b/bfd/elf32-lm32.c
index f8568d76ed1..ec916aaf1b4 100644
--- a/bfd/elf32-lm32.c
+++ b/bfd/elf32-lm32.c
@@ -2332,15 +2332,13 @@ lm32_elf_fdpic_copy_private_bfd_data (bfd *ibfd, bfd *obfd)
 {
   unsigned i;
 
-  if (bfd_get_flavour (ibfd) != bfd_target_elf_flavour
-      || bfd_get_flavour (obfd) != bfd_target_elf_flavour)
+  if (bfd_get_flavour (ibfd) != bfd_target_elf_flavour)
     return true;
 
   if (! _bfd_elf_copy_private_bfd_data (ibfd, obfd))
     return false;
 
-  if (! elf_tdata (ibfd) || ! elf_tdata (ibfd)->phdr
-      || ! elf_tdata (obfd) || ! elf_tdata (obfd)->phdr)
+  if (! elf_tdata (ibfd)->phdr || ! elf_tdata (obfd)->phdr)
     return true;
 
   /* Copy the stack size.  */
diff --git a/bfd/elf32-m32c.c b/bfd/elf32-m32c.c
index 8f6881bcb0b..93cd2d525d9 100644
--- a/bfd/elf32-m32c.c
+++ b/bfd/elf32-m32c.c
@@ -821,6 +821,9 @@ m32c_elf_merge_private_bfd_data (bfd *ibfd, struct bfd_link_info *info)
   char new_opt[80];
   char old_opt[80];
 
+  if (bfd_get_flavour (ibfd) != bfd_target_elf_flavour)
+    return true;
+
   new_opt[0] = old_opt[0] = '\0';
   new_flags = elf_elfheader (ibfd)->e_flags;
   old_flags = elf_elfheader (obfd)->e_flags;
diff --git a/bfd/elf32-m32r.c b/bfd/elf32-m32r.c
index 5444ddaa127..f21939bf774 100644
--- a/bfd/elf32-m32r.c
+++ b/bfd/elf32-m32r.c
@@ -3237,8 +3237,7 @@ m32r_elf_merge_private_bfd_data (bfd *ibfd, struct bfd_link_info *info)
   flagword out_flags;
   flagword in_flags;
 
-  if (   bfd_get_flavour (ibfd) != bfd_target_elf_flavour
-      || bfd_get_flavour (obfd) != bfd_target_elf_flavour)
+  if (bfd_get_flavour (ibfd) != bfd_target_elf_flavour)
     return true;
 
   in_flags  = elf_elfheader (ibfd)->e_flags;
diff --git a/bfd/elf32-m68hc1x.c b/bfd/elf32-m68hc1x.c
index 7e8e0383717..b9e20eef068 100644
--- a/bfd/elf32-m68hc1x.c
+++ b/bfd/elf32-m68hc1x.c
@@ -1325,8 +1325,7 @@ _bfd_m68hc11_elf_merge_private_bfd_data (bfd *ibfd, struct bfd_link_info *info)
   if (!_bfd_generic_verify_endian_match (ibfd, info))
     return false;
 
-  if (bfd_get_flavour (ibfd) != bfd_target_elf_flavour
-      || bfd_get_flavour (obfd) != bfd_target_elf_flavour)
+  if (bfd_get_flavour (ibfd) != bfd_target_elf_flavour)
     return true;
 
   new_flags = elf_elfheader (ibfd)->e_flags;
diff --git a/bfd/elf32-m68k.c b/bfd/elf32-m68k.c
index b1147ad7d9f..41bc5aef0aa 100644
--- a/bfd/elf32-m68k.c
+++ b/bfd/elf32-m68k.c
@@ -1190,8 +1190,7 @@ elf32_m68k_merge_private_bfd_data (bfd *ibfd, struct bfd_link_info *info)
   flagword in_isa;
   const bfd_arch_info_type *arch_info;
 
-  if (bfd_get_flavour (ibfd) != bfd_target_elf_flavour
-      || bfd_get_flavour (obfd) != bfd_target_elf_flavour)
+  if (bfd_get_flavour (ibfd) != bfd_target_elf_flavour)
     /* PR 24523: For non-ELF files do not try to merge any private
        data, but also do not prevent the link from succeeding.  */
     return true;
diff --git a/bfd/elf32-mcore.c b/bfd/elf32-mcore.c
index 96e921ef64d..4c916fc68e9 100644
--- a/bfd/elf32-mcore.c
+++ b/bfd/elf32-mcore.c
@@ -59,8 +59,7 @@ mcore_elf_merge_private_bfd_data (bfd *ibfd, struct bfd_link_info *info)
   if (! _bfd_generic_verify_endian_match (ibfd, info))
     return false;
 
-  if (   bfd_get_flavour (ibfd) != bfd_target_elf_flavour
-      || bfd_get_flavour (obfd) != bfd_target_elf_flavour)
+  if (bfd_get_flavour (ibfd) != bfd_target_elf_flavour)
     return true;
 
   new_flags = elf_elfheader (ibfd)->e_flags;
diff --git a/bfd/elf32-mep.c b/bfd/elf32-mep.c
index 0188fd04f25..58b4cd05d16 100644
--- a/bfd/elf32-mep.c
+++ b/bfd/elf32-mep.c
@@ -580,6 +580,9 @@ mep_elf_merge_private_bfd_data (bfd *ibfd, struct bfd_link_info *info)
   if (!_bfd_generic_verify_endian_match (ibfd, info))
     return false;
 
+  if (bfd_get_flavour (ibfd) != bfd_target_elf_flavour)
+    return true;
+
   new_flags = elf_elfheader (ibfd)->e_flags;
   old_flags = elf_elfheader (obfd)->e_flags;
 
diff --git a/bfd/elf32-nds32.c b/bfd/elf32-nds32.c
index 02c6ced7e1f..2341939e2a7 100644
--- a/bfd/elf32-nds32.c
+++ b/bfd/elf32-nds32.c
@@ -6731,8 +6731,7 @@ nds32_elf_merge_private_bfd_data (bfd *ibfd, struct bfd_link_info *info)
   if (!nds32_check_vec_size (ibfd))
     return false;
 
-  if (bfd_get_flavour (ibfd) != bfd_target_elf_flavour
-      || bfd_get_flavour (obfd) != bfd_target_elf_flavour)
+  if (bfd_get_flavour (ibfd) != bfd_target_elf_flavour)
     return true;
 
   if (bfd_little_endian (ibfd) != bfd_little_endian (obfd))
diff --git a/bfd/elf32-or1k.c b/bfd/elf32-or1k.c
index 0f315184310..10abd878c1c 100644
--- a/bfd/elf32-or1k.c
+++ b/bfd/elf32-or1k.c
@@ -3290,13 +3290,12 @@ elf32_or1k_merge_private_bfd_data (bfd *ibfd, struct bfd_link_info *info)
   flagword out_flags;
   flagword in_flags;
 
+  if (bfd_get_flavour (ibfd) != bfd_target_elf_flavour)
+    return true;
+
   in_flags  = elf_elfheader (ibfd)->e_flags;
   out_flags = elf_elfheader (obfd)->e_flags;
 
-  if (bfd_get_flavour (ibfd) != bfd_target_elf_flavour
-      || bfd_get_flavour (obfd) != bfd_target_elf_flavour)
-    return true;
-
   if (!elf_flags_init (obfd))
     {
       elf_flags_init (obfd) = true;
diff --git a/bfd/elf32-ppc.c b/bfd/elf32-ppc.c
index f95f7a9c1b5..dd094357c1c 100644
--- a/bfd/elf32-ppc.c
+++ b/bfd/elf32-ppc.c
@@ -3765,7 +3765,7 @@ ppc_elf_merge_private_bfd_data (bfd *ibfd, struct bfd_link_info *info)
   flagword new_flags;
   bool error;
 
-  if (!is_ppc_elf (ibfd) || !is_ppc_elf (obfd))
+  if (!is_ppc_elf (ibfd))
     return true;
 
   /* Check if we have the same endianness.  */
diff --git a/bfd/elf32-rl78.c b/bfd/elf32-rl78.c
index 98131e0cd84..b44fabbcdbe 100644
--- a/bfd/elf32-rl78.c
+++ b/bfd/elf32-rl78.c
@@ -1186,6 +1186,9 @@ rl78_elf_merge_private_bfd_data (bfd *ibfd, struct bfd_link_info *info)
   flagword old_flags;
   bool error = false;
 
+  if (bfd_get_flavour (ibfd) != bfd_target_elf_flavour)
+    return true;
+
   new_flags = elf_elfheader (ibfd)->e_flags;
   old_flags = elf_elfheader (obfd)->e_flags;
 
diff --git a/bfd/elf32-rx.c b/bfd/elf32-rx.c
index 5c8921e27c4..5bd21456a60 100644
--- a/bfd/elf32-rx.c
+++ b/bfd/elf32-rx.c
@@ -3138,6 +3138,9 @@ rx_elf_merge_private_bfd_data (bfd * ibfd, struct bfd_link_info *info)
   flagword new_flags;
   bool error = false;
 
+  if (bfd_get_flavour (ibfd) != bfd_target_elf_flavour)
+    return true;
+
   new_flags = elf_elfheader (ibfd)->e_flags;
   old_flags = elf_elfheader (obfd)->e_flags;
 
diff --git a/bfd/elf32-s390.c b/bfd/elf32-s390.c
index 252ec44f409..b53d1a49dd3 100644
--- a/bfd/elf32-s390.c
+++ b/bfd/elf32-s390.c
@@ -3884,7 +3884,7 @@ elf32_s390_merge_private_bfd_data (bfd *ibfd, struct bfd_link_info *info)
 {
   bfd *obfd = info->output_bfd;
 
-  if (!is_s390_elf (ibfd) || !is_s390_elf (obfd))
+  if (!is_s390_elf (ibfd))
     return true;
 
   if (!elf_s390_merge_obj_attributes (ibfd, info))
diff --git a/bfd/elf32-score.c b/bfd/elf32-score.c
index 624b8a8b591..7084e4d9f4f 100644
--- a/bfd/elf32-score.c
+++ b/bfd/elf32-score.c
@@ -4012,13 +4012,12 @@ s3_elf32_score_merge_private_bfd_data (bfd *ibfd, struct bfd_link_info *info)
   if ((ibfd->flags & DYNAMIC) != 0)
     return true;
 
+  if (bfd_get_flavour (ibfd) != bfd_target_elf_flavour)
+    return true;
+
   in_flags  = elf_elfheader (ibfd)->e_flags;
   out_flags = elf_elfheader (obfd)->e_flags;
 
-  if (bfd_get_flavour (ibfd) != bfd_target_elf_flavour
-      || bfd_get_flavour (obfd) != bfd_target_elf_flavour)
-    return true;
-
   in_flags = elf_elfheader (ibfd)->e_flags;
   out_flags = elf_elfheader (obfd)->e_flags;
 
diff --git a/bfd/elf32-score7.c b/bfd/elf32-score7.c
index a586831ec9f..eb8b1eb15aa 100644
--- a/bfd/elf32-score7.c
+++ b/bfd/elf32-score7.c
@@ -3819,6 +3819,9 @@ s7_elf32_score_merge_private_bfd_data (bfd *ibfd, struct bfd_link_info *info)
   if ((ibfd->flags & DYNAMIC) != 0)
     return true;
 
+  if (bfd_get_flavour (ibfd) != bfd_target_elf_flavour)
+    return true;
+
   in_flags  = elf_elfheader (ibfd)->e_flags;
   out_flags = elf_elfheader (obfd)->e_flags;
 
diff --git a/bfd/elf32-sh.c b/bfd/elf32-sh.c
index f4efd7bba7c..da00593e96d 100644
--- a/bfd/elf32-sh.c
+++ b/bfd/elf32-sh.c
@@ -5797,7 +5797,7 @@ sh_elf_get_flags_from_mach (unsigned long mach)
 static bool
 sh_elf_copy_private_data (bfd * ibfd, bfd * obfd)
 {
-  if (! is_sh_elf (ibfd) || ! is_sh_elf (obfd))
+  if (! is_sh_elf (ibfd))
     return true;
 
   if (! _bfd_elf_copy_private_bfd_data (ibfd, obfd))
@@ -5884,7 +5884,7 @@ sh_elf_merge_private_data (bfd *ibfd, struct bfd_link_info *info)
   if ((ibfd->flags & DYNAMIC) != 0)
     return true;
 
-  if (! is_sh_elf (ibfd) || ! is_sh_elf (obfd))
+  if (! is_sh_elf (ibfd))
     return true;
 
   if (! elf_flags_init (obfd))
diff --git a/bfd/elf32-sparc.c b/bfd/elf32-sparc.c
index 0bb86f1c4b5..99729eae2d3 100644
--- a/bfd/elf32-sparc.c
+++ b/bfd/elf32-sparc.c
@@ -75,8 +75,7 @@ elf32_sparc_merge_private_bfd_data (bfd *ibfd, struct bfd_link_info *info)
   /* FIXME: This should not be static.  */
   static unsigned long previous_ibfd_e_flags = (unsigned long) -1;
 
-  if (bfd_get_flavour (ibfd) != bfd_target_elf_flavour
-      || bfd_get_flavour (obfd) != bfd_target_elf_flavour)
+  if (bfd_get_flavour (ibfd) != bfd_target_elf_flavour)
     return true;
 
   error = false;
diff --git a/bfd/elf32-tic6x.c b/bfd/elf32-tic6x.c
index eb980f9268c..81ca6057e44 100644
--- a/bfd/elf32-tic6x.c
+++ b/bfd/elf32-tic6x.c
@@ -3790,7 +3790,7 @@ elf32_tic6x_merge_private_bfd_data (bfd *ibfd, struct bfd_link_info *info)
   if (!_bfd_generic_verify_endian_match (ibfd, info))
     return false;
 
-  if (! is_tic6x_elf (ibfd) || ! is_tic6x_elf (info->output_bfd))
+  if (! is_tic6x_elf (ibfd))
     return true;
 
   if (!elf32_tic6x_merge_attributes (ibfd, info))
diff --git a/bfd/elf32-v850.c b/bfd/elf32-v850.c
index 5f9a8f64a3f..2ba734a9b80 100644
--- a/bfd/elf32-v850.c
+++ b/bfd/elf32-v850.c
@@ -2458,7 +2458,8 @@ v850_elf_copy_notes (bfd *ibfd, bfd *obfd)
       bfd_byte * icont;
       bfd_byte * ocont;
 
-      if ((icont = elf_section_data (inotes)->this_hdr.contents) == NULL)
+      if (bfd_get_flavour (ibfd) != bfd_target_elf_flavour
+	  || (icont = elf_section_data (inotes)->this_hdr.contents) == NULL)
 	BFD_ASSERT (bfd_malloc_and_get_section (ibfd, inotes, & icont));
 
       if ((ocont = elf_section_data (onotes)->this_hdr.contents) == NULL)
@@ -2786,8 +2787,7 @@ v850_elf_merge_private_bfd_data (bfd *ibfd, struct bfd_link_info *info)
   flagword in_flags;
   bool result = true;
 
-  if (   bfd_get_flavour (ibfd) != bfd_target_elf_flavour
-      || bfd_get_flavour (obfd) != bfd_target_elf_flavour)
+  if (bfd_get_flavour (ibfd) != bfd_target_elf_flavour)
     return true;
 
   result &= v850_elf_merge_notes (ibfd, obfd);
diff --git a/bfd/elf32-vax.c b/bfd/elf32-vax.c
index aa21c74b3f9..8d5c18d00f8 100644
--- a/bfd/elf32-vax.c
+++ b/bfd/elf32-vax.c
@@ -502,8 +502,7 @@ elf32_vax_merge_private_bfd_data (bfd *ibfd, struct bfd_link_info *info)
   bfd *obfd = info->output_bfd;
   flagword in_flags;
 
-  if (   bfd_get_flavour (ibfd) != bfd_target_elf_flavour
-      || bfd_get_flavour (obfd) != bfd_target_elf_flavour)
+  if (bfd_get_flavour (ibfd) != bfd_target_elf_flavour)
     return true;
 
   in_flags  = elf_elfheader (ibfd)->e_flags;
diff --git a/bfd/elf32-visium.c b/bfd/elf32-visium.c
index 0475a029d8c..dfc69b2634e 100644
--- a/bfd/elf32-visium.c
+++ b/bfd/elf32-visium.c
@@ -743,8 +743,7 @@ visium_elf_set_private_flags (bfd *abfd, flagword flags)
 static bool
 visium_elf_copy_private_bfd_data (bfd *ibfd, bfd *obfd)
 {
-  if (bfd_get_flavour (ibfd) != bfd_target_elf_flavour
-      || bfd_get_flavour (obfd) != bfd_target_elf_flavour)
+  if (bfd_get_flavour (ibfd) != bfd_target_elf_flavour)
     return true;
 
   BFD_ASSERT (!elf_flags_init (obfd)
@@ -779,6 +778,9 @@ visium_elf_merge_private_bfd_data (bfd *ibfd, struct bfd_link_info *info)
   const char *mcm24 = "mcm24";
   const char *gr6 = "gr6";
 
+  if (bfd_get_flavour (ibfd) != bfd_target_elf_flavour)
+    return true;
+
   new_flags = elf_elfheader (ibfd)->e_flags;
   old_flags = elf_elfheader (obfd)->e_flags;
 
diff --git a/bfd/elf32-xtensa.c b/bfd/elf32-xtensa.c
index c2be35eb4b7..20b6292c14e 100644
--- a/bfd/elf32-xtensa.c
+++ b/bfd/elf32-xtensa.c
@@ -3419,8 +3419,7 @@ elf_xtensa_merge_private_bfd_data (bfd *ibfd, struct bfd_link_info *info)
     return false;
 
   /* Don't even pretend to support mixed-format linking.  */
-  if (bfd_get_flavour (ibfd) != bfd_target_elf_flavour
-      || bfd_get_flavour (obfd) != bfd_target_elf_flavour)
+  if (bfd_get_flavour (ibfd) != bfd_target_elf_flavour)
     return false;
 
   out_flag = elf_elfheader (obfd)->e_flags;
diff --git a/bfd/elf64-ia64-vms.c b/bfd/elf64-ia64-vms.c
index 8f80a92e23f..538b7237c6b 100644
--- a/bfd/elf64-ia64-vms.c
+++ b/bfd/elf64-ia64-vms.c
@@ -4226,8 +4226,7 @@ elf64_ia64_merge_private_bfd_data (bfd *ibfd, struct bfd_link_info *info)
     return true;
 
   /* Don't even pretend to support mixed-format linking.  */
-  if (bfd_get_flavour (ibfd) != bfd_target_elf_flavour
-      || bfd_get_flavour (obfd) != bfd_target_elf_flavour)
+  if (bfd_get_flavour (ibfd) != bfd_target_elf_flavour)
     return false;
 
   in_flags  = elf_elfheader (ibfd)->e_flags;
diff --git a/bfd/elf64-ppc.c b/bfd/elf64-ppc.c
index b01b5fc7c83..818609142ef 100644
--- a/bfd/elf64-ppc.c
+++ b/bfd/elf64-ppc.c
@@ -5476,7 +5476,7 @@ ppc64_elf_merge_private_bfd_data (bfd *ibfd, struct bfd_link_info *info)
   if ((ibfd->flags & BFD_LINKER_CREATED) != 0)
     return true;
 
-  if (!is_ppc64_elf (ibfd) || !is_ppc64_elf (obfd))
+  if (!is_ppc64_elf (ibfd))
     return true;
 
   if (!_bfd_generic_verify_endian_match (ibfd, info))
diff --git a/bfd/elf64-s390.c b/bfd/elf64-s390.c
index 6394f27e0e2..5df77f2fe88 100644
--- a/bfd/elf64-s390.c
+++ b/bfd/elf64-s390.c
@@ -4188,7 +4188,7 @@ elf_s390_plt_sym_val (bfd_vma i, const asection *plt,
 static bool
 elf64_s390_merge_private_bfd_data (bfd *ibfd, struct bfd_link_info *info)
 {
-  if (!is_s390_elf (ibfd) || !is_s390_elf (info->output_bfd))
+  if (!is_s390_elf (ibfd))
     return true;
 
   return elf_s390_merge_obj_attributes (ibfd, info);
diff --git a/bfd/elf64-sparc.c b/bfd/elf64-sparc.c
index 4a0126ef69b..dfe4f1b7c18 100644
--- a/bfd/elf64-sparc.c
+++ b/bfd/elf64-sparc.c
@@ -672,8 +672,7 @@ elf64_sparc_merge_private_bfd_data (bfd *ibfd, struct bfd_link_info *info)
   flagword new_flags, old_flags;
   int new_mm, old_mm;
 
-  if (bfd_get_flavour (ibfd) != bfd_target_elf_flavour
-      || bfd_get_flavour (obfd) != bfd_target_elf_flavour)
+  if (bfd_get_flavour (ibfd) != bfd_target_elf_flavour)
     return true;
 
   new_flags = elf_elfheader (ibfd)->e_flags;
diff --git a/bfd/elfnn-aarch64.c b/bfd/elfnn-aarch64.c
index 60bc946d196..89cf50bf2a7 100644
--- a/bfd/elfnn-aarch64.c
+++ b/bfd/elfnn-aarch64.c
@@ -7499,7 +7499,7 @@ elfNN_aarch64_merge_private_bfd_data (bfd *ibfd, struct bfd_link_info *info)
   if (!_bfd_generic_verify_endian_match (ibfd, info))
     return false;
 
-  if (!is_aarch64_elf (ibfd) || !is_aarch64_elf (obfd))
+  if (!is_aarch64_elf (ibfd))
     return true;
 
   /* The input BFD must have had its flags initialised.  */
diff --git a/bfd/elfnn-ia64.c b/bfd/elfnn-ia64.c
index abee1516505..e0c3a8c9428 100644
--- a/bfd/elfnn-ia64.c
+++ b/bfd/elfnn-ia64.c
@@ -4704,7 +4704,7 @@ elfNN_ia64_merge_private_bfd_data (bfd *ibfd, struct bfd_link_info *info)
   if ((ibfd->flags & DYNAMIC) != 0)
     return true;
 
-  if (!is_ia64_elf (ibfd) || !is_ia64_elf (obfd))
+  if (!is_ia64_elf (ibfd))
     return true;
 
   in_flags  = elf_elfheader (ibfd)->e_flags;
diff --git a/bfd/elfnn-kvx.c b/bfd/elfnn-kvx.c
index fb71a5bc962..853ccfd0e95 100644
--- a/bfd/elfnn-kvx.c
+++ b/bfd/elfnn-kvx.c
@@ -2889,7 +2889,7 @@ elfNN_kvx_merge_private_bfd_data (bfd *ibfd, struct bfd_link_info *info)
   if (!_bfd_generic_verify_endian_match (ibfd, info))
     return false;
 
-  if (!is_kvx_elf (ibfd) || !is_kvx_elf (obfd))
+  if (!is_kvx_elf (ibfd))
     return true;
 
   /* The input BFD must have had its flags initialised.  */
diff --git a/bfd/elfnn-loongarch.c b/bfd/elfnn-loongarch.c
index bac9bf6849c..4abfd80fd47 100644
--- a/bfd/elfnn-loongarch.c
+++ b/bfd/elfnn-loongarch.c
@@ -529,7 +529,7 @@ elfNN_loongarch_merge_private_bfd_data (bfd *ibfd, struct bfd_link_info *info)
   flagword in_flags = elf_elfheader (ibfd)->e_flags;
   flagword out_flags = elf_elfheader (obfd)->e_flags;
 
-  if (!is_loongarch_elf (ibfd) || !is_loongarch_elf (obfd))
+  if (!is_loongarch_elf (ibfd))
     return true;
 
   if (strcmp (bfd_get_target (ibfd), bfd_get_target (obfd)) != 0)
diff --git a/bfd/elfnn-riscv.c b/bfd/elfnn-riscv.c
index dd5268b7d16..a6bb6cfb589 100644
--- a/bfd/elfnn-riscv.c
+++ b/bfd/elfnn-riscv.c
@@ -4380,7 +4380,7 @@ _bfd_riscv_elf_merge_private_bfd_data (bfd *ibfd, struct bfd_link_info *info)
   bfd *obfd = info->output_bfd;
   flagword new_flags, old_flags;
 
-  if (!is_riscv_elf (ibfd) || !is_riscv_elf (obfd))
+  if (!is_riscv_elf (ibfd))
     return true;
 
   if (strcmp (bfd_get_target (ibfd), bfd_get_target (obfd)) != 0)
diff --git a/bfd/elfxx-mips.c b/bfd/elfxx-mips.c
index 4460531e584..b8809a4b1da 100644
--- a/bfd/elfxx-mips.c
+++ b/bfd/elfxx-mips.c
@@ -15987,7 +15987,7 @@ _bfd_mips_elf_merge_private_bfd_data (bfd *ibfd, struct bfd_link_info *info)
       return false;
     }
 
-  if (!is_mips_elf (ibfd) || !is_mips_elf (obfd))
+  if (!is_mips_elf (ibfd))
     return true;
 
   in_tdata = mips_elf_tdata (ibfd);
diff --git a/bfd/linker.c b/bfd/linker.c
index 6e2ef059b52..247c259a95e 100644
--- a/bfd/linker.c
+++ b/bfd/linker.c
@@ -3502,10 +3502,6 @@ _bfd_generic_link_check_relocs (bfd *abfd ATTRIBUTE_UNUSED,
 FUNCTION
 	bfd_merge_private_bfd_data
 
-SYNOPSIS
-	bool bfd_merge_private_bfd_data
-	  (bfd *ibfd, struct bfd_link_info *info);
-
 DESCRIPTION
 	Merge private BFD information from the BFD @var{ibfd} to the
 	the output file BFD when linking.  Return <<TRUE>> on success,
diff --git a/bfd/mach-o.c b/bfd/mach-o.c
index cc191b9ef1e..e184ba7b5df 100644
--- a/bfd/mach-o.c
+++ b/bfd/mach-o.c
@@ -561,15 +561,16 @@ bfd_mach_o_append_command (bfd *abfd, bfd_mach_o_load_command *cmd)
    to the output symbol.  */
 
 bool
-bfd_mach_o_bfd_copy_private_symbol_data (bfd *ibfd ATTRIBUTE_UNUSED,
+bfd_mach_o_bfd_copy_private_symbol_data (bfd *ibfd,
 					 asymbol *isymbol,
 					 bfd *obfd ATTRIBUTE_UNUSED,
 					 asymbol *osymbol)
 {
-  bfd_mach_o_asymbol *os, *is;
+  if (ibfd->xvec->flavour != bfd_target_mach_o_flavour)
+    return true;
 
-  os = (bfd_mach_o_asymbol *)osymbol;
-  is = (bfd_mach_o_asymbol *)isymbol;
+  bfd_mach_o_asymbol *os = (bfd_mach_o_asymbol *) osymbol;
+  bfd_mach_o_asymbol *is = (bfd_mach_o_asymbol *) isymbol;
   os->n_type = is->n_type;
   os->n_sect = is->n_sect;
   os->n_desc = is->n_desc;
@@ -582,13 +583,14 @@ bfd_mach_o_bfd_copy_private_symbol_data (bfd *ibfd ATTRIBUTE_UNUSED,
    to the output section.  */
 
 bool
-bfd_mach_o_bfd_copy_private_section_data (bfd *ibfd, asection *isection,
-					  bfd *obfd, asection *osection,
+bfd_mach_o_bfd_copy_private_section_data (bfd *ibfd,
+					  asection *isection,
+					  bfd *obfd ATTRIBUTE_UNUSED,
+					  asection *osection,
 					  struct bfd_link_info *link_info)
 {
   if (link_info != NULL
-      || ibfd->xvec->flavour != bfd_target_mach_o_flavour
-      || obfd->xvec->flavour != bfd_target_mach_o_flavour)
+      || ibfd->xvec->flavour != bfd_target_mach_o_flavour)
     return true;
 
   bfd_mach_o_section *os = bfd_mach_o_get_mach_o_section (osection);
@@ -731,8 +733,7 @@ bfd_mach_o_bfd_copy_private_header_data (bfd *ibfd, bfd *obfd)
   bfd_mach_o_data_struct *omdata;
   bfd_mach_o_load_command *icmd;
 
-  if (bfd_get_flavour (ibfd) != bfd_target_mach_o_flavour
-      || bfd_get_flavour (obfd) != bfd_target_mach_o_flavour)
+  if (bfd_get_flavour (ibfd) != bfd_target_mach_o_flavour)
     return true;
 
   BFD_ASSERT (bfd_mach_o_valid (ibfd));
diff --git a/bfd/mmo.c b/bfd/mmo.c
index f63654a4592..0e649032f45 100644
--- a/bfd/mmo.c
+++ b/bfd/mmo.c
@@ -610,8 +610,7 @@ mmo_ignore_symbol_consistency (bfd *abfd)
 static bool
 mmo_bfd_copy_private_bfd_data (bfd *ibfd, bfd *obfd)
 {
-  if (bfd_get_flavour (ibfd) != bfd_target_mmo_flavour
-      || bfd_get_flavour (obfd) != bfd_target_mmo_flavour)
+  if (bfd_get_flavour (ibfd) != bfd_target_mmo_flavour)
     return true;
 
   /* Copy the time the copied-from file was created.  If people want the
diff --git a/bfd/peXXigen.c b/bfd/peXXigen.c
index e6686dc3259..c1774966cf4 100644
--- a/bfd/peXXigen.c
+++ b/bfd/peXXigen.c
@@ -3004,8 +3004,7 @@ _bfd_XX_bfd_copy_private_bfd_data_common (bfd * ibfd, bfd * obfd)
   bfd_size_type size;
 
   /* One day we may try to grok other private data.  */
-  if (ibfd->xvec->flavour != bfd_target_coff_flavour
-      || obfd->xvec->flavour != bfd_target_coff_flavour)
+  if (ibfd->xvec->flavour != bfd_target_coff_flavour)
     return true;
 
   ipe = pe_data (ibfd);
@@ -3131,8 +3130,7 @@ _bfd_XX_bfd_copy_private_section_data (bfd *ibfd,
 				       struct bfd_link_info *link_info)
 {
   if (link_info != NULL
-      || bfd_get_flavour (ibfd) != bfd_target_coff_flavour
-      || bfd_get_flavour (obfd) != bfd_target_coff_flavour)
+      || bfd_get_flavour (ibfd) != bfd_target_coff_flavour)
     return true;
 
   if (coff_section_data (ibfd, isec) != NULL
diff --git a/bfd/section.c b/bfd/section.c
index 88c4482fe17..59189161a30 100644
--- a/bfd/section.c
+++ b/bfd/section.c
@@ -1669,11 +1669,6 @@ bfd_malloc_and_get_section (bfd *abfd, sec_ptr sec, bfd_byte **buf)
 FUNCTION
 	bfd_copy_private_section_data
 
-SYNOPSIS
-	bool bfd_copy_private_section_data
-	  (bfd *ibfd, asection *isec, bfd *obfd, asection *osec,
-	   struct bfd_link_info *link_info);
-
 DESCRIPTION
 	Copy private section information from @var{isec} in the BFD
 	@var{ibfd} to the section @var{osec} in the BFD @var{obfd}.
diff --git a/bfd/som.c b/bfd/som.c
index bed2e9b5e8b..3d1cd0e828c 100644
--- a/bfd/som.c
+++ b/bfd/som.c
@@ -5346,19 +5346,17 @@ som_new_section_hook (bfd *abfd, asection *newsect)
 static bool
 som_bfd_copy_private_symbol_data (bfd *ibfd,
 				  asymbol *isymbol,
-				  bfd *obfd,
+				  bfd *obfd ATTRIBUTE_UNUSED,
 				  asymbol *osymbol)
 {
-  struct som_symbol *input_symbol = (struct som_symbol *) isymbol;
-  struct som_symbol *output_symbol = (struct som_symbol *) osymbol;
-
   /* One day we may try to grok other private data.  */
-  if (ibfd->xvec->flavour != bfd_target_som_flavour
-      || obfd->xvec->flavour != bfd_target_som_flavour)
+  if (ibfd->xvec->flavour != bfd_target_som_flavour)
     return false;
 
   /* The only private information we need to copy is the argument relocation
      bits.  */
+  struct som_symbol *input_symbol = (struct som_symbol *) isymbol;
+  struct som_symbol *output_symbol = (struct som_symbol *) osymbol;
   output_symbol->tc_data.ap.hppa_arg_reloc =
     input_symbol->tc_data.ap.hppa_arg_reloc;
 
@@ -5378,7 +5376,6 @@ som_bfd_copy_private_section_data (bfd *ibfd,
   /* One day we may try to grok other private data.  */
   if (link_info != NULL
       || ibfd->xvec->flavour != bfd_target_som_flavour
-      || obfd->xvec->flavour != bfd_target_som_flavour
       || (!som_is_space (isection) && !som_is_subspace (isection)))
     return true;
 
@@ -5417,8 +5414,7 @@ static bool
 som_bfd_copy_private_bfd_data (bfd *ibfd, bfd *obfd)
 {
   /* One day we may try to grok other private data.  */
-  if (ibfd->xvec->flavour != bfd_target_som_flavour
-      || obfd->xvec->flavour != bfd_target_som_flavour)
+  if (ibfd->xvec->flavour != bfd_target_som_flavour)
     return true;
 
   /* Allocate some memory to hold the data we need.  */
diff --git a/bfd/syms.c b/bfd/syms.c
index b8f21c5fc0c..8fff571a1ee 100644
--- a/bfd/syms.c
+++ b/bfd/syms.c
@@ -796,10 +796,6 @@ bfd_symbol_info (asymbol *symbol, symbol_info *ret)
 FUNCTION
 	bfd_copy_private_symbol_data
 
-SYNOPSIS
-	bool bfd_copy_private_symbol_data
-	  (bfd *ibfd, asymbol *isym, bfd *obfd, asymbol *osym);
-
 DESCRIPTION
 	Copy private symbol information from @var{isym} in the BFD
 	@var{ibfd} to the symbol @var{osym} in the BFD @var{obfd}.

-- 
Alan Modra


More information about the Binutils mailing list