[geeks] ....excuse me, gcc?

Phil Stracchino alaric at metrocast.net
Mon Jul 12 12:34:59 CDT 2010


On 07/12/10 13:18, Phil Stracchino wrote:
> Trying to bootstrap a multilib (m32/m64) gcc-4.4.3 on Solaris 10 x86 ona
> dual-Xeon box (Nocona 64-bit microarchitecture)
> 
> checking for suffix of object files... configure: error: in
> `/netstore/src/gcc-4.4.3/obj-babylon4/i686-pc-solaris2.10/amd64/libgcc':
> configure: error: cannot compute suffix of object files: cannot compile
> 
> investigate further:
> 
> /netstore/src/gcc-4.4.3/obj-babylon4/./gcc/xgcc
> -B/netstore/src/gcc-4.4.3/obj-babylon4/./gcc/
> -B/usr/local/i686-pc-solaris2.10/bin/
> -B/usr/local/i686-pc-solaris2.10/lib/ -isystem
> /usr/local/i686-pc-solaris2.10/include -isystem
> /usr/local/i686-pc-solaris2.10/sys-include
> -L/netstore/src/gcc-4.4.3/obj-babylon4/./ld  -m64 -c -g -march=pentium4
> -mtune=nocona -mfpmath=sse -pipe   conftest.c
> conftest.c:1: error: CPU you selected does not support x86-64
> instruction set
> 
> 
> Excuse me?!?  On what planet does the Nocona core not support x86_64?
> 
> Anyone run into this before and know a way to smack gcc upside the head?


Never mind, solved it.

In theory, -march is the overall architecture family, and -mtune is
specific microarchitecture.  Or so I have always understood it.  But,
pentium4 includes both 32-bit-only and 32/64-bit architectures, and *in
this case*, gcc therefore assumes that -march=pentium4 implies 32-bit,
and *does not override this assumption* when -mtune=nocona is specified.
 So in this specific case, it's necessary to break the convention and
use -march=nocona directly (which I wasn't previously aware would even
work).


-- 
  Phil Stracchino, CDK#2     DoD#299792458     ICBM: 43.5607, -71.355
  alaric at caerllewys.net   alaric at metrocast.net   phil at co.ordinate.org
         Renaissance Man, Unix ronin, Perl hacker, Free Stater
                 It's not the years, it's the mileage.



More information about the geeks mailing list