Build installs different "gmp.h" for 32- and 64-bit ABI's.
Jason Vas Dias
jason.vas.dias at gmail.com
Mon Jan 3 14:59:59 CET 2011
This is still a problem with gmp-5.0.1 -
and is the only problem I have found with GMP on my linux x86_64 host -
All "make check" tests pass for both x86 (ABI==32) and x86_64 (ABI==64)
builds, and the "GMP_LIMB_BITS" #define is the ONLY /usr/include/gmp*.h
header file difference.
This breaks builds of software that depends on gmp - eg. building
the Parma Polyhedra Library (ppl-0.11) fails for 64-bit if the 32-bit
gmp.h is installed, and for 32-bit if the 64-bit gmp.h is installed.
IMHO, the upstream gmp library source should not be depending on
distribution maintainers fixing this problem in order to support multi-arch /
multi-lib platforms, as for instance Thomas Woerner<twoerner at redhat.com>
does for Redhat distros by supplying a wrapper gmp.h (see attached gmp-wrapper.h) ,
which replaces /usr/include/gmp.h with a file that conditionally includes "gmp-<arch>.h" ,
which is the gmp.h produced by the GMP build .
If it really is true that GMP_LIMB_BITS will be the ONLY difference on ALL multi-lib
platforms, then something like this must be done :
1. modify the mpn/$arch/gmp-mparam.h for multi-arch platforms (platforms that support
conditional 32-bit or 64-bit compilation) to define both "GMP_LIMB_BITS" and "GMP_LIMB_BITS_64"
2. modify gmp-h.in @ line 33 :
#ifdef _LP64
#define GMP_LIMB_BITS @GMP_LIMB_BITS_64@
#else
#define GMP_LIMB_BITS @GMP_LIMB_BITS@
#endif
I think you can trust the _LP64 cpp pre-defined macro on all multi-lib platforms
as they are part of the standard UNIX ABI specifications.
Otherwise if there are going to be other differences in gmp.h on other multi-arch platforms
then an approach such as Thomas' should be used.
PLEASE, please can the GMP developers indicate whether they intend to fix this problem or not -
otherwise I'll attempt to develop and submit a comprehensive patch to fix this problem.
Thanks & Regards,
Jason Vas Dias <jason.vas.dias at gmail.org> a software engineer
-------------- next part --------------
A non-text attachment was scrubbed...
Name: gmp-wrapper.h
Type: text/x-chdr
Size: 2136 bytes
Desc: not available
URL: <http://gmplib.org/list-archives/gmp-bugs/attachments/20110103/d0b080a2/attachment.bin>
More information about the gmp-bugs
mailing list