summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Frysinger <vapier@gentoo.org>2011-12-07 06:40:51 +0000
committerMike Frysinger <vapier@gentoo.org>2011-12-07 06:40:51 +0000
commitaf8751e980b523e9f69d3de9f0750f4e14b4b69f (patch)
tree539a270d61c64c173443bbef8dd411b16f087142 /dev-libs/gmp
parentFix multilib support with @GENTOO_LIBDIR@. (diff)
downloadgentoo-2-af8751e980b523e9f69d3de9f0750f4e14b4b69f.tar.gz
gentoo-2-af8751e980b523e9f69d3de9f0750f4e14b4b69f.tar.bz2
gentoo-2-af8751e980b523e9f69d3de9f0750f4e14b4b69f.zip
Add x32 ABI support.
(Portage version: 2.2.0_alpha79/cvs/Linux x86_64)
Diffstat (limited to 'dev-libs/gmp')
-rw-r--r--dev-libs/gmp/ChangeLog6
-rw-r--r--dev-libs/gmp/files/gmp-5.0.2-x32-bugfix.patch94
-rw-r--r--dev-libs/gmp/files/gmp-5.0.2-x32-support.patch45
-rw-r--r--dev-libs/gmp/gmp-5.0.2_p1.ebuild5
4 files changed, 147 insertions, 3 deletions
diff --git a/dev-libs/gmp/ChangeLog b/dev-libs/gmp/ChangeLog
index 57db3a47623a..a496d2b952eb 100644
--- a/dev-libs/gmp/ChangeLog
+++ b/dev-libs/gmp/ChangeLog
@@ -1,6 +1,10 @@
# ChangeLog for dev-libs/gmp
# Copyright 1999-2011 Gentoo Foundation; Distributed under the GPL v2
-# $Header: /var/cvsroot/gentoo-x86/dev-libs/gmp/ChangeLog,v 1.152 2011/11/13 20:03:31 vapier Exp $
+# $Header: /var/cvsroot/gentoo-x86/dev-libs/gmp/ChangeLog,v 1.153 2011/12/07 06:40:51 vapier Exp $
+
+ 07 Dec 2011; Mike Frysinger <vapier@gentoo.org> gmp-5.0.2_p1.ebuild,
+ +files/gmp-5.0.2-x32-bugfix.patch, +files/gmp-5.0.2-x32-support.patch:
+ Add x32 ABI support.
13 Nov 2011; Mike Frysinger <vapier@gentoo.org> gmp-4.3.2.ebuild,
gmp-5.0.1.ebuild, gmp-5.0.2.ebuild, gmp-5.0.2_p1.ebuild:
diff --git a/dev-libs/gmp/files/gmp-5.0.2-x32-bugfix.patch b/dev-libs/gmp/files/gmp-5.0.2-x32-bugfix.patch
new file mode 100644
index 000000000000..a96136fcc3b8
--- /dev/null
+++ b/dev-libs/gmp/files/gmp-5.0.2-x32-bugfix.patch
@@ -0,0 +1,94 @@
+UpstreamStatus: Pending
+
+When LONG_MIN is passed to val, -val is undefined. This patch fixes
+it. See for details: http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50066
+
+Received this patch from H.J. Lu <hjl.tools@gmail.com>
+
+Signed-Off-By: Nitin A Kamble <nitin.a.kamble@intel.com> 2011/12/01
+
+--- gmp-4.3.2/mpf/iset_si.c.ll 2010-01-07 12:09:03.000000000 -0800
++++ gmp-4.3.2/mpf/iset_si.c 2011-11-30 16:42:35.827944358 -0800
+@@ -31,7 +31,7 @@ mpf_init_set_si (mpf_ptr r, long int val
+ 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) (val >= 0 ? (unsigned long int) val : -(unsigned long int) val);
+
+ r->_mp_d[0] = vl & GMP_NUMB_MASK;
+ size = vl != 0;
+--- gmp-4.3.2/mpf/set_si.c.ll 2010-01-07 12:09:03.000000000 -0800
++++ gmp-4.3.2/mpf/set_si.c 2011-11-30 16:42:47.823878367 -0800
+@@ -27,7 +27,7 @@ mpf_set_si (mpf_ptr dest, long val)
+ mp_size_t size;
+ mp_limb_t vl;
+
+- vl = (mp_limb_t) (unsigned long int) (val >= 0 ? val : -val);
++ vl = (mp_limb_t) (val >= 0 ? (unsigned long int) val : -(unsigned long int) val);
+
+ dest->_mp_d[0] = vl & GMP_NUMB_MASK;
+ size = vl != 0;
+--- gmp-4.3.2/mpz/cmp_si.c.ll 2010-01-07 12:09:03.000000000 -0800
++++ gmp-4.3.2/mpz/cmp_si.c 2011-11-30 13:44:25.923319700 -0800
+@@ -27,7 +27,7 @@ _mpz_cmp_si (mpz_srcptr u, signed long i
+ {
+ mp_size_t usize = u->_mp_size;
+ mp_size_t vsize;
+- mp_limb_t u_digit;
++ mp_limb_t u_digit, vl_digit;
+
+ #if GMP_NAIL_BITS != 0
+ /* FIXME. This isn't very pretty. */
+@@ -41,11 +41,14 @@ _mpz_cmp_si (mpz_srcptr u, signed long i
+
+ vsize = 0;
+ if (v_digit > 0)
+- vsize = 1;
++ {
++ vsize = 1;
++ vl_digit = (mp_limb_t) (unsigned long) v_digit;
++ }
+ else if (v_digit < 0)
+ {
+ vsize = -1;
+- v_digit = -v_digit;
++ vl_digit = (mp_limb_t) -(unsigned long) v_digit;
+ }
+
+ if (usize != vsize)
+@@ -56,10 +59,10 @@ _mpz_cmp_si (mpz_srcptr u, signed long i
+
+ u_digit = u->_mp_d[0];
+
+- if (u_digit == (mp_limb_t) (unsigned long) v_digit)
++ if (u_digit == vl_digit)
+ return 0;
+
+- if (u_digit > (mp_limb_t) (unsigned long) v_digit)
++ if (u_digit > vl_digit)
+ return usize;
+ else
+ return -usize;
+--- gmp-4.3.2/mpz/iset_si.c.ll 2010-01-07 12:09:03.000000000 -0800
++++ gmp-4.3.2/mpz/iset_si.c 2011-11-30 13:44:25.924319695 -0800
+@@ -31,7 +31,7 @@ mpz_init_set_si (mpz_ptr dest, signed lo
+ 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) (val >= 0 ? (unsigned long int) val : -(unsigned long int) val);
+
+ dest->_mp_d[0] = vl & GMP_NUMB_MASK;
+ size = vl != 0;
+--- gmp-4.3.2/mpz/set_si.c.ll 2010-01-07 12:09:03.000000000 -0800
++++ gmp-4.3.2/mpz/set_si.c 2011-11-30 13:44:25.947319574 -0800
+@@ -27,7 +27,7 @@ mpz_set_si (mpz_ptr dest, signed long in
+ mp_size_t size;
+ mp_limb_t vl;
+
+- vl = (mp_limb_t) (unsigned long int) (val >= 0 ? val : -val);
++ vl = (mp_limb_t) (val >= 0 ? (unsigned long int) val : -(unsigned long int) val);
+
+ dest->_mp_d[0] = vl & GMP_NUMB_MASK;
+ size = vl != 0;
diff --git a/dev-libs/gmp/files/gmp-5.0.2-x32-support.patch b/dev-libs/gmp/files/gmp-5.0.2-x32-support.patch
new file mode 100644
index 000000000000..ecb9bdb2d05e
--- /dev/null
+++ b/dev-libs/gmp/files/gmp-5.0.2-x32-support.patch
@@ -0,0 +1,45 @@
+Upstream-Status: Pending
+
+Add X32 support in gmp configure.
+
+Patch Originator: H J Lu @ Intel
+Patch modified for Yocto by Nitin Kamble
+Signed Off By: Nitin A Kamble <nitin.a.kamble@intel.com> 2011/11/21
+
+--- gmp-4.3.2/configure
++++ gmp-4.3.2/configure
+@@ -1499,6 +1499,25 @@ case $host in
+ path_64="x86_64/atom x86_64"
+ ;;
+ esac
++
++ # X32 support.
++ case x"$path_64" in
++ xx86_64*)
++ case x"$CC $CFLAGS" in
++ x*-mx32*)
++ abilist="x32 64 32"
++ path_x32="$path_64"
++ limb_x32=longlong
++ cclist_x32="gcc"
++ gcc_x32_cflags="-O2 -mx32"
++ any_x32_testlist="sizeof-long-4"
++ CALLING_CONVENTIONS_OBJS_x32='amd64call.lo amd64check$U.lo'
++ SPEED_CYCLECOUNTER_OBJ_x32=x86_64.lo
++ cyclecounter_size_x32=2
++ ;;
++ esac
++ ;;
++ esac
+ ;;
+ esac
+ ;;
+@@ -3039,7 +3058,7 @@ if test "$gmp_asm_syntax_testing" != no;
+ ;;
+ esac
+ ;;
+- 64)
++ 64|x32)
+
+ echo "include_mpn(\`x86_64/x86_64-defs.m4')" >> $gmp_tmpconfigm4i
+
diff --git a/dev-libs/gmp/gmp-5.0.2_p1.ebuild b/dev-libs/gmp/gmp-5.0.2_p1.ebuild
index 5156f5160e05..c213a72aa258 100644
--- a/dev-libs/gmp/gmp-5.0.2_p1.ebuild
+++ b/dev-libs/gmp/gmp-5.0.2_p1.ebuild
@@ -1,6 +1,6 @@
# Copyright 1999-2011 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
-# $Header: /var/cvsroot/gentoo-x86/dev-libs/gmp/gmp-5.0.2_p1.ebuild,v 1.3 2011/11/13 20:03:31 vapier Exp $
+# $Header: /var/cvsroot/gentoo-x86/dev-libs/gmp/gmp-5.0.2_p1.ebuild,v 1.4 2011/12/07 06:40:51 vapier Exp $
inherit flag-o-matic eutils libtool toolchain-funcs
@@ -29,6 +29,7 @@ src_unpack() {
epatch "${FILESDIR}"/${PN}-4.1.4-noexecstack.patch
epatch "${FILESDIR}"/${PN}-5.0.0-s390.diff
epatch "${FILESDIR}"/${MY_P}-unnormalised-dividends.patch
+ has x32 $(get_all_abis) && epatch "${FILESDIR}"/${PN}-5.0.2*x32*.patch
# disable -fPIE -pie in the tests for x86 #236054
if use x86 && gcc-specs-pie ; then
@@ -59,7 +60,7 @@ src_compile() {
case ${ABI} in
32|x86) GMPABI=32;;
64|amd64|n64) GMPABI=64;;
- o32|n32) GMPABI=${ABI};;
+ [onx]32) GMPABI=${ABI};;
esac
export GMPABI