-----BEGIN PGP SIGNATURE-----
iQIzBAEBCAAdFiEEiKQfd6o81mjI+LWALell7WOCXJMFAl3mFt8ACgkQLell7WOC
XJNrpw/+M6iZB7wHBSs2ATdR/NrmitDilAFuKYAQONf2RpF9VmcdQ0vHDuruKAlw
qfp0hQA+evsuLD0az0H3xw0yLHD/VozduhKc+MX7waB3lQd7y9EYUxeoDM/Mmp1F
Pgt9izninT9q04G6sMYLeM5NqC8zGyRzB9SB1MC96mvMpaN5GIm7XDHP0y8Itr5r
Th2StB5Pylc/EMp/Mr8vVOoQC4AUFN4eNvSGq3BRTIXnQRvuQl5Is87EVjXOrjNB
MRlV4MXLCWb4DjrsMdJZ3kPlV5G2I34uqTbnuoAh5QGwmV3SJWD8p7cfat+BPT37
/99OmZvbDhQ8adBJ7vizXy9zDbw0DuLNVsq4T5uFpgKyMTaoarTiyV3DZpQHgEsy
EE1GCYHsidEUL5pT94AL8UoZLyXc0je+BHtWaJo218hN3UmGRcJ4uHS8i2CPwtuP
LW1e3wOzc2GPLZUM0j/LG4QDzn6jorMm51Y5lrGzGWC4tuMVOVmgBi8yKv2MNCXM
yEWn12UlXw+2JVkXI82hbIByWvEkbVC5Fo3oOd1rLW8BZuEuOCw3q6U2KAS9kQ66
nkq185l9Z7fPzAekGxJ2vCOCTBFgUvYLbRYSOkIgJmh6VP8zoGG0o699JXKvtgsm
MvqLgDX4NQKue5/PhoC189wNqekkrTVbM7M5Up1VgYYLSmJ9q/8=
=lnPt
-----END PGP SIGNATURE-----
Hi Ports maintainers,
Just to forward George's patch to fix libnettle build on mips64el in
case it's buried in a misleading title.
Thanks!
-------- Forwarded Message --------
Subject: Re: "undefined reference to `__builtin_bswap64'" on
mips64el/loongson
Date: Sat, 30 Nov 2019 16:26:40 -0500
From: George Koehler <kernigh@gmail.com>
To: manphiz@gmail.com
CC: ports@openbsd.org
On Sat, 30 Nov 2019 01:10:56 -0800
manphiz@gmail.com wrote:
> Hi OpenBSD ports maintainers,
>
> I'm having trouble building security/libnettle on mips64el/loongson
> which is caused by missing symbol of "__builtin_bswap64" when linking.
> It looks like this symbol is introduced since GCC 4.3[1], while mips64el
> ships with GCC 4.2.1. It's interesting because I can compile with the
> symbol but cannot link. Would like to hear from the ports maintainers'
> opinion on how to solve this issue?
Bad luck! libnettle uses __builtin_bswap64 only on little-endian
platforms. My big-endian powerpc/macppc also uses base-gcc 4.2.1 but
can use the powerpc snapshot package of libnettle.
The configure test for __builtin_bswap64 is wrong. It is a compile
test, but you got a link error, not a compile error. Here is a diff
to do a link test. On my powerpc with base-gcc, the compile test
passed but the link test fails. The regression tests look good:
"make test" reports "All 98 tests passed", "All 3 tests passed".
For big endian, the test for __builtin_bswap64 should have no effect.
For little endian, the failing test should disable a special case for
block_size == 16 in WRKSRC/ctr.c ctr_crypt().
Does this diff fix the problem on mips64el/longsoon?
Index: Makefile
===================================================================
RCS file: /cvs/ports/security/libnettle/Makefile,v
retrieving revision 1.24
diff -u -p -r1.24 Makefile
--- Makefile 29 Jun 2019 22:26:25 -0000 1.24
+++ Makefile 30 Nov 2019 20:38:46 -0000
@@ -4,6 +4,7 @@ COMMENT= cryptographic library
DISTNAME= nettle-3.5.1
PKGNAME= lib${DISTNAME}
+REVISION= 0
SHARED_LIBS += hogweed 3.0 # 6.5
SHARED_LIBS += nettle 5.0 # 4.5
Index: patches/patch-configure
===================================================================
RCS file: /cvs/ports/security/libnettle/patches/patch-configure,v
retrieving revision 1.8
diff -u -p -r1.8 patch-configure
--- patches/patch-configure 29 Jun 2019 22:26:25 -0000 1.8
+++ patches/patch-configure 30 Nov 2019 20:38:46 -0000
@@ -1,5 +1,8 @@
$OpenBSD: patch-configure,v 1.8 2019/06/29 22:26:25 ajacoutot Exp $
+The test for __builtin_bswap64 must fail if the linker can't find the
+symbol. We need this for base-gcc on little endian, like mips64el.
+
Fix relocation errors on (at least) sparc64.
We don't want extra debug flags in regular builds.
@@ -7,6 +10,15 @@ We don't want extra debug flags in regul
Index: configure
--- configure.orig
+++ configure
+@@ -6062,7 +6062,7 @@ uint64_t y = __builtin_bswap64(x);
+ return 0;
+ }
+ _ACEOF
+-if ac_fn_c_try_compile "$LINENO"; then :
++if ac_fn_c_try_link "$LINENO"; then :
+ nettle_cv_c_builtin_bswap64=yes
+ else
+ nettle_cv_c_builtin_bswap64=no
@@ -6720,6 +6720,7 @@ else
bsdi4.*) CCPIC="-fPIC" ;;
bsdi*) CCPIC="" ;;
No comments:
Post a Comment