Greg Schafer wrote:
> But the worst part IMHO has already been pinpointed by Bruce in that it
> will encourage novice users to play with `--with-arch=my-uber-cool-cpu'.
> This isn't bad in itself but it can lead to problems. For example, it has
> been well known for years that you cannot compile Glibc with a GCC that
> was configured as `--with-arch=i686' (unless you patch Glibc). It bombs
> out due to conflicts in GCC preprocessor macros with Glibc assembler code.
> This is arguably a bug in Glibc, but the fact that Glibc devs refuse to
> fix it indicates rather strongly that CFLAGS is the correct way to build
> Glibc. It also proves that CC="gcc -march=i?86" is wrong for Glibc. To
> clarify, if you give CFLAGS to Glibc configure, it will build .c files
> with those flags but it won't use them for .S files.
After doing some tests and a great deal of Googling I've come to agree
with Greg's estimation, the above paragraph being part of the clincher.
Setting '--with-arch=i486' for GCC results in it using '-march=i486' for
*everything*, unless another -march option is specified. As the above
example shows, that concept seems contrary to the intention of Glibc
developers.
I did indeed test building GCC using --with=arch=i686, which would be
the same as using CC="gcc -march=i686" for Glibc, and as Greg stated, it
causes Glibc to bomb with assembler errors. Conversely, I tested
building GCC without using --with-arch and then used 'CFLAGS=-march=i686
-mtune=native -O2 -pipe' ../glibc-2.6.1/configure ...' and built
successfully. It seems to prove that it's better to let the Glibc devs
decide where to use -march.
--with-march=i486 works, but seems prone to breakage. I think if we want
to introduce optimization into LFS, then we could do better, and more
correctly, than just using --with-arch on GCC. Using CFLAGS with Glibc
would allow for other cpu-types for the -march statement and the
possiblie introduction of -mtune=native as Greg also suggested.
So, to summarize, I propose not using --with-arch, but use the following
for Glibc:
CFLAGS="-march=i486 -O2 -pipe" ../glibc-2.6.1/configure ...etc.
Glibc requires some sort of optimization and -O2 seems safe. -pipe
should also be safe on gnu systems and should speed up compile times by
using pipes instead of temporary files.
Anyone have any comments or suggestions? If not, and unless Matt decides
to do it first, I'll be applying the patches he created plus the above
change to trunk by the end of the weekend.
--
JH
--
http://linuxfromscratch.org/mailman/listinfo/lfs-dev
FAQ: http://www.linuxfromscratch.org/faq/
Unsubscribe: See the above information page