summaryrefslogtreecommitdiff
path: root/gnu/packages
diff options
context:
space:
mode:
Diffstat (limited to 'gnu/packages')
-rw-r--r--gnu/packages/commencement.scm6
-rw-r--r--gnu/packages/multiprecision.scm18
-rw-r--r--gnu/packages/patches/gmp-arm-asm-nothumb.patch21
3 files changed, 42 insertions, 3 deletions
diff --git a/gnu/packages/commencement.scm b/gnu/packages/commencement.scm
index 8aa32e859d..eda04325f0 100644
--- a/gnu/packages/commencement.scm
+++ b/gnu/packages/commencement.scm
@@ -231,7 +231,7 @@
(package-full-name lib)
char-set:letter)
,(package-name lib)))
- (list gmp mpfr mpc))))
+ (list gmp-6.0 mpfr mpc))))
(alist-cons-after
'install 'symlink-libgcc_eh
(lambda* (#:key outputs #:allow-other-keys)
@@ -245,7 +245,7 @@
(symlink "libgcc.a" "libgcc_eh.a"))))
,phases))))))
- (inputs `(("gmp-source" ,(package-source gmp))
+ (inputs `(("gmp-source" ,(package-source gmp-6.0))
("mpfr-source" ,(package-source mpfr))
("mpc-source" ,(package-source mpc))
("binutils-cross" ,binutils-boot0)
@@ -636,7 +636,7 @@ exec ~a/bin/~a-~a -B~a/lib -Wl,-dynamic-linker -Wl,~a/~a \"$@\"~%"
("static-bash" ,static-bash-for-glibc)
,@(package-native-inputs gcc-boot0)))
- (inputs `(("gmp-source" ,(bootstrap-origin (package-source gmp)))
+ (inputs `(("gmp-source" ,(bootstrap-origin (package-source gmp-6.0)))
("mpfr-source" ,(package-source mpfr))
("mpc-source" ,(package-source mpc))
("ld-wrapper" ,ld-wrapper-boot3)
diff --git a/gnu/packages/multiprecision.scm b/gnu/packages/multiprecision.scm
index 3be612ae62..ad507706db 100644
--- a/gnu/packages/multiprecision.scm
+++ b/gnu/packages/multiprecision.scm
@@ -60,6 +60,24 @@ cryptography and computational algebra.")
(license lgpl3+)
(home-page "http://gmplib.org/")))
+(define-public gmp-6.0
+ ;; We keep this one around to bootstrap GCC, to work around a compilation
+ ;; issue on ARM. See
+ ;; <https://gmplib.org/list-archives/gmp-bugs/2015-December/003848.html>.
+ (package
+ (inherit gmp)
+ (version "6.0.0a")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "mirror://gnu/gmp/gmp-"
+ version ".tar.xz"))
+ (sha256
+ (base32
+ "0r5pp27cy7ch3dg5v0rsny8bib1zfvrza6027g2mp5f6v8pd6mli"))
+ (patches (map search-patch
+ '("gmp-arm-asm-nothumb.patch"
+ "gmp-faulty-test.patch")))))))
+
(define-public mpfr
(package
(name "mpfr")
diff --git a/gnu/packages/patches/gmp-arm-asm-nothumb.patch b/gnu/packages/patches/gmp-arm-asm-nothumb.patch
new file mode 100644
index 0000000000..666cf58cf6
--- /dev/null
+++ b/gnu/packages/patches/gmp-arm-asm-nothumb.patch
@@ -0,0 +1,21 @@
+
+# HG changeset patch
+# User Torbjorn Granlund <tege@gmplib.org>
+# Date 1396602422 -7200
+# Node ID 676e2d0f0e4dd301a7066079d2c9326c25c34a40
+# Parent 0194a75b56b21a9196626430af86c5bd9110c42d
+Conditionalise ARM asm on !__thumb__.
+
+diff -r 0194a75b56b2 -r 676e2d0f0e4d mpn/generic/div_qr_1n_pi1.c
+--- a/mpn/generic/div_qr_1n_pi1.c Thu Apr 03 23:58:51 2014 +0200
++++ b/mpn/generic/div_qr_1n_pi1.c Fri Apr 04 11:07:02 2014 +0200
+@@ -130,7 +130,7 @@
+ "%2" ((UDItype)(a0)), "r" ((UDItype)(b0)) __CLOBBER_CC)
+ #endif
+
+-#if defined (__arm__) && W_TYPE_SIZE == 32
++#if defined (__arm__) && !defined (__thumb__) && W_TYPE_SIZE == 32
+ #define add_mssaaaa(m, sh, sl, ah, al, bh, bl) \
+ __asm__ ( "adds %2, %5, %6\n\t" \
+ "adcs %1, %3, %4\n\t" \
+