On Mon, Oct 02, 2006 at 03:05:25PM -0700, Scott Ritchie wrote:
On latest Debian (or at least Ubuntu), you have to force compile without the stack protector on by doing -fno-stack-protector.
Thanks for the tip.
* I compiled with gcc-4.0 (GCC) 4.0.3 20051201 (prerelease) (Debian 4.0.2-5), which does not have the stack-protector options. But it might still insert similar code... * I updated to gcc-4.1 (GCC) 4.1.2 20060901 (prerelease) (Debian 4.1.1-13), and binutils 2.17-2 from Debian testing. In the process, I got all kinds of errors, so I updated from CVS. However, it currently seems broken, as configure says: config.status: error: cannot find input file: dlls/resutils/Makefile.in
So I switched back to wine-0.9.22 from sourceforge.net...
First I get the error: In file included from ../../include/windef.h:234, from ../../include/wine/library.h:27, from ./config.c:36: ../../include/winnt.h:881: error: conflicting types for 'CONTEXT' ../../include/winnt.h:722: error: previous declaration of 'CONTEXT' was here
When I change the #ifdef in windef.h to something other than __x86_64_ (was mentioned in one HowTo), it runs a bit longer, but then I get the error:
{standard input}: Assembler messages: {standard input}:1586: Error: suffix or operands invalid for `push' {standard input}:1589: Error: suffix or operands invalid for `pop' {standard input}:2532: Error: suffix or operands invalid for `push' {standard input}:2533: Error: suffix or operands invalid for `mov' {standard input}:2535: Error: suffix or operands invalid for `pop' {standard input}:2780: Error: suffix or operands invalid for `push' {standard input}:2781: Error: suffix or operands invalid for `mov' {standard input}:2783: Error: suffix or operands invalid for `pop'
.. which indicates that some assembly code is not compatible with the latest binutils. Compilation with gcc-4.0 works without problems, except of course that the binary does not work (see my last EMail).
Just compiling the whole loader subdir with -fno-stack-protector and gcc-4.1 runs successfully. Now ./wine-kthread and ./wine-pthread both work, while ./wine-preloader exits with code 2. ./wine still exits with the same error code. Seems to be a small step forward. ;-)
I'll keep trying to compile all of it under gcc-4.1. The most likely explanation is that the stack protector code introduces similar problems elsewhere, so compiling all under gcc-4.1 _may_ solve this.
Best, Alex