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