aboutsummaryrefslogtreecommitdiff
path: root/bfd/elf32-v850.c
diff options
context:
space:
mode:
authorNick Clifton <nickc@redhat.com>1998-02-07 01:06:49 +0000
committerNick Clifton <nickc@redhat.com>1998-02-07 01:06:49 +0000
commit8b6dcc1bb985969b42e542fa81da9a18f335b8ee (patch)
treeb0448019a1db2a96a2cbd430131584a1dc549375 /bfd/elf32-v850.c
parentb67a3a96ad3dec4ba4df0ba97d05d7524522d279 (diff)
downloadgdb-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/elf32-v850.c')
-rw-r--r--bfd/elf32-v850.c32
1 files changed, 19 insertions, 13 deletions
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;
}