diff options
author | Sergei Trofimovich <siarheit@google.com> | 2020-01-03 11:21:00 +0000 |
---|---|---|
committer | Nick Clifton <nickc@redhat.com> | 2020-01-03 11:21:00 +0000 |
commit | b26a3d5827edcb942b3af5b921bf317bbc0c8e83 (patch) | |
tree | 1fcc156fdd152c29dea7b74451c694d8b2724d06 /bfd/elfnn-ia64.c | |
parent | 5437a02abc9fe106054965828787e8f232692935 (diff) | |
download | gdb-b26a3d5827edcb942b3af5b921bf317bbc0c8e83.zip gdb-b26a3d5827edcb942b3af5b921bf317bbc0c8e83.tar.gz gdb-b26a3d5827edcb942b3af5b921bf317bbc0c8e83.tar.bz2 |
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.
Diffstat (limited to 'bfd/elfnn-ia64.c')
-rw-r--r-- | bfd/elfnn-ia64.c | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/bfd/elfnn-ia64.c b/bfd/elfnn-ia64.c index 7612d29..2ba9608 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; |