Compile error: 4.3.0 + Tru64 cc

Daniel Richard G. skunk at iSKUNK.ORG
Tue Apr 28 21:38:09 CEST 2009

Building 4.3.0 on a Tru64 system fails at this point:

--------(cut here)--------
cc -DHAVE_CONFIG_H -I. -I/opt/src/gmp-4.3.0/mpn -I.. -D__GMP_WITHIN_GMP -I/opt/src/gmp-4.3.0 -DOPERATION_binvert -D_POSIX_PII -D_REENTRANT -std1 -warnprotos -readonly_strings -misalign -fast -O4 -c binvert.c  -DPIC -o binvert.o
cc: Warning: ../gmp.h, line 2099: The use of the -ifo option has prevented this redeclaration of "__gmpn_neg_n" from changing its linkage. The linkage will be that specified by the earlier declaration at line number 1536 in file ../gmp.h. (pluswstocls)
mpn_neg_n (mp_ptr __gmp_rp, mp_srcptr __gmp_up, mp_size_t __gmp_n)
cc: Info: /opt/src/gmp-4.3.0/gmp-impl.h, line 3203: In this declaration, type "long long" is a language extension. (longlongtype)
typedef	long long int DItype;
cc: Info: /opt/src/gmp-4.3.0/gmp-impl.h, line 3204: In this declaration, type "unsigned long long" is a language extension. (longlongtype)
typedef unsigned long long int UDItype;
cc: Error: binvert.c, line 38: This declaration contains a redefinition of "__gmpn_neg_n".  The previous declaration is at line number 1536 in file ../gmp.h. (redef)
mpn_neg_n (mp_ptr __gmp_rp, mp_srcptr __gmp_up, mp_size_t __gmp_n)
gmake[2]: *** [binvert.lo] Error 1
gmake[2]: Leaving directory `/tmp/'
gmake[1]: *** [all-recursive] Error 1
gmake[1]: Leaving directory `/tmp/'
gmake: *** [all] Error 2
--------(cut here)--------

(The -ifo option is for "inter-file optimization," and is implied by the 
-O4. IIRC, that is.)

The vicinity of lines 1536 (!) and 2099 in gmp.h are as follows:

#define mpn_neg_n __MPN(neg_n)
__GMP_DECLSPEC mp_limb_t mpn_neg_n __GMP_PROTO ((mp_ptr, mp_srcptr, mp_size_t));


#if defined (__GMP_EXTERN_INLINE) || defined (__GMP_FORCE_mpn_neg_n)
#if ! defined (__GMP_FORCE_mpn_neg_n)
mpn_neg_n (mp_ptr __gmp_rp, mp_srcptr __gmp_up, mp_size_t __gmp_n)
  mp_limb_t __gmp_ul, __gmp_cy;
  __gmp_cy = 0;

Some stats:

$ uname -a
OSF1 darkstar V4.0 1530 alpha
$ ./config.guess


NAME   = Daniel Richard G.       ##  Remember, skunks       _\|/_  meef?
EMAIL1 = skunk at        ##  don't smell bad---    (/o|o\) /
EMAIL2 = skunk at      ##  it's the people who   < (^),>
WWW    = http://www.******.org/  ##  annoy them that do!    /   \
(****** = site not yet online)

More information about the gmp-bugs mailing list