Jeremie Courreges-Anglas:

> Fails to build on sparc64:

> build log: https://pbot.rmdir.de/9cefjLlzIP4QEsKwn-g0UA
> tmp-gcd_11.s: https://pbot.rmdir.de/pWyiZKnS6FSGcqsuuLs-YQ

Thanks.

The problem is this upstream commit:
https://gmplib.org/repo/gmp/rev/20cf1131dc94
It uses %gdop(), which is not implemented by our binutils 2.17.

Partially reverting this should fix it.  New patch below.


There is actually a configure check for this feature, but sparc-defs.m4
fails to use the result properly.  Basically there should be something
like ifelse(HAVE_GOTDATA, yes, ...) that picks one implementation
or the other.  I don't have a sparc64 to test, though, and there's
no chance I'll get the m4 quoting right when flying blind.  Maybe
somebody else wants to give it a try.


Index: Makefile
===================================================================
RCS file: /cvs/ports/devel/gmp/Makefile,v
retrieving revision 1.40
diff -u -p -r1.40 Makefile
--- Makefile    12 Jul 2019 20:44:10 -0000      1.40
+++ Makefile    3 Feb 2020 12:14:21 -0000
@@ -3,16 +3,14 @@
 COMMENT-main=  library for arbitrary precision arithmetic
 COMMENT-cxx=   C++ library for arbitrary precision arithmetic
 
-VERSION=       6.1.2
+VERSION=       6.2.0
 DISTNAME=      gmp-${VERSION}
 MULTI_PACKAGES=        -main -cxx
 PKGNAME-main=  gmp-${VERSION}
 PKGNAME-cxx=   gmpxx-${VERSION}
-REVISION=      3
-REVISION-cxx=  4
 
-SHARED_LIBS +=  gmp                  10.0     # 13.2
-SHARED_LIBS +=  gmpxx                2.0      # 9.2
+SHARED_LIBS +=  gmp                  11.0     # 14.0
+SHARED_LIBS +=  gmpxx                3.0      # 10.0
 CATEGORIES=    devel math
 
 HOMEPAGE=      https://gmplib.org/
@@ -35,8 +33,9 @@ LIB_DEPENDS-cxx=${BASE_PKGPATH},-main \
 PSEUDO_FLAVORS=        no_cxx bootstrap
 FLAVOR?=
 
-CONFIGURE_STYLE=autoconf
-AUTOCONF_VERSION=2.69
+DEBUG_PACKAGES=        ${BUILD_PACKAGES}
+
+CONFIGURE_STYLE=gnu
 # Don't try to optimize for the local CPU submodel
 CONFIGURE_ARGS+=--build=${MACHINE_ARCH}-unknown-openbsd${OSrev}
 
@@ -45,11 +44,5 @@ CONFIGURE_ARGS+=--build=${MACHINE_ARCH}-
 COMPILER=      base-clang ports-gcc base-gcc
 CONFIGURE_ARGS+=--enable-cxx
 .endif
-
-post-patch:
-       @cp ${FILESDIR}/mpn_m88k_add_n.asm ${WRKSRC}/mpn/m88k/add_n.asm
-       @cp ${FILESDIR}/mpn_m88k_sub_n.asm ${WRKSRC}/mpn/m88k/sub_n.asm
-       @rm ${WRKSRC}/mpn/m88k/add_n.s ${WRKSRC}/mpn/m88k/sub_n.s \
-           ${WRKSRC}/mpn/m88k/mul_1.s
 
 .include <bsd.port.mk>
