Comment 2 for bug 858226

Revision history for this message
Zeev Tarantov (zeev-tarantov) wrote :

When the package is recompiled from source package without changes, it works because GCC 4.6.1 on i386 generates x87 instructions instead of SSE2 instructions. In general, GCC 4.6 defaults to "-march=native", so if the 32bit binary was generated on a 64bit system using "gcc -m32" without specifying "-march", it defaulted to compiling a binary for a core2/athlon64 in 32bit compatibility mode, not for a 32bit only CPU which does not support SSE2. A 32bit-only Pentium4 would run such a binary, but a Pentium3 won't. I suggest specifying -march=i686 and -mfpmath=387 to disable generation of SSE instructions. Performance critical code that uses hand-coded SSE (asm or intrinsics) uses run time cpu detection anyway and should be compiled with separate flags before being linked into a "i386" binary.

According to: https://help.ubuntu.com/11.04/installation-guide/i386/hardware-supported.html , i686 with cmov is now required, so march should be set for that. I could not find the same page for ubuntu 11.10, but I hope it's the same.