Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 19 Feb 2007 12:45:51 -0500
From:      Kris Kennaway <kris@obsecurity.org>
To:        Christian Baer <christian.baer@uni-dortmund.de>
Cc:        freebsd-questions@freebsd.org
Subject:   Re: Compiler Flags for SPARC64
Message-ID:  <20070219174550.GA27605@xor.obsecurity.org>
In-Reply-To: <erc7qs$qra$11@nermal.rz1.convenimus.net>
References:  <erc7qs$qra$11@nermal.rz1.convenimus.net>

Next in thread | Previous in thread | Raw E-Mail | Index | Archive | Help
On Mon, Feb 19, 2007 at 02:14:04PM +0100, Christian Baer wrote:
> Hello everybody out there!
> 
> Please excuse my posting this question again on this list, but the last
> post on the freebsd-sparc64 didn't help much. There isn't really much
> traffic on that list.
> 
> Assuming that gcc when run on sparc64 produces v7 code (for sun4/4c) by
> default, I went about trying to improve that as v7 code is known to be a
> fair bit slower as v9 (sun4u) code. The improvement can be as much as
> 100% for some apps like OpenSSL or OpenSSH.
> 
> I went about trying some Compiler flags. -mcpu=ultrasparc and -mcpu=v9
> both came into mind. However this lead to several problems of programs
> not compiling anymore. Most notably was the failure of 'make buildworld'.
> 
> When gcc is told to produce v9 code, it doesn't produce 64bit code (you
> have to set -m64 for that), it just uses a few additional commands the
> CPU knows, which should make the resulting code faster but no longer
> compatible with older CPUs (non-UltraSPARC). This means that there
> shouldn't be any problem with pointers that are now "strange" to the
> code. But even if I explicitly set the -m32 flag, I still can't make the
> world.
> 
> I discussed this in a German newsgroup, where someone told me that the
> CPU is set to v9 by default on FreeBSD, as it only supports SPARC64 and
> not SPARC32. Although this assumption makes sense, I couldn't find any
> evidence to back it up. While some compiler flags are set by default
> on some platforms for optimization for that particular CPU, there
> doesn't seem to be anything set for sparc64. Additionaly, if the mcpu
> were really set to ultrasparc or v9, then setting it again shouldn't
> cause buildworld to stop with the error "I don't know what platform this
> is."
> 
> Has anyone got any ideas on how to go on with this?

You'll have to look at the compiler spec and how it is bootstrapped.
FWIW, I don't think there are any secret flags you can set to improve
the compiler targetting, as the defaults are already appropriate.

Kris



Want to link to this message? Use this URL: <http://docs.FreeBSD.org/cgi/mid.cgi?20070219174550.GA27605>