[LLVMdev] llvm/test: suffix or operands invalid for `push'

Joachim Durchholz jo at durchholz.org
Thu Feb 28 01:55:20 PST 2008


Am Mittwoch, den 27.02.2008, 14:31 -0800 schrieb Dale Johannesen: 
> On Feb 27, 2008, at 2:12 PM, Joachim Durchholz wrote:
> > All error messages refer to one of the following four
> > instructions:
> >  pushl %ebp
> >  pushl %esi
> >  popl %ebp
> >  popl %esi
> > It's always the same error, "suffix or operands invalid for
> > `push'" (resp `pop').
> 
> Those are valid instructions in every x86-32 assembler I'm aware of.   
> Perhaps it needs a switch to put it in 32-bit mode?

Yes, I have been able to confirm that's what's happening behind the
scene. The switch would be --32, however after that, ld will try to link
the 64-bit versions of libc and the C runtime.

I was able to trigger the problem during ./configure, by using llvm-gcc.
With configure, it was fixable for the whole toolchain by saying
--target=i686, so there is hope.

Unfortunately, make check doesn't seem to use the setting
from ./configure; this is what I see in site.exp, regardless of any CC=
or CFLAGS= settings on make check:
  set gccpath "gcc"
  set gxxpath "g++"

Should I edit site.exp to fix that, or is there a better way?

Regards,
Jo




More information about the llvm-dev mailing list