gmp: update to version 4.2.2
authorHenning Heinold <heinold@inf.fu-berlin.de>
Wed, 7 May 2008 19:57:32 +0000 (19:57 +0000)
committerHenning Heinold <heinold@inf.fu-berlin.de>
Wed, 7 May 2008 19:57:32 +0000 (19:57 +0000)
* seems to work
* add patches 02_noexec-stack.diff and 03_gnu89-inline.diff from debian
* add mpf_set_str_c.diff from the gmp-website

packages/gmp/gmp-4.2.2/.mtn2git_empty [new file with mode: 0644]
packages/gmp/gmp-4.2.2/02_noexec-stack.diff [new file with mode: 0644]
packages/gmp/gmp-4.2.2/03_gnu89-inline.diff [new file with mode: 0644]
packages/gmp/gmp-4.2.2/amd64.patch [new file with mode: 0644]
packages/gmp/gmp-4.2.2/configure.patch [new file with mode: 0644]
packages/gmp/gmp-4.2.2/mpf_set_str_c.diff [new file with mode: 0644]
packages/gmp/gmp-4.2.2/sh4-asmfix.patch [new file with mode: 0644]
packages/gmp/gmp-4.2.2/x86-fat.diff [new file with mode: 0644]
packages/gmp/gmp-native_4.2.2.bb [new file with mode: 0644]
packages/gmp/gmp_4.2.2.bb [new file with mode: 0644]

