[Clfs-support] [CLFS-DEV] Embedded GMP builds 64-bit binaries when asked for a 32-bit build

Andrew Bradford andrew at bradfordembedded.com
Mon Jul 1 04:32:15 PDT 2013


On Sat, Jun 29, 2013, at 10:33 AM, Kirk Terrell wrote:
> While trying to build a system using the latest version of the embedded 
> GIT I ran into an issue at the beginning with the GMP build - I'ver 
> tried twice. One time GMP compiled at the problem didn't manifest until 
> gcc-static, where the it would build with the 64bit versions of GMP, MPC 
> and MPFR. Based on some of the research i did it looks like GMP does a 
> poor job of guessing processor, which leads to the wrong ABI. I don't 
> know what i did different but the build failed, the following is a 
> partial listing of the output:
> 
> 
> checking build system type... atom-pc-linux-gnu
> checking host system type... atom-pc-linux-gnu

Is 'atom-pc-linux-gnu' a valid triplet?
If nothing else, I would think an embedded book build should be using
'-uclibc' as the ending portion of the triplet.  Unless I'm
misunderstanding something.

If you are using 'atom-pc-linux-gnu', can you reproduce the issue using
a triplet of 'i686-pc-linux-uclibc' and report back?

> checking for a BSD-compatible install... /usr/bin/install -c
> checking whether build environment is sane... yes
> checking for a thread-safe mkdir -p... /bin/mkdir -p
> checking for gawk... gawk
> checking whether make sets $(MAKE)... yes
> checking whether to enable maintainer-specific portions of Makefiles...
> no
> checking ABI=64
> checking compiler gcc -O2 -pedantic -fomit-frame-pointer -m64 
> -fexceptions... yes
> checking compiler gcc -O2 -pedantic -fomit-frame-pointer -m64 
> -fexceptions -mtune=atom... yes
> checking compiler gcc -O2 -pedantic -fomit-frame-pointer -m64 
> -mtune=atom -fexceptions -march=atom... yes
> checking for gcc... gcc
> -------------------------
> -------------------------
> ../fib_table.h:4:1: warning: data definition has no type or storage 
> class [enabled by default]
> ../fib_table.h:4:1: warning: type defaults to 'int' in declaration of 
> 'Error' [enabled by default]
> ../fib_table.h:4:8: warning: type defaults to 'int' in declaration of 
> 'error' [enabled by default]
> ../fib_table.h:4:20: error: expected '=', ',', ';', 'asm' or 
> '__attribute__' before 'data'
> make[4]: *** [amd64check.lo] Error 1
> make[4]: Leaving directory 
> `/opt/elfs20130613B.arm.little/sources/gmp-5.1.2/tests'
> make[3]: *** [check-am] Error 2
> make[3]: Leaving directory 
> `/opt/elfs20130613B.arm.little/sources/gmp-5.1.2/tests'
> make[2]: *** [check-recursive] Error 1
> make[2]: Leaving directory 
> `/opt/elfs20130613B.arm.little/sources/gmp-5.1.2/tests'
> make[1]: *** [check-recursive] Error 1
> make[1]: Leaving directory
> `/opt/elfs20130613B.arm.little/sources/gmp-5.1.2'
> make: *** [check] Error 2
> ------------------------------
> ----------------------------
> /usr/bin/ld: i386 architecture of input file `rand/.libs/randbui.o' is 
> incompatible with i386:x86-64 output
> /usr/bin/ld: i386 architecture of input file `rand/.libs/randmui.o' is 
> incompatible with i386:x86-64 output
> mpn/.libs/toom_interpolate_6pts.o: In function 
> `__gmpn_toom_interpolate_6pts':
> toom_interpolate_6pts.c:(.text+0x2bc): undefined reference to 
> `__gmpn_sublsh2_n_ip1'
> mpn/.libs/toom_interpolate_8pts.o: In function 
> `__gmpn_toom_interpolate_8pts':
> toom_interpolate_8pts.c:(.text+0x3ca): undefined reference to 
> `__gmpn_sublsh2_n_ip1'
> collect2: ld returned 1 exit status
> make[2]: *** [libgmp.la] Error 1
> make[2]: Leaving directory
> `/opt/elfs20130613B.arm.little/sources/gmp-5.1.2'
> make[1]: *** [install-recursive] Error 1
> make[1]: Leaving directory
> `/opt/elfs20130613B.arm.little/sources/gmp-5.1.2'
> make: *** [install] Error 2
> exitCode=2
> 
> 
> ---------------------------
> 
> Some references that might be useful:
> 
> http://gmplib.org/manual/Build-Options.html
> 
> http://lists.gnu.org/archive/html/bug-standards/2012-01/msg00001.html
> 
> http://lists.cross-lfs.org/htdig.cgi/clfs-support-cross-lfs.org/2009-September/000746.html
> 
> --------------------
> 
> i've built succesfully by seting ABI=32, not sure if this is the best 
> solution.

Based on [1] it seems it is.  And, somewhat good timing to catch this,
as armv8 is 64 bit now and we'll start seeing those real systems out
there, too :)

[1]:http://gmplib.org/manual/ABI-and-ISA.html#ABI-and-ISA

I've opened a bug [2] for this.

[2]:http://trac.cross-lfs.org/ticket/925

Thanks,
Andrew



More information about the Clfs-support mailing list