diff options
-rw-r--r-- | .gitmodules | 5 | ||||
-rw-r--r-- | libraries/integer-gmp/gmp/ghc.mk | 11 | ||||
m--------- | libraries/integer-gmp/gmp/gmp-tarballs | 0 | ||||
-rw-r--r-- | libraries/integer-gmp/gmp/gmpsrc.patch | 106 | ||||
-rw-r--r-- | libraries/integer-gmp/gmp/tarball/README | 8 | ||||
-rw-r--r-- | libraries/integer-gmp/gmp/tarball/gmp-5.0.3-nodoc-patched.tar.bz2 | bin | 2176824 -> 0 bytes | |||
-rw-r--r-- | libraries/integer-gmp/gmp/tarball/gmp-5.0.4.patch | 1584 | ||||
-rw-r--r-- | libraries/integer-gmp/gmp/tarball/patch | 103 | ||||
-rw-r--r-- | mk/build.mk.sample | 2 |
9 files changed, 92 insertions, 1727 deletions
diff --git a/.gitmodules b/.gitmodules index 783c568b61..55d360ae10 100644 --- a/.gitmodules +++ b/.gitmodules @@ -106,7 +106,7 @@ [submodule "nofib"] path = nofib url = ../nofib.git - ignore = untracked + ignore = untracked [submodule "utils/hsc2hs"] path = utils/hsc2hs url = ../hsc2hs.git @@ -115,6 +115,9 @@ path = libffi-tarballs url = ../libffi-tarballs.git ignore = none +[submodule "gmp-tarballs"] + path = libraries/integer-gmp/gmp/gmp-tarballs + url = ../gmp-tarballs.git [submodule ".arc-linters/arcanist-external-json-linter"] path = .arc-linters/arcanist-external-json-linter url = ../arcanist-external-json-linter.git diff --git a/libraries/integer-gmp/gmp/ghc.mk b/libraries/integer-gmp/gmp/ghc.mk index 8e52574268..8a74f765d0 100644 --- a/libraries/integer-gmp/gmp/ghc.mk +++ b/libraries/integer-gmp/gmp/ghc.mk @@ -15,8 +15,14 @@ # That's because the doc/ directory contents are under the GFDL, # which causes problems for Debian. -GMP_TARBALL := $(wildcard libraries/integer-gmp/gmp/tarball/gmp*.tar.bz2) -GMP_DIR := $(patsubst libraries/integer-gmp/gmp/tarball/%-nodoc-patched.tar.bz2,%,$(GMP_TARBALL)) +ifneq "$(BINDIST)" "YES" +GMP_TARBALL := $(wildcard libraries/integer-gmp/gmp/gmp-tarballs/gmp*.tar.bz2) +GMP_DIR := $(patsubst libraries/integer-gmp/gmp/gmp-tarballs/%-nodoc.tar.bz2,%,$(GMP_TARBALL)) + +ifeq "$(GMP_TARBALL)" "" +$(error "GMP tarball is missing; you may need to run 'git submodule update --init'.") +endif +endif ifneq "$(NO_CLEAN_GMP)" "YES" $(eval $(call clean-target,gmp,,\ @@ -119,7 +125,6 @@ libraries/integer-gmp/gmp/libgmp.a libraries/integer-gmp/gmp/gmp.h: cat $(GMP_TARBALL) | $(BZIP2_CMD) -d | { cd libraries/integer-gmp/gmp && $(TAR_CMD) -xf - ; } mv libraries/integer-gmp/gmp/$(GMP_DIR) libraries/integer-gmp/gmp/gmpbuild cd libraries/integer-gmp/gmp && $(PATCH_CMD) -p0 < gmpsrc.patch - cat libraries/integer-gmp/gmp/tarball/gmp-5.0.4.patch | { cd libraries/integer-gmp/gmp/gmpbuild && $(PATCH_CMD) -p1 ; } chmod +x libraries/integer-gmp/gmp/ln # Note: We must pass `TARGETPLATFORM` to the `--host` argument of GMP's diff --git a/libraries/integer-gmp/gmp/gmp-tarballs b/libraries/integer-gmp/gmp/gmp-tarballs new file mode 160000 +Subproject ff5a56f169a8c6564f469008b21ad8ec0bc9d49 diff --git a/libraries/integer-gmp/gmp/gmpsrc.patch b/libraries/integer-gmp/gmp/gmpsrc.patch index e3906329ee..d18db99a95 100644 --- a/libraries/integer-gmp/gmp/gmpsrc.patch +++ b/libraries/integer-gmp/gmp/gmpsrc.patch @@ -1,6 +1,7 @@ ---- gmp-5.0.3/configure 2012-02-03 16:52:49.000000000 +0100 -+++ gmpbuild/configure 2014-11-07 23:46:33.629758238 +0100 -@@ -3937,8 +3937,8 @@ +diff -Naur gmp-6.1.2/configure gmpbuild/configure +--- gmp-6.1.2/configure 2016-12-16 10:45:32.000000000 -0500 ++++ gmpbuild/configure 2017-01-29 15:18:01.037775639 -0500 +@@ -4087,8 +4087,8 @@ # cclist="gcc cc" @@ -11,27 +12,78 @@ cc_cflags="-O" cc_64_cflags="-O" ---- gmp-5.0.3/memory.c 2012-02-03 16:52:49.000000000 +0100 -+++ gmpbuild/memory.c 2014-11-07 23:54:20.734523242 +0100 -@@ -24,21 +24,10 @@ - #include "gmp-impl.h" - - --/* Patched for GHC: */ --void * stgAllocForGMP (size_t size_in_bytes); --void * stgReallocForGMP (void *ptr, size_t old_size, size_t new_size); --void stgDeallocForGMP (void *ptr, size_t size); -- --void * (*__gmp_allocate_func) __GMP_PROTO ((size_t)) = stgAllocForGMP; --void * (*__gmp_reallocate_func) __GMP_PROTO ((void *, size_t, size_t)) -- = stgReallocForGMP; --void (*__gmp_free_func) __GMP_PROTO ((void *, size_t)) = stgDeallocForGMP; --/* - void * (*__gmp_allocate_func) __GMP_PROTO ((size_t)) = __gmp_default_allocate; - void * (*__gmp_reallocate_func) __GMP_PROTO ((void *, size_t, size_t)) - = __gmp_default_reallocate; - void (*__gmp_free_func) __GMP_PROTO ((void *, size_t)) = __gmp_default_free; --*/ - - - /* Default allocation functions. In case of failure to allocate/reallocate +@@ -27273,6 +27273,9 @@ + case $host in + *-*-darwin*) + ++echo "define(<PIC_ALWAYS>,<yes>)" >> $gmp_tmpconfigm4 ++ ++ + echo "include_mpn(\`x86_64/darwin.m4')" >> $gmp_tmpconfigm4i + ;; + *-*-mingw* | *-*-cygwin) +@@ -28181,7 +28181,7 @@ + # FIXME: Upcoming version of autoconf/automake may not like broken lines. + # Right now automake isn't accepting the new AC_CONFIG_FILES scheme. + +-ac_config_files="$ac_config_files Makefile mpf/Makefile mpn/Makefile mpq/Makefile mpz/Makefile printf/Makefile scanf/Makefile rand/Makefile cxx/Makefile tests/Makefile tests/devel/Makefile tests/mpf/Makefile tests/mpn/Makefile tests/mpq/Makefile tests/mpz/Makefile tests/rand/Makefile tests/misc/Makefile tests/cxx/Makefile doc/Makefile tune/Makefile demos/Makefile demos/calc/Makefile demos/expr/Makefile gmp.h:gmp-h.in" ++ac_config_files="$ac_config_files Makefile mpf/Makefile mpn/Makefile mpq/Makefile mpz/Makefile printf/Makefile scanf/Makefile rand/Makefile cxx/Makefile tests/Makefile tests/devel/Makefile tests/mpf/Makefile tests/mpn/Makefile tests/mpq/Makefile tests/mpz/Makefile tests/rand/Makefile tests/misc/Makefile tests/cxx/Makefile tune/Makefile demos/Makefile demos/calc/Makefile demos/expr/Makefile gmp.h:gmp-h.in" + + cat >confcache <<\_ACEOF + # This file is a shell script that caches the results of configure +@@ -29325,7 +29325,6 @@ + "tests/rand/Makefile") CONFIG_FILES="$CONFIG_FILES tests/rand/Makefile" ;; + "tests/misc/Makefile") CONFIG_FILES="$CONFIG_FILES tests/misc/Makefile" ;; + "tests/cxx/Makefile") CONFIG_FILES="$CONFIG_FILES tests/cxx/Makefile" ;; +- "doc/Makefile") CONFIG_FILES="$CONFIG_FILES doc/Makefile" ;; + "tune/Makefile") CONFIG_FILES="$CONFIG_FILES tune/Makefile" ;; + "demos/Makefile") CONFIG_FILES="$CONFIG_FILES demos/Makefile" ;; + "demos/calc/Makefile") CONFIG_FILES="$CONFIG_FILES demos/calc/Makefile" ;; +diff -Naur gmp-6.1.2/Makefile.am gmpbuild/Makefile.am +--- gmp-6.1.2/Makefile.am 2016-12-16 10:45:27.000000000 -0500 ++++ gmpbuild/Makefile.am 2017-01-29 15:14:20.764370926 -0500 +@@ -110,7 +110,7 @@ + LIBGMPXX_LT_AGE = 5 + + +-SUBDIRS = tests mpn mpz mpq mpf printf scanf rand cxx demos tune doc ++SUBDIRS = tests mpn mpz mpq mpf printf scanf rand cxx demos tune + + EXTRA_DIST = configfsf.guess configfsf.sub .gdbinit INSTALL.autoconf \ + COPYING.LESSERv3 COPYINGv2 COPYINGv3 +diff -Naur gmp-6.1.2/Makefile.in gmpbuild/Makefile.in +--- gmp-6.1.2/Makefile.in 2016-12-16 10:45:34.000000000 -0500 ++++ gmpbuild/Makefile.in 2017-01-29 15:14:32.596446554 -0500 +@@ -566,7 +566,7 @@ + LIBGMPXX_LT_CURRENT = 9 + LIBGMPXX_LT_REVISION = 2 + LIBGMPXX_LT_AGE = 5 +-SUBDIRS = tests mpn mpz mpq mpf printf scanf rand cxx demos tune doc ++SUBDIRS = tests mpn mpz mpq mpf printf scanf rand cxx demos tune + + # The "test -f" support for srcdir!=builddir is similar to the automake .c.o + # etc rules, but with each foo.c explicitly, since $< is not portable +diff -Naur gmp-6.1.2/configure.ac gmpbuild/configure.ac +--- gmp-6.1.2/configure.ac 2016-12-16 10:45:27.000000000 -0500 ++++ gmpbuild/configure.ac 2017-01-29 22:47:28.469558006 -0500 +@@ -3698,7 +3698,8 @@ + AC_DEFINE(HAVE_HOST_CPU_FAMILY_x86_64) + case $host in + *-*-darwin*) ++ GMP_DEFINE_RAW(["define(<PIC_ALWAYS>,<yes>)"]) + GMP_INCLUDE_MPN(x86_64/darwin.m4) ;; + *-*-mingw* | *-*-cygwin) + GMP_INCLUDE_MPN(x86_64/dos64.m4) ;; + *-openbsd*) +diff -Naur gmp-6.1.2/mpn/asm-defs.m4 gmpbuild/mpn/asm-defs.m4 +--- gmp-6.1.2/mpn/asm-defs.m4 2016-12-16 10:45:27.000000000 -0500 ++++ gmpbuild/mpn/asm-defs.m4 2017-01-29 22:46:26.025176258 -0500 +@@ -1051,7 +1051,7 @@ + dnl systems which are always PIC. PIC_ALWAYS established in config.m4 + dnl identifies these for us. + +-ifelse(`PIC_ALWAYS',`yes',`define(`PIC')') ++ifelse(PIC_ALWAYS,yes,`define(`PIC')') + + + dnl Various possible defines passed from the Makefile that are to be tested diff --git a/libraries/integer-gmp/gmp/tarball/README b/libraries/integer-gmp/gmp/tarball/README deleted file mode 100644 index 0693ecd874..0000000000 --- a/libraries/integer-gmp/gmp/tarball/README +++ /dev/null @@ -1,8 +0,0 @@ - -Download linked from http://gmplib.org/ - -Untar. -Remove doc/ directory. -Apply patch. -Re-tar. - diff --git a/libraries/integer-gmp/gmp/tarball/gmp-5.0.3-nodoc-patched.tar.bz2 b/libraries/integer-gmp/gmp/tarball/gmp-5.0.3-nodoc-patched.tar.bz2 Binary files differdeleted file mode 100644 index baf99e6ee5..0000000000 --- a/libraries/integer-gmp/gmp/tarball/gmp-5.0.3-nodoc-patched.tar.bz2 +++ /dev/null diff --git a/libraries/integer-gmp/gmp/tarball/gmp-5.0.4.patch b/libraries/integer-gmp/gmp/tarball/gmp-5.0.4.patch deleted file mode 100644 index abc0cbaf83..0000000000 --- a/libraries/integer-gmp/gmp/tarball/gmp-5.0.4.patch +++ /dev/null @@ -1,1584 +0,0 @@ -diff -ruN gmp-5.0.3/ChangeLog gmp-5.0.4/ChangeLog ---- gmp-5.0.3/ChangeLog 2012-01-27 09:59:30.000000000 +0100 -+++ gmp-5.0.4/ChangeLog 2012-02-10 11:23:05.000000000 +0100 -@@ -1,7 +1,113 @@ -+2012-02-10 Torbjorn Granlund <tege@gmplib.org> -+ -+ * Version 5.0.4 released. -+ -+2012-02-09 Marco Bodrato <bodrato@mail.dm.unipi.it> -+ -+ * gmp-impl.h (mpn_toom3*_itch): Support any recursion depth. -+ * tests/refmpn.c (refmpn_mul): Restore tight allocations. -+ -+2012-02-09 Marc Glisse <marc.glisse@inria.fr> -+ -+ * gmp-impl.h (ABS_CAST): New macro. -+ * mpf/cmp_si.c: Use ABS_CAST. -+ * mpf/get_si.c: Use ABS_CAST. -+ * mpf/iset_si.c: Use ABS_CAST. -+ * mpf/set_si.c: Use ABS_CAST. -+ * mpq/set_si.c: Use ABS_CAST. -+ * mpz/cmp_si.c: Use ABS_CAST. -+ * mpz/get_si.c: Use ABS_CAST. -+ * mpz/iset_si.c: Use ABS_CAST. -+ * mpz/mul_i.h: Use ABS_CAST. -+ * mpz/set_si.c: Use ABS_CAST. -+ -+2012-02-09 Torbjorn Granlund <tege@gmplib.org> -+ -+ * gmp-h.in (__GNU_MP_VERSION_PATCHLEVEL): Bump. -+ -+ * Makefile.am (LIBGMP_LT_*, LIBGMPXX_LT_*, LIBMP_LT_*): -+ Bump version info. -+ -+2012-02-08 Torbjorn Granlund <tege@gmplib.org> -+ -+ * mpn/powerpc32/divrem_2.asm: Fix off-by-one condition in invert_limb -+ code. -+ -+2012-02-08 Niels Möller <nisse@lysator.liu.se> -+ -+ * doc/gmp.texi (mpz_gcdext): Describe cofactor canonicalization. -+ (mpn_gcdext): Copied doc updates from main repo. -+ -+2012-02-07 Niels Möller <nisse@lysator.liu.se> -+ -+ * mpn/generic/gcdext.c (mpn_gcdext): Fixed assert, related to the -+ special case A = (2k+1) G, B = 2 G. -+ -+2012-02-06 Niels Möller <nisse@lysator.liu.se> -+ -+ * mpn/generic/hgcd.c (hgcd_matrix_update_q): Fixed carry handling -+ bug. -+ -+ * tests/mpz/t-gcd.c (main): Omit tests with urandomb operands. -+ * tests/mpn/t-hgcd.c (main): Likewise. -+ -+2012-02-05 Niels Möller <nisse@lysator.liu.se> -+ -+ * tests/mpz/t-gcd.c (main): Add tests with rrandomb operands. -+ * tests/mpn/t-hgcd.c (main): Likewise. -+ -+ * mpn/generic/gcdext_subdiv_step.c (mpn_gcdext_subdiv_step): -+ Bugfix, in u1 += q * u0, handle carry in all cases. Also normalize -+ the product q * u0. -+ -+2012-02-04 Marco Bodrato <bodrato@mail.dm.unipi.it> -+ -+ * tests/refmpn.c (refmpn_mul): More conservative allocations. -+ -+2012-02-03 Torbjorn Granlund <tege@gmplib.org> -+ -+ * mpn/x86_64/bd1/gmp-mparam.h: New file. -+ -+ * longlong.h (udiv_qrnnd from sdiv_qrnnd): Declare udiv_w_sdiv. -+ -+ * mpn/generic/udiv_w_sdiv.c: Use c89 function header. -+ -+2012-02-02 Marco Bodrato <bodrato@mail.dm.unipi.it> -+ -+ * mpn/generic/toom_interpolate_16pts.c: Correct an unlikely 32-bit bug. -+ -+2012-02-02 Torbjorn Granlund <tege@gmplib.org> -+ -+ * mpn/generic/toom63_mul.c: Allow s+t==n by adjusting an ASSERT. -+ * mpn/generic/toom_interpolate_8pts.c: Perform final incr iff s+t!=n. -+ -+ * tests/mpn/t-toom6h.c (MIN_BN): Make more consistent with ASSERT in -+ tested function. -+ -+2012-02-01 Torbjorn Granlund <tege@gmplib.org> -+ -+ * tests/mpn/t-mul.c: New file. -+ * tests/mpn/Makefile.am: Compile it. -+ -+2012-01-31 Torbjorn Granlund <tege@gmplib.org> -+ -+ * mpn/generic/powm_sec.c (SQR_BASECASE_LIM): New name for -+ SQR_BASECASE_MAX. -+ (SQR_BASECASE_LIM, fat variant): Define to read __gmpn_cpuvec. -+ (SQR_BASECASE_LIM, native variant): Define to SQR_TOOM2_THRESHOLD -+ straight, without arithmetic. -+ (mpn_local_sqr): Use BELOW_THRESHOLD as per Marco's suggestion. -+ -+2012-01-30 Torbjorn Granlund <tege@gmplib.org> -+ -+ * tests/mpz/t-powm.c: Ensure all sizes are seen. -+ - 2012-01-27 Torbjorn Granlund <tege@gmplib.org> - - * Version 5.0.3 released. - -+ * Upgrade to libtool 2.4.2. -+ - 2012-01-25 Torbjorn Granlund <tege@gmplib.org> - - * tune/tuneup.c: Remove unused tuneup variables. -@@ -157,7 +263,7 @@ - - * configure.in: Support s390x. - -- * longlong.h: Add spport for 64-bit s390x. -+ * longlong.h: Add support for 64-bit s390x. - - * mpn/s390_64: New directory. - * mpn/s390_32: Directory renamed from mpn/s390. -@@ -404,6 +510,11 @@ - touch it. Fixed the case that no assembler files are used, and - GMP_PROG_M4 is omitted. - -+2010-06-15 Niels Möller <nisse@lysator.liu.se> -+ -+ * tests/mpn/Makefile.am (check_PROGRAMS): Added t-mod_1. -+ * tests/mpn/t-mod_1.c: New file. -+ - 2010-05-24 Torbjorn Granlund <tege@gmplib.org> - - * mpn/generic/mu_div_qr.c (mpn_preinv_mu_div_qr_itch): New function. -@@ -449,6 +560,11 @@ - MOD_1_2_TO_MOD_1_4_THRESHOLD before MOD_1U_TO_MOD_1_1_THRESHOLD for - correctness. - -+2010-04-12 Torbjorn Granlund <tege@gmplib.org> -+ -+ * tests/mpn/t-toom6h.c (SIZE_LOG): Define. -+ * tests/mpn/t-toom8h.c (SIZE_LOG): Likewise. -+ - 2010-04-10 Torbjorn Granlund <tege@gmplib.org> - - * mpn/x86/divrem_2.asm: Use "orb" instead of "or" to work around -diff -ruN gmp-5.0.3/configure gmp-5.0.4/configure ---- gmp-5.0.3/configure 2012-01-27 09:59:34.000000000 +0100 -+++ gmp-5.0.4/configure 2012-02-10 11:23:14.000000000 +0100 -@@ -1,7 +1,7 @@ - #! /bin/sh - # From configure.in Revision. - # Guess values for system-dependent variables and create Makefiles. --# Generated by GNU Autoconf 2.65 for GNU MP 5.0.3. -+# Generated by GNU Autoconf 2.65 for GNU MP 5.0.4. - # - # Report bugs to <gmp-bugs@gmplib.org, see http://gmplib.org/manual/Reporting-Bugs.html>. - # -@@ -585,8 +585,8 @@ - # Identity of this package. - PACKAGE_NAME='GNU MP' - PACKAGE_TARNAME='gmp' --PACKAGE_VERSION='5.0.3' --PACKAGE_STRING='GNU MP 5.0.3' -+PACKAGE_VERSION='5.0.4' -+PACKAGE_STRING='GNU MP 5.0.4' - PACKAGE_BUGREPORT='gmp-bugs@gmplib.org, see http://gmplib.org/manual/Reporting-Bugs.html' - PACKAGE_URL='http://www.gnu.org/software/gmp/' - -@@ -1372,7 +1372,7 @@ - # Omit some internal or obsolete options to make the list less imposing. - # This message is too long to be a string in the A/UX 3.1 sh. - cat <<_ACEOF --\`configure' configures GNU MP 5.0.3 to adapt to many kinds of systems. -+\`configure' configures GNU MP 5.0.4 to adapt to many kinds of systems. - - Usage: $0 [OPTION]... [VAR=VALUE]... - -@@ -1442,7 +1442,7 @@ - - if test -n "$ac_init_help"; then - case $ac_init_help in -- short | recursive ) echo "Configuration of GNU MP 5.0.3:";; -+ short | recursive ) echo "Configuration of GNU MP 5.0.4:";; - esac - cat <<\_ACEOF - -@@ -1574,7 +1574,7 @@ - test -n "$ac_init_help" && exit $ac_status - if $ac_init_version; then - cat <<\_ACEOF --GNU MP configure 5.0.3 -+GNU MP configure 5.0.4 - generated by GNU Autoconf 2.65 - - Copyright (C) 2009 Free Software Foundation, Inc. -@@ -2608,7 +2608,7 @@ - This file contains any messages produced by compilers while - running configure, to aid debugging if configure makes a mistake. - --It was created by GNU MP $as_me 5.0.3, which was -+It was created by GNU MP $as_me 5.0.4, which was - generated by GNU Autoconf 2.65. Invocation command line was - - $ $0 $@ -@@ -3527,7 +3527,7 @@ - - # Define the identity of the package. - PACKAGE='gmp' -- VERSION='5.0.3' -+ VERSION='5.0.4' - - - cat >>confdefs.h <<_ACEOF -@@ -29899,7 +29899,7 @@ - # report actual input values of CONFIG_FILES etc. instead of their - # values after options handling. - ac_log=" --This file was extended by GNU MP $as_me 5.0.3, which was -+This file was extended by GNU MP $as_me 5.0.4, which was - generated by GNU Autoconf 2.65. Invocation command line was - - CONFIG_FILES = $CONFIG_FILES -@@ -29971,7 +29971,7 @@ - cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 - ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" - ac_cs_version="\\ --GNU MP config.status 5.0.3 -+GNU MP config.status 5.0.4 - configured by $0, generated by GNU Autoconf 2.65, - with options \\"\$ac_cs_config\\" - -diff -ruN gmp-5.0.3/gmp-h.in gmp-5.0.4/gmp-h.in ---- gmp-5.0.3/gmp-h.in 2012-01-27 09:59:30.000000000 +0100 -+++ gmp-5.0.4/gmp-h.in 2012-02-10 11:23:05.000000000 +0100 -@@ -2273,7 +2273,7 @@ - /* Major version number is the value of __GNU_MP__ too, above and in mp.h. */ - #define __GNU_MP_VERSION 5 - #define __GNU_MP_VERSION_MINOR 0 --#define __GNU_MP_VERSION_PATCHLEVEL 3 -+#define __GNU_MP_VERSION_PATCHLEVEL 4 - #define __GNU_MP_RELEASE (__GNU_MP_VERSION * 10000 + __GNU_MP_VERSION_MINOR * 100 + __GNU_MP_VERSION_PATCHLEVEL) - - #define __GMP_H__ -diff -ruN gmp-5.0.3/gmp-impl.h gmp-5.0.4/gmp-impl.h ---- gmp-5.0.3/gmp-impl.h 2012-01-27 09:59:30.000000000 +0100 -+++ gmp-5.0.4/gmp-impl.h 2012-02-10 11:23:05.000000000 +0100 -@@ -4,7 +4,8 @@ - BE SUBJECT TO INCOMPATIBLE CHANGES IN FUTURE GNU MP RELEASES. - - Copyright 1991, 1993, 1994, 1995, 1996, 1997, 1999, 2000, 2001, 2002, 2003, --2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. -+2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012 Free Software Foundation, -+Inc. - - This file is part of the GNU MP Library. - -@@ -478,6 +479,7 @@ - #define UNLIKELY(cond) __GMP_UNLIKELY(cond) - - #define ABS(x) ((x) >= 0 ? (x) : -(x)) -+#define ABS_CAST(T,x) ((x) >= 0 ? (T)(x) : -((T)((x) + 1) - 1)) - #undef MIN - #define MIN(l,o) ((l) < (o) ? (l) : (o)) - #undef MAX -@@ -4519,12 +4521,17 @@ - #define mpn_toom2_sqr_itch(an) \ - (2 * ((an) + GMP_NUMB_BITS)) - --/* Can probably be trimmed to 2 an + O(log an). */ -+/* toom33/toom3: Scratch need is 5an/2 + 10k, k is the recursion depth. -+ We use 3an + C, so that we can use a smaller constant. -+ */ - #define mpn_toom33_mul_itch(an, bn) \ -- ((5 * (an) >> 1) + GMP_NUMB_BITS) -+ (3 * (an) + GMP_NUMB_BITS) - #define mpn_toom3_sqr_itch(an) \ -- ((5 * (an) >> 1) + GMP_NUMB_BITS) -+ (3 * (an) + GMP_NUMB_BITS) - -+/* toom33/toom3: Scratch need is 8an/3 + 13k, k is the recursion depth. -+ We use 3an + C, so that we can use a smaller constant. -+ */ - #define mpn_toom44_mul_itch(an, bn) \ - (3 * (an) + GMP_NUMB_BITS) - #define mpn_toom4_sqr_itch(an) \ -diff -ruN gmp-5.0.3/longlong.h gmp-5.0.4/longlong.h ---- gmp-5.0.3/longlong.h 2012-01-27 09:59:30.000000000 +0100 -+++ gmp-5.0.4/longlong.h 2012-02-10 11:23:05.000000000 +0100 -@@ -2014,6 +2014,7 @@ - (q) = __MPN(udiv_w_sdiv) (&__r, nh, nl, d); \ - (r) = __r; \ - } while (0) -+__GMP_DECLSPEC UWtype __MPN(udiv_w_sdiv) (UWtype *, UWtype, UWtype, UWtype); - #endif - - /* If udiv_qrnnd was not defined for this processor, use __udiv_qrnnd_c. */ -diff -ruN gmp-5.0.3/Makefile.am gmp-5.0.4/Makefile.am ---- gmp-5.0.3/Makefile.am 2012-01-27 09:59:30.000000000 +0100 -+++ gmp-5.0.4/Makefile.am 2012-02-10 11:23:05.000000000 +0100 -@@ -69,6 +69,7 @@ - # 5.0.1 10:1:0 6:1:2 4:21:1 - # 5.0.2 10:2:0 6:2:2 4:22:1 - # 5.0.3 10:3:0 6:3:2 4:23:1 -+# 5.0.4 10:4:0 6:4:2 4:24:1 - # - # Starting at 3:0:0 is a slight abuse of the versioning system, but it - # ensures we're past soname libgmp.so.2, which was used on Debian GNU/Linux -@@ -82,15 +83,15 @@ - # libgmpxx.so.3.0.4) incrementing, to make it clear which GMP it's from. - - LIBGMP_LT_CURRENT = 10 --LIBGMP_LT_REVISION = 3 -+LIBGMP_LT_REVISION = 4 - LIBGMP_LT_AGE = 0 - - LIBGMPXX_LT_CURRENT = 6 --LIBGMPXX_LT_REVISION = 3 -+LIBGMPXX_LT_REVISION = 4 - LIBGMPXX_LT_AGE = 2 - - LIBMP_LT_CURRENT = 4 --LIBMP_LT_REVISION = 23 -+LIBMP_LT_REVISION = 24 - LIBMP_LT_AGE = 1 - - -diff -ruN gmp-5.0.3/Makefile.in gmp-5.0.4/Makefile.in ---- gmp-5.0.3/Makefile.in 2012-01-27 09:59:37.000000000 +0100 -+++ gmp-5.0.4/Makefile.in 2012-02-10 11:23:18.000000000 +0100 -@@ -414,6 +414,7 @@ - # 5.0.1 10:1:0 6:1:2 4:21:1 - # 5.0.2 10:2:0 6:2:2 4:22:1 - # 5.0.3 10:3:0 6:3:2 4:23:1 -+# 5.0.4 10:4:0 6:4:2 4:24:1 - # - # Starting at 3:0:0 is a slight abuse of the versioning system, but it - # ensures we're past soname libgmp.so.2, which was used on Debian GNU/Linux -@@ -426,13 +427,13 @@ - # it's still good to get the shared library filename (like - # libgmpxx.so.3.0.4) incrementing, to make it clear which GMP it's from. - LIBGMP_LT_CURRENT = 10 --LIBGMP_LT_REVISION = 3 -+LIBGMP_LT_REVISION = 4 - LIBGMP_LT_AGE = 0 - LIBGMPXX_LT_CURRENT = 6 --LIBGMPXX_LT_REVISION = 3 -+LIBGMPXX_LT_REVISION = 4 - LIBGMPXX_LT_AGE = 2 - LIBMP_LT_CURRENT = 4 --LIBMP_LT_REVISION = 23 -+LIBMP_LT_REVISION = 24 - LIBMP_LT_AGE = 1 - SUBDIRS = tests mpn mpz mpq mpf printf scanf cxx mpbsd demos tune doc - -diff -ruN gmp-5.0.3/mpf/cmp_si.c gmp-5.0.4/mpf/cmp_si.c ---- gmp-5.0.3/mpf/cmp_si.c 2012-01-27 09:59:30.000000000 +0100 -+++ gmp-5.0.4/mpf/cmp_si.c 2012-02-10 11:23:05.000000000 +0100 -@@ -29,6 +29,7 @@ - mp_exp_t uexp; - mp_limb_t ulimb; - int usign; -+ unsigned long abs_vval; - - uexp = u->_mp_exp; - usize = u->_mp_size; -@@ -55,13 +56,13 @@ - - usign = usize >= 0 ? 1 : -1; - usize = ABS (usize); -- vval = ABS (vval); -+ abs_vval = ABS_CAST (unsigned long, vval); - - /* 2. Are the exponents different (V's exponent == 1)? */ - #if GMP_NAIL_BITS != 0 -- if (uexp > 1 + ((unsigned long) vval > GMP_NUMB_MAX)) -+ if (uexp > 1 + (abs_vval > GMP_NUMB_MAX)) - return usign; -- if (uexp < 1 + ((unsigned long) vval > GMP_NUMB_MAX)) -+ if (uexp < 1 + (abs_vval > GMP_NUMB_MAX)) - return -usign; - #else - if (uexp > 1) -@@ -85,9 +86,9 @@ - usize--; - - /* 3. Compare the most significant mantissa limb with V. */ -- if (ulimb > (unsigned long) vval) -+ if (ulimb > abs_vval) - return usign; -- else if (ulimb < (unsigned long) vval) -+ else if (ulimb < abs_vval) - return -usign; - - /* Ignore zeroes at the low end of U. */ -diff -ruN gmp-5.0.3/mpf/get_si.c gmp-5.0.4/mpf/get_si.c ---- gmp-5.0.3/mpf/get_si.c 2012-01-27 09:59:30.000000000 +0100 -+++ gmp-5.0.4/mpf/get_si.c 2012-02-10 11:23:05.000000000 +0100 -@@ -72,5 +72,5 @@ - return fl & LONG_MAX; - else - /* this form necessary to correctly handle -0x80..00 */ -- return ~ ((fl - 1) & LONG_MAX); -+ return -1 - (long) ((fl - 1) & LONG_MAX); - } -diff -ruN gmp-5.0.3/mpf/iset_si.c gmp-5.0.4/mpf/iset_si.c ---- gmp-5.0.3/mpf/iset_si.c 2012-01-27 09:59:30.000000000 +0100 -+++ gmp-5.0.4/mpf/iset_si.c 2012-02-10 11:23:05.000000000 +0100 -@@ -31,7 +31,7 @@ - r->_mp_prec = prec; - r->_mp_d = (mp_ptr) (*__gmp_allocate_func) ((prec + 1) * BYTES_PER_MP_LIMB); - -- vl = (mp_limb_t) (unsigned long int) (val >= 0 ? val : -val); -+ vl = (mp_limb_t) ABS_CAST (unsigned long int, val); - - r->_mp_d[0] = vl & GMP_NUMB_MASK; - size = vl != 0; -diff -ruN gmp-5.0.3/mpf/set_si.c gmp-5.0.4/mpf/set_si.c ---- gmp-5.0.3/mpf/set_si.c 2012-01-27 09:59:30.000000000 +0100 -+++ gmp-5.0.4/mpf/set_si.c 2012-02-10 11:23:05.000000000 +0100 -@@ -27,7 +27,7 @@ - mp_size_t size; - mp_limb_t vl; - -- vl = (mp_limb_t) (unsigned long int) (val >= 0 ? val : -val); -+ vl = (mp_limb_t) ABS_CAST (unsigned long int, val); - - dest->_mp_d[0] = vl & GMP_NUMB_MASK; - size = vl != 0; -diff -ruN gmp-5.0.3/mpn/generic/gcdext.c gmp-5.0.4/mpn/generic/gcdext.c ---- gmp-5.0.3/mpn/generic/gcdext.c 2012-01-27 09:59:30.000000000 +0100 -+++ gmp-5.0.4/mpn/generic/gcdext.c 2012-02-10 11:23:05.000000000 +0100 -@@ -386,7 +386,10 @@ - MPN_COPY (gp, ap, n); - - MPN_CMP (c, u0, u1, un); -- ASSERT (c != 0); -+ /* c == 0 can happen only when A = (2k+1) G, B = 2 G. And in -+ this case we choose the cofactor + 1, corresponding to G = A -+ - k B, rather than -1, corresponding to G = - A + (k+1) B. */ -+ ASSERT (c != 0 || (un == 1 && u0[0] == 1 && u1[0] == 1)); - if (c < 0) - { - MPN_NORMALIZE (u0, un); -diff -ruN gmp-5.0.3/mpn/generic/gcdext_subdiv_step.c gmp-5.0.4/mpn/generic/gcdext_subdiv_step.c ---- gmp-5.0.3/mpn/generic/gcdext_subdiv_step.c 2012-01-27 09:59:30.000000000 +0100 -+++ gmp-5.0.4/mpn/generic/gcdext_subdiv_step.c 2012-02-10 11:23:05.000000000 +0100 -@@ -181,15 +181,17 @@ - - if (qn + u0n > un) - { -- ASSERT_NOCARRY (mpn_add (u1, tp, qn + u0n, u1, un)); -+ mp_size_t u1n = un; - un = qn + u0n; -- un -= (u1[un-1] == 0); -+ un -= (tp[un-1] == 0); -+ u1[un] = mpn_add (u1, tp, un, u1, u1n); - } - else - { - u1[un] = mpn_add (u1, u1, un, tp, qn + u0n); -- un += (u1[un] > 0); - } -+ -+ un += (u1[un] > 0); - } - - *unp = un; -diff -ruN gmp-5.0.3/mpn/generic/hgcd.c gmp-5.0.4/mpn/generic/hgcd.c ---- gmp-5.0.3/mpn/generic/hgcd.c 2012-01-27 09:59:30.000000000 +0100 -+++ gmp-5.0.4/mpn/generic/hgcd.c 2012-02-10 11:23:05.000000000 +0100 -@@ -115,8 +115,8 @@ - if (c[0] | c[1]) - { - M->n = n + qn + 1; -- M->p[0][col][n-1] = c[0]; -- M->p[1][col][n-1] = c[1]; -+ M->p[0][col][M->n - 1] = c[0]; -+ M->p[1][col][M->n - 1] = c[1]; - } - else - { -diff -ruN gmp-5.0.3/mpn/generic/powm_sec.c gmp-5.0.4/mpn/generic/powm_sec.c ---- gmp-5.0.3/mpn/generic/powm_sec.c 2012-01-27 09:59:30.000000000 +0100 -+++ gmp-5.0.4/mpn/generic/powm_sec.c 2012-02-10 11:23:05.000000000 +0100 -@@ -82,7 +82,7 @@ - - #if ! HAVE_NATIVE_mpn_sqr_basecase - /* The limit of the generic code is SQR_TOOM2_THRESHOLD. */ --#define SQR_BASECASE_MAX SQR_TOOM2_THRESHOLD -+#define SQR_BASECASE_LIM SQR_TOOM2_THRESHOLD - #endif - - #if HAVE_NATIVE_mpn_sqr_basecase -@@ -91,20 +91,19 @@ - mpn_sqr_basecase, it comes from SQR_TOOM2_THRESHOLD_MAX in the assembly - file. An assembly mpn_sqr_basecase that does not define it, should allow - any size. */ --#define SQR_BASECASE_MAX SQR_TOOM2_THRESHOLD -+#define SQR_BASECASE_LIM SQR_TOOM2_THRESHOLD - #endif - #endif - - #ifdef WANT_FAT_BINARY --/* For fat builds, we would need to quantify over all mpn_sqr_basecase limit -- that may appear in __gmpn_cpuvec. This asks for some configure.in hacking. -- For now, define a safe limit which all mpn_sqr_basecase will handle. -- FIXME! */ --#define SQR_BASECASE_MAX 32 -+/* For fat builds, we use SQR_TOOM2_THRESHOLD which will expand to a read from -+ __gmpn_cpuvec. Perhaps any possible sqr_basecase.asm allow any size, and we -+ limit the use unnecessarily. We cannot tell, so play it safe. FIXME. */ -+#define SQR_BASECASE_LIM SQR_TOOM2_THRESHOLD - #endif - --#ifndef SQR_BASECASE_MAX --/* If SQR_BASECASE_MAX is now not defined, use mpn_sqr_basecase for any operand -+#ifndef SQR_BASECASE_LIM -+/* If SQR_BASECASE_LIM is now not defined, use mpn_sqr_basecase for any operand - size. */ - #define mpn_local_sqr(rp,up,n,tp) mpn_sqr_basecase(rp,up,n) - #else -@@ -118,7 +117,7 @@ - ASSERT (n >= 1); - ASSERT (! MPN_OVERLAP_P (rp, 2*n, up, n)); - -- if (n <= SQR_BASECASE_MAX) -+ if (BELOW_THRESHOLD (n, SQR_BASECASE_LIM)) - { - mpn_sqr_basecase (rp, up, n); - return; -diff -ruN gmp-5.0.3/mpn/generic/toom63_mul.c gmp-5.0.4/mpn/generic/toom63_mul.c ---- gmp-5.0.3/mpn/generic/toom63_mul.c 2012-01-27 09:59:30.000000000 +0100 -+++ gmp-5.0.4/mpn/generic/toom63_mul.c 2012-02-10 11:23:05.000000000 +0100 -@@ -6,7 +6,7 @@ - SAFE TO REACH IT THROUGH DOCUMENTED INTERFACES. IN FACT, IT IS ALMOST - GUARANTEED THAT IT WILL CHANGE OR DISAPPEAR IN A FUTURE GNU MP RELEASE. - --Copyright 2009 Free Software Foundation, Inc. -+Copyright 2009, 2012 Free Software Foundation, Inc. - - This file is part of the GNU MP Library. - -@@ -105,8 +105,8 @@ - - ASSERT (0 < s && s <= n); - ASSERT (0 < t && t <= n); -- /* WARNING! it assumes s+t>n */ -- ASSERT ( s + t > n ); -+ /* WARNING! it assumes s+t>=n */ -+ ASSERT ( s + t >= n ); - ASSERT ( s + t > 4); - /* WARNING! it assumes n>1 */ - ASSERT ( n > 2); -diff -ruN gmp-5.0.3/mpn/generic/toom_interpolate_16pts.c gmp-5.0.4/mpn/generic/toom_interpolate_16pts.c ---- gmp-5.0.3/mpn/generic/toom_interpolate_16pts.c 2012-01-27 09:59:30.000000000 +0100 -+++ gmp-5.0.4/mpn/generic/toom_interpolate_16pts.c 2012-02-10 11:23:05.000000000 +0100 -@@ -6,7 +6,7 @@ - SAFE TO REACH IT THROUGH DOCUMENTED INTERFACES. IN FACT, IT IS ALMOST - GUARANTEED THAT IT WILL CHANGE OR DISAPPEAR IN A FUTURE GNU MP RELEASE. - --Copyright 2009, 2010 Free Software Foundation, Inc. -+Copyright 2009, 2010, 2012 Free Software Foundation, Inc. - - This file is part of the GNU MP Library. - -@@ -299,11 +299,15 @@ - DO_mpn_subrsh(r5, n3p1, r0, spt, 4, wsi); - - cy = DO_mpn_sublsh_n (r1 + BIT_CORRECTION, r0, spt, 42 - CORRECTION_BITS, wsi); -- MPN_DECR_U (r1 + spt + BIT_CORRECTION, n3p1 - spt - BIT_CORRECTION, cy); - #if BIT_CORRECTION -+ cy = mpn_sub_1 (r1 + spt + BIT_CORRECTION, r1 + spt + BIT_CORRECTION, -+ n3p1 - spt - BIT_CORRECTION, cy); -+ ASSERT (BIT_CORRECTION > 0 || cy == 0); - /* FIXME: assumes r7[n3p1] is writable (it is if r5 follows). */ - cy = r7[n3p1]; - r7[n3p1] = 0x80; -+#else -+ MPN_DECR_U (r1 + spt + BIT_CORRECTION, n3p1 - spt - BIT_CORRECTION, cy); - #endif - DO_mpn_subrsh(r7, n3p1 + BIT_CORRECTION, r0, spt, 6, wsi); - #if BIT_CORRECTION -diff -ruN gmp-5.0.3/mpn/generic/toom_interpolate_8pts.c gmp-5.0.4/mpn/generic/toom_interpolate_8pts.c ---- gmp-5.0.3/mpn/generic/toom_interpolate_8pts.c 2012-01-27 09:59:30.000000000 +0100 -+++ gmp-5.0.4/mpn/generic/toom_interpolate_8pts.c 2012-02-10 11:23:05.000000000 +0100 -@@ -188,5 +188,8 @@ - cy = mpn_add_1 (pp + 6*n, r3 + n, n, pp[6*n]); - MPN_INCR_U (r3 + 2*n, n + 1, cy); - cy = r3[3*n] + mpn_add_n (pp + 7*n, pp + 7*n, r3 + 2*n, n); -- MPN_INCR_U (pp + 8*n, spt - n, cy); -+ if (LIKELY(spt != n)) -+ MPN_INCR_U (pp + 8*n, spt - n, cy); -+ else -+ ASSERT (cy == 0); - } -diff -ruN gmp-5.0.3/mpn/generic/udiv_w_sdiv.c gmp-5.0.4/mpn/generic/udiv_w_sdiv.c ---- gmp-5.0.3/mpn/generic/udiv_w_sdiv.c 2012-01-27 09:59:30.000000000 +0100 -+++ gmp-5.0.4/mpn/generic/udiv_w_sdiv.c 2012-02-10 11:23:05.000000000 +0100 -@@ -9,7 +9,7 @@ - GNU MP RELEASE. - - --Copyright 1992, 1994, 1996, 2000 Free Software Foundation, Inc. -+Copyright 1992, 1994, 1996, 2000, 2011, 2012 Free Software Foundation, Inc. - - This file is part of the GNU MP Library. - -@@ -31,8 +31,7 @@ - #include "longlong.h" - - mp_limb_t --mpn_udiv_w_sdiv (rp, a1, a0, d) -- mp_limb_t *rp, a1, a0, d; -+mpn_udiv_w_sdiv (mp_limb_t *rp, mp_limb_t a1, mp_limb_t a0, mp_limb_t d) - { - mp_limb_t q, r; - mp_limb_t c0, c1, b1; -diff -ruN gmp-5.0.3/mpn/pa32/gmp-mparam.h gmp-5.0.4/mpn/pa32/gmp-mparam.h ---- gmp-5.0.3/mpn/pa32/gmp-mparam.h 2012-01-27 09:59:30.000000000 +0100 -+++ gmp-5.0.4/mpn/pa32/gmp-mparam.h 2012-02-10 11:23:05.000000000 +0100 -@@ -1,7 +1,7 @@ - /* HP-PA 1.0 gmp-mparam.h -- Compiler/machine parameter header file. - --Copyright 1991, 1993, 1994, 1999, 2000, 2001, 2002 Free Software Foundation, --Inc. -+Copyright 1991, 1993, 1994, 1999, 2000, 2001, 2002, 2012 Free Software -+Foundation, Inc. - - This file is part of the GNU MP Library. - -@@ -24,14 +24,14 @@ - /* These values are for the PA7100 using GCC. */ - /* Generated by tuneup.c, 2000-10-27. */ - --#ifndef MUL_TOOM22_THRESHOLD -+#ifndef MUL_TOOM22_THRESHOLD - #define MUL_TOOM22_THRESHOLD 30 - #endif - #ifndef MUL_TOOM33_THRESHOLD - #define MUL_TOOM33_THRESHOLD 141 - #endif - --#ifndef SQR_TOOM2_THRESHOLD -+#ifndef SQR_TOOM2_THRESHOLD - #define SQR_TOOM2_THRESHOLD 59 - #endif - #ifndef SQR_TOOM3_THRESHOLD -@@ -39,15 +39,13 @@ - #endif - - #ifndef DIV_DC_THRESHOLD --#define DIV_DC_THRESHOLD 108 -+#define DIV_DC_THRESHOLD 108 - #endif - - #ifndef POWM_THRESHOLD - #define POWM_THRESHOLD 18 - #endif - --#ifndef GCD_ACCEL_THRESHOLD --#define GCD_ACCEL_THRESHOLD 46 --#endif -+#ifndef GCDEXT_THRESHOLD - #define GCDEXT_THRESHOLD 33 - #endif -diff -ruN gmp-5.0.3/mpn/powerpc32/divrem_2.asm gmp-5.0.4/mpn/powerpc32/divrem_2.asm ---- gmp-5.0.3/mpn/powerpc32/divrem_2.asm 2012-01-27 09:59:30.000000000 +0100 -+++ gmp-5.0.4/mpn/powerpc32/divrem_2.asm 2012-02-10 11:23:05.000000000 +0100 -@@ -1,6 +1,6 @@ - dnl PPC-32 mpn_divrem_2 -- Divide an mpn number by a normalized 2-limb number. - --dnl Copyright 2007, 2008 Free Software Foundation, Inc. -+dnl Copyright 2007, 2008, 2012 Free Software Foundation, Inc. - - dnl This file is part of the GNU MP Library. - -@@ -84,9 +84,9 @@ - bge- cr7, L(9) - add r0, r0, r10 - cmplw cr7, r0, r10 -- cmplw cr6, r0, r6 -+ cmplw cr6, r6, r0 - addi r31, r31, -1 C q1-- -- cror 28, 28, 25 -+ crorc 28, 28, 25 - bc+ 12, 28, L(9) - addi r31, r31, -1 C q1-- - add r0, r0, r10 -@@ -101,9 +101,9 @@ - bge- cr7, L(13) - add r0, r0, r10 - cmplw cr7, r0, r10 -- cmplw cr6, r0, r11 -+ cmplw cr6, r11, r0 - addi r6, r6, -1 C q0-- -- cror 28, 28, 25 -+ crorc 28, 28, 25 - bc+ 12, 28, L(13) - C add r0, r0, r10 C final remainder - addi r6, r6, -1 C q0-- -diff -ruN gmp-5.0.3/mpn/x86_64/bd1/gmp-mparam.h gmp-5.0.4/mpn/x86_64/bd1/gmp-mparam.h ---- gmp-5.0.3/mpn/x86_64/bd1/gmp-mparam.h 1970-01-01 01:00:00.000000000 +0100 -+++ gmp-5.0.4/mpn/x86_64/bd1/gmp-mparam.h 2012-02-10 11:23:05.000000000 +0100 -@@ -0,0 +1,182 @@ -+/* AMD Bulldozer-1 gmp-mparam.h -- Compiler/machine parameter header file. -+ -+Copyright 1991, 1993, 1994, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, -+2008, 2009, 2010, 2012 Free Software Foundation, Inc. -+ -+This file is part of the GNU MP Library. -+ -+The GNU MP Library is free software; you can redistribute it and/or modify -+it under the terms of the GNU Lesser General Public License as published by -+the Free Software Foundation; either version 3 of the License, or (at your -+option) any later version. -+ -+The GNU MP Library is distributed in the hope that it will be useful, but -+WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY -+or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public -+License for more details. -+ -+You should have received a copy of the GNU Lesser General Public License -+along with the GNU MP Library. If not, see http://www.gnu.org/licenses/. */ -+ -+#define GMP_LIMB_BITS 64 -+#define BYTES_PER_MP_LIMB 8 -+ -+#define MOD_1_NORM_THRESHOLD 0 /* always */ -+#define MOD_1_UNNORM_THRESHOLD 0 /* always */ -+#define MOD_1N_TO_MOD_1_1_THRESHOLD 7 -+#define MOD_1U_TO_MOD_1_1_THRESHOLD 5 -+#define MOD_1_1_TO_MOD_1_2_THRESHOLD 0 /* never mpn_mod_1_1p */ -+#define MOD_1_2_TO_MOD_1_4_THRESHOLD 12 -+#define PREINV_MOD_1_TO_MOD_1_THRESHOLD 14 -+#define USE_PREINV_DIVREM_1 1 /* native */ -+#define DIVEXACT_1_THRESHOLD 0 /* always (native) */ -+#define BMOD_1_TO_MOD_1_THRESHOLD 24 -+ -+#define MUL_TOOM22_THRESHOLD 18 -+#define MUL_TOOM33_THRESHOLD 53 -+#define MUL_TOOM44_THRESHOLD 154 -+#define MUL_TOOM6H_THRESHOLD 274 -+#define MUL_TOOM8H_THRESHOLD 466 -+ -+#define MUL_TOOM32_TO_TOOM43_THRESHOLD 97 -+#define MUL_TOOM32_TO_TOOM53_THRESHOLD 140 -+#define MUL_TOOM42_TO_TOOM53_THRESHOLD 105 -+#define MUL_TOOM42_TO_TOOM63_THRESHOLD 109 -+ -+#define SQR_BASECASE_THRESHOLD 0 /* always (native) */ -+#define SQR_TOOM2_THRESHOLD 24 -+#define SQR_TOOM3_THRESHOLD 85 -+#define SQR_TOOM4_THRESHOLD 119 -+#define SQR_TOOM6_THRESHOLD 318 -+#define SQR_TOOM8_THRESHOLD 502 -+ -+#define MULMOD_BNM1_THRESHOLD 11 -+#define SQRMOD_BNM1_THRESHOLD 16 -+ -+#define MUL_FFT_MODF_THRESHOLD 412 /* k = 5 */ -+#define MUL_FFT_TABLE3 \ -+ { { 412, 5}, { 19, 6}, { 10, 5}, { 21, 6}, \ -+ { 11, 5}, { 23, 6}, { 21, 7}, { 11, 6}, \ -+ { 23, 7}, { 21, 8}, { 11, 7}, { 25, 8}, \ -+ { 13, 7}, { 28, 8}, { 15, 7}, { 31, 8}, \ -+ { 21, 9}, { 11, 8}, { 27, 9}, { 15, 8}, \ -+ { 33, 9}, { 19, 8}, { 41, 9}, { 23, 8}, \ -+ { 47, 9}, { 27,10}, { 15, 9}, { 31, 8}, \ -+ { 63, 9}, { 39,10}, { 23, 9}, { 51,11}, \ -+ { 15,10}, { 31, 9}, { 67,10}, { 39, 9}, \ -+ { 79,10}, { 47, 9}, { 95,10}, { 55,11}, \ -+ { 31,10}, { 79,11}, { 47,10}, { 103,12}, \ -+ { 31,11}, { 63,10}, { 127,11}, { 79,10}, \ -+ { 175,11}, { 95,10}, { 191,12}, { 63,11}, \ -+ { 127,10}, { 255,11}, { 143,10}, { 287,11}, \ -+ { 159,12}, { 95,13}, { 63,12}, { 127,11}, \ -+ { 271, 9}, { 1087,11}, { 287,10}, { 575,11}, \ -+ { 303,12}, { 159,11}, { 319,10}, { 671,11}, \ -+ { 351,12}, { 191,11}, { 383,10}, { 767,11}, \ -+ { 415,12}, { 223,11}, { 447,13}, { 127,12}, \ -+ { 255,11}, { 543,12}, { 287,11}, { 575,10}, \ -+ { 1215,12}, { 319,11}, { 639,12}, { 351,13}, \ -+ { 191,12}, { 383,11}, { 767,12}, { 415,11}, \ -+ { 831,10}, { 1663,12}, { 447,14}, { 127,13}, \ -+ { 255,12}, { 543,11}, { 1087,10}, { 2175,12}, \ -+ { 575,11}, { 1151,12}, { 607,11}, { 1215,13}, \ -+ { 319,12}, { 639,11}, { 1279,12}, { 671,11}, \ -+ { 1343,10}, { 2687,12}, { 703,13}, { 383,12}, \ -+ { 767,11}, { 1535,12}, { 831,13}, { 447,12}, \ -+ { 959,14}, { 255,13}, { 511,12}, { 1087,11}, \ -+ { 2175,13}, { 575,12}, { 1215,11}, { 2431,10}, \ -+ { 4863,13}, { 639,12}, { 1343,11}, { 2687,13}, \ -+ { 703,12}, { 1407,14}, { 383,13}, { 767,12}, \ -+ { 1535,13}, { 831,12}, { 1663,13}, { 959,15}, \ -+ { 255,14}, { 511,13}, { 1087,12}, { 2175,13}, \ -+ { 1215,12}, { 2431,11}, { 4863,14}, { 639,13}, \ -+ { 1343,12}, { 2687,13}, { 1471,12}, { 2943,11}, \ -+ { 5887,14}, { 767,13}, { 1599,12}, { 3199,13}, \ -+ { 1727,14}, { 895,13}, { 1919,12}, { 3839,15}, \ -+ { 511,14}, { 1023,13}, { 2175,14}, { 1151,13}, \ -+ { 2431,12}, { 4863,14}, { 16384,15}, { 32768,16}, \ -+ { 65536,17}, { 131072,18}, { 262144,19}, { 524288,20}, \ -+ {1048576,21}, {2097152,22}, {4194304,23}, {8388608,24} } -+#define MUL_FFT_TABLE3_SIZE 168 -+#define MUL_FFT_THRESHOLD 4736 -+ -+#define SQR_FFT_MODF_THRESHOLD 368 /* k = 5 */ -+#define SQR_FFT_TABLE3 \ -+ { { 368, 5}, { 19, 6}, { 10, 5}, { 21, 6}, \ -+ { 21, 7}, { 11, 6}, { 23, 7}, { 21, 8}, \ -+ { 11, 7}, { 25, 8}, { 13, 7}, { 28, 8}, \ -+ { 15, 7}, { 31, 8}, { 17, 7}, { 35, 8}, \ -+ { 19, 7}, { 39, 8}, { 27, 9}, { 15, 8}, \ -+ { 35, 9}, { 19, 8}, { 41, 9}, { 23, 8}, \ -+ { 47, 9}, { 27,10}, { 15, 9}, { 39,10}, \ -+ { 23, 9}, { 51,11}, { 15,10}, { 31, 9}, \ -+ { 67,10}, { 39, 9}, { 79,10}, { 47, 9}, \ -+ { 95,10}, { 55,11}, { 31,10}, { 79,11}, \ -+ { 47,10}, { 95,12}, { 31,11}, { 63,10}, \ -+ { 135,11}, { 79,10}, { 159,11}, { 95,10}, \ -+ { 191,11}, { 111,12}, { 63,11}, { 127,10}, \ -+ { 255, 9}, { 543,11}, { 143, 9}, { 575,12}, \ -+ { 95,11}, { 191,13}, { 63,12}, { 127,11}, \ -+ { 255,10}, { 511,11}, { 271,10}, { 543,11}, \ -+ { 287,10}, { 575,11}, { 303,12}, { 159,11}, \ -+ { 335,12}, { 191,11}, { 415,12}, { 223,11}, \ -+ { 447,10}, { 895,13}, { 127,12}, { 255,11}, \ -+ { 319,11}, { 639,10}, { 1279,12}, { 351,13}, \ -+ { 191,12}, { 383,11}, { 767,12}, { 415,11}, \ -+ { 831,10}, { 1663,12}, { 447,11}, { 895,14}, \ -+ { 127,13}, { 255,12}, { 511,11}, { 1023,12}, \ -+ { 543,11}, { 1087,10}, { 2175,12}, { 575,11}, \ -+ { 1151,12}, { 607,13}, { 319,12}, { 639,11}, \ -+ { 1279,12}, { 671,11}, { 1343,10}, { 2687,12}, \ -+ { 703,13}, { 383,12}, { 767,11}, { 1599,12}, \ -+ { 831,13}, { 447,12}, { 959,14}, { 255,13}, \ -+ { 511,12}, { 1087,11}, { 2175,13}, { 575,12}, \ -+ { 1151,11}, { 2303,12}, { 1215,11}, { 2431,10}, \ -+ { 4863,13}, { 639,12}, { 1343,11}, { 2687,13}, \ -+ { 703,12}, { 1407,14}, { 383,13}, { 767,12}, \ -+ { 1599,13}, { 831,12}, { 1727,13}, { 895,15}, \ -+ { 255,14}, { 511,13}, { 1087,12}, { 2175,13}, \ -+ { 1215,12}, { 2431,11}, { 4863,14}, { 639,13}, \ -+ { 1343,12}, { 2687,13}, { 1471,12}, { 2943,11}, \ -+ { 5887,14}, { 767,13}, { 1599,12}, { 3199,13}, \ -+ { 1727,14}, { 895,13}, { 1919,12}, { 3839,15}, \ -+ { 511,14}, { 1023,13}, { 2175,14}, { 1151,13}, \ -+ { 2431,12}, { 4863,14}, { 16384,15}, { 32768,16}, \ -+ { 65536,17}, { 131072,18}, { 262144,19}, { 524288,20}, \ -+ {1048576,21}, {2097152,22}, {4194304,23}, {8388608,24} } -+#define SQR_FFT_TABLE3_SIZE 172 -+#define SQR_FFT_THRESHOLD 3264 -+ -+#define MULLO_BASECASE_THRESHOLD 4 -+#define MULLO_DC_THRESHOLD 30 -+#define MULLO_MUL_N_THRESHOLD 8648 -+ -+#define DC_DIV_QR_THRESHOLD 38 -+#define DC_DIVAPPR_Q_THRESHOLD 187 -+#define DC_BDIV_QR_THRESHOLD 48 -+#define DC_BDIV_Q_THRESHOLD 92 -+ -+#define INV_MULMOD_BNM1_THRESHOLD 49 -+#define INV_NEWTON_THRESHOLD 202 -+#define INV_APPR_THRESHOLD 197 -+ -+#define BINV_NEWTON_THRESHOLD 246 -+#define REDC_1_TO_REDC_2_THRESHOLD 55 -+#define REDC_2_TO_REDC_N_THRESHOLD 0 /* anomaly: never REDC_2 */ -+ -+#define MU_DIV_QR_THRESHOLD 1470 -+#define MU_DIVAPPR_Q_THRESHOLD 1470 -+#define MUPI_DIV_QR_THRESHOLD 90 -+#define MU_BDIV_QR_THRESHOLD 1187 -+#define MU_BDIV_Q_THRESHOLD 1470 -+ -+#define MATRIX22_STRASSEN_THRESHOLD 15 -+#define HGCD_THRESHOLD 96 -+#define GCD_DC_THRESHOLD 400 -+#define GCDEXT_DC_THRESHOLD 288 -+#define JACOBI_BASE_METHOD 1 -+ -+#define GET_STR_DC_THRESHOLD 12 -+#define GET_STR_PRECOMPUTE_THRESHOLD 27 -+#define SET_STR_DC_THRESHOLD 172 -+#define SET_STR_PRECOMPUTE_THRESHOLD 1341 -diff -ruN gmp-5.0.3/mpq/set_si.c gmp-5.0.4/mpq/set_si.c ---- gmp-5.0.3/mpq/set_si.c 2012-01-27 09:59:30.000000000 +0100 -+++ gmp-5.0.4/mpq/set_si.c 2012-02-10 11:23:05.000000000 +0100 -@@ -35,7 +35,7 @@ - return; - } - -- abs_num = ABS (num); -+ abs_num = ABS_CAST (unsigned long, num); - - if (num == 0) - { -diff -ruN gmp-5.0.3/mpz/cmp_si.c gmp-5.0.4/mpz/cmp_si.c ---- gmp-5.0.3/mpz/cmp_si.c 2012-01-27 09:59:30.000000000 +0100 -+++ gmp-5.0.4/mpz/cmp_si.c 2012-02-10 11:23:05.000000000 +0100 -@@ -28,6 +28,7 @@ - mp_size_t usize = u->_mp_size; - mp_size_t vsize; - mp_limb_t u_digit; -+ unsigned long int absv_digit = (unsigned long int) v_digit; - - #if GMP_NAIL_BITS != 0 - /* FIXME. This isn't very pretty. */ -@@ -45,7 +46,7 @@ - else if (v_digit < 0) - { - vsize = -1; -- v_digit = -v_digit; -+ absv_digit = -absv_digit; - } - - if (usize != vsize) -@@ -56,10 +57,10 @@ - - u_digit = u->_mp_d[0]; - -- if (u_digit == (mp_limb_t) (unsigned long) v_digit) -+ if (u_digit == (mp_limb_t) absv_digit) - return 0; - -- if (u_digit > (mp_limb_t) (unsigned long) v_digit) -+ if (u_digit > (mp_limb_t) absv_digit) - return usize; - else - return -usize; -diff -ruN gmp-5.0.3/mpz/get_si.c gmp-5.0.4/mpz/get_si.c ---- gmp-5.0.3/mpz/get_si.c 2012-01-27 09:59:30.000000000 +0100 -+++ gmp-5.0.4/mpz/get_si.c 2012-02-10 11:23:05.000000000 +0100 -@@ -34,10 +34,10 @@ - #endif - - if (size > 0) -- return (long) zl & LONG_MAX; -+ return zl & LONG_MAX; - else if (size < 0) - /* This expression is necessary to properly handle 0x80000000 */ -- return ~(((long) zl - 1L) & LONG_MAX); -+ return -1 - (long) ((zl - 1) & LONG_MAX); - else - return 0; - } -diff -ruN gmp-5.0.3/mpz/iset_si.c gmp-5.0.4/mpz/iset_si.c ---- gmp-5.0.3/mpz/iset_si.c 2012-01-27 09:59:30.000000000 +0100 -+++ gmp-5.0.4/mpz/iset_si.c 2012-02-10 11:23:05.000000000 +0100 -@@ -31,7 +31,7 @@ - dest->_mp_alloc = 1; - dest->_mp_d = (mp_ptr) (*__gmp_allocate_func) (BYTES_PER_MP_LIMB); - -- vl = (mp_limb_t) (unsigned long int) (val >= 0 ? val : -val); -+ vl = (mp_limb_t) ABS_CAST (unsigned long int, val); - - dest->_mp_d[0] = vl & GMP_NUMB_MASK; - size = vl != 0; -diff -ruN gmp-5.0.3/mpz/mul_i.h gmp-5.0.4/mpz/mul_i.h ---- gmp-5.0.3/mpz/mul_i.h 2012-01-27 09:59:30.000000000 +0100 -+++ gmp-5.0.4/mpz/mul_i.h 2012-02-10 11:23:05.000000000 +0100 -@@ -26,7 +26,7 @@ - #ifdef OPERATION_mul_si - #define FUNCTION mpz_mul_si - #define MULTIPLICAND_UNSIGNED --#define MULTIPLICAND_ABS(x) ((unsigned long) ABS(x)) -+#define MULTIPLICAND_ABS(x) ABS_CAST(unsigned long, (x)) - #endif - - #ifdef OPERATION_mul_ui -diff -ruN gmp-5.0.3/mpz/set_si.c gmp-5.0.4/mpz/set_si.c ---- gmp-5.0.3/mpz/set_si.c 2012-01-27 09:59:30.000000000 +0100 -+++ gmp-5.0.4/mpz/set_si.c 2012-02-10 11:23:05.000000000 +0100 -@@ -27,7 +27,7 @@ - mp_size_t size; - mp_limb_t vl; - -- vl = (mp_limb_t) (unsigned long int) (val >= 0 ? val : -val); -+ vl = (mp_limb_t) ABS_CAST (unsigned long int, val); - - dest->_mp_d[0] = vl & GMP_NUMB_MASK; - size = vl != 0; -diff -ruN gmp-5.0.3/NEWS gmp-5.0.4/NEWS ---- gmp-5.0.3/NEWS 2012-01-27 09:59:30.000000000 +0100 -+++ gmp-5.0.4/NEWS 2012-02-10 11:23:05.000000000 +0100 -@@ -5,6 +5,44 @@ - medium, provided this notice is preserved. - - -+Changes between GMP version 5.0.3 and 5.0.4 -+ -+ BUGS FIXED -+ * Thresholds in mpn_powm_sec for both fat and non-fat builds are now used -+ safely, plugging a one-word buffer overrun introduced in the 5.0.3 release -+ (for non-fat) and a multi-word buffer overrun that existed since 5.0 (for -+ fat). (We have not been able to provoke malign stack smashing in any of -+ the ~100 configurations explored by the GMP nightly builds, but the bug -+ should be assumed to be exploitable.) -+ -+ * Two bugs in multiplication code causing incorrect computation with -+ extremely low probability have been fixed. -+ -+ * A bug in the test suite causing buffer overruns during "make check", -+ sometimes leading to subsequent malloc crashes, has been fixed. -+ -+ * Two bugs in the gcd code have been fixed. They could lead to incorrect -+ results, but for uniformly distributed random operands, the likelihood for -+ that is infinitesimally small. (There was also a third bug, but that was -+ an incorrect ASSERT, which furthermore was not enabled by default.) -+ -+ * A bug affecting 32-bit PowerPC division has been fixed. The bug caused -+ miscomputation for certain divisors in the range 2^32 ... 2^64-1 (about 1 -+ in 2^30 of these). -+ -+ SPEEDUPS -+ * None, except indirectly through recognition of new CPUs, and through better -+ tuning parameters. -+ -+ FEATURES -+ * Some more tests added to the self-check suite. -+ -+ * The AMD "Bulldozer" CPU is now recognised. -+ -+ MISC -+ * None. -+ -+ - Changes between GMP version 5.0.2 and 5.0.3 - - BUGS FIXED -diff -ruN gmp-5.0.3/tests/mpn/Makefile.am gmp-5.0.4/tests/mpn/Makefile.am ---- gmp-5.0.3/tests/mpn/Makefile.am 2012-01-27 09:59:30.000000000 +0100 -+++ gmp-5.0.4/tests/mpn/Makefile.am 2012-02-10 11:23:05.000000000 +0100 -@@ -1,6 +1,6 @@ - ## Process this file with automake to generate Makefile.in - --# Copyright 2001, 2002, 2003, 2009, 2010 Free Software Foundation, Inc. -+# Copyright 2001, 2002, 2003, 2009, 2010, 2012 Free Software Foundation, Inc. - # - # This file is part of the GNU MP Library. - # -@@ -21,12 +21,12 @@ - INCLUDES = -I$(top_srcdir) -I$(top_srcdir)/tests - LDADD = $(top_builddir)/tests/libtests.la $(top_builddir)/libgmp.la - --check_PROGRAMS = t-asmtype t-aors_1 t-divrem_1 t-fat t-get_d \ -- t-instrument t-iord_u t-mp_bases t-perfsqr t-scan \ -- t-toom22 t-toom32 t-toom33 t-toom42 t-toom43 t-toom44 \ -- t-toom52 t-toom53 t-toom62 t-toom63 t-toom6h t-toom8h \ -- t-hgcd t-matrix22 t-mullo t-mulmod_bnm1 t-sqrmod_bnm1 \ -- t-invert t-div t-bdiv -+check_PROGRAMS = t-asmtype t-aors_1 t-divrem_1 t-mod_1 t-fat t-get_d \ -+ t-instrument t-iord_u t-mp_bases t-perfsqr t-scan \ -+ t-toom22 t-toom32 t-toom33 t-toom42 t-toom43 t-toom44 \ -+ t-toom52 t-toom53 t-toom62 t-toom63 t-toom6h t-toom8h \ -+ t-mul t-mullo t-mulmod_bnm1 t-sqrmod_bnm1 \ -+ t-hgcd t-matrix22 t-invert t-div t-bdiv - - EXTRA_DIST = toom-shared.h - -diff -ruN gmp-5.0.3/tests/mpn/Makefile.in gmp-5.0.4/tests/mpn/Makefile.in ---- gmp-5.0.3/tests/mpn/Makefile.in 2012-01-27 09:59:36.000000000 +0100 -+++ gmp-5.0.4/tests/mpn/Makefile.in 2012-02-10 11:23:17.000000000 +0100 -@@ -15,7 +15,7 @@ - - @SET_MAKE@ - --# Copyright 2001, 2002, 2003, 2009, 2010 Free Software Foundation, Inc. -+# Copyright 2001, 2002, 2003, 2009, 2010, 2012 Free Software Foundation, Inc. - # - # This file is part of the GNU MP Library. - # -@@ -52,16 +52,16 @@ - host_triplet = @host@ - ANSI2KNR = $(top_builddir)/ansi2knr - check_PROGRAMS = t-asmtype$(EXEEXT) t-aors_1$(EXEEXT) \ -- t-divrem_1$(EXEEXT) t-fat$(EXEEXT) t-get_d$(EXEEXT) \ -- t-instrument$(EXEEXT) t-iord_u$(EXEEXT) t-mp_bases$(EXEEXT) \ -- t-perfsqr$(EXEEXT) t-scan$(EXEEXT) t-toom22$(EXEEXT) \ -- t-toom32$(EXEEXT) t-toom33$(EXEEXT) t-toom42$(EXEEXT) \ -- t-toom43$(EXEEXT) t-toom44$(EXEEXT) t-toom52$(EXEEXT) \ -- t-toom53$(EXEEXT) t-toom62$(EXEEXT) t-toom63$(EXEEXT) \ -- t-toom6h$(EXEEXT) t-toom8h$(EXEEXT) t-hgcd$(EXEEXT) \ -- t-matrix22$(EXEEXT) t-mullo$(EXEEXT) t-mulmod_bnm1$(EXEEXT) \ -- t-sqrmod_bnm1$(EXEEXT) t-invert$(EXEEXT) t-div$(EXEEXT) \ -- t-bdiv$(EXEEXT) -+ t-divrem_1$(EXEEXT) t-mod_1$(EXEEXT) t-fat$(EXEEXT) \ -+ t-get_d$(EXEEXT) t-instrument$(EXEEXT) t-iord_u$(EXEEXT) \ -+ t-mp_bases$(EXEEXT) t-perfsqr$(EXEEXT) t-scan$(EXEEXT) \ -+ t-toom22$(EXEEXT) t-toom32$(EXEEXT) t-toom33$(EXEEXT) \ -+ t-toom42$(EXEEXT) t-toom43$(EXEEXT) t-toom44$(EXEEXT) \ -+ t-toom52$(EXEEXT) t-toom53$(EXEEXT) t-toom62$(EXEEXT) \ -+ t-toom63$(EXEEXT) t-toom6h$(EXEEXT) t-toom8h$(EXEEXT) \ -+ t-mul$(EXEEXT) t-mullo$(EXEEXT) t-mulmod_bnm1$(EXEEXT) \ -+ t-sqrmod_bnm1$(EXEEXT) t-hgcd$(EXEEXT) t-matrix22$(EXEEXT) \ -+ t-invert$(EXEEXT) t-div$(EXEEXT) t-bdiv$(EXEEXT) - subdir = tests/mpn - DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in - ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -@@ -133,11 +133,21 @@ - t_matrix22_LDADD = $(LDADD) - t_matrix22_DEPENDENCIES = $(top_builddir)/tests/libtests.la \ - $(top_builddir)/libgmp.la -+t_mod_1_SOURCES = t-mod_1.c -+t_mod_1_OBJECTS = t-mod_1$U.$(OBJEXT) -+t_mod_1_LDADD = $(LDADD) -+t_mod_1_DEPENDENCIES = $(top_builddir)/tests/libtests.la \ -+ $(top_builddir)/libgmp.la - t_mp_bases_SOURCES = t-mp_bases.c - t_mp_bases_OBJECTS = t-mp_bases$U.$(OBJEXT) - t_mp_bases_LDADD = $(LDADD) - t_mp_bases_DEPENDENCIES = $(top_builddir)/tests/libtests.la \ - $(top_builddir)/libgmp.la -+t_mul_SOURCES = t-mul.c -+t_mul_OBJECTS = t-mul$U.$(OBJEXT) -+t_mul_LDADD = $(LDADD) -+t_mul_DEPENDENCIES = $(top_builddir)/tests/libtests.la \ -+ $(top_builddir)/libgmp.la - t_mullo_SOURCES = t-mullo.c - t_mullo_OBJECTS = t-mullo$U.$(OBJEXT) - t_mullo_LDADD = $(LDADD) -@@ -237,16 +247,18 @@ - $(LDFLAGS) -o $@ - SOURCES = t-aors_1.c t-asmtype.c t-bdiv.c t-div.c t-divrem_1.c t-fat.c \ - t-get_d.c t-hgcd.c t-instrument.c t-invert.c t-iord_u.c \ -- t-matrix22.c t-mp_bases.c t-mullo.c t-mulmod_bnm1.c \ -- t-perfsqr.c t-scan.c t-sqrmod_bnm1.c t-toom22.c t-toom32.c \ -- t-toom33.c t-toom42.c t-toom43.c t-toom44.c t-toom52.c \ -- t-toom53.c t-toom62.c t-toom63.c t-toom6h.c t-toom8h.c -+ t-matrix22.c t-mod_1.c t-mp_bases.c t-mul.c t-mullo.c \ -+ t-mulmod_bnm1.c t-perfsqr.c t-scan.c t-sqrmod_bnm1.c \ -+ t-toom22.c t-toom32.c t-toom33.c t-toom42.c t-toom43.c \ -+ t-toom44.c t-toom52.c t-toom53.c t-toom62.c t-toom63.c \ -+ t-toom6h.c t-toom8h.c - DIST_SOURCES = t-aors_1.c t-asmtype.c t-bdiv.c t-div.c t-divrem_1.c \ - t-fat.c t-get_d.c t-hgcd.c t-instrument.c t-invert.c \ -- t-iord_u.c t-matrix22.c t-mp_bases.c t-mullo.c t-mulmod_bnm1.c \ -- t-perfsqr.c t-scan.c t-sqrmod_bnm1.c t-toom22.c t-toom32.c \ -- t-toom33.c t-toom42.c t-toom43.c t-toom44.c t-toom52.c \ -- t-toom53.c t-toom62.c t-toom63.c t-toom6h.c t-toom8h.c -+ t-iord_u.c t-matrix22.c t-mod_1.c t-mp_bases.c t-mul.c \ -+ t-mullo.c t-mulmod_bnm1.c t-perfsqr.c t-scan.c t-sqrmod_bnm1.c \ -+ t-toom22.c t-toom32.c t-toom33.c t-toom42.c t-toom43.c \ -+ t-toom44.c t-toom52.c t-toom53.c t-toom62.c t-toom63.c \ -+ t-toom6h.c t-toom8h.c - ETAGS = etags - CTAGS = ctags - am__tty_colors = \ -@@ -495,9 +507,15 @@ - t-matrix22$(EXEEXT): $(t_matrix22_OBJECTS) $(t_matrix22_DEPENDENCIES) - @rm -f t-matrix22$(EXEEXT) - $(LINK) $(t_matrix22_OBJECTS) $(t_matrix22_LDADD) $(LIBS) -+t-mod_1$(EXEEXT): $(t_mod_1_OBJECTS) $(t_mod_1_DEPENDENCIES) -+ @rm -f t-mod_1$(EXEEXT) -+ $(LINK) $(t_mod_1_OBJECTS) $(t_mod_1_LDADD) $(LIBS) - t-mp_bases$(EXEEXT): $(t_mp_bases_OBJECTS) $(t_mp_bases_DEPENDENCIES) - @rm -f t-mp_bases$(EXEEXT) - $(LINK) $(t_mp_bases_OBJECTS) $(t_mp_bases_LDADD) $(LIBS) -+t-mul$(EXEEXT): $(t_mul_OBJECTS) $(t_mul_DEPENDENCIES) -+ @rm -f t-mul$(EXEEXT) -+ $(LINK) $(t_mul_OBJECTS) $(t_mul_LDADD) $(LIBS) - t-mullo$(EXEEXT): $(t_mullo_OBJECTS) $(t_mullo_DEPENDENCIES) - @rm -f t-mullo$(EXEEXT) - $(LINK) $(t_mullo_OBJECTS) $(t_mullo_LDADD) $(LIBS) -@@ -593,8 +611,12 @@ - $(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/t-iord_u.c; then echo $(srcdir)/t-iord_u.c; else echo t-iord_u.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@ - t-matrix22_.c: t-matrix22.c $(ANSI2KNR) - $(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/t-matrix22.c; then echo $(srcdir)/t-matrix22.c; else echo t-matrix22.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@ -+t-mod_1_.c: t-mod_1.c $(ANSI2KNR) -+ $(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/t-mod_1.c; then echo $(srcdir)/t-mod_1.c; else echo t-mod_1.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@ - t-mp_bases_.c: t-mp_bases.c $(ANSI2KNR) - $(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/t-mp_bases.c; then echo $(srcdir)/t-mp_bases.c; else echo t-mp_bases.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@ -+t-mul_.c: t-mul.c $(ANSI2KNR) -+ $(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/t-mul.c; then echo $(srcdir)/t-mul.c; else echo t-mul.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@ - t-mullo_.c: t-mullo.c $(ANSI2KNR) - $(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/t-mullo.c; then echo $(srcdir)/t-mullo.c; else echo t-mullo.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@ - t-mulmod_bnm1_.c: t-mulmod_bnm1.c $(ANSI2KNR) -@@ -635,7 +657,8 @@ - t-get_d_.$(OBJEXT) t-get_d_.lo t-hgcd_.$(OBJEXT) t-hgcd_.lo \ - t-instrument_.$(OBJEXT) t-instrument_.lo t-invert_.$(OBJEXT) \ - t-invert_.lo t-iord_u_.$(OBJEXT) t-iord_u_.lo t-matrix22_.$(OBJEXT) \ --t-matrix22_.lo t-mp_bases_.$(OBJEXT) t-mp_bases_.lo t-mullo_.$(OBJEXT) \ -+t-matrix22_.lo t-mod_1_.$(OBJEXT) t-mod_1_.lo t-mp_bases_.$(OBJEXT) \ -+t-mp_bases_.lo t-mul_.$(OBJEXT) t-mul_.lo t-mullo_.$(OBJEXT) \ - t-mullo_.lo t-mulmod_bnm1_.$(OBJEXT) t-mulmod_bnm1_.lo \ - t-perfsqr_.$(OBJEXT) t-perfsqr_.lo t-scan_.$(OBJEXT) t-scan_.lo \ - t-sqrmod_bnm1_.$(OBJEXT) t-sqrmod_bnm1_.lo t-toom22_.$(OBJEXT) \ -diff -ruN gmp-5.0.3/tests/mpn/t-hgcd.c gmp-5.0.4/tests/mpn/t-hgcd.c ---- gmp-5.0.3/tests/mpn/t-hgcd.c 2012-01-27 09:59:30.000000000 +0100 -+++ gmp-5.0.4/tests/mpn/t-hgcd.c 2012-02-10 11:23:05.000000000 +0100 -@@ -105,9 +105,9 @@ - size_range = mpz_get_ui (bs) % 13 + 2; - - mpz_urandomb (bs, rands, size_range); -- mpz_urandomb (op1, rands, mpz_get_ui (bs) + MIN_OPERAND_SIZE); -+ mpz_rrandomb (op1, rands, mpz_get_ui (bs) + MIN_OPERAND_SIZE); - mpz_urandomb (bs, rands, size_range); -- mpz_urandomb (op2, rands, mpz_get_ui (bs) + MIN_OPERAND_SIZE); -+ mpz_rrandomb (op2, rands, mpz_get_ui (bs) + MIN_OPERAND_SIZE); - - if (mpz_cmp (op1, op2) < 0) - mpz_swap (op1, op2); -diff -ruN gmp-5.0.3/tests/mpn/t-mod_1.c gmp-5.0.4/tests/mpn/t-mod_1.c ---- gmp-5.0.3/tests/mpn/t-mod_1.c 1970-01-01 01:00:00.000000000 +0100 -+++ gmp-5.0.4/tests/mpn/t-mod_1.c 2012-02-10 11:23:05.000000000 +0100 -@@ -0,0 +1,118 @@ -+/* Test mpn_mod_1 variants. -+ -+Copyright 2010 Free Software Foundation, Inc. -+ -+This file is part of the GNU MP Library. -+ -+The GNU MP Library is free software; you can redistribute it and/or modify -+it under the terms of the GNU Lesser General Public License as published by -+the Free Software Foundation; either version 3 of the License, or (at your -+option) any later version. -+ -+The GNU MP Library is distributed in the hope that it will be useful, but -+WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY -+or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public -+License for more details. -+ -+You should have received a copy of the GNU Lesser General Public License -+along with the GNU MP Library. If not, see http://www.gnu.org/licenses/. */ -+ -+#include <stdio.h> -+#include <stdlib.h> -+ -+#include "gmp.h" -+#include "gmp-impl.h" -+#include "tests.h" -+ -+static void -+check_one (mp_srcptr ap, mp_size_t n, mp_limb_t b) -+{ -+ mp_limb_t r_ref = refmpn_mod_1 (ap, n, b); -+ mp_limb_t r; -+ -+ if (n >= 2) -+ { -+ mp_limb_t pre[4]; -+ mpn_mod_1_1p_cps (pre, b); -+ r = mpn_mod_1_1p (ap, n, b << pre[1], pre); -+ if (r != r_ref) -+ { -+ printf ("mpn_mod_1_1p failed\n"); -+ goto fail; -+ } -+ } -+ if ((b & GMP_NUMB_HIGHBIT) == 0) -+ { -+ mp_limb_t pre[5]; -+ mpn_mod_1s_2p_cps (pre, b); -+ r = mpn_mod_1s_2p (ap, n, b << pre[1], pre); -+ if (r != r_ref) -+ { -+ printf ("mpn_mod_1s_2p failed\n"); -+ goto fail; -+ } -+ } -+ if (b <= GMP_NUMB_MASK / 4) -+ { -+ mp_limb_t pre[7]; -+ mpn_mod_1s_4p_cps (pre, b); -+ r = mpn_mod_1s_4p (ap, n, b << pre[1], pre); -+ if (r != r_ref) -+ { -+ printf ("mpn_mod_1s_4p failed\n"); -+ goto fail; -+ } -+ } -+ r = mpn_mod_1 (ap, n, b); -+ if (r != r_ref) -+ { -+ printf ("mpn_mod_1 failed\n"); -+ fail: -+ printf ("an = %d, a: ", (int) n); mpn_dump (ap, n); -+ printf ("b : "); mpn_dump (&b, 1); -+ printf ("r (expected): "); mpn_dump (&r_ref, 1); -+ printf ("r (bad) : "); mpn_dump (&r, 1); -+ abort(); -+ } -+} -+ -+int -+main (int argc, char **argv) -+{ -+ gmp_randstate_ptr rands; -+ int i; -+ unsigned a_bits; -+ unsigned b_bits; -+ mpz_t a; -+ mpz_t b; -+ -+ tests_start (); -+ rands = RANDS; -+ mpz_init (a); -+ mpz_init (b); -+ -+ for (i = 0; i < 300; i++) -+ { -+ mp_size_t asize; -+ a_bits = 1 + gmp_urandomm_ui (rands, 1000); -+ b_bits = 1 + gmp_urandomm_ui (rands, GMP_NUMB_BITS); -+ -+ mpz_rrandomb (a, rands, a_bits); -+ mpz_rrandomb (b, rands, b_bits); -+ -+ asize = SIZ(a); -+ if (!asize) -+ asize = 1; -+ if (mpz_sgn (b) == 0) -+ mpz_set_ui (b, 1); -+ -+ check_one (PTR(a), asize, PTR(b)[0]); -+ } -+ -+ mpz_clear (a); -+ mpz_clear (b); -+ -+ tests_end (); -+ return 0; -+} -+ -diff -ruN gmp-5.0.3/tests/mpn/t-mul.c gmp-5.0.4/tests/mpn/t-mul.c ---- gmp-5.0.3/tests/mpn/t-mul.c 1970-01-01 01:00:00.000000000 +0100 -+++ gmp-5.0.4/tests/mpn/t-mul.c 2012-02-10 11:23:05.000000000 +0100 -@@ -0,0 +1,101 @@ -+/* Test mpn_mul function for all sizes up to a selected limit. -+ -+Copyright 2011, 2012 Free Software Foundation, Inc. -+ -+This file is part of the GNU MP Library. -+ -+The GNU MP Library is free software; you can redistribute it and/or modify -+it under the terms of the GNU Lesser General Public License as published by -+the Free Software Foundation; either version 3 of the License, or (at your -+option) any later version. -+ -+The GNU MP Library is distributed in the hope that it will be useful, but -+WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY -+or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public -+License for more details. -+ -+You should have received a copy of the GNU Lesser General Public License -+along with the GNU MP Library. If not, see http://www.gnu.org/licenses/. */ -+ -+ -+#include <stdlib.h> -+#include <stdio.h> -+ -+#include "gmp.h" -+#include "gmp-impl.h" -+#include "tests.h" -+ -+static unsigned -+isqrt (unsigned t) -+{ -+ unsigned s, b; -+ -+ for (b = 0, s = t; b++, s >>= 1; ) -+ ; -+ -+ s = 1 << (b >> 1); -+ if (b & 1) -+ s += s >> 1; -+ -+ do -+ { -+ b = t / s; -+ s = (s + b) >> 1; -+ } -+ while (b < s); -+ -+ return s; -+} -+ -+int -+main (int argc, char **argv) -+{ -+ mp_ptr ap, bp, rp, refp; -+ mp_size_t max_n, an, bn, rn; -+ gmp_randstate_ptr rands; -+ int reps; -+ TMP_DECL; -+ TMP_MARK; -+ -+ reps = 1; -+ -+ tests_start (); -+ TESTS_REPS (reps, argv, argc); -+ -+ rands = RANDS; -+ -+ /* Re-interpret reps argument as a size argument. */ -+ max_n = isqrt (reps * 25000); -+ -+ ap = TMP_ALLOC_LIMBS (max_n + 1); -+ bp = TMP_ALLOC_LIMBS (max_n + 1); -+ rp = TMP_ALLOC_LIMBS (2 * max_n); -+ refp = TMP_ALLOC_LIMBS (2 * max_n); -+ -+ for (an = 1; an <= max_n; an += 1) -+ { -+ for (bn = 1; bn <= an; bn += 1) -+ { -+ mpn_random2 (ap, an + 1); -+ mpn_random2 (bp, bn + 1); -+ -+ refmpn_mul (refp, ap, an, bp, bn); -+ mpn_mul (rp, ap, an, bp, bn); -+ -+ rn = an + bn; -+ if (mpn_cmp (refp, rp, rn)) -+ { -+ printf ("ERROR, an = %d, bn = %d, rn = %d\n", -+ (int) an, (int) bn, (int) rn); -+ printf ("a: "); mpn_dump (ap, an); -+ printf ("b: "); mpn_dump (bp, bn); -+ printf ("r: "); mpn_dump (rp, rn); -+ printf ("ref: "); mpn_dump (refp, rn); -+ abort(); -+ } -+ } -+ } -+ TMP_FREE; -+ tests_end (); -+ return 0; -+} -diff -ruN gmp-5.0.3/tests/mpn/t-toom6h.c gmp-5.0.4/tests/mpn/t-toom6h.c ---- gmp-5.0.3/tests/mpn/t-toom6h.c 2012-01-27 09:59:30.000000000 +0100 -+++ gmp-5.0.4/tests/mpn/t-toom6h.c 2012-02-10 11:23:05.000000000 +0100 -@@ -1,9 +1,13 @@ - #define mpn_toomMN_mul mpn_toom6h_mul - #define mpn_toomMN_mul_itch mpn_toom6h_mul_itch - -+#define SIZE_LOG 11 -+ - /* Smaller sizes not supported; may lead to recursive calls to - toom22_mul, toom33_mul, or toom44_mul with invalid input size. */ - #define MIN_AN MUL_TOOM6H_THRESHOLD --#define MIN_BN(an) (MAX ((an*3)>>3, 42) ) -+#define MIN_BN(an) (MAX ((an*3)>>3, 46)) -+ -+#define COUNT 1000 - - #include "toom-shared.h" -diff -ruN gmp-5.0.3/tests/mpn/t-toom8h.c gmp-5.0.4/tests/mpn/t-toom8h.c ---- gmp-5.0.3/tests/mpn/t-toom8h.c 2012-01-27 09:59:30.000000000 +0100 -+++ gmp-5.0.4/tests/mpn/t-toom8h.c 2012-02-10 11:23:05.000000000 +0100 -@@ -1,6 +1,8 @@ - #define mpn_toomMN_mul mpn_toom8h_mul - #define mpn_toomMN_mul_itch mpn_toom8h_mul_itch - -+#define SIZE_LOG 11 -+ - /* Smaller sizes not supported; may lead to recursive calls to - toom{22,33,44,6h}_mul with invalid input size. */ - #define MIN_AN MUL_TOOM8H_THRESHOLD -@@ -19,4 +21,6 @@ - #endif - #endif - -+#define COUNT 1000 -+ - #include "toom-shared.h" -diff -ruN gmp-5.0.3/tests/mpz/t-gcd.c gmp-5.0.4/tests/mpz/t-gcd.c ---- gmp-5.0.3/tests/mpz/t-gcd.c 2012-01-27 09:59:30.000000000 +0100 -+++ gmp-5.0.4/tests/mpz/t-gcd.c 2012-02-10 11:23:05.000000000 +0100 -@@ -154,9 +154,9 @@ - size_range = mpz_get_ui (bs) % 17 + 2; - - mpz_urandomb (bs, rands, size_range); -- mpz_urandomb (op1, rands, mpz_get_ui (bs) + MIN_OPERAND_BITSIZE); -+ mpz_rrandomb (op1, rands, mpz_get_ui (bs) + MIN_OPERAND_BITSIZE); - mpz_urandomb (bs, rands, size_range); -- mpz_urandomb (op2, rands, mpz_get_ui (bs) + MIN_OPERAND_BITSIZE); -+ mpz_rrandomb (op2, rands, mpz_get_ui (bs) + MIN_OPERAND_BITSIZE); - - mpz_urandomb (bs, rands, 8); - bsi = mpz_get_ui (bs); -diff -ruN gmp-5.0.3/tests/mpz/t-powm.c gmp-5.0.4/tests/mpz/t-powm.c ---- gmp-5.0.3/tests/mpz/t-powm.c 2012-01-27 09:59:30.000000000 +0100 -+++ gmp-5.0.4/tests/mpz/t-powm.c 2012-02-10 11:23:06.000000000 +0100 -@@ -1,6 +1,6 @@ - /* Test mpz_powm, mpz_mul, mpz_mod, mpz_mod_ui, mpz_div_ui. - --Copyright 1991, 1993, 1994, 1996, 1999, 2000, 2001, 2009 Free Software -+Copyright 1991, 1993, 1994, 1996, 1999, 2000, 2001, 2009, 2012 Free Software - Foundation, Inc. - - This file is part of the GNU MP Library. -@@ -20,6 +20,7 @@ - - #include <stdio.h> - #include <stdlib.h> -+#include <string.h> - - #include "gmp.h" - #include "gmp-impl.h" -@@ -27,6 +28,21 @@ - - void debug_mp __GMP_PROTO ((mpz_t, int)); - -+#define SIZEM 13 -+ -+/* Check that all sizes up to just above MUL_TOOM22_THRESHOLD have been tested -+ a few times. FIXME: If SIZEM is set too low, this will never happen. */ -+int -+allsizes_seen (int *allsizes) -+{ -+ mp_size_t i; -+ -+ for (i = 1; i < MUL_TOOM22_THRESHOLD + 4; i++) -+ if (allsizes[i] < 4) -+ return 0; -+ return 1; -+} -+ - int - main (int argc, char **argv) - { -@@ -38,6 +54,7 @@ - gmp_randstate_ptr rands; - mpz_t bs; - unsigned long bsi, size_range; -+ unsigned int allsizes[1 << (SIZEM + 2 - 1)]; - - tests_start (); - TESTS_REPS (reps, argv, argc); -@@ -55,10 +72,12 @@ - mpz_init (exp2); - mpz_init (base2); - -- for (i = 0; i < reps; i++) -+ memset (allsizes, 0, (1 << (SIZEM + 2 - 1)) * sizeof (int)); -+ -+ for (i = 0; i < reps || ! allsizes_seen (allsizes); i++) - { - mpz_urandomb (bs, rands, 32); -- size_range = mpz_get_ui (bs) % 13 + 2; -+ size_range = mpz_get_ui (bs) % SIZEM + 2; - - do /* Loop until mathematically well-defined. */ - { -@@ -80,6 +99,8 @@ - } - while (mpz_cmp_ui (mod, 0) == 0); - -+ allsizes[SIZ(mod)] += 1; -+ - mpz_urandomb (bs, rands, 2); - bsi = mpz_get_ui (bs); - if ((bsi & 1) != 0) -diff -ruN gmp-5.0.3/tests/refmpn.c gmp-5.0.4/tests/refmpn.c ---- gmp-5.0.3/tests/refmpn.c 2012-01-27 09:59:30.000000000 +0100 -+++ gmp-5.0.4/tests/refmpn.c 2012-02-10 11:23:06.000000000 +0100 -@@ -2,7 +2,7 @@ - of the normal gmp code. Speed isn't a consideration. - - Copyright 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, --2007, 2008, 2009 Free Software Foundation, Inc. -+2007, 2008, 2009, 2012 Free Software Foundation, Inc. - - This file is part of the GNU MP Library. - -diff -ruN gmp-5.0.3/tune/README gmp-5.0.4/tune/README ---- gmp-5.0.3/tune/README 2012-01-27 09:59:30.000000000 +0100 -+++ gmp-5.0.4/tune/README 2012-02-10 11:23:06.000000000 +0100 -@@ -91,7 +91,7 @@ - LIBS="$old_LIBS" - - AC_SUBST(TUNE_LIBS) -- -+ - might work. - - Low resolution timebase diff --git a/libraries/integer-gmp/gmp/tarball/patch b/libraries/integer-gmp/gmp/tarball/patch deleted file mode 100644 index c7c5e7eef2..0000000000 --- a/libraries/integer-gmp/gmp/tarball/patch +++ /dev/null @@ -1,103 +0,0 @@ -diff -ur gmp-5.0.2.orig/Makefile.am gmp-5.0.2/Makefile.am ---- gmp-5.0.2.orig/Makefile.am 2011-05-08 10:49:29.000000000 +0100 -+++ gmp-5.0.2/Makefile.am 2011-07-27 17:58:20.000000000 +0100 -@@ -93,7 +93,7 @@ - LIBMP_LT_AGE = 1 - - --SUBDIRS = tests mpn mpz mpq mpf printf scanf cxx mpbsd demos tune doc -+SUBDIRS = tests mpn mpz mpq mpf printf scanf cxx mpbsd demos tune - - EXTRA_DIST = configfsf.guess configfsf.sub .gdbinit INSTALL.autoconf - -diff -ur gmp-5.0.2.orig/Makefile.in gmp-5.0.2/Makefile.in ---- gmp-5.0.2.orig/Makefile.in 2011-05-08 10:49:35.000000000 +0100 -+++ gmp-5.0.2/Makefile.in 2011-07-27 17:58:13.000000000 +0100 -@@ -435,7 +435,7 @@ - LIBMP_LT_CURRENT = 4 - LIBMP_LT_REVISION = 22 - LIBMP_LT_AGE = 1 --SUBDIRS = tests mpn mpz mpq mpf printf scanf cxx mpbsd demos tune doc -+SUBDIRS = tests mpn mpz mpq mpf printf scanf cxx mpbsd demos tune - - # The ansi2knr setups for the build programs are the same as the normal - # automake ansi2knr rules, but using $(CC_FOR_BUILD) instead of $(CC). -diff -ur gmp-5.0.2.orig/configure gmp-5.0.2/configure ---- gmp-5.0.2.orig/configure 2011-05-08 10:49:33.000000000 +0100 -+++ gmp-5.0.2/configure 2011-07-27 18:00:11.000000000 +0100 -@@ -28478,7 +28478,7 @@ - # FIXME: Upcoming version of autoconf/automake may not like broken lines. - # Right now automake isn't accepting the new AC_CONFIG_FILES scheme. - --ac_config_files="$ac_config_files Makefile mpbsd/Makefile mpf/Makefile mpn/Makefile mpq/Makefile mpz/Makefile printf/Makefile scanf/Makefile cxx/Makefile tests/Makefile tests/devel/Makefile tests/mpbsd/Makefile tests/mpf/Makefile tests/mpn/Makefile tests/mpq/Makefile tests/mpz/Makefile tests/rand/Makefile tests/misc/Makefile tests/cxx/Makefile doc/Makefile tune/Makefile demos/Makefile demos/calc/Makefile demos/expr/Makefile gmp.h:gmp-h.in mp.h:mp-h.in" -+ac_config_files="$ac_config_files Makefile mpbsd/Makefile mpf/Makefile mpn/Makefile mpq/Makefile mpz/Makefile printf/Makefile scanf/Makefile cxx/Makefile tests/Makefile tests/devel/Makefile tests/mpbsd/Makefile tests/mpf/Makefile tests/mpn/Makefile tests/mpq/Makefile tests/mpz/Makefile tests/rand/Makefile tests/misc/Makefile tests/cxx/Makefile tune/Makefile demos/Makefile demos/calc/Makefile demos/expr/Makefile gmp.h:gmp-h.in mp.h:mp-h.in" - - cat >confcache <<\_ACEOF - # This file is a shell script that caches the results of configure -@@ -29665,7 +29665,6 @@ - "tests/rand/Makefile") CONFIG_FILES="$CONFIG_FILES tests/rand/Makefile" ;; - "tests/misc/Makefile") CONFIG_FILES="$CONFIG_FILES tests/misc/Makefile" ;; - "tests/cxx/Makefile") CONFIG_FILES="$CONFIG_FILES tests/cxx/Makefile" ;; -- "doc/Makefile") CONFIG_FILES="$CONFIG_FILES doc/Makefile" ;; - "tune/Makefile") CONFIG_FILES="$CONFIG_FILES tune/Makefile" ;; - "demos/Makefile") CONFIG_FILES="$CONFIG_FILES demos/Makefile" ;; - "demos/calc/Makefile") CONFIG_FILES="$CONFIG_FILES demos/calc/Makefile" ;; -Only in gmp-5.0.2.orig: doc -diff -ur gmp-5.0.2.orig/memory.c gmp-5.0.2/memory.c ---- gmp-5.0.2.orig/memory.c 2011-05-08 10:49:29.000000000 +0100 -+++ gmp-5.0.2/memory.c 2011-07-27 15:18:21.000000000 +0100 -@@ -24,10 +24,21 @@ - #include "gmp-impl.h" - - -+/* Patched for GHC: */ -+void * stgAllocForGMP (size_t size_in_bytes); -+void * stgReallocForGMP (void *ptr, size_t old_size, size_t new_size); -+void stgDeallocForGMP (void *ptr, size_t size); -+ -+void * (*__gmp_allocate_func) __GMP_PROTO ((size_t)) = stgAllocForGMP; -+void * (*__gmp_reallocate_func) __GMP_PROTO ((void *, size_t, size_t)) -+ = stgReallocForGMP; -+void (*__gmp_free_func) __GMP_PROTO ((void *, size_t)) = stgDeallocForGMP; -+/* - void * (*__gmp_allocate_func) __GMP_PROTO ((size_t)) = __gmp_default_allocate; - void * (*__gmp_reallocate_func) __GMP_PROTO ((void *, size_t, size_t)) - = __gmp_default_reallocate; - void (*__gmp_free_func) __GMP_PROTO ((void *, size_t)) = __gmp_default_free; -+*/ - - - /* Default allocation functions. In case of failure to allocate/reallocate ---- gmp-5.0.2.orig/configure.in 2011-08-04 16:35:01.000000000 +1000 -+++ gmp-5.0.2/configure.in 2011-08-04 16:39:03.000000000 +1000 -@@ -3178,6 +3178,7 @@ - AC_DEFINE(HAVE_HOST_CPU_FAMILY_x86_64) - case $host in - *-*-darwin*) -+ GMP_DEFINE_RAW(["define(<PIC_ALWAYS>,<yes>)"]) - GMP_INCLUDE_MPN(x86_64/darwin.m4) ;; - esac - ;; ---- gmp-5.0.2.orig/configure 2011-08-04 17:38:22.000000000 +1000 -+++ gmp-5.0.2/configure 2011-08-04 17:39:04.000000000 +1000 -@@ -27567,6 +27567,9 @@ - case $host in - *-*-darwin*) - -+echo "define(<PIC_ALWAYS>,<yes>)" >> $gmp_tmpconfigm4 -+ -+ - echo "include_mpn(\`x86_64/darwin.m4')" >> $gmp_tmpconfigm4i - ;; - esac ---- gmp-5.0.2.orig/mpn/asm-defs.m4 2011-08-04 23:11:19.000000000 +1000 -+++ gmp-5.0.2/mpn/asm-defs.m4 2011-08-04 23:11:59.000000000 +1000 -@@ -1041,7 +1041,7 @@ - dnl systems which are always PIC. PIC_ALWAYS established in config.m4 - dnl identifies these for us. - --ifelse(`PIC_ALWAYS',`yes',`define(`PIC')') -+ifelse(PIC_ALWAYS,yes,`define(`PIC')') - - - dnl Various possible defines passed from the Makefile that are to be tested diff --git a/mk/build.mk.sample b/mk/build.mk.sample index e9219bd32b..4175dc7cf2 100644 --- a/mk/build.mk.sample +++ b/mk/build.mk.sample @@ -86,7 +86,7 @@ endif # Uncomment the following line to enable building DPH #BUILD_DPH=YES -# Uncomment the following to force `integer-gmp` to use the in-tree GMP 5.0.4 +# Uncomment the following to force `integer-gmp` to use the in-tree GMP 6.1.2 # (other sometimes useful configure-options: `--with-gmp-{includes,libraries}`) #libraries/integer-gmp_CONFIGURE_OPTS += --configure-option=--with-intree-gmp |