From 8b6dcc1bb985969b42e542fa81da9a18f335b8ee Mon Sep 17 00:00:00 2001 From: Nick Clifton Date: Sat, 7 Feb 1998 01:06:49 +0000 Subject: [PATCH] Do not initialise private data in output BFD if the input BFD is the default architecture - instead allow future merges to do this. --- bfd/ChangeLog | 3 ++- bfd/elf32-v850.c | 32 +++++++++++++++++++------------- 2 files changed, 21 insertions(+), 14 deletions(-) diff --git a/bfd/ChangeLog b/bfd/ChangeLog index c65e0a3ff05..81f6f1b93e0 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -2,7 +2,8 @@ start-sanitize-v850e Fri Feb 6 14:48:20 1998 Nick Clifton * elf32-v850.c (v850_elf_merge_private_bfd_data): Do not complain - when merging v850 code into v850e/v850ea code. + when merging v850 code into v850e/v850ea code. Do not initialise + output flags if the input is the default architecture. PR14732. end-sanitize-v850e Fri Feb 6 11:50:22 1998 Jeffrey A Law (law@cygnus.com) diff --git a/bfd/elf32-v850.c b/bfd/elf32-v850.c index 905c4cfac21..7e446218595 100644 --- a/bfd/elf32-v850.c +++ b/bfd/elf32-v850.c @@ -1564,20 +1564,29 @@ v850_elf_merge_private_bfd_data (ibfd, obfd) bfd * ibfd; bfd * obfd; { - flagword old_flags; - flagword new_flags; + flagword out_flags; + flagword in_flags; 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; + in_flags = elf_elfheader (ibfd)->e_flags; + out_flags = elf_elfheader (obfd)->e_flags; if (! elf_flags_init (obfd)) { + /* If the input is the default architecture then do not + bother setting the flags for the output architecture, + instead allow future merges to do this. If no future + merges ever set these flags then they will retain their + unitialised values, which surprise surprise, correspond + to the default values. */ + if (bfd_get_arch_info (ibfd)->the_default) + return true; + elf_flags_init (obfd) = true; - elf_elfheader (obfd)->e_flags = new_flags; + elf_elfheader (obfd)->e_flags = in_flags; if (bfd_get_arch (obfd) == bfd_get_arch (ibfd) && bfd_get_arch_info (obfd)->the_default) @@ -1589,16 +1598,13 @@ v850_elf_merge_private_bfd_data (ibfd, obfd) } /* Check flag compatibility. */ - if (new_flags == old_flags) + if (in_flags == out_flags) return true; - if ((new_flags & EF_V850_ARCH) != (old_flags & EF_V850_ARCH)) - { - if ((old_flags & EF_V850_ARCH) != E_V850_ARCH) - _bfd_error_handler ("%s: Architecture mismatch with previous modules", - bfd_get_filename (ibfd)); - return true; - } + if ((in_flags & EF_V850_ARCH) != (out_flags & EF_V850_ARCH) + && (in_flags & EF_V850_ARCH) != E_V850_ARCH) + _bfd_error_handler ("%s: Architecture mismatch with previous modules", + bfd_get_filename (ibfd)); return true; } -- 2.30.2