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

Joachim Durchholz jo at durchholz.org
Sun Mar 2 04:50:05 PST 2008


Am Sonntag, den 02.03.2008, 12:21 +0200 schrieb Török Edwin:
> Joachim Durchholz wrote:
> > Since llvm cannot generate code for amd64 at this time, this translates
> > to an additional constraint on --target, restricting me to --target=i686
> > only.
> 
> llvm can generate code for amd64, but shared libs don't work, and
> bootstrapping doesn't work (PR1711).
> 
> Still, if you want to compile it as 32-bit, does it work if you run
> configure like this (without any build,host, target):
> $ linux32 ./configure
> 
> It should make all tools believe you are on 32-bit:
> $ linux32 uname -m
> i686
> $ uname -m
> x86_64

Ah, I didn't know this command existed. You never stop learning :-)

$ linux32 ./configure --prefix=$HOME
$ linux32 make
$ linux32 make check

gives

...
Native configuration is i686-pc-linux-gnu
...
FAIL:
  /home/jo/Delta/llvm-2.2/test/C++Frontend/2006-11-30-NoCompileUnit.cpp
Failed with exit(1) at line 2
while running: as NoCompileUnit.s -o NoCompileUnit.o
NoCompileUnit.s: Assembler messages:
NoCompileUnit.s:33: Error: suffix or operands invalid for `push'
...

So 'runtest' is indeed thinking it is running under a 32-bit system, but
'as' tries to assemble for 64 bits anyway.
I don't know whether that's a bug in 'as', or in Ubuntu, or just the way
'as' is supposed to work and the caller should determine the correct
options to use.

Regards,
Jo




More information about the llvm-dev mailing list