* elf32-ppc.c (is_ppc_elf_target): New function.

(ppc_elf_merge_private_bfd_data): Use it rather than just testing
	for bfd_target_elf_flavour.  Do this test before endian check.
	(ppc_elf_add_symbol_hook): Use is_pcc_elf_target.
	(ppc_elf_size_dynamic_sections): Likewise.
This commit is contained in:
Alan Modra 2005-03-21 11:22:24 +00:00
parent 6f19c13c2d
commit d2663f46ec
2 changed files with 25 additions and 7 deletions

View File

@ -1,3 +1,11 @@
2005-03-21 Alan Modra <amodra@bigpond.net.au>
* elf32-ppc.c (is_ppc_elf_target): New function.
(ppc_elf_merge_private_bfd_data): Use it rather than just testing
for bfd_target_elf_flavour. Do this test before endian check.
(ppc_elf_add_symbol_hook): Use is_pcc_elf_target.
(ppc_elf_size_dynamic_sections): Likewise.
2005-03-20 H.J. Lu <hongjiu.lu@intel.com>
* elf-bfd.h (elf_backend_data): Add int to

View File

@ -1594,6 +1594,17 @@ ppc_elf_set_private_flags (bfd *abfd, flagword flags)
return TRUE;
}
/* Return 1 if target is one of ours. */
static bfd_boolean
is_ppc_elf_target (const struct bfd_target *targ)
{
extern const bfd_target bfd_elf32_powerpc_vec;
extern const bfd_target bfd_elf32_powerpcle_vec;
return targ == &bfd_elf32_powerpc_vec || targ == &bfd_elf32_powerpcle_vec;
}
/* Merge backend specific data from an object file to the output
object file when linking. */
@ -1604,14 +1615,14 @@ ppc_elf_merge_private_bfd_data (bfd *ibfd, bfd *obfd)
flagword new_flags;
bfd_boolean error;
if (!is_ppc_elf_target (ibfd->xvec)
|| !is_ppc_elf_target (obfd->xvec))
return TRUE;
/* Check if we have the same endianess. */
if (! _bfd_generic_verify_endian_match (ibfd, obfd))
return FALSE;
if (bfd_get_flavour (ibfd) != bfd_target_elf_flavour
|| bfd_get_flavour (obfd) != bfd_target_elf_flavour)
return TRUE;
new_flags = elf_elfheader (ibfd)->e_flags;
old_flags = elf_elfheader (obfd)->e_flags;
if (!elf_flags_init (obfd))
@ -2444,8 +2455,7 @@ ppc_elf_add_symbol_hook (bfd *abfd,
if (sym->st_shndx == SHN_COMMON
&& !info->relocatable
&& sym->st_size <= elf_gp_size (abfd)
&& (info->hash->creator == abfd->xvec
|| info->hash->creator == abfd->xvec->alternative_target))
&& is_ppc_elf_target (info->hash->creator))
{
/* Common symbols less than or equal to -G nn bytes are automatically
put into .sbss. */
@ -4047,7 +4057,7 @@ ppc_elf_size_dynamic_sections (bfd *output_bfd ATTRIBUTE_UNUSED,
Elf_Internal_Shdr *symtab_hdr;
asection *srel;
if (bfd_get_flavour (ibfd) != bfd_target_elf_flavour)
if (!is_ppc_elf_target (ibfd->xvec))
continue;
for (s = ibfd->sections; s != NULL; s = s->next)