From mboxrd@z Thu Jan 1 00:00:00 1970 From: Byeong-ryeol Kim To: egcs@cygnus.com Subject: '-march=pentiumpro' on i586-pc-linux-gnu Date: Thu, 07 May 1998 10:22:00 -0000 Message-id: X-SW-Source: 1998-05/msg00242.html There seems to be problems of egcs-19980502 with regard to Pentiumpro flags, or there might be a problem that egcs-19980502 mis-compile linux kernels(2.1.xx?) with compile time flags, '-mcpu=pentiumpro -march=pentiumpro'. I use RH 5.0 linux.(kernel 2.1.100pre3, glibc-2.0.7pre3, binutils-2.9.0.4, egcs-1.0.2...) Hardware components are AMD-K6/MMX-166(stepping 1), ASUS P/I-P55T2P4 rev. 3.10(512K pipelined burst cache RAM), 64M Samsung EDO RAM, etc. As you know, the CPU is buggy when using more than 32M RAM. But the story below seems to be another thing. I usually compile linux kernels with '-mcpu=pentiumpro -march=pentiumpro', since kernels after late 2.1.7x sorts K6 CPUs as Pentiumpro. There was no remarkable problem in kernels with those flags. I compiled egcs-19980502 several times(with Jim Wilson's patch applied) with various compile flags, and in case of success it passed all testsuite without 'unexpected FAIL' except the case of g77.(I will attach the configuration and test result at the end of this e-mail.) BTW, I found some strange problem in egcs-19980502, which are reproducible on my system. 1. I failed in compiling egcs, when I include '-mcpu=pentiumpro -march=pentiumpro' in $CFLAGS, $BOOT_CFLAGS, or '-fomit-frame-pinter' in $BOOT_CFLAGS. The former flags caused genattr error(Error 132), and the latter flag caused internal compiler error at gcc/include/exception:26. 2. This seems to be more improtant. After I succeeded in compiling egcs by eliminating above flags, I could not boot linux 2.1.100pre3 kernel which was compiled with '-mcpu=pentiumpro -march=pentiumpro' by egcs. I could see only 'decompressing kernel image...' at the beginning of loading kernel. My system locked solid. I should hard-reset the system. I re-compiled the kernel and modules with '-mcpu=pentium -march=pentium' to boot that kernel successfully. Of course, compiler was the same. In short, All this problem did not occur with egcs-1.0.2. I have a 2.0.34pre11b kernel which was compiled by egcs-1.0.2(with proper source code changes) with '-mcpu=pentiumpro -march=pentiumpro', which boots well without any problem. Details of 1: * I changed columns for readability. 1) genattr error Whenever I use '-mcpu=pentiumpro -march=pentiumpro' as compile time flags with i586-pc-linux-gnu as host and target, I met this error. Optimization level(-O?) or other flags does not matter. .... stage1/xgcc -Bstage1/ -DIN_GCC -W -Wall -O9 -mcpu=pentiumpro \ -march=pentiumpro -malign-loops=0 -malign-jumps=0 \ -malign-functions=0 -fomit-frame-pointer \ -funroll-all-loops -pipe -s -DHAVE_CONFIG_H \ -o genattr \ genattr.o rtl.o print-rtl.o \ `case "obstack.o" in ?*) echo obstack.o ;; esac` ` case "" in ?*) echo ;; esac ` ` case "" in ?*) echo ;; esac ` ./genattr ./config/i386/i386.md > tmp-attr.h make[2]: *** [s-attr] Error 132 make[2]: Leaving directory `/usr/src/egcs-19980502/gcc' make[1]: *** [bootstrap-lean] Error 2 make[1]: Leaving directory `/usr/src/egcs-19980502/gcc' make: *** [bootstrap-lean] Error 2 .... 2) Internal compiler error at gcc/include/exception:26 This occurs when I include '-fomit-frame-pointer' in $BOOT_CFLAGS. make[3]: Entering directory `/usr/src/egcs-19980502/gcc' ./xgcc -B./ -O2 -DIN_GCC -W -Wall -O9 -mcpu=pentium \ -march=pentium -malign-loops=0 -malign-jumps=0 \ -malign-functions=0 -fomit-frame-pointer \ -funroll-all-loops -g -I./include -fPIC -g1 \ -DHAVE_GTHR_DEFAULT -DIN_LIBGCC2 -D__GCC_FLOAT_NOT_NEEDED \ -fexceptions -I. -I. -I./config \ -c ./cp/tinfo.cc In file included from include/typeinfo:7, from cp/tinfo.h:4, from ./cp/tinfo.cc:29: include/exception:26: Internal compiler error 19970302. include/exception:26: Please submit a full bug report to \ `egcs-bugs@cygnus.com'.make[3]: *** [tinfo.o] Error 1 make[3]: Leaving directory `/usr/src/egcs-19980502/gcc' make[2]: *** [libgcc2.a] Error 1 make[2]: Leaving directory `/usr/src/egcs-19980502/gcc' make[1]: *** [bootstrap-lean] Error 2 make[1]: Leaving directory `/usr/src/egcs-19980502/gcc' make: *** [bootstrap-lean] Error 2 ------------------------------------------------------------------ Test results: #!/bin/sh # This file was generated automatically by configure. Do not edit. # This directory was configured as follows: configure --host=i586-pc-linux-gnu --prefix=/usr --enable-shared \ --enable-threads=posix --with-gnu-as --with-gnu-ld --norecursion # using "mh-frag" and "mt-frag" compile time flags: 1. 'make bootstrap-lean', or 2. CFLAGS="-O9 -mcpu=pentium -march=pentium \ -fomit-frame-pointer" \ BOOT_CFLAGS="-O9 -mcpu=pentium -march=pentium \ -funroll-all-loops" \ CXXFLAGS="-O9 -mcpu=pentium -march=pentium \ -fomit-frame-pinter" \ LDFLAGS="-s" make bootstrap-lean === libio Summary === # of expected passes 40 === libstdc++ Summary === # of expected passes 30 === gcc Summary === # of expected passes 6044 # of expected failures 6 # of unsupported tests 8 === g++ Summary === # of expected passes 3817 # of expected failures 74 # of untested testcases 7 === g77 Summary === # of expected passes 176 # of unexpected failures 10 FAIL: g77.f-torture/compile/970125-0.f, -O1 FAIL: g77.f-torture/compile/970125-0.f, -O2 FAIL: g77.f-torture/compile/970125-0.f, -O2 \ -fomit-frame-pointer -finline-functions FAIL: g77.f-torture/compile/980427-0.f, -O0 FAIL: g77.f-torture/compile/980427-0.f, -O1 FAIL: g77.f-torture/compile/980427-0.f, -O2 FAIL: g77.f-torture/compile/980427-0.f, -O2 \ -fomit-frame-pointer -finline-functions FAIL: g77.f-torture/compile/980424-0.f, -O1 FAIL: g77.f-torture/compile/980424-0.f, -O2 FAIL: g77.f-torture/compile/980424-0.f, -O2 \ -fomit-frame-pointer -finline-functions "Where there is a will, there is a way." jinbo21@soback.kornet.nm.kr kbeyl@kids.kotel.co.kr For the future of you and me! hitel: jinbo21