[Wine] Suffix or Operands invalid during AMD64 compile

Declan Moriarty junk_mail at iol.ie
Mon Mar 12 14:02:00 CDT 2007


On Mon, 2007-03-12 at 09:22 -0600, Martin.Fuhrer at cggveritas.com wrote:
> Hi all,
> 
> I am trying to compile Wine 0.9.32 from source on an AMD64 desktop running
> Red Hat Enterprise Linux 4.  I configure as follows:
> 
> % ./configure --prefix=/home/mfuhrer/sw/linux --with-x --enable-wine64
> 
> This works fine.  I run make depend, followed by make, and get the
> following error:

> gcc -c -I. -I. -I../../include -I../../include  -D__WINESRC__ -D_REENTRANT
> -fPIC -Wall -pipe -fno-strict-aliasing -Wdeclaration-after-statement
> -Wwrite-strings -Wpointer-arith  -g -O2 -D__i386__  -o interlocked.o
> interlocked.c
> {standard input}: Assembler messages:
> {standard input}:38: Error: suffix or operands invalid for `push'
> {standard input}:39: Error: suffix or operands invalid for `push'
> {standard input}:46: Error: suffix or operands invalid for `pop'
> {standard input}:47: Error: suffix or operands invalid for `pop'
> make[2]: *** [interlocked.o] Error 1
> make[2]: Leaving directory `/mnt/io/home/mfuhrer/sw/src/wine-0.9.32
> /libs/port'
> make[1]: *** [port] Error 2
> make[1]: Leaving directory `/mnt/io/home/mfuhrer/sw/src/wine-0.9.32/libs'
> make: *** [libs] Error 2

> Any ideas for working around this compile error?  I'd be happy to provide
> any additional info. Thanks!

I would not claim to be up on present compilers, or C, but to me it
looks like the compile options.

/start useless knowledge
-fPIC gives you position independent code, i.e. the kernel can put it
anywhere in ram and it will work; the benefit of that is that a hacker
can't rely on a program appearing anywhere in particular. PUSH, and POP
are assembler instructions, and assembler is _not_ position independent,
so ram adresses you might put in as labels get hardcoded into numbers
during the assembly process. This is less secure, in that a hacker can
rely on this bit of code being at a particular address any time it's
running, so he can execute a 'jump to' and land on it.
/end useless knowledge

There must be a way of compiling without -fPIC. I have a hardened system
here (linuxfromscratch) and that provides gcc -fno-pic as a compile
option, so that's worth a try. 

This error seems similar to yours.
gcc.gnu.org/ml/gcc-help/2006-06/msg00121.html 

BTW, there also appears to be a bigger difference between amd and intel
in the 64 bit cpus than we are used to on 32 bit. 
-- 
        With Best Regards,

        Declan Moriarty.




More information about the wine-users mailing list