ARM: gmp has no support for thumb interworking

Richard Earnshaw Richard.Earnshaw at buzzard.freeserve.co.uk
Sat Nov 18 23:27:32 CET 2006


On Sat, 18 Nov 2006 00:16:26 GMT, Richard Earnshaw wrote:

>  ./configure --host=none-unknown-netbsd3.0; make; make check
> 
> R.
> 
> 
> > /work/rearnsha/gnu/gmp/.libs/libgmp.so: undefined reference to 
> > `__gmpn_add_nc'
> > /work/rearnsha/gnu/gmp/.libs/libgmp.so: undefined reference to 
> > `__gmpn_sub_nc'
> > gnumake[4]: *** [t-bswap] Error 1

This is because of this test in mpn/generic/addsub_n.c

#if HAVE_NATIVE_mpn_add_nc || !HAVE_NATIVE_mpn_add_n
	  acyo = mpn_add_nc (r1p + off, s1p + off, s2p + off, this_n, acyo);
#else
	  acyn = mpn_add_n (r1p + off, s1p + off, s2p + off, this_n);
	  acyo = acyn + mpn_add_1 (r1p + off, r1p + off, this_n, acyo);
#endif

since neither of the native functions are defined, the #if condition 
evaluates to true and we emit a call to mpn_add_nc.  But the generic code 
only provides mpn_add_n, so we end up with a link failure.

I suspect the test should just be

  #if HAVE_NATIVE_mpn_add_nc 

since we want the else branch if neither is provided as a native function.

There's a similar problem for the sub_n/sub_nc calls.

R.




More information about the gmp-bugs mailing list