From b26a3d5827edcb942b3af5b921bf317bbc0c8e83 Mon Sep 17 00:00:00 2001 From: Sergei Trofimovich Date: Fri, 3 Jan 2020 11:21:00 +0000 Subject: [PATCH] Fix ld/PR25316 for the ia64 target by refusing to support binary merging. ld/PR25316 * elfnn-ia64.c (elfNN_ia64_merge_private_bfd_data): don't fail on binary inputs ld/PR25316. (is_ia64_elf): new helper to filter on ia64 objects. --- bfd/ChangeLog | 6 ++++++ bfd/elfnn-ia64.c | 11 +++++++---- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/bfd/ChangeLog b/bfd/ChangeLog index 1880bd484df..2b988667966 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,3 +1,9 @@ +2020-01-03 Sergei Trofimovich + + * elfnn-ia64.c (elfNN_ia64_merge_private_bfd_data): don't fail + on binary inputs ld/PR25316. + (is_ia64_elf): new helper to filter on ia64 objects. + 2020-01-03 Jan Beulich * mach-o.c (cpusubtype, bfd_mach_o_header_p): Insert underscore diff --git a/bfd/elfnn-ia64.c b/bfd/elfnn-ia64.c index 7612d29aa6b..2ba9608e349 100644 --- a/bfd/elfnn-ia64.c +++ b/bfd/elfnn-ia64.c @@ -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; -- 2.30.2