This is the mail archive of the
binutils@sources.redhat.com
mailing list for the binutils project.
Re: Fix rs6000 compatibility predicate
- From: Jim Blandy <jimb at redhat dot com>
- To: Geoff Keating <geoffk at geoffk dot org>
- Cc: binutils at sources dot redhat dot com
- Date: 28 Oct 2003 16:15:52 -0500
- Subject: Re: Fix rs6000 compatibility predicate
- References: <vt2smlmwky0.fsf@zenia.home>
So, is this patch rejected or accepted? If it is rejected, what
changes should I make before resubmitting it?
Jim Blandy <jimb@redhat.com> writes:
> The code for bfd/cpu-rs6000.c:rs6000_compatible looks wrong to me.
> The logic there says that A, which we assert to be a bfd_arch_rs6000,
> is only compatible with a B whose arch is bfd_arch_powerpc and whose
> mach is bfd_mach_rs6k. But that's an rs6000 mach, not a powerpc mach;
> there should never be a bfd_arch_powerpc / bfd_mach_rs6k arch info.
> Is that right?
>
> The code as changed by the patch below would make more sense to me:
> all powerpc machines are supersets of the base rs6000 machine, but
> there the two lines diverged, so any later model of the rs6000 is
> incompatible with any later powerpc model.
>
> 2003-10-21 Jim Blandy <jimb@redhat.com>
>
> * cpu-rs6000.c (rs6000_compatible): Check the correct arch_info
> object's mach field: all PowerPC machines are supersets of the
> original rs6000, but not later rs6000 machines.
>
> Index: bfd/cpu-rs6000.c
> ===================================================================
> RCS file: /cvs/src/src/bfd/cpu-rs6000.c,v
> retrieving revision 1.5
> diff -c -r1.5 cpu-rs6000.c
> *** bfd/cpu-rs6000.c 30 Nov 2002 08:39:36 -0000 1.5
> --- bfd/cpu-rs6000.c 21 Oct 2003 17:31:40 -0000
> ***************
> *** 47,53 ****
> case bfd_arch_rs6000:
> return bfd_default_compatible (a, b);
> case bfd_arch_powerpc:
> ! if (b->mach == bfd_mach_rs6k)
> return b;
> return NULL;
> }
> --- 47,53 ----
> case bfd_arch_rs6000:
> return bfd_default_compatible (a, b);
> case bfd_arch_powerpc:
> ! if (a->mach == bfd_mach_rs6k)
> return b;
> return NULL;
> }