gmp-5.0.4 fails to build on Debian 6.0.3 powerpc on ppc970

Dennis Clarke dclarke at blastwave.org
Sun Feb 12 17:18:56 CET 2012


Just an fyi , 32-bit build of gmp-504 fails on Debian 6.0.3 on powerpc ppc970
based powermac G5. I'll dig into this a tad further and see if I can find
specifics.

Her eis what Iknow now. The build proceeds fine in ABI=mode32 and then fails
make check .. thus :

.
.
.
libtool: compile:  gcc -std=gnu99 -DHAVE_CONFIG_H -I. -I.. -I..
-I/usr/local/include -m32 -mcpu=common -mno-altivec -mfull-toc -malign-power
-mdouble-float -mno-multiple -mno-string -mprototype -mupdate -mno-fused-madd
-mcall-linux -mabi=no-altivec -mlongcall -g -pthread -c trace.c  -fPIC -DPIC
-o .libs/trace.o
libtool: compile:  gcc -std=gnu99 -DHAVE_CONFIG_H -I. -I.. -I..
-I/usr/local/include -m32 -mcpu=common -mno-altivec -mfull-toc -malign-power
-mdouble-float -mno-multiple -mno-string -mprototype -mupdate -mno-fused-madd
-mcall-linux -mabi=no-altivec -mlongcall -g -pthread -c trace.c -o trace.o
>/dev/null 2>&1
/bin/bash ../libtool --tag=CC   --mode=link gcc -std=gnu99  -m32 -mcpu=common
-mno-altivec -mfull-toc -malign-power -mdouble-float -mno-multiple -mno-string
-mprototype -mupdate -mno-fused-madd -mcall-linux -mabi=no-altivec -mlongcall
-g -pthread   -o libtests.la  memory.lo misc.lo refmpf.lo refmpn.lo refmpq.lo
refmpz.lo spinner.lo trace.lo  ../libgmp.la
libtool: link: /usr/local/bin/ar cq .libs/libtests.a .libs/memory.o
.libs/misc.o .libs/refmpf.o .libs/refmpn.o .libs/refmpq.o .libs/refmpz.o
.libs/spinner.o .libs/trace.o
libtool: link: /usr/local/bin/ranlib .libs/libtests.a
libtool: link: ( cd ".libs" && rm -f "libtests.la" && ln -s "../libtests.la"
"libtests.la" )
gcc -std=gnu99 -DHAVE_CONFIG_H -I. -I.. -I..  -I/usr/local/include  -m32
-mcpu=common -mno-altivec -mfull-toc -malign-power -mdouble-float
-mno-multiple -mno-string -mprototype -mupdate -mno-fused-madd -mcall-linux
-mabi=no-altivec -mlongcall -g -pthread -c t-bswap.c
/bin/bash ../libtool --tag=CC   --mode=link gcc -std=gnu99  -m32 -mcpu=common
-mno-altivec -mfull-toc -malign-power -mdouble-float -mno-multiple -mno-string
-mprototype -mupdate -mno-fused-madd -mcall-linux -mabi=no-altivec -mlongcall
-g -pthread   -o t-bswap t-bswap.o libtests.la ../libgmp.la
libtool: link: gcc -std=gnu99 -m32 -mcpu=common -mno-altivec -mfull-toc
-malign-power -mdouble-float -mno-multiple -mno-string -mprototype -mupdate
-mno-fused-madd -mcall-linux -mabi=no-altivec -mlongcall -g -pthread -o
.libs/t-bswap t-bswap.o  ./.libs/libtests.a
/home/dclarke/build/gmp-5.0.4-ppc970/.libs/libgmp.so ../.libs/libgmp.so
-pthread
./.libs/libtests.a(refmpn.o): In function `refmpn_big_base':
/home/dclarke/build/gmp-5.0.4-ppc970/tests/refmpn.c:248: undefined reference
to `__mull'
./.libs/libtests.a(refmpn.o): In function `refmpn_umul_ppmm':
/home/dclarke/build/gmp-5.0.4-ppc970/tests/refmpn.c:773: undefined reference
to `__mull'
/home/dclarke/build/gmp-5.0.4-ppc970/tests/refmpn.c:774: undefined reference
to `__mull'
/home/dclarke/build/gmp-5.0.4-ppc970/tests/refmpn.c:776: undefined reference
to `__mull'
/home/dclarke/build/gmp-5.0.4-ppc970/tests/refmpn.c:782: undefined reference
to `__mull'
./.libs/libtests.a(refmpn.o):/home/dclarke/build/gmp-5.0.4-ppc970/tests/refmpn.c:1167:
more undefined references to `__mull' follow
./.libs/libtests.a(refmpn.o): In function `refmpn_get_str':
/home/dclarke/build/gmp-5.0.4-ppc970/tests/refmpn.c:1956: undefined reference
to `__quous'
./.libs/libtests.a(refmpn.o): In function `refmpn_random_half':
/home/dclarke/build/gmp-5.0.4-ppc970/tests/refmpn.c:2030: undefined reference
to `__mull'
/home/dclarke/build/gmp-5.0.4-ppc970/.libs/libgmp.so: undefined reference to
`__mulh'
/home/dclarke/build/gmp-5.0.4-ppc970/.libs/libgmp.so: undefined reference to
`__divus'
/home/dclarke/build/gmp-5.0.4-ppc970/.libs/libgmp.so: undefined reference to
`__quoss'
collect2: ld returned 1 exit status
gmake[4]: *** [t-bswap] Error 1
gmake[4]: Leaving directory `/home/dclarke/build/gmp-5.0.4-ppc970/tests'
gmake[3]: *** [check-am] Error 2
gmake[3]: Leaving directory `/home/dclarke/build/gmp-5.0.4-ppc970/tests'
gmake[2]: *** [check-recursive] Error 1
gmake[2]: Leaving directory `/home/dclarke/build/gmp-5.0.4-ppc970/tests'
gmake[1]: *** [check-recursive] Error 1
gmake[1]: Leaving directory `/home/dclarke/build/gmp-5.0.4-ppc970'
gmake: *** [check] Error 2
$
$
$ uname -a
Linux charon 2.6.32-5-powerpc64 #1 SMP Wed Jan 11 15:39:26 UTC 2012 ppc64
GNU/Linux
$ cat /etc/debian_version
6.0.3
$
$ cat /proc/version
Linux version 2.6.32-5-powerpc64 (Debian 2.6.32-39squeeze1) (dannf at debian.org)
(gcc version 4.3.5 (Debian 4.3.5-4) ) #1 SMP Wed Jan 11 15:39:26 UTC 2012
$



Configure was :
$ ./configure --libexecdir=/usr/local/libexec --libdir=/usr/local/lib
--build=powerpc64-unknown-linux-gnu --prefix=/usr/local --with-gnu-ld
--enable-shared --enable-static --enable-cxx ABI=mode32

$ gcc --version
gcc (Debian 4.4.5-8) 4.4.5
Copyright (C) 2010 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

$ which as
/usr/local/bin/as
$ as --version
GNU assembler (GNU Binutils) 2.22
Copyright 2011 Free Software Foundation, Inc.
This program is free software; you may redistribute it under the terms of
the GNU General Public License version 3 or later.
This program has absolutely no warranty.
This assembler was configured for a target of `powerpc64-unknown-linux-gnu'.
$ which ld
/usr/local/bin/ld
$ ld --version
GNU ld (GNU Binutils) 2.22
Copyright 2011 Free Software Foundation, Inc.
This program is free software; you may redistribute it under the terms of
the GNU General Public License version 3 or (at your option) a later version.
This program has absolutely no warranty.
$
$ echo $CFLAGS
-m32 -mcpu=common -mno-altivec -mfull-toc -malign-power -mdouble-float
-mno-multiple -mno-string -mprototype -mupdate -mno-fused-madd -mcall-linux
-mabi=no-altivec -mlongcall -g -pthread
$ pwd
/home/dclarke/build/gmp-5.0.4-ppc970

I tried a pile of CFLAGS options howver I am trying to avoid memory passing of
function parameters and thus the ELF output object will have been compiled
with -msvr4-struct-return such that registers are used for funtionpassing of
smaller than 8 byte data elements. The linker still doesn't know how to deal
with that anyways so it may be a non-issue.

Let me know what else you need ..

Dennis



-- 
--
http://pgp.mit.edu:11371/pks/lookup?op=vindex&search=0x1D936C72FA35B44B
+-------------------------+-----------------------------------+
| Dennis Clarke           | Solaris and Linux and Open Source |
| dclarke at blastwave.org   | Respect for open standards.       |
+-------------------------+-----------------------------------+



More information about the gmp-bugs mailing list