This is the mail archive of the
gcc-help@gcc.gnu.org
mailing list for the GCC project.
compiling gcc 4.4.1 on Darwin 10.4 x86..trouble with __cpuid in cache detection code?
- From: Jay K <jay dot krell at cornell dot edu>
- To: gcc-help <gcc-help at gcc dot gnu dot org>
- Date: Mon, 27 Jul 2009 11:44:13 +0000
- Subject: compiling gcc 4.4.1 on Darwin 10.4 x86..trouble with __cpuid in cache detection code?
compiling gcc 4.4.1 on Darwin 10.4 x86
Darwin -- not MacOSX
same error with and without -disable-bootstrap
perhaps I should remove -O2 for the first go around?
I'll try that.
Nope, same error.
-c /src/gcc-4.4.1/gcc/gccspec.c -o gccspec.o)
gcc -c -g -O2 -DIN_GCC -W -Wall -Wwrite-strings -Wstrict-prototypes -Wmissing
-prototypes -Wcast-qual -Wmissing-format-attribute -DHAVE_CONFIG_H -I. -I. -I/
src/gcc-4.4.1/gcc -I/src/gcc-4.4.1/gcc/. -I/src/gcc-4.4.1/gcc/../include -I/src/
gcc-4.4.1/gcc/../libcpp/include -I/obj/./gmp -I/src/gcc-4.4.1/gmp -I/obj/./mpfr
-I/src/gcc-4.4.1/mpfr -I/src/gcc-4.4.1/gcc/../libdecnumber -I/src/gcc-4.4.1/gcc
/../libdecnumber/dpd -I../libdecnumber -I. -I. -I/src/gcc-4.4.1/gcc -I/src/gc
c-4.4.1/gcc/. -I/src/gcc-4.4.1/gcc/../include -I/src/gcc-4.4.1/gcc/../libcpp/inc
lude -I/obj/./gmp -I/src/gcc-4.4.1/gmp -I/obj/./mpfr -I/src/gcc-4.4.1/mpfr -I/s
rc/gcc-4.4.1/gcc/../libdecnumber -I/src/gcc-4.4.1/gcc/../libdecnumber/dpd -I../l
ibdecnumber /src/gcc-4.4.1/gcc/config/i386/driver-i386.c
/src/gcc-4.4.1/gcc/config/i386/driver-i386.c: In function `detect_l2_cache':
/src/gcc-4.4.1/gcc/config/i386/driver-i386.c:65: error: can't find a register in
class `BREG' while reloading `asm'
make[2]: *** [driver-i386.o] Error 1
make[1]: *** [all-gcc] Error 2
make: *** [all] Error 2
static void
detect_l2_cache (struct cache_desc *level2)
{
unsigned eax, ebx, ecx, edx;
unsigned assoc;
__cpuid (0x80000006, eax, ebx, ecx, edx);
level2->sizekb = (ecx>> 16) & 0xffff;
level2->line = ecx & 0xff;
assoc = (ecx>> 12) & 0xf;
if (assoc == 6)
assoc = 8;
else if (assoc == 8)
assoc = 16;
else if (assoc>= 0xa && assoc <= 0xc)
assoc = 32 + (assoc - 0xa) * 16;
else if (assoc>= 0xd && assoc <= 0xe)
assoc = 96 + (assoc - 0xd) * 32;
level2->assoc = assoc;
}
hm..mayybe I should just change it to:
level2->assoc = 0;
Maybe this is because the configuration is detected as plain old i386?
For now I've removed a bunch of the code and removed -Wall.
(memset(0) the various structs)
I'll try again later with an explicit higher architecture.
Building Apple's gcc I was getting an illegal instruction..seemingly in libc.dylib but I didn't conform.
I tried changing Apple's code to use i586 instead of i686. No luck.
So I'm trying the FSF release and its build process (Apple has some custom scripts that I was using with their tree).
Then it gets further..darnit..:
checking how to run the C preprocessor... /lib/cpp
configure: error: in `/obj/i386-apple-darwin8.0.1/x86_64/libgcc':
configure: error: C preprocessor "/lib/cpp" fails sanity check
See `config.log' for more details.
make[1]: *** [configure-target-libgcc] Error 1
make: *** [all] Error 2
- Jay