Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 20 Jul 2011 14:34:57 +0200
From:      "Julian H. Stacey" <jhs@berklix.com>
To:        John Baldwin <jhb@freebsd.org>
Cc:        freebsd-hackers@freebsd.org, hackers@freebsd.org, Dan Nelson <dnelson@allantgroup.com>
Subject:   Re: Freebsd-7.4 + std gcc 4.2.1 fails to honour -march=i586 
Message-ID:  <201107201235.p6KCYvmT007475@fire.js.berklix.net>
In-Reply-To: Your message "Wed, 20 Jul 2011 07:48:05 EDT." <201107200748.05786.jhb@freebsd.org> 

next in thread | previous in thread | raw e-mail | index | archive | help
Hi,
Reference:
> From:		John Baldwin <jhb@freebsd.org> 
> Date:		Wed, 20 Jul 2011 07:48:05 -0400 
> Message-id:	<201107200748.05786.jhb@freebsd.org> 

John Baldwin wrote:
> On Wednesday, July 20, 2011 7:33:26 am Julian H. Stacey wrote:
> > What should FreeBSD do ? 
> > 	Add a comment to man gcc ... that -march=i586 is not
> > 	enough, & feed the comment back to gcc project & see how
> > 	they want to handle it ?
> 
> No, this is not a GCC bug.  If you want to use a single build machine that 
> will compile programs for other machines on a network to use, it must use the 
> lowest common denominator for its CPUTYPE in /etc/make.conf.
> 
> The out-of-the-box crt files from a FreeBSD install will work fine on a 486
> and above, so can only get yourself into this quandry by building a new world 
> with a CPUTYPE (or similar CFLAGS) setting in /etc/make.conf that violates 
> this rule.
> 
> You can fix your machine by fixing the CPUTYPE in your build machine and 
> building and installing a new world (do use NO_CLEAN=yes for your build, do a 
> full build).  You will also want to rebuild any other binaries on this machine 
> that you share with other machines.
> 
> -- 
> John Baldwin


Hi John, 
Yes I realise all that now thanks.
The point now is man gcc is misleading/ incomplete:
	"-march=cpu-type
           Generate instructions for the machine type cpu-type."
Those instructions will not make a program that runs on a lesser CPU type
without alternate crt for lesse CPU.

CFLAGS in make.conf is fine for single developer/ host debugging,
but is not appropriate for multi user multi make builds os src/ ports/ other

Its seems just that gcc -march fails to select alternate crt.

One gross ugly solution needing root would be to create chroots,
but Too ugly.

I suggest gcc via -march should also be used as a selection for sub
dirs for crt ? & we should co-operate with gcc project on that,
*BSD & *linux must all face same phenomena so lets not develop
a non standard solution.

Even if we're too lazy to do anything more, we should at least
document it as a patch to man gcc.

Cheers,
Julian
-- 
Julian Stacey, BSD Unix Linux C Sys Eng Consultants Munich http://berklix.com
 Reply below, not above;  Indent with "> ";  Cumulative like a play script.
 Format: Plain text. Not HTML, multipart/alternative, base64, quoted-printable.



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201107201235.p6KCYvmT007475>