[darwinbuild] Error building gcc: abi_check for i386 on ppc host

Dustin Lang dalang at cs.ubc.ca
Tue Jan 10 10:09:31 PST 2006


Hi,

I'm trying to build 7W98 on a MacOS 10.3.9 PowerPC host.

While building gcc, I got the following:

cc-i386-on-ppc/ -DHAVE_CONFIG_H -I. 
-I/SourceCache/gcc/gcc-1495/libstdc++-v3/libmath -I..      -arch i386
-no-cpp-precomp -B/private/var/tmp/gcc/gcc-1495.obj/cc-i386-on-ppc/ -O2 
-pipe -g -c
/SourceCache/gcc/gcc-1495/libstdc++-v3/libmath/signbitf.c
/private/var/tmp/gcc/gcc-1495.obj/cc-i386-on-ppc/xgcc 
-B/private/var/tmp/gcc/gcc-1495.obj/cc-i386-on-ppc/
-DHAVE_CONFIG_H -I. -I/SourceCache/gcc/gcc-1495/libstdc++-v3/libmath -I.. 
-arch i386 -no-cpp-precomp
-B/private/var/tmp/gcc/gcc-1495.obj/cc-i386-on-ppc/ -O2 -pipe -g -c
/SourceCache/gcc/gcc-1495/libstdc++-v3/libmath/signbitf.c -o signbitf.o
In file included from 
/SourceCache/gcc/gcc-1495/libstdc++-v3/libmath/signbitf.c:32:
/SourceCache/gcc/gcc-1495/libstdc++-v3/libmath/mathconf.h:213: warning: 
use of `long double' type; its size may
change in a future release
/SourceCache/gcc/gcc-1495/libstdc++-v3/libmath/mathconf.h:213: warning: 
(Long double usage is reported only once
for each file.
/SourceCache/gcc/gcc-1495/libstdc++-v3/libmath/mathconf.h:213: warning: To 
disable this warning, use
-Wno-long-double.)
/SourceCache/gcc/gcc-1495/libstdc++-v3/libmath/signbitf.c:36: error: 
conflicting types for `__signbitf'
/usr/include/architecture/i386/math.h:190: error: previous declaration of 
`__signbitf'
gnumake[3]: *** [signbitf.lo] Error 1
gnumake[2]: *** [all-recursive] Error 1
gnumake[1]: *** [all-recursive-am] Error 2
+ status=2
+ command set +x
+ set +x
************************************************
* *** gnumake failed building libstdc++-v3 *** *
************************************************


I fixed this by changing the definition in signbitf.c to be "long" instead 
of "int".
I then got:


++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ Building libstdc++-v3                                        +
+ ------------------------------------------------------------ +
+ target = i386                                                +
+ cwd    = /private/var/tmp/gcc/gcc-1495.obj/i386/libstdc++-v3 +
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
[snip]
/private/var/tmp/gcc/gcc-1495.obj/cc-i386-on-ppc/g++ 
-B/private/var/tmp/gcc/gcc-1495.obj/cc-i386-on-ppc/ -arch
i386 -B/private/var/tmp/gcc/gcc-1495.obj/cc-i386-on-ppc/ -O2 -o abi_check 
abi_check.o
-L/private/var/tmp/gcc/gcc-1495.obj/i386/libstdc++-v3/src/.libs
-L/private/var/tmp/gcc/gcc-1495.obj/i386/soft-float/libstdc++-v3/src/.libs
ld: warning -L: directory name 
(/private/var/tmp/gcc/gcc-1495.obj/i386/soft-float/libstdc++-v3/src/.libs) 
does
not exist
ld: warning /usr/lib/crt1.o cputype (18, architecture ppc) does not match 
cputype (7) for specified -arch flag:
i386 (file not loaded)
ld: Undefined symbols:
dyld_stub_binding_helper
gnumake[3]: *** [abi_check] Error 1
gnumake[2]: *** [all-recursive] Error 1
gnumake[1]: *** [all-recursive-am] Error 2
+ status=2
+ command set +x
+ set +x
************************************************
* *** gnumake failed building libstdc++-v3 *** *
************************************************



This seems a little odd: it's trying to create an abi_check binary for the 
i386 library, even though this is a ppc host.  It pulls in 
/usr/lib/crt1.o, which is compiled for ppc, which really doesn't seem like 
a good idea :)

I modified the "make install" command line to include "TARGETS=ppc", and 
the build finished successfully.

Finally, during the install phase (after the build script finishes), I 
see:

/usr/bin/redo_prebinding: unknown option: -u
Usage: /usr/bin/redo_prebinding [-c|-p|-d] [-i] [-z] [-r rootdir] [-e 
executable_path] [-seg_addr_table table_file_name] 
[-seg_addr_table_filename pathname] [-o output_file] input_file

Another question: I see a lot of "make[1]: javaconfig: Command not found" 
complaints during builds.  Does one of the projects provide javaconfig? 
Or should I just copy it over from MacOS to the BuildRoot?

Cheers,
dstn.



More information about the darwinbuild-dev mailing list