Index: distinfo
===================================================================
RCS file: /cvs/ports/devel/gmp/distinfo,v
retrieving revision 1.17
diff -u -p -r1.17 distinfo
--- distinfo    19 Dec 2016 21:48:12 -0000      1.17
+++ distinfo    3 Feb 2020 12:14:21 -0000
@@ -1,2 +1,2 @@
-SHA256 (gmp-6.1.2.tar.xz) = h7Vl6JqaaE/k6+7duDmdziWZ+ckEmFTKjA373qDiGRI=
-SIZE (gmp-6.1.2.tar.xz) = 1946336
+SHA256 (gmp-6.2.0.tar.xz) = JY5s1Rs/vfwYXHFtVfgsCK/1ffDG+9FDz27VYSZ6FSY=
+SIZE (gmp-6.2.0.tar.xz) = 2012444
Index: files/mpn_m88k_add_n.asm
===================================================================
RCS file: files/mpn_m88k_add_n.asm
diff -N files/mpn_m88k_add_n.asm
--- files/mpn_m88k_add_n.asm    13 Apr 2013 20:19:50 -0000      1.1
+++ /dev/null   1 Jan 1970 00:00:00 -0000
@@ -1,117 +0,0 @@
-dnl mc88100 mpn_add_n -- Add two limb vectors of the same length > 0 and store
-dnl sum in a third limb vector.
-
-dnl Copyright 1992, 1994, 1995, 2000 Free Software Foundation, Inc.
-
-dnl This file is part of the GNU MP Library.
-
-dnl The GNU MP Library is free software; you can redistribute it and/or modify
-dnl it under the terms of the GNU Lesser General Public License as published by
-dnl the Free Software Foundation; either version 3 of the License, or (at your
-dnl option) any later version.
-
-dnl The GNU MP Library is distributed in the hope that it will be useful, but
-dnl WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
-dnl or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Lesser General Public
-dnl License for more details.
-
-dnl You should have received a copy of the GNU Lesser General Public License
-dnl along with the GNU MP Library.  If not, see http://www.gnu.org/licenses/.
-
-include(`../config.m4')
-
-
-C INPUT PARAMETERS
-C res_ptr      %r2
-C s1_ptr       %r3
-C s2_ptr       %r4
-C size         %r5
-
-C This code has been optimized to run one instruction per clock, avoiding
-C load stalls and writeback contention.  As a result, the instruction
-C order is not always natural.
-
-C The speed is about 4.6 clocks/limb + 18 clocks/limb-vector on an 88100,
-C but on the 88110, it seems to run much slower, 6.6 clocks/limb.
-
-ASM_START()
-PROLOGUE(mpn_add_n)
-       ld      %r6,%r3,0               C read first limb from s1_ptr
-       extu    %r10,%r5,3
-       ld      %r7,%r4,0               C read first limb from s2_ptr
-
-       subu.co %r5,%r0,%r5             C (clear carry as side effect)
-       mak     %r5,%r5,3<4>
-       bcnd    eq0,%r5,Lzero
-
-ifdef(`PIC',`
-       or      %r9,%r0,%r25
-       or      %r11,%r0,%r1
-       or.u    %r25,%r0,%hi16(.Lpic#abdiff)
-       bsr.n   .Lpic
-        or     %r25,%r25,%lo16(.Lpic#abdiff)
-.Lpic: add     %r25,%r25,%r1
-       or      %r1,%r0,%r11
-       or.u    %r11,%r0,%hi16(Lbase#got_rel)
-       or      %r11,%r11,%lo16(Lbase#got_rel)
-       ld      %r12,%r25,%r11
-       or      %r25,%r0,%r9
-',`
-       or      %r12,%r0,%lo16(Lbase)
-       or.u    %r12,%r12,%hi16(Lbase)
-')
-       addu    %r12,%r12,%r5           C %r12 is address for entering in loop
-
-       extu    %r5,%r5,2               C divide by 4
-       subu    %r2,%r2,%r5             C adjust res_ptr
-       subu    %r3,%r3,%r5             C adjust s1_ptr
-       subu    %r4,%r4,%r5             C adjust s2_ptr
-
-       or      %r8,%r6,%r0
-
-       jmp.n   %r12
-        or     %r9,%r7,%r0
-
-Loop:  addu    %r3,%r3,32
-       st      %r8,%r2,28
-       addu    %r4,%r4,32
-       ld      %r6,%r3,0
-       addu    %r2,%r2,32
-       ld      %r7,%r4,0
-Lzero: subu    %r10,%r10,1             C add 0 + 8r limbs (adj loop cnt)
-Lbase: ld      %r8,%r3,4
-       addu.cio %r6,%r6,%r7
-       ld      %r9,%r4,4
-       st      %r6,%r2,0
-       ld      %r6,%r3,8               C add 7 + 8r limbs
-       addu.cio %r8,%r8,%r9
-       ld      %r7,%r4,8
-       st      %r8,%r2,4
-       ld      %r8,%r3,12              C add 6 + 8r limbs
-       addu.cio %r6,%r6,%r7
-       ld      %r9,%r4,12
-       st      %r6,%r2,8
-       ld      %r6,%r3,16              C add 5 + 8r limbs
-       addu.cio %r8,%r8,%r9
-       ld      %r7,%r4,16
-       st      %r8,%r2,12
-       ld      %r8,%r3,20              C add 4 + 8r limbs
-       addu.cio %r6,%r6,%r7
-       ld      %r9,%r4,20
-       st      %r6,%r2,16
-       ld      %r6,%r3,24              C add 3 + 8r limbs
-       addu.cio %r8,%r8,%r9
-       ld      %r7,%r4,24
-       st      %r8,%r2,20
-       ld      %r8,%r3,28              C add 2 + 8r limbs
-       addu.cio %r6,%r6,%r7
-       ld      %r9,%r4,28
-       st      %r6,%r2,24
-       bcnd.n  ne0,%r10,Loop           C add 1 + 8r limbs
-        addu.cio %r8,%r8,%r9
-
-       st      %r8,%r2,28              C store most significant limb
-
-       jmp.n    %r1
-        addu.ci %r2,%r0,%r0            C return carry-out from most sign. limb
-EPILOGUE(mpn_add_n)
Index: files/mpn_m88k_sub_n.asm
===================================================================
RCS file: files/mpn_m88k_sub_n.asm
diff -N files/mpn_m88k_sub_n.asm
--- files/mpn_m88k_sub_n.asm    13 Apr 2013 20:19:50 -0000      1.1
+++ /dev/null   1 Jan 1970 00:00:00 -0000
@@ -1,118 +0,0 @@
-dnl mc88100 mpn_sub_n -- Subtract two limb vectors of the same length > 0 and
-dnl store difference in a third limb vector.
-
-dnl Copyright 1992, 1994, 1996, 2000 Free Software Foundation, Inc.
-
-dnl This file is part of the GNU MP Library.
-
-dnl The GNU MP Library is free software; you can redistribute it and/or modify
-dnl it under the terms of the GNU Lesser General Public License as published by
-dnl the Free Software Foundation; either version 3 of the License, or (at your
-dnl option) any later version.
-
-dnl The GNU MP Library is distributed in the hope that it will be useful, but
-dnl WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
-dnl or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Lesser General Public
-dnl License for more details.
-
-dnl You should have received a copy of the GNU Lesser General Public License
-dnl along with the GNU MP Library.  If not, see http://www.gnu.org/licenses/.
-
-include(`../config.m4')
-
-C INPUT PARAMETERS
-C res_ptr      %r2
-C s1_ptr       %r3
-C s2_ptr       %r4
-C size         %r5
-
-C This code has been optimized to run one instruction per clock, avoiding
-C load stalls and writeback contention.  As a result, the instruction
-C order is not always natural.
-
-C The speed is about 4.6 clocks/limb + 18 clocks/limb-vector on an 88100,
-C but on the 88110, it seems to run much slower, 6.6 clocks/limb.
-
-ASM_START()
-PROLOGUE(mpn_sub_n)
-       ld      %r6,%r3,0               C read first limb from s1_ptr
-       extu    %r10,%r5,3
-       ld      %r7,%r4,0               C read first limb from s2_ptr
-
-       subu    %r5,%r0,%r5
-       mak     %r5,%r5,3<4>
-       bcnd.n  eq0,%r5,Lzero
-       subu.co %r0,%r0,%r0             C initialize carry
-
-ifdef(`PIC',`
-       or      %r9,%r0,%r25
-       or      %r11,%r0,%r1
-       or.u    %r25,%r0,%hi16(.Lpic#abdiff)
-       bsr.n   .Lpic
-        or     %r25,%r25,%lo16(.Lpic#abdiff)
-.Lpic: add     %r25,%r25,%r1
-       or      %r1,%r0,%r11
-       or.u    %r11,%r0,%hi16(Lbase#got_rel)
-       or      %r11,%r11,%lo16(Lbase#got_rel)
-       ld      %r12,%r25,%r11
-       or      %r25,%r0,%r9
-',`
-       or      %r12,%r0,%lo16(Lbase)
-       or.u    %r12,%r12,%hi16(Lbase)
-')
-       addu    %r12,%r12,%r5           C %r12 is address for entering in loop
-
-       extu    %r5,%r5,2               C divide by 4
-       subu    %r2,%r2,%r5             C adjust res_ptr
-       subu    %r3,%r3,%r5             C adjust s1_ptr
-       subu    %r4,%r4,%r5             C adjust s2_ptr
-
-       or      %r8,%r6,%r0
-
-       jmp.n   %r12
-        or     %r9,%r7,%r0
-
-Loop:  addu    %r3,%r3,32
-       st      %r8,%r2,28
-       addu    %r4,%r4,32
-       ld      %r6,%r3,0
-       addu    %r2,%r2,32
-       ld      %r7,%r4,0
-Lzero: subu    %r10,%r10,1             C subtract 0 + 8r limbs (adj loop cnt)
-Lbase: ld      %r8,%r3,4
-       subu.cio %r6,%r6,%r7
-       ld      %r9,%r4,4
-       st      %r6,%r2,0
-       ld      %r6,%r3,8               C subtract 7 + 8r limbs
-       subu.cio %r8,%r8,%r9
-       ld      %r7,%r4,8
-       st      %r8,%r2,4
-       ld      %r8,%r3,12              C subtract 6 + 8r limbs
-       subu.cio %r6,%r6,%r7
-       ld      %r9,%r4,12
-       st      %r6,%r2,8
-       ld      %r6,%r3,16              C subtract 5 + 8r limbs
-       subu.cio %r8,%r8,%r9
-       ld      %r7,%r4,16
-       st      %r8,%r2,12
-       ld      %r8,%r3,20              C subtract 4 + 8r limbs
-       subu.cio %r6,%r6,%r7
-       ld      %r9,%r4,20
-       st      %r6,%r2,16
-       ld      %r6,%r3,24              C subtract 3 + 8r limbs
-       subu.cio %r8,%r8,%r9
-       ld      %r7,%r4,24
-       st      %r8,%r2,20
-       ld      %r8,%r3,28              C subtract 2 + 8r limbs
-       subu.cio %r6,%r6,%r7
-       ld      %r9,%r4,28
-       st      %r6,%r2,24
-       bcnd.n  ne0,%r10,Loop           C subtract 1 + 8r limbs
-        subu.cio %r8,%r8,%r9
-
-       st      %r8,%r2,28              C store most significant limb
-
-       addu.ci %r2,%r0,%r0             C return carry-out from most sign. limb
-       jmp.n    %r1
-        xor    %r2,%r2,1
-EPILOGUE(mpn_sub_n)
Index: patches/patch-acinclude_m4
===================================================================
RCS file: patches/patch-acinclude_m4
diff -N patches/patch-acinclude_m4
--- patches/patch-acinclude_m4  5 Nov 2017 15:12:56 -0000       1.2
+++ /dev/null   1 Jan 1970 00:00:00 -0000
@@ -1,20 +0,0 @@
-$OpenBSD: patch-acinclude_m4,v 1.2 2017/11/05 15:12:56 jca Exp $
-
-Zero out the memory before testing for overwrite bug.
-
-Fixed in unstable, not in the gmp-6.1 branch:
-
-  https://gmplib.org/repo/gmp/rev/2ce5c60f5372
-
-Index: acinclude.m4
---- acinclude.m4.orig
-+++ acinclude.m4
-@@ -741,7 +741,7 @@ main ()
-   long i;
-   for (i = 0; i < 88 + 1; i++)
-     a[i] = ~0L;
--  r = malloc (10000 * sizeof (unsigned long));
-+  r = calloc (10000, sizeof (unsigned long));
-   r2 = r;
-   for (i = 0; i < 528; i += 23)
-     {
Index: patches/patch-mpn_sparc32_sparc-defs_m4
===================================================================
RCS file: patches/patch-mpn_sparc32_sparc-defs_m4
diff -N patches/patch-mpn_sparc32_sparc-defs_m4
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ patches/patch-mpn_sparc32_sparc-defs_m4     3 Feb 2020 12:14:21 -0000
@@ -0,0 +1,22 @@
+$OpenBSD$
+
+as(1) from binutils 2.17 does not support %gdop().  Partially revert
+https://gmplib.org/repo/gmp/rev/20cf1131dc94
+
+Index: mpn/sparc32/sparc-defs.m4
+--- mpn/sparc32/sparc-defs.m4.orig
++++ mpn/sparc32/sparc-defs.m4
+@@ -80,9 +80,10 @@ m4_assert_defined(`HAVE_GOTDATA')
+       sethi   %hi(_GLOBAL_OFFSET_TABLE_+4), %`$3'
+       add     %`$3', %lo(_GLOBAL_OFFSET_TABLE_+8), %`$3'
+       add     %`$2', %`$3', %`$3'
+-      sethi   %gdop_hix22(`$1'), %`$2'
+-      xor     %`$2', %gdop_lox10(`$1'), %`$2'
+-      ldx     [%`$3' + %`$2'], %`$2', %gdop(`$1')
++      sethi   %hi(`$1'), %`$2'
++      or      %`$2', %lo(`$1'), %`$2'
++      ldx     [%`$3' + %`$2'], %`$2'',`
++      setx    `$1', %`$3', %`$2'
+ ',`
+       sethi   %h44(`$1'), %`$2'
+       or      %`$2', %m44(`$1'), %`$2'
Index: pkg/PLIST-cxx
===================================================================
RCS file: /cvs/ports/devel/gmp/pkg/PLIST-cxx,v
retrieving revision 1.1
diff -u -p -r1.1 PLIST-cxx
--- pkg/PLIST-cxx       2 Nov 2018 18:43:56 -0000       1.1
+++ pkg/PLIST-cxx       3 Feb 2020 12:14:21 -0000
@@ -1,6 +1,7 @@
 @comment $OpenBSD: PLIST-cxx,v 1.1 2018/11/02 18:43:56 naddy Exp $
 @conflict gmp-<6.1.2p2
 include/gmpxx.h
-lib/libgmpxx.a
+@static-lib lib/libgmpxx.a
 lib/libgmpxx.la
 @lib lib/libgmpxx.so.${LIBgmpxx_VERSION}
+lib/pkgconfig/gmpxx.pc
Index: pkg/PLIST-main
===================================================================
RCS file: /cvs/ports/devel/gmp/pkg/PLIST-main,v
retrieving revision 1.1
diff -u -p -r1.1 PLIST-main
--- pkg/PLIST-main      2 Nov 2018 18:43:56 -0000       1.1
+++ pkg/PLIST-main      3 Feb 2020 12:14:21 -0000
@@ -2,6 +2,7 @@
 @pkgpath devel/gmp
 include/gmp.h
 @info info/gmp.info
-lib/libgmp.a
+@static-lib lib/libgmp.a
 lib/libgmp.la
 @lib lib/libgmp.so.${LIBgmp_VERSION}
+lib/pkgconfig/gmp.pc
-- 
Christian "naddy" Weisgerber                          na...@mips.inka.de

Reply via email to