diff --git a/packages/gmp/gmp-4.2.2/.mtn2git_empty b/packages/gmp/gmp-4.2.2/.mtn2git_empty
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/packages/gmp/gmp-4.2.2/02_noexec-stack.diff b/packages/gmp/gmp-4.2.2/02_noexec-stack.diff
new file mode 100644 (file)
index 0000000..613589e
--- /dev/null
@@ -0,0 +1,74 @@
+Index: acinclude.m4
+===================================================================
+RCS file: /cvsroot/pkg-gmp/gmp/acinclude.m4,v
+retrieving revision 1.3
+diff -u -b -B -r1.3 acinclude.m4
+--- gmp-4.2.2.orig/acinclude.m4        14 Apr 2006 22:48:55 -0000      1.3
++++ gmp-4.2.2/acinclude.m4     15 Apr 2006 06:11:48 -0000
+@@ -1613,6 +1613,34 @@
+ ])
++dnl Checks whether the stack can be marked nonexecutable by passing an option
++dnl to the C-compiler when acting on .s files. Appends that option to ASFLAGS.
++dnl This macro is adapted from one found in GLIBC-2.3.5.
++AC_DEFUN([CL_AS_NOEXECSTACK],[
++dnl AC_REQUIRE([AC_PROG_CC]) GMP uses something else
++AC_CACHE_CHECK([whether assembler supports --noexecstack option],
++cl_cv_as_noexecstack, [dnl
++  cat > conftest.c <<EOF
++void foo() {}
++EOF
++  if AC_TRY_COMMAND([${CC} $CFLAGS $CPPFLAGS
++                     -S -o conftest.s conftest.c >/dev/null]) \
++     && grep -q .note.GNU-stack conftest.s \
++     && AC_TRY_COMMAND([${CC} $CFLAGS $CPPFLAGS -Wa,--noexecstack
++                       -c -o conftest.o conftest.s >/dev/null])
++  then
++    cl_cv_as_noexecstack=yes
++  else
++    cl_cv_as_noexecstack=no
++  fi
++  rm -f conftest*])
++  if test "$cl_cv_as_noexecstack" = yes; then
++    ASMFLAGS="$ASMFLAGS -Wa,--noexecstack"
++  fi
++  AC_SUBST(ASMFLAGS)
++])
++
++
+ dnl  GMP_ASM_LABEL_SUFFIX
+ dnl  --------------------
+ dnl  : - is usual.
+Index: configure.in
+===================================================================
+RCS file: /cvsroot/pkg-gmp/gmp/configure.in,v
+retrieving revision 1.3
+diff -u -b -B -r1.3 configure.in
+--- gmp-4.2.2.orig/configure.in        14 Apr 2006 22:48:55 -0000      1.3
++++ gmp-4.2.2/configure.in     15 Apr 2006 06:11:49 -0000
+@@ -2024,6 +2024,8 @@
+ # Automake ansi2knr support.
+ AM_C_PROTOTYPES
++CL_AS_NOEXECSTACK
++
+ GMP_PROG_AR
+ GMP_PROG_NM
+Index: mpn/Makeasm.am
+===================================================================
+RCS file: /cvsroot/pkg-gmp/gmp/mpn/Makeasm.am,v
+retrieving revision 1.5
+diff -u -b -B -r1.5 Makeasm.am
+--- gmp-4.2.2.orig/mpn/Makeasm.am      14 Apr 2006 22:48:59 -0000      1.5
++++ gmp-4.2.2/mpn/Makeasm.am           15 Apr 2006 06:11:49 -0000
+@@ -24,7 +24,7 @@
+ # COMPILE minus CC.
+ #
+ COMPILE_FLAGS = $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+-      $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
++      $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) $(ASMFLAGS)
+ # Flags used for preprocessing (in ansi2knr rules).
+ #
diff --git a/packages/gmp/gmp-4.2.2/03_gnu89-inline.diff b/packages/gmp/gmp-4.2.2/03_gnu89-inline.diff
new file mode 100644 (file)
index 0000000..17e8915
--- /dev/null
@@ -0,0 +1,23 @@
+Index: gmp-h.in
+===================================================================
+RCS file: /cvsroot/pkg-gmp/gmp/gmp-h.in,v
+retrieving revision 1.4
+diff -u -b -B -r1.4 gmp-h.in
+--- gmp-4.2.2.orig/gmp-h.in    15 Sep 2007 23:05:28 -0000      1.4
++++ gmp-4.2.2/gmp-h.in         9 Apr 2008 05:30:42 -0000
+@@ -418,9 +418,13 @@
+     for an inline too, so as to correctly specify "dllimport" on windows, in
+     case the function is called rather than inlined.
+     GCC 4.3 and above with -std=c99 or -std=gnu99 implements ISO C99
+-    inline semantics, unless -fgnu89-inline is used.  */
++    inline semantics, unless -fgnu89-inline is used.
++
++   With GCC 4.2, `__GNUC_STDC_INLINE__' is never defined (because C99 inline
++   semantics are not supported), but a warning is issued in C99 mode if
++   `__gnu_inline__' is not used.  */
+ #ifdef __GNUC__
+-#ifdef __GNUC_STDC_INLINE__
++#if (defined __GNUC_STDC_INLINE__) || (__GNUC__ == 4 && __GNUC_MINOR__ == 2)
+ #define __GMP_EXTERN_INLINE extern __inline__ __attribute__ ((__gnu_inline__))
+ #else
+ #define __GMP_EXTERN_INLINE      extern __inline__
diff --git a/packages/gmp/gmp-4.2.2/amd64.patch b/packages/gmp/gmp-4.2.2/amd64.patch
new file mode 100644 (file)
index 0000000..67be9dd
--- /dev/null
@@ -0,0 +1,14 @@
+--- gmp-4.1.4/longlong.h.orig  2004-04-22 00:34:28.000000000 +0200
++++ gmp-4.1.4/longlong.h       2005-07-18 01:13:06.000000000 +0200
+@@ -738,8 +738,10 @@
+    count is only an int. */
+ #define count_trailing_zeros(count, x)                                        \
+   do {                                                                        \
++    UDItype __cbtmp;                                                  \
+     ASSERT ((x) != 0);                                                        \
+-    __asm__ ("bsfq %1,%q0" : "=r" (count) : "rm" ((UDItype)(x)));     \
++    __asm__ ("bsfq %1,%0" : "=r" (__cbtmp) : "rm" ((UDItype)(x)));    \
++    (count) = __cbtmp;                                                        \
+   } while (0)
+ #endif /* x86_64 */
diff --git a/packages/gmp/gmp-4.2.2/configure.patch b/packages/gmp/gmp-4.2.2/configure.patch
new file mode 100644 (file)
index 0000000..2a3b0e6
--- /dev/null
@@ -0,0 +1,207 @@
+ acinclude.m4 |   26 ++++++++++++++------------
+ configure.in |   24 +++++++++---------------
+ 2 files changed, 23 insertions(+), 27 deletions(-)
+
+Index: gmp-4.2.2/acinclude.m4
+===================================================================
+--- gmp-4.2.2.orig/acinclude.m4        2008-05-01 11:07:43.000000000 +0200
++++ gmp-4.2.2/acinclude.m4     2008-05-01 11:07:48.000000000 +0200
+@@ -30,20 +30,20 @@
+ dnl    conftest.exe - various DOS compilers
+-define(IA64_PATTERN,
++define([IA64_PATTERN],
+ [[ia64*-*-* | itanium-*-* | itanium2-*-*]])
+ dnl  Need to be careful not to match m6811, m6812, m68hc11 and m68hc12, all
+ dnl  of which config.sub accepts.  (Though none of which are likely to work
+ dnl  with GMP.)
+ dnl
+-define(M68K_PATTERN,
++define([M68K_PATTERN],
+ [[m68k-*-* | m68[0-9][0-9][0-9]-*-*]])
+-define(POWERPC64_PATTERN,
++define([POWERPC64_PATTERN],
+ [[powerpc64-*-* | powerpc64le-*-* | powerpc620-*-* | powerpc630-*-* | powerpc970-*-* | power[3-9]-*-*]])
+-define(X86_PATTERN,
++define([X86_PATTERN],
+ [[i?86*-*-* | k[5-8]*-*-* | pentium*-*-* | athlon-*-* | viac3*-*-*]])
+@@ -62,7 +62,7 @@
+ dnl      x86/k6      ->  k6
+ dnl      x86/k6/mmx  ->  k6_mmx
+-define(GMP_FAT_SUFFIX,
++define([GMP_FAT_SUFFIX],
+ [[$1=`echo $2 | sed -e '/\//s:^[^/]*/::' -e 's:[\\/]:_:g'`]])
+@@ -71,7 +71,7 @@
+ dnl  Emit code to remove any occurance of ITEM from $LISTVAR.  ITEM can be a
+ dnl  shell expression like $foo if desired.
+-define(GMP_REMOVE_FROM_LIST,
++define([GMP_REMOVE_FROM_LIST],
+ [remove_from_list_tmp=
+ for remove_from_list_i in $[][$1]; do
+   if test $remove_from_list_i = [$2]; then :;
+@@ -87,12 +87,12 @@
+ dnl  ----------------------
+ dnl  Strip entries subdir from $path and $fat_path.
+-define(GMP_STRIP_PATH,
++define([GMP_STRIP_PATH],
+ [GMP_STRIP_PATH_VAR(path, [$1])
+ GMP_STRIP_PATH_VAR(fat_path, [$1])
+ ])
+-define(GMP_STRIP_PATH_VAR,
++define([GMP_STRIP_PATH_VAR],
+ [tmp_path=
+ for i in $[][$1]; do
+   case $i in
+@@ -113,7 +113,7 @@
+ dnl  Dummy values for __GMP_BITS_PER_MP_LIMB and GMP_LIMB_BITS are enough
+ dnl  for all current configure-time uses of gmp.h.
+-define(GMP_INCLUDE_GMP_H,
++define([GMP_INCLUDE_GMP_H],
+ [[#define __GMP_WITHIN_CONFIGURE 1   /* ignore template stuff */
+ #define GMP_NAIL_BITS $GMP_NAIL_BITS
+ #define __GMP_BITS_PER_MP_LIMB 123 /* dummy for GMP_NUMB_BITS etc */
+@@ -129,7 +129,7 @@
+ dnl  FILE.  The regexps here aren't very rugged, but are enough for gmp.
+ dnl  /dev/null as a parameter prevents a hang if $2 is accidentally omitted.
+-define(GMP_HEADER_GETVAL,
++define([GMP_HEADER_GETVAL],
+ [patsubst(patsubst(
+ esyscmd([grep "^#define $1 " $2 /dev/null 2>/dev/null]),
+ [^.*$1[       ]+],[]),
+@@ -143,7 +143,7 @@
+ dnl  autoconf time.  Two digits like 3.0 if patchlevel <= 0, or three digits
+ dnl  like 3.0.1 if patchlevel > 0.
+-define(GMP_VERSION,
++define([GMP_VERSION],
+ [GMP_HEADER_GETVAL(__GNU_MP_VERSION,gmp-h.in)[]dnl
+ .GMP_HEADER_GETVAL(__GNU_MP_VERSION_MINOR,gmp-h.in)[]dnl
+ ifelse(m4_eval(GMP_HEADER_GETVAL(__GNU_MP_VERSION_PATCHLEVEL,gmp-h.in) > 0),1,
+@@ -1489,7 +1489,9 @@
+ echo ["define(<CONFIG_TOP_SRCDIR>,<\`$tmp'>)"] >>$gmp_tmpconfigm4
+ # All CPUs use asm-defs.m4
+-echo ["include][(CONFIG_TOP_SRCDIR\`/mpn/asm-defs.m4')"] >>$gmp_tmpconfigm4i
++echo -n ["include("] >>$gmp_tmpconfigm4i
++echo -n ["CONFIG_TOP_SRCDIR\`/mpn/asm-defs.m4'"] >>$gmp_tmpconfigm4i
++echo [")"] >>$gmp_tmpconfigm4i
+ ])
+Index: gmp-4.2.2/configure.in
+===================================================================
+--- gmp-4.2.2.orig/configure.in        2008-05-01 11:07:43.000000000 +0200
++++ gmp-4.2.2/configure.in     2008-05-01 11:07:48.000000000 +0200
+@@ -29,12 +29,6 @@
+ AC_PREREQ(2.59)
+ AC_INIT(GNU MP, GMP_VERSION, gmp-bugs@swox.com, gmp)
+ AC_CONFIG_SRCDIR(gmp-impl.h)
+-m4_pattern_forbid([^[ \t]*GMP_])
+-m4_pattern_allow(GMP_LDFLAGS)
+-m4_pattern_allow(GMP_LIMB_BITS)
+-m4_pattern_allow(GMP_MPARAM_H_SUGGEST)
+-m4_pattern_allow(GMP_NAIL_BITS)
+-m4_pattern_allow(GMP_NUMB_BITS)
+ # If --target is not used then $target_alias is empty, but if say
+ # "./configure athlon-pc-freebsd3.5" is used, then all three of
+@@ -275,7 +269,7 @@
+ # After GMP specific searches and tests, the standard autoconf AC_PROG_CC is
+ # called.  User selections of CC etc are respected.
+ #
+-# Care is taken not to use macros like AC_TRY_COMPILE during the GMP
++# Care is taken not to use macros like AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[]])],[],[]) during the GMP
+ # pre-testing, since they of course depend on AC_PROG_CC, and also some of
+ # them cache their results, which is not wanted.
+ #
+@@ -367,7 +361,7 @@
+ # FIXME: We'd like to prefer an ANSI compiler, perhaps by preferring
+ # c89 over cc here.  But note that on HP-UX c89 provides a castrated
+ # environment, and would want to be excluded somehow.  Maybe
+-# AC_PROG_CC_STDC already does enough to stick cc into ANSI mode and
++#  already does enough to stick cc into ANSI mode and
+ # we don't need to worry.
+ #
+ cclist="gcc cc"
+@@ -1518,7 +1512,7 @@
+ CFLAGS_or_unset=${CFLAGS-'(unset)'}
+ CPPFLAGS_or_unset=${CPPFLAGS-'(unset)'}
+-cat >&AC_FD_CC <<EOF
++cat >&AS_MESSAGE_LOG_FD() <<EOF
+ User:
+ ABI=$ABI
+ CC=$CC
+@@ -1889,7 +1883,6 @@
+ # The C compiler and preprocessor, put into ANSI mode if possible.
+ AC_PROG_CC
+-AC_PROG_CC_STDC
+ AC_PROG_CPP
+ GMP_H_ANSI
+@@ -1912,11 +1905,11 @@
+ # The C++ compiler, if desired.
+ want_cxx=no
++AC_PROG_CXX
+ if test $enable_cxx != no; then
+   test_CXXFLAGS=${CXXFLAGS+set}
+-  AC_PROG_CXX
+-  echo "CXXFLAGS chosen by autoconf: $CXXFLAGS" >&AC_FD_CC
++  echo "CXXFLAGS chosen by autoconf: $CXXFLAGS" >&AS_MESSAGE_LOG_FD()
+   cxxflags_ac_prog_cxx=$CXXFLAGS
+   cxxflags_list=ac_prog_cxx
+@@ -2022,7 +2015,7 @@
+ esac
+-cat >&AC_FD_CC <<EOF
++cat >&AS_MESSAGE_LOG_FD() <<EOF
+ Decided:
+ ABI=$ABI
+ CC=$CC
+@@ -3199,7 +3192,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_OUTPUT(Makefile                                                    \
++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            \
+@@ -3208,4 +3201,5 @@
+   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)
++  gmp.h:gmp-h.in mp.h:mp-h.in])
++AC_OUTPUT
+Index: gmp-4.2.2/gmp-h.in
+===================================================================
+--- gmp-4.2.2.orig/gmp-h.in    2007-09-03 18:05:40.000000000 +0200
++++ gmp-4.2.2/gmp-h.in 2008-05-01 11:10:42.000000000 +0200
+@@ -516,6 +516,7 @@
+ #if defined (__cplusplus)
+ extern "C" {
++#include <cstdio>
+ #ifdef _GMP_H_HAVE_FILE
+ using std::FILE;
+ #endif
diff --git a/packages/gmp/gmp-4.2.2/mpf_set_str_c.diff b/packages/gmp/gmp-4.2.2/mpf_set_str_c.diff
new file mode 100644 (file)
index 0000000..1924611
--- /dev/null
@@ -0,0 +1,38 @@
+*** gmp-4.2.2.orig/mpf/set_str.c       30 Aug 2007 18:19:41 -0000
+--- gmp-4.2.2/mpf/set_str.c    10 Dec 2007 04:47:18 -0000
+*************** mpf_set_str (mpf_ptr x, const char *str,
+*** 272,277 ****
+  
+      if (expptr != 0)
+!       /* FIXME: Should do some error checking here.  */
+!       exp_in_base = strtol (expptr, (char **) 0, exp_base);
+      else
+        exp_in_base = 0;
+--- 272,298 ----
+  
+      if (expptr != 0)
+!       {
+!      /* Scan and convert the exponent, in base exp_base.  */
+!      long dig, neg = -(long) ('-' == expptr[0]);
+!      expptr -= neg;                  /* conditional increment */
+!      c = (unsigned char) *expptr++;
+!      dig = digit_value[c];
+!      if (dig >= exp_base)
+!        {
+!          TMP_FREE;
+!          return -1;
+!        }
+!      exp_in_base = dig;
+!      c = (unsigned char) *expptr++;
+!      dig = digit_value[c];
+!      while (dig < exp_base)
+!        {
+!          exp_in_base = exp_in_base * exp_base;
+!          exp_in_base += dig;
+!          c = (unsigned char) *expptr++;
+!          dig = digit_value[c];
+!        }
+!      exp_in_base = (exp_in_base ^ neg) - neg; /* conditional negation */
+!       }
+      else
+        exp_in_base = 0;
diff --git a/packages/gmp/gmp-4.2.2/sh4-asmfix.patch b/packages/gmp/gmp-4.2.2/sh4-asmfix.patch
new file mode 100644 (file)
index 0000000..1a01f61
--- /dev/null
@@ -0,0 +1,26 @@
+--- gmp-4.1.4/mpn/sh/add_n.s   2005/11/17 08:44:00     1.1
++++ gmp-4.1.4/mpn/sh/add_n.s   2005/11/17 08:18:57
+@@ -29,8 +29,8 @@
+       .text
+       .align 2
+-      .global ___gmpn_add_n
+-___gmpn_add_n:
++      .global __gmpn_add_n
++__gmpn_add_n:
+       mov     #0,r3           ! clear cy save reg
+ Loop: mov.l   @r5+,r1
+--- gmp-4.1.4/mpn/sh/sub_n.s   2005/11/17 08:44:04     1.1
++++ gmp-4.1.4/mpn/sh/sub_n.s   2005/11/17 08:18:59
+@@ -29,8 +29,8 @@
+       .text
+       .align 2
+-      .global ___gmpn_sub_n
+-___gmpn_sub_n:
++      .global __gmpn_sub_n
++__gmpn_sub_n:
+       mov     #0,r3           ! clear cy save reg
+ Loop: mov.l   @r5+,r1
diff --git a/packages/gmp/gmp-4.2.2/x86-fat.diff b/packages/gmp/gmp-4.2.2/x86-fat.diff
new file mode 100644 (file)
index 0000000..2a54622
--- /dev/null
@@ -0,0 +1,122 @@
+See:
+
+ http://gmplib.org/patches/x86-fat.diff
+ http://gmplib.org/list-archives/gmp-bugs/2006-October/000579.html
+ http://gmplib.org/#BUGREPORTS
+
+Removed the configure part of the patch since we patch configure.in. It was
+only needed for FAT binaries anyway and this is being included to fix
+linking errors.
+
+Index: mpn/generic/addsub_n.c
+===================================================================
+RCS file: /home/cvsfiles/gmp42/mpn/generic/addsub_n.c,v
+retrieving revision 1.1
+retrieving revision 1.2
+diff -p -2 -r1.1 -r1.2
+*** mpn/generic/addsub_n.c     14 Mar 2006 15:57:54 -0000      1.1
+--- mpn/generic/addsub_n.c     15 May 2006 22:38:42 -0000      1.2
+***************
+*** 1,5 ****
+  /* mpn_addsub_n -- Add and Subtract two limb vectors of equal, non-zero length.
+  
+! Copyright 1999, 2000, 2001 Free Software Foundation, Inc.
+  
+  This file is part of the GNU MP Library.
+--- 1,5 ----
+  /* mpn_addsub_n -- Add and Subtract two limb vectors of equal, non-zero length.
+  
+! Copyright 1999, 2000, 2001, 2006 Free Software Foundation, Inc.
+  
+  This file is part of the GNU MP Library.
+*************** mpn_addsub_n (mp_ptr r1p, mp_ptr r2p, mp
+*** 59,63 ****
+       {
+         this_n = MIN (n - off, PART_SIZE);
+! #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
+--- 59,63 ----
+       {
+         this_n = MIN (n - off, PART_SIZE);
+! #if HAVE_NATIVE_mpn_add_nc
+         acyo = mpn_add_nc (r1p + off, s1p + off, s2p + off, this_n, acyo);
+  #else
+*************** mpn_addsub_n (mp_ptr r1p, mp_ptr r2p, mp
+*** 65,69 ****
+         acyo = acyn + mpn_add_1 (r1p + off, r1p + off, this_n, acyo);
+  #endif
+! #if HAVE_NATIVE_mpn_sub_nc || !HAVE_NATIVE_mpn_sub_n
+         scyo = mpn_sub_nc (r2p + off, s1p + off, s2p + off, this_n, scyo);
+  #else
+--- 65,69 ----
+         acyo = acyn + mpn_add_1 (r1p + off, r1p + off, this_n, acyo);
+  #endif
+! #if HAVE_NATIVE_mpn_sub_nc
+         scyo = mpn_sub_nc (r2p + off, s1p + off, s2p + off, this_n, scyo);
+  #else
+*************** mpn_addsub_n (mp_ptr r1p, mp_ptr r2p, mp
+*** 82,86 ****
+       {
+         this_n = MIN (n - off, PART_SIZE);
+! #if HAVE_NATIVE_mpn_sub_nc || !HAVE_NATIVE_mpn_sub_n
+         scyo = mpn_sub_nc (r2p + off, s1p + off, s2p + off, this_n, scyo);
+  #else
+--- 82,86 ----
+       {
+         this_n = MIN (n - off, PART_SIZE);
+! #if HAVE_NATIVE_mpn_sub_nc
+         scyo = mpn_sub_nc (r2p + off, s1p + off, s2p + off, this_n, scyo);
+  #else
+*************** mpn_addsub_n (mp_ptr r1p, mp_ptr r2p, mp
+*** 88,92 ****
+         scyo = scyn + mpn_sub_1 (r2p + off, r2p + off, this_n, scyo);
+  #endif
+! #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
+--- 88,92 ----
+         scyo = scyn + mpn_sub_1 (r2p + off, r2p + off, this_n, scyo);
+  #endif
+! #if HAVE_NATIVE_mpn_add_nc
+         acyo = mpn_add_nc (r1p + off, s1p + off, s2p + off, this_n, acyo);
+  #else
+*************** mpn_addsub_n (mp_ptr r1p, mp_ptr r2p, mp
+*** 98,102 ****
+    else
+      {
+!       /* r1 and r2 are identical to s1 and s2 (r1==s1 and r2=s2 or vice versa)
+        Need temporary storage.  */
+        mp_limb_t tp[PART_SIZE];
+--- 98,102 ----
+    else
+      {
+!       /* r1 and r2 are identical to s1 and s2 (r1==s1 and r2==s2 or vice versa)
+        Need temporary storage.  */
+        mp_limb_t tp[PART_SIZE];
+*************** mpn_addsub_n (mp_ptr r1p, mp_ptr r2p, mp
+*** 106,110 ****
+       {
+         this_n = MIN (n - off, PART_SIZE);
+! #if HAVE_NATIVE_mpn_add_nc || !HAVE_NATIVE_mpn_add_n
+         acyo = mpn_add_nc (tp, s1p + off, s2p + off, this_n, acyo);
+  #else
+--- 106,110 ----
+       {
+         this_n = MIN (n - off, PART_SIZE);
+! #if HAVE_NATIVE_mpn_add_nc
+         acyo = mpn_add_nc (tp, s1p + off, s2p + off, this_n, acyo);
+  #else
+*************** mpn_addsub_n (mp_ptr r1p, mp_ptr r2p, mp
+*** 112,116 ****
+         acyo = acyn + mpn_add_1 (tp, tp, this_n, acyo);
+  #endif
+! #if HAVE_NATIVE_mpn_sub_nc || !HAVE_NATIVE_mpn_sub_n
+         scyo = mpn_sub_nc (r2p + off, s1p + off, s2p + off, this_n, scyo);
+  #else
+--- 112,116 ----
+         acyo = acyn + mpn_add_1 (tp, tp, this_n, acyo);
+  #endif
+! #if HAVE_NATIVE_mpn_sub_nc
+         scyo = mpn_sub_nc (r2p + off, s1p + off, s2p + off, this_n, scyo);
+  #else
diff --git a/packages/gmp/gmp-native_4.2.2.bb b/packages/gmp/gmp-native_4.2.2.bb
new file mode 100644 (file)
index 0000000..af85db6
--- /dev/null
@@ -0,0 +1,2 @@
+PV = "4.2.2"
+require gmp-native.inc
diff --git a/packages/gmp/gmp_4.2.2.bb b/packages/gmp/gmp_4.2.2.bb
new file mode 100644 (file)
index 0000000..295237f
--- /dev/null
@@ -0,0 +1,8 @@
+PR = "r1"
+
+SRC_URI_append += "file://02_noexec-stack.diff;patch=1 \
+                  file://03_gnu89-inline.diff;patch=1 \
+                  file://mpf_set_str_c.diff;patch=1 \
+                  file://sh4-asmfix.patch;patch=1 \
+                 "
+require gmp.inc