From 40847edb13fc59caaa92c334df2552b968c88ae3 Mon Sep 17 00:00:00 2001 From: Mike Frysinger Date: Mon, 30 Jan 2012 16:21:14 -0500 Subject: [PATCH] gmp: update to latest stable upstream This brings us a bug fix or two and x32 support. BUG=chromium-os:25655 TEST=`emerge gmp` works TEST=build_packages+build_image for x86-alex boots Change-Id: I7117e9a9e7a4dca7ad081efa727ca72be75e503f CQ-DEPENDS=Iaab88d2c2736fccc696ab0c950bb8e7391f975df Reviewed-on: https://gerrit.chromium.org/gerrit/15054 Reviewed-by: Matt Tennant Commit-Ready: Mike Frysinger Tested-by: Mike Frysinger --- .../gmp-5.0.2-unnormalised-dividends.patch | 21 +++++ .../gmp/files/gmp-5.0.2-x32-bugfix.patch | 94 +++++++++++++++++++ .../gmp/files/gmp-5.0.2-x32-support.patch | 41 ++++++++ .../{gmp-5.0.2.ebuild => gmp-5.0.2_p1.ebuild} | 44 ++++++--- 4 files changed, 186 insertions(+), 14 deletions(-) create mode 100644 sdk_container/src/third_party/portage-stable/dev-libs/gmp/files/gmp-5.0.2-unnormalised-dividends.patch create mode 100644 sdk_container/src/third_party/portage-stable/dev-libs/gmp/files/gmp-5.0.2-x32-bugfix.patch create mode 100644 sdk_container/src/third_party/portage-stable/dev-libs/gmp/files/gmp-5.0.2-x32-support.patch rename sdk_container/src/third_party/portage-stable/dev-libs/gmp/{gmp-5.0.2.ebuild => gmp-5.0.2_p1.ebuild} (60%) diff --git a/sdk_container/src/third_party/portage-stable/dev-libs/gmp/files/gmp-5.0.2-unnormalised-dividends.patch b/sdk_container/src/third_party/portage-stable/dev-libs/gmp/files/gmp-5.0.2-unnormalised-dividends.patch new file mode 100644 index 0000000000..f29f2eca1a --- /dev/null +++ b/sdk_container/src/third_party/portage-stable/dev-libs/gmp/files/gmp-5.0.2-unnormalised-dividends.patch @@ -0,0 +1,21 @@ + +# HG changeset patch +# User Torbjorn Granlund +# Date 1310730221 -7200 +# Node ID 538dfce27f410b910d5e2f011119269e224d16a3 +# Parent 03ed209dd7efd4f4fff0ce297bb3a8f7e7ba2366 +(mpn_dcpi1_bdiv_q): Get mpn_sub_1 size argument right. + +diff -r 03ed209dd7ef -r 538dfce27f41 mpn/generic/dcpi1_bdiv_q.c +--- a/mpn/generic/dcpi1_bdiv_q.c Thu Jun 16 12:22:24 2011 +0200 ++++ b/mpn/generic/dcpi1_bdiv_q.c Fri Jul 15 13:43:41 2011 +0200 +@@ -130,7 +129,7 @@ + qn = nn - qn; + while (qn > dn) + { +- mpn_sub_1 (np + dn, np + dn, qn, cy); ++ mpn_sub_1 (np + dn, np + dn, qn - dn, cy); + cy = mpn_dcpi1_bdiv_qr_n (qp, np, dp, dn, dinv, tp); + qp += dn; + np += dn; + diff --git a/sdk_container/src/third_party/portage-stable/dev-libs/gmp/files/gmp-5.0.2-x32-bugfix.patch b/sdk_container/src/third_party/portage-stable/dev-libs/gmp/files/gmp-5.0.2-x32-bugfix.patch new file mode 100644 index 0000000000..a96136fcc3 --- /dev/null +++ b/sdk_container/src/third_party/portage-stable/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 + +Signed-Off-By: Nitin A Kamble 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/sdk_container/src/third_party/portage-stable/dev-libs/gmp/files/gmp-5.0.2-x32-support.patch b/sdk_container/src/third_party/portage-stable/dev-libs/gmp/files/gmp-5.0.2-x32-support.patch new file mode 100644 index 0000000000..28efee0a5e --- /dev/null +++ b/sdk_container/src/third_party/portage-stable/dev-libs/gmp/files/gmp-5.0.2-x32-support.patch @@ -0,0 +1,41 @@ +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 2011/11/21 + +--- gmp-4.3.2/configure ++++ gmp-4.3.2/configure +@@ -1499,6 +1499,21 @@ + path_64="x86_64/atom x86_64" + ;; + esac ++ ++ # X32 support. ++ case x"$path_64" in ++ xx86_64*) ++ 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 + ;; +@@ -3039,7 +3058,7 @@ + ;; + esac + ;; +- 64) ++ 64|x32) + + echo "include_mpn(\`x86_64/x86_64-defs.m4')" >> $gmp_tmpconfigm4i + diff --git a/sdk_container/src/third_party/portage-stable/dev-libs/gmp/gmp-5.0.2.ebuild b/sdk_container/src/third_party/portage-stable/dev-libs/gmp/gmp-5.0.2_p1.ebuild similarity index 60% rename from sdk_container/src/third_party/portage-stable/dev-libs/gmp/gmp-5.0.2.ebuild rename to sdk_container/src/third_party/portage-stable/dev-libs/gmp/gmp-5.0.2_p1.ebuild index c8e6154079..1b80ecace1 100644 --- a/sdk_container/src/third_party/portage-stable/dev-libs/gmp/gmp-5.0.2.ebuild +++ b/sdk_container/src/third_party/portage-stable/dev-libs/gmp/gmp-5.0.2_p1.ebuild @@ -1,28 +1,35 @@ -# Copyright 1999-2011 Gentoo Foundation +# Copyright 1999-2012 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.ebuild,v 1.5 2011/09/04 21:01:37 maekke Exp $ +# $Header: /var/cvsroot/gentoo-x86/dev-libs/gmp/gmp-5.0.2_p1.ebuild,v 1.10 2012/01/03 10:21:17 vapier Exp $ -inherit flag-o-matic eutils libtool flag-o-matic toolchain-funcs +inherit flag-o-matic eutils libtool toolchain-funcs +MY_PV=${PV/_p*} +MY_P=${PN}-${MY_PV} +PLEVEL=${PV/*p} DESCRIPTION="Library for arithmetic on arbitrary precision integers, rational numbers, and floating-point numbers" HOMEPAGE="http://gmplib.org/" -SRC_URI="mirror://gnu/${PN}/${P}.tar.bz2" -# doc? ( http://www.nada.kth.se/~tege/${PN}-man-${PV}.pdf )" +SRC_URI="mirror://gnu/${PN}/${MY_P}.tar.bz2 + doc? ( http://gmplib.org/${PN}-man-${MY_PV}.pdf )" LICENSE="LGPL-3" SLOT="0" -KEYWORDS="~alpha amd64 arm ~hppa ~ia64 ~m68k ~mips ~ppc ~ppc64 ~s390 ~sh ~sparc x86 ~sparc-fbsd ~x86-fbsd" -IUSE="nocxx" #doc +KEYWORDS="alpha amd64 arm hppa ia64 m68k ~mips ~ppc ~ppc64 s390 sh sparc x86 ~sparc-fbsd ~x86-fbsd" +IUSE="doc cxx static-libs" DEPEND="sys-devel/m4" RDEPEND="" +S=${WORKDIR}/${MY_P} + src_unpack() { - unpack ${A} + unpack ${MY_P}.tar.bz2 cd "${S}" [[ -d ${FILESDIR}/${PV} ]] && EPATCH_SUFFIX="diff" EPATCH_FORCE="yes" epatch "${FILESDIR}"/${PV} 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 @@ -53,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 @@ -61,20 +68,29 @@ src_compile() { econf \ --localstatedir=/var/state/gmp \ --disable-mpbsd \ - $(use_enable !nocxx cxx) \ - || die "configure failed" + $(use_enable cxx) \ + $(use_enable static-libs static) \ + || die - emake || die "emake failed" + emake || die } src_install() { - emake DESTDIR="${D}" install || die "make install failed" + emake DESTDIR="${D}" install || die + + # should be a standalone lib + rm -f "${D}"/usr/$(get_libdir)/libgmp.la + # this requires libgmp + local la="${D}/usr/$(get_libdir)/libgmpxx.la" + use static-libs \ + && sed -i 's:/[^ ]*/libgmp.la:-lgmp:' "${la}" \ + || rm -f "${la}" dodoc AUTHORS ChangeLog NEWS README dodoc doc/configuration doc/isa_abi_headache dohtml -r doc - #use doc && cp "${DISTDIR}"/gmp-man-${PV}.pdf "${D}"/usr/share/doc/${PF}/ + use doc && cp "${DISTDIR}"/gmp-man-${MY_PV}.pdf "${D}"/usr/share/doc/${PF}/ } pkg_preinst() {