X-Git-Url: http://git.efficios.com/?a=blobdiff_plain;f=bfd%2Felfnn-ia64.c;h=2ba9608e34973a653e453891c3d3cf8ddc73d6fe;hb=06a6207a1ab458521656f293bb1ca8fd013d6f7c;hp=63917702dedf3b7596a6188d0138dfbed07235cf;hpb=6d6c25c8eaaf42755a759beeb2996502322b960c;p=deliverable%2Fbinutils-gdb.git diff --git a/bfd/elfnn-ia64.c b/bfd/elfnn-ia64.c index 63917702de..2ba9608e34 100644 --- a/bfd/elfnn-ia64.c +++ b/bfd/elfnn-ia64.c @@ -1,5 +1,5 @@ /* IA-64 support for 64-bit ELF - Copyright (C) 1998-2019 Free Software Foundation, Inc. + Copyright (C) 1998-2020 Free Software Foundation, Inc. Contributed by David Mosberger-Tang This file is part of BFD, the Binary File Descriptor library. @@ -39,6 +39,10 @@ #define LOG_SECTION_ALIGN 2 #endif +#define is_ia64_elf(bfd) \ + (bfd_get_flavour (bfd) == bfd_target_elf_flavour \ + && elf_object_id (bfd) == IA64_ELF_DATA) + typedef struct bfd_hash_entry *(*new_hash_entry_func) (struct bfd_hash_entry *, struct bfd_hash_table *, const char *); @@ -4732,6 +4736,7 @@ elfNN_ia64_set_private_flags (bfd *abfd, flagword flags) /* Merge backend specific data from an object file to the output object file when linking. */ + static bfd_boolean elfNN_ia64_merge_private_bfd_data (bfd *ibfd, struct bfd_link_info *info) { @@ -4740,10 +4745,8 @@ elfNN_ia64_merge_private_bfd_data (bfd *ibfd, struct bfd_link_info *info) flagword in_flags; bfd_boolean ok = 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) - return FALSE; + if (!is_ia64_elf (ibfd) || !is_ia64_elf (obfd)) + return TRUE; in_flags = elf_elfheader (ibfd)->e_flags; out_flags = elf_elfheader (obfd)->e_flags; @@ -4972,14 +4975,18 @@ elfNN_ia64_hpux_vec (const bfd_target *vec) return (vec == &ia64_elfNN_hpux_be_vec); } -static void -elfNN_hpux_post_process_headers (bfd *abfd, - struct bfd_link_info *info ATTRIBUTE_UNUSED) +static bfd_boolean +elfNN_hpux_init_file_header (bfd *abfd, struct bfd_link_info *info) { - Elf_Internal_Ehdr *i_ehdrp = elf_elfheader (abfd); + Elf_Internal_Ehdr *i_ehdrp; + + if (!_bfd_elf_init_file_header (abfd, info)) + return FALSE; + i_ehdrp = elf_elfheader (abfd); i_ehdrp->e_ident[EI_OSABI] = get_elf_backend_data (abfd)->elf_osabi; i_ehdrp->e_ident[EI_ABIVERSION] = 1; + return TRUE; } static bfd_boolean @@ -5121,8 +5128,8 @@ elfNN_hpux_backend_symbol_processing (bfd *abfd ATTRIBUTE_UNUSED, /* These are HP-UX specific functions. */ -#undef elf_backend_post_process_headers -#define elf_backend_post_process_headers elfNN_hpux_post_process_headers +#undef elf_backend_init_file_header +#define elf_backend_init_file_header elfNN_hpux_init_file_header #undef elf_backend_section_from_bfd_section #define elf_backend_section_from_bfd_section elfNN_hpux_backend_section_from_bfd_section