diff options
author | Nick Clifton <nickc@redhat.com> | 1998-02-07 01:06:49 +0000 |
---|---|---|
committer | Nick Clifton <nickc@redhat.com> | 1998-02-07 01:06:49 +0000 |
commit | 8b6dcc1bb985969b42e542fa81da9a18f335b8ee (patch) | |
tree | b0448019a1db2a96a2cbd430131584a1dc549375 /bfd | |
parent | b67a3a96ad3dec4ba4df0ba97d05d7524522d279 (diff) | |
download | gdb-8b6dcc1bb985969b42e542fa81da9a18f335b8ee.zip gdb-8b6dcc1bb985969b42e542fa81da9a18f335b8ee.tar.gz gdb-8b6dcc1bb985969b42e542fa81da9a18f335b8ee.tar.bz2 |
Do not initialise private data in output BFD if the input BFD is the default
architecture - instead allow future merges to do this.
Diffstat (limited to 'bfd')
-rw-r--r-- | bfd/ChangeLog | 3 | ||||
-rw-r--r-- | bfd/elf32-v850.c | 32 |
2 files changed, 21 insertions, 14 deletions
diff --git a/bfd/ChangeLog b/bfd/ChangeLog index c65e0a3..81f6f1b 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -2,7 +2,8 @@ start-sanitize-v850e Fri Feb 6 14:48:20 1998 Nick Clifton <nickc@cygnus.com> * 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 905c4cf..7e44621 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; } |