This is the mail archive of the
binutils@sources.redhat.com
mailing list for the binutils project.
Re: Powerpc Linux build fails
- From: Geoff Keating <geoffk at desire dot geoffk dot org>
- To: amodra at bigpond dot net dot au
- Cc: ksp at securelogix dot com, dje at watson dot ibm dot com, binutils at sources dot redhat dot com, bug-binutils at gnu dot org
- Date: Tue, 18 May 2004 21:27:34 -0700
- Subject: Re: Powerpc Linux build fails
- References: <3A3FC75F7C72D711A7DC009027AC9C4B1788D9@jupiter> <20040519033008.GC12690@bubble.modra.org>
> Date: Wed, 19 May 2004 13:00:08 +0930
> From: Alan Modra <amodra@bigpond.net.au>
> On Tue, May 18, 2004 at 11:06:00AM -0500, Keith Pickens wrote:
> >
> > Sorry, I wasn't saying the change was wrong but rather that it
> > has a side effect that broke builds that have worked for a
> > long time.
> [snip]
>
> You're correct. You're also using the correct -mcpu option to enable
> AltiVec. The trouble is that gcc doesn't pass -maltivec or -m7400 on to
> gas, but instead just passes -mppc. See gcc/config/rs6000/rs6000.h
> ASM_CPU_SPEC. Fixing gcc to pass the right options is probably the
> right thing to do, but in the meantime we have released versions of
> gcc that should work with newer binutils. I'm inclined to make gas
> behave as if -many was given, ie. accept any recognizable powerpc
> instruction.
>
> Geoff, what do you think?
Certainly, -many should really accept every instruction, failure to do
that is just a bug.
I am not sure about this new -mstrict. I am sure someone is expecting
-mpower3 to really mean 'power3 only' and will get a nasty surprise
when they use a power4 instruction by mistake and their program
crashes.
It is perfectly acceptable to say "GAS version X will only work with
GCC version > Y". People using old GCC can always use old binutils
with it. (They can also hack their specs file to pass -many, if
that's what they really want.)
The fully-correct way to do this is to have GCC generate a directive
after option parsing, like '.machine 7400' or so, and have GAS
interpret it, otherwise you end up in specs hell. (Doesn't ppc gas
already have a directive like that? I seem to remember seeing such a
patch fly by...)
> opcodes/ChangeLog
> * ppc-opc.c (insert_fxm): Enable two operand mfcr when -many as
> well as when -mpower4.
> gas/ChangeLog
> * config/tc-ppc.c (parse_cpu): Set PPC_OPCODE_ANY on all valid
> options besides a new -mstrict option.
> (md_show_usage): Update. Correct capitalization.
> (ppc_arch): Expand comment.
> * doc/c-ppc.texi (PowerPC-Opts): Update.
--
- Geoffrey Keating <geoffk@geoffk.org>