diff options
author | Alan Modra <amodra@gmail.com> | 2005-03-21 11:22:24 +0000 |
---|---|---|
committer | Alan Modra <amodra@gmail.com> | 2005-03-21 11:22:24 +0000 |
commit | d2663f46ec8d720007e3f817b7f6802e66f906e2 (patch) | |
tree | 0b911f032854953a31f59a9cec29c6c978586944 | |
parent | 6f19c13c2d5e5eb3bb189f00f80d8cd8f3169076 (diff) | |
download | gdb-d2663f46ec8d720007e3f817b7f6802e66f906e2.zip gdb-d2663f46ec8d720007e3f817b7f6802e66f906e2.tar.gz gdb-d2663f46ec8d720007e3f817b7f6802e66f906e2.tar.bz2 |
* 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.
-rw-r--r-- | bfd/ChangeLog | 8 | ||||
-rw-r--r-- | bfd/elf32-ppc.c | 24 |
2 files changed, 25 insertions, 7 deletions
diff --git a/bfd/ChangeLog b/bfd/ChangeLog index 5c96688..e462aa1 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -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 diff --git a/bfd/elf32-ppc.c b/bfd/elf32-ppc.c index 27eed3b..bc269d0 100644 --- a/bfd/elf32-ppc.c +++ b/bfd/elf32-ppc.c @@ -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) |