From 648c824ec26cf1fee86f15e4eb7dc537dd38a995 Mon Sep 17 00:00:00 2001 From: Fabrice Fontaine Date: Wed, 4 Nov 2020 20:50:16 +0100 Subject: [PATCH 01/95] package/trousers: bump to version 0.3.15 - Drop third and fourth patches (already in version) - Update indentation in hash file (two spaces) https://sourceforge.net/p/trousers/trousers/ci/master/tree/ChangeLog Signed-off-by: Fabrice Fontaine Signed-off-by: Peter Korsgaard --- ...-security-issues-that-are-present-if.patch | 90 ------------------- .../0004-trousers-resolve-build-failure.patch | 41 --------- package/trousers/trousers.hash | 10 +-- package/trousers/trousers.mk | 5 +- 4 files changed, 6 insertions(+), 140 deletions(-) delete mode 100644 package/trousers/0003-Correct-multiple-security-issues-that-are-present-if.patch delete mode 100644 package/trousers/0004-trousers-resolve-build-failure.patch diff --git a/package/trousers/0003-Correct-multiple-security-issues-that-are-present-if.patch b/package/trousers/0003-Correct-multiple-security-issues-that-are-present-if.patch deleted file mode 100644 index 609245dad8..0000000000 --- a/package/trousers/0003-Correct-multiple-security-issues-that-are-present-if.patch +++ /dev/null @@ -1,90 +0,0 @@ -From e74dd1d96753b0538192143adf58d04fcd3b242b Mon Sep 17 00:00:00 2001 -From: Matthias Gerstner -Date: Fri, 14 Aug 2020 22:14:36 -0700 -Subject: [PATCH] Correct multiple security issues that are present if the tcsd - is started by root instead of the tss user. - -Patch fixes the following 3 CVEs: - -CVE-2020-24332 -If the tcsd daemon is started with root privileges, -the creation of the system.data file is prone to symlink attacks - -CVE-2020-24330 -If the tcsd daemon is started with root privileges, -it fails to drop the root gid after it is no longer needed - -CVE-2020-24331 -If the tcsd daemon is started with root privileges, -the tss user has read and write access to the /etc/tcsd.conf file - -Authored-by: Matthias Gerstner -Signed-off-by: Debora Velarde Babb -Signed-off-by: Peter Korsgaard ---- - src/tcs/ps/tcsps.c | 2 +- - src/tcsd/svrside.c | 1 + - src/tcsd/tcsd_conf.c | 10 +++++----- - 3 files changed, 7 insertions(+), 6 deletions(-) - -diff --git a/src/tcs/ps/tcsps.c b/src/tcs/ps/tcsps.c -index e47154b..85d45a9 100644 ---- a/src/tcs/ps/tcsps.c -+++ b/src/tcs/ps/tcsps.c -@@ -72,7 +72,7 @@ get_file() - } - - /* open and lock the file */ -- system_ps_fd = open(tcsd_options.system_ps_file, O_CREAT|O_RDWR, 0600); -+ system_ps_fd = open(tcsd_options.system_ps_file, O_CREAT|O_RDWR|O_NOFOLLOW, 0600); - if (system_ps_fd < 0) { - LogError("system PS: open() of %s failed: %s", - tcsd_options.system_ps_file, strerror(errno)); -diff --git a/src/tcsd/svrside.c b/src/tcsd/svrside.c -index 1ae1636..1c12ff3 100644 ---- a/src/tcsd/svrside.c -+++ b/src/tcsd/svrside.c -@@ -473,6 +473,7 @@ main(int argc, char **argv) - } - return TCSERR(TSS_E_INTERNAL_ERROR); - } -+ setgid(pwd->pw_gid); - setuid(pwd->pw_uid); - #endif - #endif -diff --git a/src/tcsd/tcsd_conf.c b/src/tcsd/tcsd_conf.c -index a31503d..ea8ea13 100644 ---- a/src/tcsd/tcsd_conf.c -+++ b/src/tcsd/tcsd_conf.c -@@ -743,7 +743,7 @@ conf_file_init(struct tcsd_config *conf) - #ifndef SOLARIS - struct group *grp; - struct passwd *pw; -- mode_t mode = (S_IRUSR|S_IWUSR); -+ mode_t mode = (S_IRUSR|S_IWUSR|S_IRGRP); - #endif /* SOLARIS */ - TSS_RESULT result; - -@@ -798,15 +798,15 @@ conf_file_init(struct tcsd_config *conf) - } - - /* make sure user/group TSS owns the conf file */ -- if (pw->pw_uid != stat_buf.st_uid || grp->gr_gid != stat_buf.st_gid) { -+ if (stat_buf.st_uid != 0 || grp->gr_gid != stat_buf.st_gid) { - LogError("TCSD config file (%s) must be user/group %s/%s", tcsd_config_file, -- TSS_USER_NAME, TSS_GROUP_NAME); -+ "root", TSS_GROUP_NAME); - return TCSERR(TSS_E_INTERNAL_ERROR); - } - -- /* make sure only the tss user can manipulate the config file */ -+ /* make sure only the tss user can read (but not manipulate) the config file */ - if (((stat_buf.st_mode & 0777) ^ mode) != 0) { -- LogError("TCSD config file (%s) must be mode 0600", tcsd_config_file); -+ LogError("TCSD config file (%s) must be mode 0640", tcsd_config_file); - return TCSERR(TSS_E_INTERNAL_ERROR); - } - #endif /* SOLARIS */ --- -2.20.1 - diff --git a/package/trousers/0004-trousers-resolve-build-failure.patch b/package/trousers/0004-trousers-resolve-build-failure.patch deleted file mode 100644 index ea054ab2c5..0000000000 --- a/package/trousers/0004-trousers-resolve-build-failure.patch +++ /dev/null @@ -1,41 +0,0 @@ -From c9b8c4434f3b11bae4f7e72c3aec5b4f3459eecc Mon Sep 17 00:00:00 2001 -From: Jerry Snitselaar -Date: Wed, 18 Mar 2020 14:10:35 -0700 -Subject: [PATCH] trousers: resolve build failure - -The global variables tcsd_sa_chld and tcsd_sa_int in tcsd.h are -causing build failures in latest Fedora release: - -/usr/bin/ld: ../../src/tcs/libtcs.a(libtcs_a-tcsi_changeauth.o):/builddir/build/BUILD/trousers-0.3.13/src/tcs/../include/tcsd.h:169: multiple definition of `tcsd_sa_chld'; tcsd-svrside.o:/builddir/build/BUILD/trousers-0.3.13/src/tcsd/../../src/include/tcsd.h:169: first defined here -/usr/bin/ld: ../../src/tcs/libtcs.a(libtcs_a-tcsi_changeauth.o):/builddir/build/BUILD/trousers-0.3.13/src/tcs/../include/tcsd.h:168: multiple definition of `tcsd_sa_int'; tcsd-svrside.o:/builddir/build/BUILD/trousers-0.3.13/src/tcsd/../../src/include/tcsd.h:168: first defined here - -They are no longer used since 9b40e581470b ("Improved daemon's signal -handling") so just remove them. - -Signed-off-by: Jerry Snitselaar -Signed-off-by: Debora Velarde Babb -[Retrieved from: -https://sourceforge.net/p/trousers/trousers/ci/c9b8c4434f3b11bae4f7e72c3aec5b4f3459eecc] -Signed-off-by: Fabrice Fontaine ---- - src/include/tcsd.h | 6 ------ - 1 file changed, 6 deletions(-) - -diff --git a/src/include/tcsd.h b/src/include/tcsd.h -index 5b9462b..f5c286e 100644 ---- a/src/include/tcsd.h -+++ b/src/include/tcsd.h -@@ -164,10 +164,4 @@ TSS_RESULT tcsd_thread_create(int, char *); - void *tcsd_thread_run(void *); - void thread_signal_init(); - --/* signal handling */ --#ifndef __APPLE__ --struct sigaction tcsd_sa_int; --struct sigaction tcsd_sa_chld; --#endif -- - #endif --- -2.28.0 - diff --git a/package/trousers/trousers.hash b/package/trousers/trousers.hash index 20c65c450e..f6c3427462 100644 --- a/package/trousers/trousers.hash +++ b/package/trousers/trousers.hash @@ -1,6 +1,6 @@ -# http://sourceforge.net/projects/trousers/files/trousers/0.3.14/ -sha1 9ca2cc9e1179465f6c5d9055e2b855e25031b85a trousers-0.3.14.tar.gz -md5 4a476b4f036dd20a764fb54fc24edbec trousers-0.3.14.tar.gz +# http://sourceforge.net/projects/trousers/files/trousers/0.3.15/ +sha1 75cd40e17c9385299e50ff2099905865442b59f1 trousers-0.3.15.tar.gz +md5 eb1b02e98c7d360749b9076196db3f0f trousers-0.3.15.tar.gz # Locally computed -sha256 ce50713a261d14b735ec9ccd97609f0ad5ce69540af560e8c3ce9eb5f2d28f47 trousers-0.3.14.tar.gz -sha256 1ad596d12e7471549663c03e280b5b5d084a2e853fb86e4d766109818f9d7dae LICENSE +sha256 1e5be93e518372acf1d92d2f567d01a46fdb0b730487e544e6fb896c59cac77f trousers-0.3.15.tar.gz +sha256 1ad596d12e7471549663c03e280b5b5d084a2e853fb86e4d766109818f9d7dae LICENSE diff --git a/package/trousers/trousers.mk b/package/trousers/trousers.mk index 5e6161ce4d..b2cfef0968 100644 --- a/package/trousers/trousers.mk +++ b/package/trousers/trousers.mk @@ -4,7 +4,7 @@ # ################################################################################ -TROUSERS_VERSION = 0.3.14 +TROUSERS_VERSION = 0.3.15 TROUSERS_SITE = http://downloads.sourceforge.net/project/trousers/trousers/$(TROUSERS_VERSION) TROUSERS_LICENSE = BSD-3-Clause TROUSERS_LICENSE_FILES = LICENSE @@ -13,9 +13,6 @@ TROUSERS_INSTALL_STAGING = YES TROUSERS_AUTORECONF = YES TROUSERS_DEPENDENCIES = host-pkgconf openssl -# 0003-Correct-multiple-security-issues-that-are-present-if.patch -TROUSERS_IGNORE_CVES += CVE-2020-24330 CVE-2020-24331 CVE-2020-24332 - ifeq ($(BR2_PACKAGE_LIBICONV),y) TROUSERS_DEPENDENCIES += libiconv endif From 9679d3f0218519ea7a01f3b5fefb7f6dd23b138e Mon Sep 17 00:00:00 2001 From: Petr Vorel Date: Wed, 4 Nov 2020 20:47:27 +0100 Subject: [PATCH 02/95] package/bind: bump to version 9.11.24 Turn 0001-cross.patch into git patch. Signed-off-by: Petr Vorel Signed-off-by: Peter Korsgaard --- package/bind/0001-cross.patch | 25 ++++++++++++++++++------- package/bind/bind.hash | 6 +++--- package/bind/bind.mk | 2 +- 3 files changed, 22 insertions(+), 11 deletions(-) diff --git a/package/bind/0001-cross.patch b/package/bind/0001-cross.patch index d3e7cc68a6..f39be2f837 100644 --- a/package/bind/0001-cross.patch +++ b/package/bind/0001-cross.patch @@ -1,15 +1,24 @@ -Use host compiler to build 'gen' since it's run when building. +From 505cc9fcadda5607dc4c5bacb03928c0b35162a8 Mon Sep 17 00:00:00 2001 +From: Gustavo Zacarias +Date: Wed, 4 Nov 2020 17:51:38 +0100 +Subject: [PATCH] Use host compiler to build 'gen' since it's run when + building. Signed-off-by: Gustavo Zacarias [Fabrice: updated for 9.11.10] Signed-off-by: Fabrice Fontaine +Signed-off-by: Petr Vorel +--- + lib/dns/Makefile.in | 6 ++---- + 1 file changed, 2 insertions(+), 4 deletions(-) -diff -Nura bind-9.5.1-P1/lib/dns/Makefile.in bind-9.5.1-P1.gencross/lib/dns/Makefile.in ---- bind-9.5.1-P1/lib/dns/Makefile.in 2007-09-11 22:09:08.000000000 -0300 -+++ bind-9.5.1-P1.gencross/lib/dns/Makefile.in 2009-03-04 16:35:23.000000000 -0200 -@@ -160,10 +160,8 @@ +diff --git a/lib/dns/Makefile.in b/lib/dns/Makefile.in +index 8fc4e94f26..4ac92857e0 100644 +--- a/lib/dns/Makefile.in ++++ b/lib/dns/Makefile.in +@@ -184,10 +184,8 @@ code.h: gen ./gen -s ${srcdir} > code.h || { rm -f $@ ; exit 1; } - + gen: gen.c - ${BUILD_CC} ${BUILD_CFLAGS} -I${top_srcdir}/lib/isc/include \ - ${LFS_CFLAGS} ${LFS_LDFLAGS} \ @@ -17,7 +26,9 @@ diff -Nura bind-9.5.1-P1/lib/dns/Makefile.in bind-9.5.1-P1.gencross/lib/dns/Make - ${BUILD_LIBS} ${LFS_LIBS} + ${HOSTCC} ${HOST_CFLAGS} -I${top_srcdir}/lib/isc/include \ + ${HOST_LDFLAGS} -o $@ ${srcdir}/gen.c - + timestamp: include libdns.@A@ touch timestamp +-- +2.29.1 diff --git a/package/bind/bind.hash b/package/bind/bind.hash index 4ba0182b1c..e02c06ff3e 100644 --- a/package/bind/bind.hash +++ b/package/bind/bind.hash @@ -1,4 +1,4 @@ -# Verified from https://ftp.isc.org/isc/bind9/9.11.22/bind-9.11.22.tar.gz.asc -# with key AE3FAC796711EC59FC007AA474BB6B9A4CBB3D38 -sha256 afc6d8015006f1cabf699ff19f517bb8fd9c1811e5231f26baf51c3550262ac9 bind-9.11.22.tar.gz +# Verified from https://ftp.isc.org/isc/bind9/9.11.24/bind-9.11.24.tar.gz.asc +# with key 95CEDA256B1CA0A15F302FB59521A7ED5DACE918 +sha256 f261587c5d37c7f14e8393547c4556faefa701a646930f1b6408d71519a30428 bind-9.11.24.tar.gz sha256 da2aec2b7f6f0feb16bcb080e2c587375fd3195145f047e4d92d112f5b9db501 COPYRIGHT diff --git a/package/bind/bind.mk b/package/bind/bind.mk index 18fc4845f9..ba60c111ef 100644 --- a/package/bind/bind.mk +++ b/package/bind/bind.mk @@ -4,7 +4,7 @@ # ################################################################################ -BIND_VERSION = 9.11.22 +BIND_VERSION = 9.11.24 BIND_SITE = https://ftp.isc.org/isc/bind9/$(BIND_VERSION) # bind does not support parallel builds. BIND_MAKE = $(MAKE1) From eb6e1d5dcb20d4ff43e96838552a106166d9c77f Mon Sep 17 00:00:00 2001 From: Min Xu Date: Wed, 4 Nov 2020 23:17:48 -0800 Subject: [PATCH 03/95] package/shadowsocks-libev: bump version to 3.3.5 Signed-off-by: Min Xu Signed-off-by: Peter Korsgaard --- package/shadowsocks-libev/shadowsocks-libev.hash | 2 +- package/shadowsocks-libev/shadowsocks-libev.mk | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package/shadowsocks-libev/shadowsocks-libev.hash b/package/shadowsocks-libev/shadowsocks-libev.hash index cc7993a54f..4f1d6d2fa5 100644 --- a/package/shadowsocks-libev/shadowsocks-libev.hash +++ b/package/shadowsocks-libev/shadowsocks-libev.hash @@ -1,5 +1,5 @@ # Locally computed -sha256 fce47a956fad0c30def9c71821bcec450a40d3f881548e31e66cedf262b89eb1 shadowsocks-libev-3.3.4.tar.gz +sha256 cfc8eded35360f4b67e18dc447b0c00cddb29cc57a3cec48b135e5fb87433488 shadowsocks-libev-3.3.5.tar.gz # License files, locally calculated sha256 736883f97d44dbec288bb82819f18f4f86d02ae3192f6a9abefa00db76bace41 COPYING diff --git a/package/shadowsocks-libev/shadowsocks-libev.mk b/package/shadowsocks-libev/shadowsocks-libev.mk index 3ba4cb875c..8d7b00f139 100644 --- a/package/shadowsocks-libev/shadowsocks-libev.mk +++ b/package/shadowsocks-libev/shadowsocks-libev.mk @@ -4,7 +4,7 @@ # ################################################################################ -SHADOWSOCKS_LIBEV_VERSION = 3.3.4 +SHADOWSOCKS_LIBEV_VERSION = 3.3.5 SHADOWSOCKS_LIBEV_SITE = https://github.com/shadowsocks/shadowsocks-libev/releases/download/v$(SHADOWSOCKS_LIBEV_VERSION) SHADOWSOCKS_LIBEV_LICENSE = GPL-3.0+, BSD-2-Clause (libbloom), BSD-3-Clause (libcork, libipset) SHADOWSOCKS_LIBEV_LICENSE_FILES = COPYING libbloom/LICENSE libcork/COPYING From dd4e2e39b90e55bef6130b0f941a2343f5f72fbb Mon Sep 17 00:00:00 2001 From: Bernd Kuhls Date: Thu, 5 Nov 2020 19:42:18 +0100 Subject: [PATCH 04/95] package/sqlite: bump version to 3.33.0 Removed sha1 hash, not provided by upstream anymore. Sha3 hashes are currently not support by buildroot, for details see http://lists.busybox.net/pipermail/buildroot/2020-November/295957.html Signed-off-by: Bernd Kuhls Signed-off-by: Peter Korsgaard --- package/sqlite/sqlite.hash | 9 ++------- package/sqlite/sqlite.mk | 2 +- 2 files changed, 3 insertions(+), 8 deletions(-) diff --git a/package/sqlite/sqlite.hash b/package/sqlite/sqlite.hash index 162b52d607..4f0e747c3d 100644 --- a/package/sqlite/sqlite.hash +++ b/package/sqlite/sqlite.hash @@ -1,8 +1,3 @@ -# From https://www.sqlite.org/download.html -sha1 ea14ef2dc4cc7fcbc5ebbb018d3a03faa3a41cb4 sqlite-autoconf-3320300.tar.gz - -# Calculated based on the hash above -sha256 a31507123c1c2e3a210afec19525fd7b5bb1e19a6a34ae5b998fbd7302568b66 sqlite-autoconf-3320300.tar.gz - -# Locally calculated +# Locally computed +sha256 106a2c48c7f75a298a7557bcc0d5f4f454e5b43811cc738b7ca294d6956bbb15 sqlite-autoconf-3330000.tar.gz sha256 66e056b6e8687f32af30d5187611b98b12a8f46f07aaf62f43585f276e8f0ac9 tea/license.terms diff --git a/package/sqlite/sqlite.mk b/package/sqlite/sqlite.mk index c8b9ba3150..3e8754901a 100644 --- a/package/sqlite/sqlite.mk +++ b/package/sqlite/sqlite.mk @@ -4,7 +4,7 @@ # ################################################################################ -SQLITE_VERSION = 3320300 +SQLITE_VERSION = 3330000 SQLITE_SOURCE = sqlite-autoconf-$(SQLITE_VERSION).tar.gz SQLITE_SITE = https://www.sqlite.org/2020 SQLITE_LICENSE = Public domain From 3e1495e7f11c4e9bb3020c2896784239f86bc68b Mon Sep 17 00:00:00 2001 From: Bernd Kuhls Date: Thu, 5 Nov 2020 19:48:12 +0100 Subject: [PATCH 05/95] package/libdrm: bump version to 2.4.103 Remove patch 0003 which was applied upstream. Release notes: https://lists.freedesktop.org/archives/dri-devel/2020-November/285471.html Signed-off-by: Bernd Kuhls Signed-off-by: Peter Korsgaard --- .../0003-xf86drm.c-fix-build-failure.patch | 84 ------------------- package/libdrm/libdrm.hash | 6 +- package/libdrm/libdrm.mk | 2 +- 3 files changed, 4 insertions(+), 88 deletions(-) delete mode 100644 package/libdrm/0003-xf86drm.c-fix-build-failure.patch diff --git a/package/libdrm/0003-xf86drm.c-fix-build-failure.patch b/package/libdrm/0003-xf86drm.c-fix-build-failure.patch deleted file mode 100644 index ba84114f14..0000000000 --- a/package/libdrm/0003-xf86drm.c-fix-build-failure.patch +++ /dev/null @@ -1,84 +0,0 @@ -From c7d89412884de2dbfa543720d185027377e62f21 Mon Sep 17 00:00:00 2001 -From: Heiko Thiery -Date: Fri, 5 Jun 2020 23:46:52 +0200 -Subject: [PATCH] xf86drm.c: fix build failure - -./xf86drm.c: In function 'drmNodeIsDRM': -../xf86drm.c:2825:7: error: "__FreeBSD__" is not defined [-Werror=undef] - #elif __FreeBSD__ - ^ -../xf86drm.c: In function 'drmGetMinorNameForFD': -../xf86drm.c:2938:7: error: "__FreeBSD__" is not defined [-Werror=undef] - #elif __FreeBSD__ - ^ -../xf86drm.c: In function 'drmParsePciBusInfo': -../xf86drm.c:3258:7: error: "__FreeBSD__" is not defined [-Werror=undef] - #elif __FreeBSD__ - ^ -../xf86drm.c: In function 'drmParsePciDeviceInfo': -../xf86drm.c:3427:7: error: "__FreeBSD__" is not defined [-Werror=undef] - #elif __FreeBSD__ - ^ -../xf86drm.c: In function 'drmGetDeviceNameFromFd2': -../xf86drm.c:4305:7: error: "__FreeBSD__" is not defined [-Werror=undef] - #elif __FreeBSD__ - ^ - -Signed-off-by: Heiko Thiery -[A merge-request with this fix is opened at https://gitlab.freedesktop.org/mesa/drm/-/merge_requests/75] ---- - xf86drm.c | 10 +++++----- - 1 file changed, 5 insertions(+), 5 deletions(-) - -diff --git a/xf86drm.c b/xf86drm.c -index 07a18c44..50a6f092 100644 ---- a/xf86drm.c -+++ b/xf86drm.c -@@ -2822,7 +2822,7 @@ static bool drmNodeIsDRM(int maj, int min) - snprintf(path, sizeof(path), "/sys/dev/char/%d:%d/device/drm", - maj, min); - return stat(path, &sbuf) == 0; --#elif __FreeBSD__ -+#elif defined(__FreeBSD__) - char name[SPECNAMELEN]; - - if (!devname_r(makedev(maj, min), S_IFCHR, name, sizeof(name))) -@@ -2935,7 +2935,7 @@ static char *drmGetMinorNameForFD(int fd, int type) - - closedir(sysdir); - return NULL; --#elif __FreeBSD__ -+#elif defined(__FreeBSD__) - struct stat sbuf; - char dname[SPECNAMELEN]; - const char *mname; -@@ -3255,7 +3255,7 @@ static int drmParsePciBusInfo(int maj, int min, drmPciBusInfoPtr info) - info->func = pinfo.func; - - return 0; --#elif __FreeBSD__ -+#elif defined(__FreeBSD__) - return get_sysctl_pci_bus_info(maj, min, info); - #else - #warning "Missing implementation of drmParsePciBusInfo" -@@ -3424,7 +3424,7 @@ static int drmParsePciDeviceInfo(int maj, int min, - device->subdevice_id = pinfo.subdevice_id; - - return 0; --#elif __FreeBSD__ -+#elif defined(__FreeBSD__) - drmPciBusInfo info; - struct pci_conf_io pc; - struct pci_match_conf patterns[1]; -@@ -4302,7 +4302,7 @@ drm_public char *drmGetDeviceNameFromFd2(int fd) - free(value); - - return strdup(path); --#elif __FreeBSD__ -+#elif defined(__FreeBSD__) - return drmGetDeviceNameFromFd(fd); - #else - struct stat sbuf; --- -2.20.1 - diff --git a/package/libdrm/libdrm.hash b/package/libdrm/libdrm.hash index 72330165d8..84caffc792 100644 --- a/package/libdrm/libdrm.hash +++ b/package/libdrm/libdrm.hash @@ -1,3 +1,3 @@ -# From https://lists.freedesktop.org/archives/dri-devel/2020-May/267255.html -sha256 8bcbf9336c28e393d76c1f16d7e79e394a7fce8a2e929d52d3ad7ad8525ba05b libdrm-2.4.102.tar.xz -sha512 386afd228efd809fe32776a6ff5d9dd95d1409a6a6a89b3806a3b42ed27e84f1e090f3b7834973f834d6b0d1342b7034447fe8690d072f85f03292d7795c3e0c libdrm-2.4.102.tar.xz +# From https://lists.freedesktop.org/archives/dri-devel/2020-November/285471.html +sha256 3fe0affdba6460166a7323290c18cf68e9b59edcb520722826cb244e9cb50222 libdrm-2.4.103.tar.xz +sha512 15b098b962008271400692b6b15ecb7e22676f8698e0220ad969735ac2315ccc737d19558afb6abda82bae15117e5f306c048184a2369f434b85ecaa670ca885 libdrm-2.4.103.tar.xz diff --git a/package/libdrm/libdrm.mk b/package/libdrm/libdrm.mk index 9348b83295..0c332a4a9c 100644 --- a/package/libdrm/libdrm.mk +++ b/package/libdrm/libdrm.mk @@ -4,7 +4,7 @@ # ################################################################################ -LIBDRM_VERSION = 2.4.102 +LIBDRM_VERSION = 2.4.103 LIBDRM_SOURCE = libdrm-$(LIBDRM_VERSION).tar.xz LIBDRM_SITE = https://dri.freedesktop.org/libdrm LIBDRM_LICENSE = MIT From 62257b3247d253639354a5519ac51ca1e4daff05 Mon Sep 17 00:00:00 2001 From: Baruch Siach Date: Thu, 5 Nov 2020 20:15:46 +0200 Subject: [PATCH 06/95] package/dnsmasq: bump to version 2.82 Drop Makefile modification for pkg-config. Build time PATH ensures that the Buildroot pkg-config is used. Cc: Matt Weber Signed-off-by: Baruch Siach Signed-off-by: Peter Korsgaard --- package/dnsmasq/dnsmasq.hash | 4 ++-- package/dnsmasq/dnsmasq.mk | 8 +------- 2 files changed, 3 insertions(+), 9 deletions(-) diff --git a/package/dnsmasq/dnsmasq.hash b/package/dnsmasq/dnsmasq.hash index 99e417f069..401f930baf 100644 --- a/package/dnsmasq/dnsmasq.hash +++ b/package/dnsmasq/dnsmasq.hash @@ -1,6 +1,6 @@ # Locally calculated after checking pgp signature -# http://www.thekelleys.org.uk/dnsmasq/dnsmasq-2.81.tar.xz.asc -sha256 749ca903537c5197c26444ac24b0dce242cf42595fdfe6b9a5b9e4c7ad32f8fb dnsmasq-2.81.tar.xz +# http://www.thekelleys.org.uk/dnsmasq/dnsmasq-2.82.tar.xz.asc +sha256 84523646f3116bb5e1151efb66e645030f6e6a8256f29aab444777a343ebc132 dnsmasq-2.82.tar.xz # Locally calculated sha256 dcc100d4161cc0b7177545ab6e47216f84857cda3843847c792a25289852dcaa COPYING sha256 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903 COPYING-v3 diff --git a/package/dnsmasq/dnsmasq.mk b/package/dnsmasq/dnsmasq.mk index 4a7218a2b7..117be38d4b 100644 --- a/package/dnsmasq/dnsmasq.mk +++ b/package/dnsmasq/dnsmasq.mk @@ -4,7 +4,7 @@ # ################################################################################ -DNSMASQ_VERSION = 2.81 +DNSMASQ_VERSION = 2.82 DNSMASQ_SOURCE = dnsmasq-$(DNSMASQ_VERSION).tar.xz DNSMASQ_SITE = http://thekelleys.org.uk/dnsmasq DNSMASQ_MAKE_ENV = $(TARGET_MAKE_ENV) CC="$(TARGET_CC)" @@ -77,13 +77,7 @@ DNSMASQ_DEPENDENCIES += ubus DNSMASQ_COPTS += -DHAVE_UBUS endif -define DNSMASQ_FIX_PKGCONFIG - $(SED) 's^PKG_CONFIG = pkg-config^PKG_CONFIG = $(PKG_CONFIG_HOST_BINARY)^' \ - $(DNSMASQ_DIR)/Makefile -endef - define DNSMASQ_BUILD_CMDS - $(DNSMASQ_FIX_PKGCONFIG) $(DNSMASQ_TWEAK_LIBLUA) $(DNSMASQ_MAKE_ENV) $(MAKE) -C $(@D) $(DNSMASQ_MAKE_OPTS) all$(DNSMASQ_I18N) endef From 7395800a5f895b62f734e96ea6a7a1d63ad8fbc7 Mon Sep 17 00:00:00 2001 From: Bernd Kuhls Date: Thu, 5 Nov 2020 19:56:37 +0100 Subject: [PATCH 07/95] package/libva-utils: bump version to 2.9.1 Signed-off-by: Bernd Kuhls Signed-off-by: Peter Korsgaard --- package/libva-utils/libva-utils.hash | 6 +++--- package/libva-utils/libva-utils.mk | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/package/libva-utils/libva-utils.hash b/package/libva-utils/libva-utils.hash index a83e28389b..208da06592 100644 --- a/package/libva-utils/libva-utils.hash +++ b/package/libva-utils/libva-utils.hash @@ -1,5 +1,5 @@ -# From https://github.com/intel/libva-utils/releases/download/2.8.0/libva-utils-2.8.0.tar.bz2.sha1sum -sha1 10351adf67aa03f5eeb54cb0aab3e2631ba4d102 libva-utils-2.8.0.tar.bz2 +# From https://github.com/intel/libva-utils/releases/download/2.9.1/libva-utils-2.9.1.tar.bz2.sha1sum +sha1 92d8118e112bca8d8497c10a5f896610883a9775 libva-utils-2.9.1.tar.bz2 # Locally computed -sha256 8acad2c16bfef408643cf4de56c324345449f202e4a3a5b012a62a1d3af400ef libva-utils-2.8.0.tar.bz2 +sha256 66558051b280f0f82781b80d355c198105235b5887e6fcb703ef1a679646c814 libva-utils-2.9.1.tar.bz2 sha256 c6220c9f87832c27abcb8a32eafdd2823e13ce146b3ea63d5deae2a76798ef50 COPYING diff --git a/package/libva-utils/libva-utils.mk b/package/libva-utils/libva-utils.mk index 5d3fb95c41..2e26df7100 100644 --- a/package/libva-utils/libva-utils.mk +++ b/package/libva-utils/libva-utils.mk @@ -4,7 +4,7 @@ # ################################################################################ -LIBVA_UTILS_VERSION = 2.8.0 +LIBVA_UTILS_VERSION = 2.9.1 LIBVA_UTILS_SOURCE = libva-utils-$(LIBVA_UTILS_VERSION).tar.bz2 LIBVA_UTILS_SITE = https://github.com/intel/libva-utils/releases/download/$(LIBVA_UTILS_VERSION) LIBVA_UTILS_LICENSE = MIT From 5abbb75e9da9de61fb21d2d3f652b676eecd475e Mon Sep 17 00:00:00 2001 From: "Guillaume W. Bres" Date: Thu, 5 Nov 2020 19:59:23 +0100 Subject: [PATCH 08/95] package/python-pybind: bump version to 2.6.0 Signed-off-by: Guillaume W. Bres Signed-off-by: Peter Korsgaard --- package/python-pybind/python-pybind.hash | 4 ++-- package/python-pybind/python-pybind.mk | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package/python-pybind/python-pybind.hash b/package/python-pybind/python-pybind.hash index 751b0bdf6e..f64f1409d2 100644 --- a/package/python-pybind/python-pybind.hash +++ b/package/python-pybind/python-pybind.hash @@ -1,4 +1,4 @@ # Locally calculated -sha256 97504db65640570f32d3fdf701c25a340c8643037c3b69aec469c10c93dc8504 python-pybind-2.5.0.tar.gz +sha256 90b705137b69ee3b5fc655eaca66d0dc9862ea1759226f7ccd3098425ae69571 python-pybind-2.6.0.tar.gz # License files, locally calculated -sha256 9a37ea54aa3cf12c7f3292799f20822ffd4b9b7142b36a7a9997b28c39264dc9 LICENSE +sha256 83965b843b98f670d3a85bd041ed4b372c8ec50d7b4a5995a83ac697ba675dcb LICENSE diff --git a/package/python-pybind/python-pybind.mk b/package/python-pybind/python-pybind.mk index 634e869e40..435d4a9b50 100644 --- a/package/python-pybind/python-pybind.mk +++ b/package/python-pybind/python-pybind.mk @@ -4,7 +4,7 @@ # ################################################################################ -PYTHON_PYBIND_VERSION = 2.5.0 +PYTHON_PYBIND_VERSION = 2.6.0 PYTHON_PYBIND_SITE = $(call github,pybind,pybind11,v$(PYTHON_PYBIND_VERSION)) PYTHON_PYBIND_LICENSE = BSD-3-Clause PYTHON_PYBIND_LICENSE_FILES = LICENSE From b317eb8802ddb9a3079d66cc1cefd3e60f0d9e72 Mon Sep 17 00:00:00 2001 From: Bernd Kuhls Date: Thu, 5 Nov 2020 20:07:01 +0100 Subject: [PATCH 09/95] package/libbluray: bump version to 1.2.1 Reformatted hashes. Release notes: https://www.videolan.org/news.html#news-2020-10-23 "A minor release of libbluray was pushed today, focused on fixing bugs and improving the support for UHD Blurays." Signed-off-by: Bernd Kuhls Signed-off-by: Peter Korsgaard --- package/libbluray/libbluray.hash | 6 +++--- package/libbluray/libbluray.mk | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/package/libbluray/libbluray.hash b/package/libbluray/libbluray.hash index c92d9f9549..430d477484 100644 --- a/package/libbluray/libbluray.hash +++ b/package/libbluray/libbluray.hash @@ -1,4 +1,4 @@ -# From http://download.videolan.org/pub/videolan/libbluray/1.2.0/libbluray-1.2.0.tar.bz2.sha512 -sha512 d10413b6b86ff2d2e7c4b0103546f2142727cc5209ddb7b227aa74e27384f2e0b9abee37bf8ccc5b0cdfcaeebfb0669cf20903a247df278a8ad6dbd27469d324 libbluray-1.2.0.tar.bz2 +# From http://download.videolan.org/pub/videolan/libbluray/1.2.1/libbluray-1.2.1.tar.bz2.sha512 +sha512 e9eeee433034266e88c05ae3469c0bd2bf700d7f16e17ad706f48426c143c823e83c16ab79a637f1e85e4eb858aa0577630671f87ba35d179db2a1d8bc8545c4 libbluray-1.2.1.tar.bz2 # Locally computed -sha256 b3aa400aca6d2ba1f0bd03bd98d03d1fe7489a3bbb26969d72016360af8a5c9d COPYING +sha256 b3aa400aca6d2ba1f0bd03bd98d03d1fe7489a3bbb26969d72016360af8a5c9d COPYING diff --git a/package/libbluray/libbluray.mk b/package/libbluray/libbluray.mk index 67ea139d58..e2d7fc0c7d 100644 --- a/package/libbluray/libbluray.mk +++ b/package/libbluray/libbluray.mk @@ -4,7 +4,7 @@ # ################################################################################ -LIBBLURAY_VERSION = 1.2.0 +LIBBLURAY_VERSION = 1.2.1 LIBBLURAY_SITE = http://download.videolan.org/pub/videolan/libbluray/$(LIBBLURAY_VERSION) LIBBLURAY_SOURCE = libbluray-$(LIBBLURAY_VERSION).tar.bz2 LIBBLURAY_INSTALL_STAGING = YES From 5948cd6163251bb468d801b552d89964ce84007a Mon Sep 17 00:00:00 2001 From: Fabrice Fontaine Date: Fri, 6 Nov 2020 21:46:02 +0100 Subject: [PATCH 10/95] package/botan: bump to version 2.17.0 Drop patch (already in version) https://botan.randombit.net/news.html#version-2-17-0-2020-11-05 Signed-off-by: Fabrice Fontaine Signed-off-by: Thomas Petazzoni --- ...d-data-arch-arm64.txt-add-aarch64_be.patch | 31 ------------------- package/botan/botan.hash | 2 +- package/botan/botan.mk | 2 +- 3 files changed, 2 insertions(+), 33 deletions(-) delete mode 100644 package/botan/0001-src-build-data-arch-arm64.txt-add-aarch64_be.patch diff --git a/package/botan/0001-src-build-data-arch-arm64.txt-add-aarch64_be.patch b/package/botan/0001-src-build-data-arch-arm64.txt-add-aarch64_be.patch deleted file mode 100644 index fd6a2ffddd..0000000000 --- a/package/botan/0001-src-build-data-arch-arm64.txt-add-aarch64_be.patch +++ /dev/null @@ -1,31 +0,0 @@ -From a93bc8503649028852402c61bdda531af2872d0e Mon Sep 17 00:00:00 2001 -From: Fabrice Fontaine -Date: Thu, 15 Oct 2020 09:15:06 +0200 -Subject: [PATCH] src/build-data/arch/arm64.txt: add aarch64_be - -Allow the user to set cpu value to aarch64_be. -Endianness will be correctly guessed by choose_endian function because -this alias ends with "be" - -Fixes: - - http://autobuild.buildroot.org/results/69ebf03c59b2af4140a39bc26f17d0396b6ec15d - -Signed-off-by: Fabrice Fontaine -[Retrieved from: -https://github.com/randombit/botan/commit/a93bc8503649028852402c61bdda531af2872d0e] ---- - src/build-data/arch/arm64.txt | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/src/build-data/arch/arm64.txt b/src/build-data/arch/arm64.txt -index 056c5318ff..5205295125 100644 ---- a/src/build-data/arch/arm64.txt -+++ b/src/build-data/arch/arm64.txt -@@ -5,6 +5,7 @@ family arm - - - aarch64 -+aarch64_be - armv8 - armv8-a - diff --git a/package/botan/botan.hash b/package/botan/botan.hash index 003dd13e9c..612aa1e85a 100644 --- a/package/botan/botan.hash +++ b/package/botan/botan.hash @@ -1,4 +1,4 @@ # From https://botan.randombit.net/releases/sha256sums.txt -sha256 92ed6ebc918d86bd1b04221ca518af4cf29cc326c4760740bd2d22e61cea2628 Botan-2.16.0.tar.xz +sha256 b97044b312aa718349af7851331b064bc7bd5352400d5f80793bace427d01343 Botan-2.17.0.tar.xz # Locally computed sha256 fb7f0322d36fba55ca17d77bc203a9f09a40daa8a249b75cf8887aba36cec9d0 license.txt diff --git a/package/botan/botan.mk b/package/botan/botan.mk index d36324c7f7..79c45ffb5f 100644 --- a/package/botan/botan.mk +++ b/package/botan/botan.mk @@ -4,7 +4,7 @@ # ################################################################################ -BOTAN_VERSION = 2.16.0 +BOTAN_VERSION = 2.17.0 BOTAN_SOURCE = Botan-$(BOTAN_VERSION).tar.xz BOTAN_SITE = http://botan.randombit.net/releases BOTAN_LICENSE = BSD-2-Clause From 17a220d1543ee34a2e292ccbac001b5ffaba407c Mon Sep 17 00:00:00 2001 From: Fabrice Fontaine Date: Fri, 6 Nov 2020 21:54:13 +0100 Subject: [PATCH 11/95] package/haproxy: bump to version 2.2.5 https://www.mail-archive.com/haproxy@formilux.org/msg38809.html Signed-off-by: Fabrice Fontaine Signed-off-by: Thomas Petazzoni --- package/haproxy/haproxy.hash | 4 ++-- package/haproxy/haproxy.mk | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package/haproxy/haproxy.hash b/package/haproxy/haproxy.hash index a127af9195..5140c6a944 100644 --- a/package/haproxy/haproxy.hash +++ b/package/haproxy/haproxy.hash @@ -1,5 +1,5 @@ -# From: http://www.haproxy.org/download/2.2/src/haproxy-2.2.4.tar.gz.sha256 -sha256 87a4d9d4ff8dc3094cb61bbed4a8eed2c40b5ac47b9604daebaf036d7b541be2 haproxy-2.2.4.tar.gz +# From: http://www.haproxy.org/download/2.2/src/haproxy-2.2.5.tar.gz.sha256 +sha256 63ad1813e01992d0fbe5ac7ca3e516a53fc62cdb17845d5ac90260031b6dd747 haproxy-2.2.5.tar.gz # Locally computed: sha256 0717ca51fceaa25ac9e5ccc62e0c727dcf27796057201fb5fded56a25ff6ca28 LICENSE sha256 5df07007198989c622f5d41de8d703e7bef3d0e79d62e24332ee739a452af62a doc/lgpl.txt diff --git a/package/haproxy/haproxy.mk b/package/haproxy/haproxy.mk index 70ff997fbe..1912a219e1 100644 --- a/package/haproxy/haproxy.mk +++ b/package/haproxy/haproxy.mk @@ -5,7 +5,7 @@ ################################################################################ HAPROXY_VERSION_MAJOR = 2.2 -HAPROXY_VERSION = $(HAPROXY_VERSION_MAJOR).4 +HAPROXY_VERSION = $(HAPROXY_VERSION_MAJOR).5 HAPROXY_SITE = http://www.haproxy.org/download/$(HAPROXY_VERSION_MAJOR)/src HAPROXY_LICENSE = GPL-2.0+ and LGPL-2.1+ with exceptions HAPROXY_LICENSE_FILES = LICENSE doc/lgpl.txt doc/gpl.txt From 5d50793659acb95050c110d5fc05399df20ce30b Mon Sep 17 00:00:00 2001 From: Francois Perrad Date: Fri, 6 Nov 2020 23:51:14 +0100 Subject: [PATCH 12/95] package/quickjs: new package Signed-off-by: Francois Perrad Signed-off-by: Thomas Petazzoni --- DEVELOPERS | 1 + package/Config.in | 1 + package/quickjs/Config.in | 16 ++++++++++++++++ package/quickjs/quickjs.hash | 2 ++ package/quickjs/quickjs.mk | 37 ++++++++++++++++++++++++++++++++++++ 5 files changed, 57 insertions(+) create mode 100644 package/quickjs/Config.in create mode 100644 package/quickjs/quickjs.hash create mode 100644 package/quickjs/quickjs.mk diff --git a/DEVELOPERS b/DEVELOPERS index 43cc1b55ae..53db631940 100644 --- a/DEVELOPERS +++ b/DEVELOPERS @@ -922,6 +922,7 @@ F: package/netsurf/ F: package/perl* F: package/pkg-perl.mk F: package/pkg-luarocks.mk +F: package/quickjs/ F: package/rings/ F: package/tekui/ F: package/wpebackend-fdo/ diff --git a/package/Config.in b/package/Config.in index 016a99ed1a..8fcea06433 100644 --- a/package/Config.in +++ b/package/Config.in @@ -1245,6 +1245,7 @@ menu "External python modules" source "package/python-zope-interface/Config.in" endmenu endif + source "package/quickjs/Config.in" source "package/ruby/Config.in" source "package/tcl/Config.in" if BR2_PACKAGE_TCL diff --git a/package/quickjs/Config.in b/package/quickjs/Config.in new file mode 100644 index 0000000000..ee53744bde --- /dev/null +++ b/package/quickjs/Config.in @@ -0,0 +1,16 @@ +config BR2_PACKAGE_QUICKJS + bool "quickjs" + depends on !BR2_STATIC_LIBS + # No way to check for fenv support. + depends on !BR2_TOOLCHAIN_USES_UCLIBC + depends on BR2_USE_MMU # fork() + help + QuickJS is a small and embeddable Javascript engine. + It supports the ES2020 specification including modules, + asynchronous generators, proxies and BigInt. + + https://bellard.org/quickjs/ + +comment "quickjs needs a glibc or musl toolchain w/ dynamic library" + depends on BR2_USE_MMU + depends on BR2_STATIC_LIBS || BR2_TOOLCHAIN_USES_UCLIBC diff --git a/package/quickjs/quickjs.hash b/package/quickjs/quickjs.hash new file mode 100644 index 0000000000..076e4bddbb --- /dev/null +++ b/package/quickjs/quickjs.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 0021a3e8cdc6b61e225411d05e2841d2437e1ccf4b4cabb9a5f7685ebfb57717 quickjs-2020-09-06.tar.xz diff --git a/package/quickjs/quickjs.mk b/package/quickjs/quickjs.mk new file mode 100644 index 0000000000..557ffb196d --- /dev/null +++ b/package/quickjs/quickjs.mk @@ -0,0 +1,37 @@ +################################################################################ +# +# quickjs +# +################################################################################ + +QUICKJS_VERSION = 2020-09-06 +QUICKJS_SOURCE = quickjs-$(QUICKJS_VERSION).tar.xz +QUICKJS_SITE = https://bellard.org/quickjs +QUICKJS_LICENSE = MIT +QUICKJS_INSTALL_STAGING = YES + +define QUICKJS_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) \ + CROSS_PREFIX="$(TARGET_CROSS)" \ + all +endef + +define QUICKJS_INSTALL_STAGING_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) \ + CROSS_PREFIX="$(TARGET_CROSS)" \ + DESTDIR=$(STAGING_DIR) \ + STRIP=/bin/true \ + prefix=/usr \ + install +endef + +define QUICKJS_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) \ + CROSS_PREFIX="$(TARGET_CROSS)" \ + DESTDIR=$(TARGET_DIR) \ + STRIP=/bin/true \ + prefix=/usr \ + install +endef + +$(eval $(generic-package)) From fcee4254aa50dc8866d3245e5a21ad63b9cbfd2c Mon Sep 17 00:00:00 2001 From: Fabrice Fontaine Date: Thu, 5 Nov 2020 20:59:05 +0100 Subject: [PATCH 13/95] package/rocksdb: bump to version 6.13.3 - Refresh first patch - Replace second patch (this new iteration of previous patch has not been merged and does not apply cleanly on current version) - Update hash of README.md (CircleCI gadget added with https://github.com/facebook/rocksdb/commit/63b59f21d9971fc941e3ee2244783a3c16bd5ad4) - LTO is supported since version 6.12.6 and https://github.com/facebook/rocksdb/commit/c0c33a4854587e412742841f199edd4616be6c00 - DESTDIR and PREFIX are supported since version 6.13.2 and https://github.com/facebook/rocksdb/commit/1e59800718b29d4a762b8ac356767a701f968a4d https://github.com/facebook/rocksdb/releases/tag/v6.13.3 Fixes: - http://autobuild.buildroot.org/results/a9798bb279a668a266c472fb026b68dbccf50431 Signed-off-by: Fabrice Fontaine Signed-off-by: Thomas Petazzoni --- ...ls-build_detect_platform-fix-C-tests.patch | 67 +- ...patiblity-fix-CRC32-C-implementation.patch | 3787 +++++++++++++++ ...e-POWER-crc32c-with-C-implementation.patch | 4058 ----------------- package/rocksdb/rocksdb.hash | 4 +- package/rocksdb/rocksdb.mk | 16 +- 5 files changed, 3857 insertions(+), 4075 deletions(-) create mode 100644 package/rocksdb/0002-POWER7-8-compatiblity-fix-CRC32-C-implementation.patch delete mode 100644 package/rocksdb/0002-replace-POWER-crc32c-with-C-implementation.patch diff --git a/package/rocksdb/0001-build_tools-build_detect_platform-fix-C-tests.patch b/package/rocksdb/0001-build_tools-build_detect_platform-fix-C-tests.patch index 05f6bbde79..77ac9f90a1 100644 --- a/package/rocksdb/0001-build_tools-build_detect_platform-fix-C-tests.patch +++ b/package/rocksdb/0001-build_tools-build_detect_platform-fix-C-tests.patch @@ -16,13 +16,22 @@ EOF Signed-off-by: Fabrice Fontaine [Upstream status: https://github.com/facebook/rocksdb/pull/6479] --- - build_tools/build_detect_platform | 58 +++++++++++++++---------------- - 1 file changed, 29 insertions(+), 29 deletions(-) + build_tools/build_detect_platform | 66 +++++++++++++++---------------- + 1 file changed, 33 insertions(+), 33 deletions(-) diff --git a/build_tools/build_detect_platform b/build_tools/build_detect_platform index 2535d8124..64a0ae76c 100755 --- a/build_tools/build_detect_platform +++ b/build_tools/build_detect_platform +@@ -172,7 +172,7 @@ case "$TARGET_OS" in + PLATFORM_LDFLAGS="$PLATFORM_LDFLAGS -lpthread -lrt -ldl" + if test $ROCKSDB_USE_IO_URING; then + # check for liburing +- $CXX $CFLAGS -x c++ - -luring -o /dev/null 2>/dev/null </dev/null < + int main() { + struct io_uring ring; @@ -245,7 +245,7 @@ if [ "$CROSS_COMPILE" = "true" -o "$FBCODE_BUILD" = "true" ]; then else if ! test $ROCKSDB_DISABLE_FALLOCATE; then @@ -45,17 +54,26 @@ index 2535d8124..64a0ae76c 100755 # Test whether gflags library is installed # http://gflags.github.io/gflags/ # check if the namespace is gflags -- $CXX $CFLAGS -x c++ - -o /dev/null 2>/dev/null << EOF -+ $CXX $CFLAGS -x c++ - -o test.o 2>/dev/null << EOF +- if $CXX $CFLAGS -x c++ - -o /dev/null 2>/dev/null << EOF ++ if $CXX $CFLAGS -x c++ - -o test.o 2>/dev/null << EOF #include + using namespace GFLAGS_NAMESPACE; int main() {} - EOF +@@ -323,7 +323,7 @@ EOF + COMMON_FLAGS="$COMMON_FLAGS -DGFLAGS=1" + PLATFORM_LDFLAGS="$PLATFORM_LDFLAGS -lgflags" + # check if namespace is gflags +- elif $CXX $CFLAGS -x c++ - -o /dev/null 2>/dev/null << EOF ++ elif $CXX $CFLAGS -x c++ - -o test.o 2>/dev/null << EOF + #include + using namespace gflags; + int main() {} @@ -285,7 +285,7 @@ EOF - PLATFORM_LDFLAGS="$PLATFORM_LDFLAGS -lgflags" - else - # check if namespace is google -- $CXX $CFLAGS -x c++ - -o /dev/null 2>/dev/null << EOF -+ $CXX $CFLAGS -x c++ - -o test.o 2>/dev/null << EOF + COMMON_FLAGS="$COMMON_FLAGS -DGFLAGS=1 -DGFLAGS_NAMESPACE=gflags" + PLATFORM_LDFLAGS="$PLATFORM_LDFLAGS -lgflags" + # check if namespace is google +- elif $CXX $CFLAGS -x c++ - -o /dev/null 2>/dev/null << EOF ++ elif $CXX $CFLAGS -x c++ - -o test.o 2>/dev/null << EOF #include using namespace google; int main() {} @@ -142,6 +160,15 @@ index 2535d8124..64a0ae76c 100755 size_t res = malloc_usable_size(0); @@ -424,7 +424,7 @@ EOF + if ! test $ROCKSDB_DISABLE_MEMKIND; then + # Test whether memkind library is installed +- $CXX $CFLAGS $COMMON_FLAGS -lmemkind -x c++ - -o /dev/null 2>/dev/null </dev/null < + int main() { + memkind_malloc(MEMKIND_DAX_KMEM, 1024); +@@ -486,7 +486,7 @@ EOF + if ! test $ROCKSDB_DISABLE_PTHREAD_MUTEX_ADAPTIVE_NP; then # Test whether PTHREAD_MUTEX_ADAPTIVE_NP mutex type is available - $CXX $CFLAGS -x c++ - -o /dev/null 2>/dev/null </dev/null <&2 fi +-$CXX $PLATFORM_CXXFLAGS $COMMON_FLAGS $TRY_BMI -x c++ - -o /dev/null 2>/dev/null </dev/null < + #include + int main(int argc, char *argv[]) { +@@ -739,7 +739,7 @@ elif test "$USE_SSE"; then + echo "warning: USE_SSE specified but compiler could not use BMI intrinsics, disabling" >&2 + fi + +-$CXX $PLATFORM_CXXFLAGS $COMMON_FLAGS $TRY_LZCNT -x c++ - -o /dev/null 2>/dev/null </dev/null < + #include + int main(int argc, char *argv[]) { +@@ -753,7 +753,7 @@ elif test "$USE_SSE"; then + echo "warning: USE_SSE specified but compiler could not use LZCNT intrinsics, disabling" >&2 + fi + -$CXX $PLATFORM_CXXFLAGS $COMMON_FLAGS -x c++ - -o /dev/null 2>/dev/null </dev/null < diff --git a/package/rocksdb/0002-POWER7-8-compatiblity-fix-CRC32-C-implementation.patch b/package/rocksdb/0002-POWER7-8-compatiblity-fix-CRC32-C-implementation.patch new file mode 100644 index 0000000000..bb7a2bed5e --- /dev/null +++ b/package/rocksdb/0002-POWER7-8-compatiblity-fix-CRC32-C-implementation.patch @@ -0,0 +1,3787 @@ +From 7eab5c3bf8449673de7bf0d3446a669694f71f1a Mon Sep 17 00:00:00 2001 +From: Daniel Black +Date: Thu, 16 Apr 2020 12:23:02 +1000 +Subject: [PATCH] POWER7/8 compatiblity fix + CRC32 C implementation + +When running on a POWER7/8, the compiler will successfully +report being able to compile for POWER9 compatibility. It will +however fail to run due to POWER9+ only instructions being used. + +To preserve the goals of ensuring an optimization for the +local hardware, -mcpu=native is used, but only if we don't +already have C{,XX}_FLAGS with cpu/arch/tune set. PORTABLE +flag that was added for x86 is reused to ensure that the minimum +viable cpu is selected, POWER7 if compiling on big endian and +POWER8 if on little endian. + +This ensures that if a binary distributor compiles on a +POWER9, and aims to support POWER8 packages, then hopefully +they will have the correct C{,XX}_FLAGS, and as such, will +not result in a broken package on POWER8. + +Fixes: 8fc20ac468b266a53083175025375985ec04b796 + +We also replace POWER crc32c with C implementation. +The presence of clang compile failures on POWER due to +missing ppc-asm.h prompted the replacement of the ASM +CRC32 implementation with the C implementation. + +We include this when the compile flags enable it to be build. +For example on POWER7 the optimized crc32 will be built, +however it won't be used because of the runtime detection. +If the executable is moved to a POWER8 big endian it will +work correctly. + +https://github.com/antonblanchard/crc32-vpmsum/blob/master/vec_crc32.c +is used with only small include path change with the local copyright header +maintained. + +util/crc32c.cc removes arch_ppc_crc32 which was only ever +used in a local context. Also incorporated significant advice from +tchaikov in #2869. Replace all compile time checks with runtime checks. + +Corrects getauxval detection from 8bbd76edbf by including the header from the +right directory. + +[Retrieved (and slightly updated for 6.13.3) from: +https://github.com/facebook/rocksdb/pull/7079/commits/7eab5c3bf8449673de7bf0d3446a669694f71f1a] +Signed-off-by: Fabrice Fontaine +--- + CMakeLists.txt | 59 +- + Makefile | 35 +- + src.mk | 11 +- + util/crc32c.cc | 63 +- + util/crc32c_ppc.c | 94 -- + util/crc32c_ppc.cc | 662 +++++++++++++ + util/crc32c_ppc.h | 19 - + util/crc32c_ppc_asm.S | 752 -------------- + util/crc32c_ppc_clang_workaround.h | 85 ++ + util/crc32c_ppc_constants.h | 1457 +++++++++++++++++----------- + util/crc32c_test.cc | 3 + + 11 files changed, 1684 insertions(+), 1556 deletions(-) + delete mode 100644 util/crc32c_ppc.c + create mode 100644 util/crc32c_ppc.cc + delete mode 100644 util/crc32c_ppc.h + delete mode 100644 util/crc32c_ppc_asm.S + create mode 100644 util/crc32c_ppc_clang_workaround.h + +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 91647d83bb..5adf0cf3a5 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -39,7 +39,7 @@ include(ReadVersion) + get_rocksdb_version(rocksdb_VERSION) + project(rocksdb + VERSION ${rocksdb_VERSION} +- LANGUAGES CXX C ASM) ++ LANGUAGES CXX C) + + if(POLICY CMP0042) + cmake_policy(SET CMP0042 NEW) +@@ -223,26 +223,6 @@ else() + endif() + + include(CheckCCompilerFlag) +-if(CMAKE_SYSTEM_PROCESSOR MATCHES "^(powerpc|ppc)64") +- CHECK_C_COMPILER_FLAG("-mcpu=power9" HAS_POWER9) +- if(HAS_POWER9) +- set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -mcpu=power9 -mtune=power9") +- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mcpu=power9 -mtune=power9") +- else() +- CHECK_C_COMPILER_FLAG("-mcpu=power8" HAS_POWER8) +- if(HAS_POWER8) +- set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -mcpu=power8 -mtune=power8") +- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mcpu=power8 -mtune=power8") +- endif(HAS_POWER8) +- endif(HAS_POWER9) +- CHECK_C_COMPILER_FLAG("-maltivec" HAS_ALTIVEC) +- if(HAS_ALTIVEC) +- message(STATUS " HAS_ALTIVEC yes") +- set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -maltivec") +- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -maltivec") +- endif(HAS_ALTIVEC) +-endif(CMAKE_SYSTEM_PROCESSOR MATCHES "^(powerpc|ppc)64") +- + if(CMAKE_SYSTEM_PROCESSOR MATCHES "aarch64|AARCH64") + CHECK_C_COMPILER_FLAG("-march=armv8-a+crc+crypto" HAS_ARMV8_CRC) + if(HAS_ARMV8_CRC) +@@ -260,21 +240,40 @@ if(PORTABLE) + if(FORCE_SSE42 AND NOT MSVC) + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -msse4.2 -mpclmul") + endif() ++ if(CMAKE_SYSTEM_PROCESSOR MATCHES "^(powerpc|ppc)64") ++ if(CMAKE_SYSTEM_PROCESSOR MATCHES "^(powerpc|ppc)64le") ++ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mcpu=power8") ++ else() ++ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mcpu=power7") ++ endif() ++ endif() + else() + if(MSVC) + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /arch:AVX2") + else() +- if(NOT CMAKE_SYSTEM_PROCESSOR MATCHES "^(powerpc|ppc)64" AND NOT HAS_ARMV8_CRC) +- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -march=native") ++ if(NOT CMAKE_CXX_FLAGS MATCHES "m(cpu|tune|arch)") ++ if(CMAKE_SYSTEM_PROCESSOR MATCHES "^(powerpc|ppc)64") ++ # Power doesn't have a march option - https://gcc.gnu.org/onlinedocs/gcc/RS_002f6000-and-PowerPC-Options.html ++ # -mcpu activates all available options ++ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mcpu=native") ++ else() ++ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -march=native") ++ endif() + endif() + endif() + endif() + +-include(CheckCXXSourceCompiles) ++if(CMAKE_SYSTEM_PROCESSOR MATCHES "^(powerpc|ppc)64") ++ include(CheckCXXCompilerFlag) ++ SET(POWER_CRC32_FLAGS "-mcrypto -mpower8-vector -maltivec -mvsx") ++ CHECK_CXX_COMPILER_FLAG("${POWER_CRC32_FLAGS}" HAS_POWER_CRC32_FLAGS) ++endif() ++ + if(NOT MSVC) + set(CMAKE_REQUIRED_FLAGS "-msse4.2 -mpclmul") + endif() + ++include(CheckCXXSourceCompiles) + CHECK_CXX_SOURCE_COMPILES(" + #include + #include +@@ -525,7 +524,7 @@ if(HAVE_SCHED_GETCPU) + add_definitions(-DROCKSDB_SCHED_GETCPU_PRESENT) + endif() + +-check_cxx_symbol_exists(getauxval auvx.h HAVE_AUXV_GETAUXVAL) ++check_cxx_symbol_exists(getauxval sys/auxv.h HAVE_AUXV_GETAUXVAL) + if(HAVE_AUXV_GETAUXVAL) + add_definitions(-DROCKSDB_AUXV_GETAUXVAL_PRESENT) + endif() +@@ -796,11 +795,13 @@ if(HAVE_SSE42 AND NOT MSVC) + PROPERTIES COMPILE_FLAGS "-msse4.2 -mpclmul") + endif() + +-if(CMAKE_SYSTEM_PROCESSOR MATCHES "^(powerpc|ppc)64") ++if(HAS_POWER_CRC32_FLAGS) + list(APPEND SOURCES +- util/crc32c_ppc.c +- util/crc32c_ppc_asm.S) +-endif(CMAKE_SYSTEM_PROCESSOR MATCHES "^(powerpc|ppc)64") ++ util/crc32c_ppc.cc) ++ set_source_files_properties( ++ util/crc32c_ppc.cc ++ PROPERTIES COMPILE_FLAGS "${POWER_CRC32_FLAGS}") ++endif() + + if(HAS_ARMV8_CRC) + list(APPEND SOURCES +diff --git a/Makefile b/Makefile +index a19d2ff964..7da8f71085 100644 +--- a/Makefile ++++ b/Makefile +@@ -144,16 +144,9 @@ OPT += -momit-leaf-frame-pointer + endif + endif + +-ifeq (,$(shell $(CXX) -fsyntax-only -maltivec -xc /dev/null 2>&1)) +-CXXFLAGS += -DHAS_ALTIVEC +-CFLAGS += -DHAS_ALTIVEC +-HAS_ALTIVEC=1 +-endif +- +-ifeq (,$(shell $(CXX) -fsyntax-only -mcpu=power8 -xc /dev/null 2>&1)) +-CXXFLAGS += -DHAVE_POWER8 +-CFLAGS += -DHAVE_POWER8 +-HAVE_POWER8=1 ++ifeq (,$(shell $(CXX) -fsyntax-only -mcrypto -mpower8-vector -maltivec -mvsx -xc /dev/null 2>&1)) ++POWER_CRC32_FLAGS=-mcrypto -mpower8-vector -maltivec -mvsx ++HAVE_POWER_CRC32_FLAGS=1 + endif + + ifeq (,$(shell $(CXX) -fsyntax-only -march=armv8-a+crc+crypto -xc /dev/null 2>&1)) +@@ -461,10 +454,6 @@ endif + + OBJ_DIR?=. + LIB_OBJECTS = $(patsubst %.cc, $(OBJ_DIR)/%.o, $(LIB_SOURCES)) +-ifeq ($(HAVE_POWER8),1) +-LIB_OBJECTS += $(patsubst %.c, $(OBJ_DIR)/%.o, $(LIB_SOURCES_C)) +-LIB_OBJECTS += $(patsubst %.S, $(OBJ_DIR)/%.o, $(LIB_SOURCES_ASM)) +-endif + + ifeq ($(USE_FOLLY_DISTRIBUTED_MUTEX),1) + LIB_OBJECTS += $(patsubst %.cpp, $(OBJ_DIR)/%.o, $(FOLLY_SOURCES)) +@@ -2254,13 +2242,12 @@ IOSVERSION=$(shell defaults read $(PLATFORMSROOT)/iPhoneOS.platform/version CFBu + lipo ios-x86/$@ ios-arm/$@ -create -output $@ + + else +-ifeq ($(HAVE_POWER8),1) +-$(OBJ_DIR)/util/crc32c_ppc.o: util/crc32c_ppc.c +- $(AM_V_CC)$(CC) $(CFLAGS) -c $< -o $@ ++ifeq ($(HAVE_POWER_CRC32_FLAGS),1) ++$(OBJ_DIR)/util/crc32c_ppc.o: util/crc32c_ppc.cc ++ $(AM_V_CC)$(CC) $(CFLAGS) $(POWER_CRC32_FLAGS) -c $< -o $@ + +-$(OBJ_DIR)/util/crc32c_ppc_asm.o: util/crc32c_ppc_asm.S +- $(AM_V_CC)$(CC) $(CFLAGS) -c $< -o $@ + endif ++ + $(OBJ_DIR)/%.o: %.cc + $(AM_V_CC)mkdir -p $(@D) && $(CXX) $(CXXFLAGS) -c $< -o $@ $(COVERAGEFLAGS) + +diff --git a/src.mk b/src.mk +index c4fec346e4..0f6a19a17c 100644 +--- a/src.mk ++++ b/src.mk +@@ -255,14 +255,9 @@ LIB_SOURCES +=\ + util/crc32c_arm64.cc + endif + +-ifeq (,$(shell $(CXX) -fsyntax-only -maltivec -xc /dev/null 2>&1)) +-LIB_SOURCES_ASM =\ +- util/crc32c_ppc_asm.S +-LIB_SOURCES_C = \ +- util/crc32c_ppc.c +-else +-LIB_SOURCES_ASM = +-LIB_SOURCES_C = ++ifeq ($(HAVE_POWER_CRC32_FLAGS),1) ++LIB_SOURCES += \ ++ util/crc32c_ppc.cc + endif + + TOOL_LIB_SOURCES = \ +diff --git a/util/crc32c.cc b/util/crc32c.cc +index a709e9b1ce..b24a4f0e0f 100644 +--- a/util/crc32c.cc ++++ b/util/crc32c.cc +@@ -20,15 +20,13 @@ + + #include "util/crc32c_arm64.h" + +-#ifdef __powerpc64__ +-#include "util/crc32c_ppc.h" +-#include "util/crc32c_ppc_constants.h" +- +-#if __linux__ + #ifdef ROCKSDB_AUXV_GETAUXVAL_PRESENT + #include + #endif + ++#ifdef __powerpc64__ ++extern uint32_t crc32c_ppc(uint32_t crc, unsigned char const* buffer, ++ unsigned long len); + #ifndef PPC_FEATURE2_VEC_CRYPTO + #define PPC_FEATURE2_VEC_CRYPTO 0x02000000 + #endif +@@ -37,19 +35,11 @@ + #define AT_HWCAP2 26 + #endif + +-#endif /* __linux__ */ +- + #endif + + namespace ROCKSDB_NAMESPACE { + namespace crc32c { + +-#if defined(HAVE_POWER8) && defined(HAS_ALTIVEC) +-#ifdef __powerpc64__ +-static int arch_ppc_crc32 = 0; +-#endif /* __powerpc64__ */ +-#endif +- + static const uint32_t table0_[256] = { + 0x00000000, 0xf26b8303, 0xe13b70f7, 0x1350f3f4, + 0xc79a971f, 0x35f1141c, 0x26a1e7e8, 0xd4ca64eb, +@@ -342,6 +332,7 @@ static inline void Slow_CRC32(uint64_t* l, uint8_t const **p) { + table0_[c >> 24]; + } + ++#if !defined(HAVE_ARM64_CRC) && !defined(__powerpc64__) + static inline void Fast_CRC32(uint64_t* l, uint8_t const **p) { + #ifndef HAVE_SSE42 + Slow_CRC32(l, p); +@@ -355,6 +346,7 @@ static inline void Fast_CRC32(uint64_t* l, uint8_t const **p) { + *p += 4; + #endif + } ++#endif + + template + uint32_t ExtendImpl(uint32_t crc, const char* buf, size_t size) { +@@ -400,10 +392,8 @@ uint32_t ExtendImpl(uint32_t crc, const char* buf, size_t size) { + return static_cast(l ^ 0xffffffffu); + } + +-// Detect if ARM64 CRC or not. +-#ifndef HAVE_ARM64_CRC ++#if !defined(HAVE_ARM64_CRC) && !defined(__powerpc64__) + // Detect if SS42 or not. +-#ifndef HAVE_POWER8 + + static bool isSSE42() { + #ifndef HAVE_SSE42 +@@ -439,36 +429,22 @@ static bool isPCLMULQDQ() { + #endif + } + +-#endif // HAVE_POWER8 +-#endif // HAVE_ARM64_CRC ++#endif // !__power64__ && !HAVE_ARM64_CRC + + typedef uint32_t (*Function)(uint32_t, const char*, size_t); + +-#if defined(HAVE_POWER8) && defined(HAS_ALTIVEC) ++#if defined(__powerpc64__) + uint32_t ExtendPPCImpl(uint32_t crc, const char *buf, size_t size) { + return crc32c_ppc(crc, (const unsigned char *)buf, size); + } + +-#if __linux__ +-static int arch_ppc_probe(void) { +- arch_ppc_crc32 = 0; +- +-#if defined(__powerpc64__) && defined(ROCKSDB_AUXV_GETAUXVAL_PRESENT) +- if (getauxval(AT_HWCAP2) & PPC_FEATURE2_VEC_CRYPTO) arch_ppc_crc32 = 1; +-#endif /* __powerpc64__ */ +- +- return arch_ppc_crc32; +-} +-#endif // __linux__ +- + static bool isAltiVec() { +- if (arch_ppc_probe()) { +- return true; +- } else { +- return false; +- } +-} ++#if defined(__linux__) && defined(ROCKSDB_AUXV_GETAUXVAL_PRESENT) ++ if (getauxval(AT_HWCAP2) & PPC_FEATURE2_VEC_CRYPTO) return true; + #endif ++ return false; ++} ++#endif // __power64__: + + #if defined(__linux__) && defined(HAVE_ARM64_CRC) + uint32_t ExtendARMImpl(uint32_t crc, const char *buf, size_t size) { +@@ -480,16 +456,9 @@ std::string IsFastCrc32Supported() { + bool has_fast_crc = false; + std::string fast_zero_msg; + std::string arch; +-#ifdef HAVE_POWER8 +-#ifdef HAS_ALTIVEC +- if (arch_ppc_probe()) { +- has_fast_crc = true; +- arch = "PPC"; +- } +-#else +- has_fast_crc = false; ++#ifdef __powerpc64__ ++ has_fast_crc = isAltiVec(); + arch = "PPC"; +-#endif + #elif defined(__linux__) && defined(HAVE_ARM64_CRC) + if (crc32c_runtime_check()) { + has_fast_crc = true; +@@ -1220,7 +1189,7 @@ uint32_t crc32c_3way(uint32_t crc, const char* buf, size_t len) { + #endif //HAVE_SSE42 && HAVE_PCLMUL + + static inline Function Choose_Extend() { +-#ifdef HAVE_POWER8 ++#ifdef __powerpc64__ + return isAltiVec() ? ExtendPPCImpl : ExtendImpl; + #elif defined(__linux__) && defined(HAVE_ARM64_CRC) + if(crc32c_runtime_check()) { +diff --git a/util/crc32c_ppc.c b/util/crc32c_ppc.c +deleted file mode 100644 +index 888a4943ea..0000000000 +--- a/util/crc32c_ppc.c ++++ /dev/null +@@ -1,94 +0,0 @@ +-// Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved. +-// Copyright (c) 2017 International Business Machines Corp. +-// All rights reserved. +-// This source code is licensed under both the GPLv2 (found in the +-// COPYING file in the root directory) and Apache 2.0 License +-// (found in the LICENSE.Apache file in the root directory). +- +-#define CRC_TABLE +-#include +-#include +-#include +-#include "util/crc32c_ppc_constants.h" +- +-#define VMX_ALIGN 16 +-#define VMX_ALIGN_MASK (VMX_ALIGN - 1) +- +-#ifdef REFLECT +-static unsigned int crc32_align(unsigned int crc, unsigned char const *p, +- unsigned long len) { +- while (len--) crc = crc_table[(crc ^ *p++) & 0xff] ^ (crc >> 8); +- return crc; +-} +-#endif +- +-#ifdef HAVE_POWER8 +-unsigned int __crc32_vpmsum(unsigned int crc, unsigned char const *p, +- unsigned long len); +- +-static uint32_t crc32_vpmsum(uint32_t crc, unsigned char const *data, +- unsigned len) { +- unsigned int prealign; +- unsigned int tail; +- +-#ifdef CRC_XOR +- crc ^= 0xffffffff; +-#endif +- +- if (len < VMX_ALIGN + VMX_ALIGN_MASK) { +- crc = crc32_align(crc, data, (unsigned long)len); +- goto out; +- } +- +- if ((unsigned long)data & VMX_ALIGN_MASK) { +- prealign = VMX_ALIGN - ((unsigned long)data & VMX_ALIGN_MASK); +- crc = crc32_align(crc, data, prealign); +- len -= prealign; +- data += prealign; +- } +- +- crc = __crc32_vpmsum(crc, data, (unsigned long)len & ~VMX_ALIGN_MASK); +- +- tail = len & VMX_ALIGN_MASK; +- if (tail) { +- data += len & ~VMX_ALIGN_MASK; +- crc = crc32_align(crc, data, tail); +- } +- +-out: +-#ifdef CRC_XOR +- crc ^= 0xffffffff; +-#endif +- +- return crc; +-} +- +-/* This wrapper function works around the fact that crc32_vpmsum +- * does not gracefully handle the case where the data pointer is NULL. There +- * may be room for performance improvement here. +- */ +-uint32_t crc32c_ppc(uint32_t crc, unsigned char const *data, unsigned len) { +- unsigned char *buf2; +- +- if (!data) { +- buf2 = (unsigned char *)malloc(len); +- bzero(buf2, len); +- crc = crc32_vpmsum(crc, buf2, len); +- free(buf2); +- } else { +- crc = crc32_vpmsum(crc, data, (unsigned long)len); +- } +- return crc; +-} +- +-#else /* HAVE_POWER8 */ +- +-/* This symbol has to exist on non-ppc architectures (and on legacy +- * ppc systems using power7 or below) in order to compile properly +- * there, even though it won't be called. +- */ +-uint32_t crc32c_ppc(uint32_t crc, unsigned char const *data, unsigned len) { +- return 0; +-} +- +-#endif /* HAVE_POWER8 */ +diff --git a/util/crc32c_ppc.cc b/util/crc32c_ppc.cc +new file mode 100644 +index 0000000000..44487eb80b +--- /dev/null ++++ b/util/crc32c_ppc.cc +@@ -0,0 +1,662 @@ ++/* ++ * Calculate the checksum of data that is 16 byte aligned and a multiple of ++ * 16 bytes. ++ * ++ * The first step is to reduce it to 1024 bits. We do this in 8 parallel ++ * chunks in order to mask the latency of the vpmsum instructions. If we ++ * have more than 32 kB of data to checksum we repeat this step multiple ++ * times, passing in the previous 1024 bits. ++ * ++ * The next step is to reduce the 1024 bits to 64 bits. This step adds ++ * 32 bits of 0s to the end - this matches what a CRC does. We just ++ * calculate constants that land the data in this 32 bits. ++ * ++ * We then use fixed point Barrett reduction to compute a mod n over GF(2) ++ * for n = CRC using POWER8 instructions. We use x = 32. ++ * ++ * http://en.wikipedia.org/wiki/Barrett_reduction ++ * ++ * This code uses gcc vector builtins instead using assembly directly. ++ * ++ * Copyright (C) 2017 Rogerio Alves , IBM ++ * ++ * This program is free software; you can redistribute it and/or ++ * modify it under the terms of either: ++ * ++ * a) the GNU General Public License as published by the Free Software ++ * Foundation; either version 2 of the License, or (at your option) ++ * any later version, or ++ * b) the Apache License, Version 2.0 ++ */ ++ ++#include ++ ++#define POWER8_INTRINSICS ++#define CRC_TABLE ++ ++#include "crc32c_ppc_constants.h" ++ ++#define VMX_ALIGN 16 ++#define VMX_ALIGN_MASK (VMX_ALIGN - 1) ++ ++#ifdef REFLECT ++static unsigned int crc32_align(unsigned int crc, const unsigned char *p, ++ unsigned long len) { ++ while (len--) crc = crc_table[(crc ^ *p++) & 0xff] ^ (crc >> 8); ++ return crc; ++} ++#else ++static unsigned int crc32_align(unsigned int crc, const unsigned char *p, ++ unsigned long len) { ++ while (len--) crc = crc_table[((crc >> 24) ^ *p++) & 0xff] ^ (crc << 8); ++ return crc; ++} ++#endif ++ ++static unsigned int __attribute__((aligned(32))) ++__crc32_vpmsum(unsigned int crc, const void *p, unsigned long len); ++ ++#ifndef CRC32_FUNCTION ++#define CRC32_FUNCTION crc32c_ppc ++#endif ++ ++unsigned int CRC32_FUNCTION(unsigned int crc, const unsigned char *p, ++ unsigned long len) { ++ unsigned int prealign; ++ unsigned int tail; ++ ++#ifdef CRC_XOR ++ crc ^= 0xffffffff; ++#endif ++ ++ if (len < VMX_ALIGN + VMX_ALIGN_MASK) { ++ crc = crc32_align(crc, p, len); ++ goto out; ++ } ++ ++ if ((unsigned long)p & VMX_ALIGN_MASK) { ++ prealign = VMX_ALIGN - ((unsigned long)p & VMX_ALIGN_MASK); ++ crc = crc32_align(crc, p, prealign); ++ len -= prealign; ++ p += prealign; ++ } ++ ++ crc = __crc32_vpmsum(crc, p, len & ~VMX_ALIGN_MASK); ++ ++ tail = len & VMX_ALIGN_MASK; ++ if (tail) { ++ p += len & ~VMX_ALIGN_MASK; ++ crc = crc32_align(crc, p, tail); ++ } ++ ++out: ++#ifdef CRC_XOR ++ crc ^= 0xffffffff; ++#endif ++ ++ return crc; ++} ++ ++#if defined(__clang__) ++#include "crc32c_ppc_clang_workaround.h" ++#else ++#define __builtin_pack_vector(a, b) __builtin_pack_vector_int128((a), (b)) ++#define __builtin_unpack_vector_0(a) \ ++ __builtin_unpack_vector_int128((vector __int128_t)(a), 0) ++#define __builtin_unpack_vector_1(a) \ ++ __builtin_unpack_vector_int128((vector __int128_t)(a), 1) ++#endif ++ ++/* When we have a load-store in a single-dispatch group and address overlap ++ * such that foward is not allowed (load-hit-store) the group must be flushed. ++ * A group ending NOP prevents the flush. ++ */ ++#define GROUP_ENDING_NOP asm("ori 2,2,0" ::: "memory") ++ ++#if defined(__BIG_ENDIAN__) && defined(REFLECT) ++#define BYTESWAP_DATA ++#elif defined(__LITTLE_ENDIAN__) && !defined(REFLECT) ++#define BYTESWAP_DATA ++#endif ++ ++#ifdef BYTESWAP_DATA ++#define VEC_PERM(vr, va, vb, vc) \ ++ vr = vec_perm(va, vb, (__vector unsigned char)vc) ++#if defined(__LITTLE_ENDIAN__) ++/* Byte reverse permute constant LE. */ ++static const __vector unsigned long long vperm_const ++ __attribute__((aligned(16))) = {0x08090A0B0C0D0E0FUL, 0x0001020304050607UL}; ++#else ++static const __vector unsigned long long vperm_const ++ __attribute__((aligned(16))) = {0x0F0E0D0C0B0A0908UL, 0X0706050403020100UL}; ++#endif ++#else ++#define VEC_PERM(vr, va, vb, vc) ++#endif ++ ++static unsigned int __attribute__((aligned(32))) ++__crc32_vpmsum(unsigned int crc, const void *p, unsigned long len) { ++ const __vector unsigned long long vzero = {0, 0}; ++ const __vector unsigned long long vones = {0xffffffffffffffffUL, ++ 0xffffffffffffffffUL}; ++ ++#ifdef REFLECT ++ const __vector unsigned long long vmask_32bit = ++ (__vector unsigned long long)vec_sld((__vector unsigned char)vzero, ++ (__vector unsigned char)vones, 4); ++#endif ++ ++ const __vector unsigned long long vmask_64bit = ++ (__vector unsigned long long)vec_sld((__vector unsigned char)vzero, ++ (__vector unsigned char)vones, 8); ++ ++ __vector unsigned long long vcrc; ++ ++ __vector unsigned long long vconst1, vconst2; ++ ++ /* vdata0-vdata7 will contain our data (p). */ ++ __vector unsigned long long vdata0, vdata1, vdata2, vdata3, vdata4, vdata5, ++ vdata6, vdata7; ++ ++ /* v0-v7 will contain our checksums */ ++ __vector unsigned long long v0 = {0, 0}; ++ __vector unsigned long long v1 = {0, 0}; ++ __vector unsigned long long v2 = {0, 0}; ++ __vector unsigned long long v3 = {0, 0}; ++ __vector unsigned long long v4 = {0, 0}; ++ __vector unsigned long long v5 = {0, 0}; ++ __vector unsigned long long v6 = {0, 0}; ++ __vector unsigned long long v7 = {0, 0}; ++ ++ /* Vector auxiliary variables. */ ++ __vector unsigned long long va0, va1, va2, va3, va4, va5, va6, va7; ++ ++ unsigned int result = 0; ++ unsigned int offset; /* Constant table offset. */ ++ ++ unsigned long i; /* Counter. */ ++ unsigned long chunks; ++ ++ unsigned long block_size; ++ int next_block = 0; ++ ++ /* Align by 128 bits. The last 128 bit block will be processed at end. */ ++ unsigned long length = len & 0xFFFFFFFFFFFFFF80UL; ++ ++#ifdef REFLECT ++ vcrc = (__vector unsigned long long)__builtin_pack_vector(0UL, crc); ++#else ++ vcrc = (__vector unsigned long long)__builtin_pack_vector(crc, 0UL); ++ ++ /* Shift into top 32 bits */ ++ vcrc = (__vector unsigned long long)vec_sld((__vector unsigned char)vcrc, ++ (__vector unsigned char)vzero, 4); ++#endif ++ ++ /* Short version. */ ++ if (len < 256) { ++ /* Calculate where in the constant table we need to start. */ ++ offset = 256 - len; ++ ++ vconst1 = vec_ld(offset, vcrc_short_const); ++ vdata0 = vec_ld(0, (__vector unsigned long long *)p); ++ VEC_PERM(vdata0, vdata0, vconst1, vperm_const); ++ ++ /* xor initial value*/ ++ vdata0 = vec_xor(vdata0, vcrc); ++ ++ vdata0 = (__vector unsigned long long)__builtin_crypto_vpmsumw( ++ (__vector unsigned int)vdata0, (__vector unsigned int)vconst1); ++ v0 = vec_xor(v0, vdata0); ++ ++ for (i = 16; i < len; i += 16) { ++ vconst1 = vec_ld(offset + i, vcrc_short_const); ++ vdata0 = vec_ld(i, (__vector unsigned long long *)p); ++ VEC_PERM(vdata0, vdata0, vconst1, vperm_const); ++ vdata0 = (__vector unsigned long long)__builtin_crypto_vpmsumw( ++ (__vector unsigned int)vdata0, (__vector unsigned int)vconst1); ++ v0 = vec_xor(v0, vdata0); ++ } ++ } else { ++ /* Load initial values. */ ++ vdata0 = vec_ld(0, (__vector unsigned long long *)p); ++ vdata1 = vec_ld(16, (__vector unsigned long long *)p); ++ ++ VEC_PERM(vdata0, vdata0, vdata0, vperm_const); ++ VEC_PERM(vdata1, vdata1, vdata1, vperm_const); ++ ++ vdata2 = vec_ld(32, (__vector unsigned long long *)p); ++ vdata3 = vec_ld(48, (__vector unsigned long long *)p); ++ ++ VEC_PERM(vdata2, vdata2, vdata2, vperm_const); ++ VEC_PERM(vdata3, vdata3, vdata3, vperm_const); ++ ++ vdata4 = vec_ld(64, (__vector unsigned long long *)p); ++ vdata5 = vec_ld(80, (__vector unsigned long long *)p); ++ ++ VEC_PERM(vdata4, vdata4, vdata4, vperm_const); ++ VEC_PERM(vdata5, vdata5, vdata5, vperm_const); ++ ++ vdata6 = vec_ld(96, (__vector unsigned long long *)p); ++ vdata7 = vec_ld(112, (__vector unsigned long long *)p); ++ ++ VEC_PERM(vdata6, vdata6, vdata6, vperm_const); ++ VEC_PERM(vdata7, vdata7, vdata7, vperm_const); ++ ++ /* xor in initial value */ ++ vdata0 = vec_xor(vdata0, vcrc); ++ ++ p = (char *)p + 128; ++ ++ do { ++ /* Checksum in blocks of MAX_SIZE. */ ++ block_size = length; ++ if (block_size > MAX_SIZE) { ++ block_size = MAX_SIZE; ++ } ++ ++ length = length - block_size; ++ ++ /* ++ * Work out the offset into the constants table to start at. Each ++ * constant is 16 bytes, and it is used against 128 bytes of input ++ * data - 128 / 16 = 8 ++ */ ++ offset = (MAX_SIZE / 8) - (block_size / 8); ++ /* We reduce our final 128 bytes in a separate step */ ++ chunks = (block_size / 128) - 1; ++ ++ vconst1 = vec_ld(offset, vcrc_const); ++ ++ va0 = __builtin_crypto_vpmsumd((__vector unsigned long long)vdata0, ++ (__vector unsigned long long)vconst1); ++ va1 = __builtin_crypto_vpmsumd((__vector unsigned long long)vdata1, ++ (__vector unsigned long long)vconst1); ++ va2 = __builtin_crypto_vpmsumd((__vector unsigned long long)vdata2, ++ (__vector unsigned long long)vconst1); ++ va3 = __builtin_crypto_vpmsumd((__vector unsigned long long)vdata3, ++ (__vector unsigned long long)vconst1); ++ va4 = __builtin_crypto_vpmsumd((__vector unsigned long long)vdata4, ++ (__vector unsigned long long)vconst1); ++ va5 = __builtin_crypto_vpmsumd((__vector unsigned long long)vdata5, ++ (__vector unsigned long long)vconst1); ++ va6 = __builtin_crypto_vpmsumd((__vector unsigned long long)vdata6, ++ (__vector unsigned long long)vconst1); ++ va7 = __builtin_crypto_vpmsumd((__vector unsigned long long)vdata7, ++ (__vector unsigned long long)vconst1); ++ ++ if (chunks > 1) { ++ offset += 16; ++ vconst2 = vec_ld(offset, vcrc_const); ++ GROUP_ENDING_NOP; ++ ++ vdata0 = vec_ld(0, (__vector unsigned long long *)p); ++ VEC_PERM(vdata0, vdata0, vdata0, vperm_const); ++ ++ vdata1 = vec_ld(16, (__vector unsigned long long *)p); ++ VEC_PERM(vdata1, vdata1, vdata1, vperm_const); ++ ++ vdata2 = vec_ld(32, (__vector unsigned long long *)p); ++ VEC_PERM(vdata2, vdata2, vdata2, vperm_const); ++ ++ vdata3 = vec_ld(48, (__vector unsigned long long *)p); ++ VEC_PERM(vdata3, vdata3, vdata3, vperm_const); ++ ++ vdata4 = vec_ld(64, (__vector unsigned long long *)p); ++ VEC_PERM(vdata4, vdata4, vdata4, vperm_const); ++ ++ vdata5 = vec_ld(80, (__vector unsigned long long *)p); ++ VEC_PERM(vdata5, vdata5, vdata5, vperm_const); ++ ++ vdata6 = vec_ld(96, (__vector unsigned long long *)p); ++ VEC_PERM(vdata6, vdata6, vdata6, vperm_const); ++ ++ vdata7 = vec_ld(112, (__vector unsigned long long *)p); ++ VEC_PERM(vdata7, vdata7, vdata7, vperm_const); ++ ++ p = (char *)p + 128; ++ ++ /* ++ * main loop. We modulo schedule it such that it takes three ++ * iterations to complete - first iteration load, second ++ * iteration vpmsum, third iteration xor. ++ */ ++ for (i = 0; i < chunks - 2; i++) { ++ vconst1 = vec_ld(offset, vcrc_const); ++ offset += 16; ++ GROUP_ENDING_NOP; ++ ++ v0 = vec_xor(v0, va0); ++ va0 = __builtin_crypto_vpmsumd((__vector unsigned long long)vdata0, ++ (__vector unsigned long long)vconst2); ++ vdata0 = vec_ld(0, (__vector unsigned long long *)p); ++ VEC_PERM(vdata0, vdata0, vdata0, vperm_const); ++ GROUP_ENDING_NOP; ++ ++ v1 = vec_xor(v1, va1); ++ va1 = __builtin_crypto_vpmsumd((__vector unsigned long long)vdata1, ++ (__vector unsigned long long)vconst2); ++ vdata1 = vec_ld(16, (__vector unsigned long long *)p); ++ VEC_PERM(vdata1, vdata1, vdata1, vperm_const); ++ GROUP_ENDING_NOP; ++ ++ v2 = vec_xor(v2, va2); ++ va2 = __builtin_crypto_vpmsumd((__vector unsigned long long)vdata2, ++ (__vector unsigned long long)vconst2); ++ vdata2 = vec_ld(32, (__vector unsigned long long *)p); ++ VEC_PERM(vdata2, vdata2, vdata2, vperm_const); ++ GROUP_ENDING_NOP; ++ ++ v3 = vec_xor(v3, va3); ++ va3 = __builtin_crypto_vpmsumd((__vector unsigned long long)vdata3, ++ (__vector unsigned long long)vconst2); ++ vdata3 = vec_ld(48, (__vector unsigned long long *)p); ++ VEC_PERM(vdata3, vdata3, vdata3, vperm_const); ++ ++ vconst2 = vec_ld(offset, vcrc_const); ++ GROUP_ENDING_NOP; ++ ++ v4 = vec_xor(v4, va4); ++ va4 = __builtin_crypto_vpmsumd((__vector unsigned long long)vdata4, ++ (__vector unsigned long long)vconst1); ++ vdata4 = vec_ld(64, (__vector unsigned long long *)p); ++ VEC_PERM(vdata4, vdata4, vdata4, vperm_const); ++ GROUP_ENDING_NOP; ++ ++ v5 = vec_xor(v5, va5); ++ va5 = __builtin_crypto_vpmsumd((__vector unsigned long long)vdata5, ++ (__vector unsigned long long)vconst1); ++ vdata5 = vec_ld(80, (__vector unsigned long long *)p); ++ VEC_PERM(vdata5, vdata5, vdata5, vperm_const); ++ GROUP_ENDING_NOP; ++ ++ v6 = vec_xor(v6, va6); ++ va6 = __builtin_crypto_vpmsumd((__vector unsigned long long)vdata6, ++ (__vector unsigned long long)vconst1); ++ vdata6 = vec_ld(96, (__vector unsigned long long *)p); ++ VEC_PERM(vdata6, vdata6, vdata6, vperm_const); ++ GROUP_ENDING_NOP; ++ ++ v7 = vec_xor(v7, va7); ++ va7 = __builtin_crypto_vpmsumd((__vector unsigned long long)vdata7, ++ (__vector unsigned long long)vconst1); ++ vdata7 = vec_ld(112, (__vector unsigned long long *)p); ++ VEC_PERM(vdata7, vdata7, vdata7, vperm_const); ++ ++ p = (char *)p + 128; ++ } ++ ++ /* First cool down*/ ++ vconst1 = vec_ld(offset, vcrc_const); ++ offset += 16; ++ ++ v0 = vec_xor(v0, va0); ++ va0 = __builtin_crypto_vpmsumd((__vector unsigned long long)vdata0, ++ (__vector unsigned long long)vconst1); ++ GROUP_ENDING_NOP; ++ ++ v1 = vec_xor(v1, va1); ++ va1 = __builtin_crypto_vpmsumd((__vector unsigned long long)vdata1, ++ (__vector unsigned long long)vconst1); ++ GROUP_ENDING_NOP; ++ ++ v2 = vec_xor(v2, va2); ++ va2 = __builtin_crypto_vpmsumd((__vector unsigned long long)vdata2, ++ (__vector unsigned long long)vconst1); ++ GROUP_ENDING_NOP; ++ ++ v3 = vec_xor(v3, va3); ++ va3 = __builtin_crypto_vpmsumd((__vector unsigned long long)vdata3, ++ (__vector unsigned long long)vconst1); ++ GROUP_ENDING_NOP; ++ ++ v4 = vec_xor(v4, va4); ++ va4 = __builtin_crypto_vpmsumd((__vector unsigned long long)vdata4, ++ (__vector unsigned long long)vconst1); ++ GROUP_ENDING_NOP; ++ ++ v5 = vec_xor(v5, va5); ++ va5 = __builtin_crypto_vpmsumd((__vector unsigned long long)vdata5, ++ (__vector unsigned long long)vconst1); ++ GROUP_ENDING_NOP; ++ ++ v6 = vec_xor(v6, va6); ++ va6 = __builtin_crypto_vpmsumd((__vector unsigned long long)vdata6, ++ (__vector unsigned long long)vconst1); ++ GROUP_ENDING_NOP; ++ ++ v7 = vec_xor(v7, va7); ++ va7 = __builtin_crypto_vpmsumd((__vector unsigned long long)vdata7, ++ (__vector unsigned long long)vconst1); ++ } /* else */ ++ ++ /* Second cool down. */ ++ v0 = vec_xor(v0, va0); ++ v1 = vec_xor(v1, va1); ++ v2 = vec_xor(v2, va2); ++ v3 = vec_xor(v3, va3); ++ v4 = vec_xor(v4, va4); ++ v5 = vec_xor(v5, va5); ++ v6 = vec_xor(v6, va6); ++ v7 = vec_xor(v7, va7); ++ ++#ifdef REFLECT ++ /* ++ * vpmsumd produces a 96 bit result in the least significant bits ++ * of the register. Since we are bit reflected we have to shift it ++ * left 32 bits so it occupies the least significant bits in the ++ * bit reflected domain. ++ */ ++ v0 = (__vector unsigned long long)vec_sld( ++ (__vector unsigned char)v0, (__vector unsigned char)vzero, 4); ++ v1 = (__vector unsigned long long)vec_sld( ++ (__vector unsigned char)v1, (__vector unsigned char)vzero, 4); ++ v2 = (__vector unsigned long long)vec_sld( ++ (__vector unsigned char)v2, (__vector unsigned char)vzero, 4); ++ v3 = (__vector unsigned long long)vec_sld( ++ (__vector unsigned char)v3, (__vector unsigned char)vzero, 4); ++ v4 = (__vector unsigned long long)vec_sld( ++ (__vector unsigned char)v4, (__vector unsigned char)vzero, 4); ++ v5 = (__vector unsigned long long)vec_sld( ++ (__vector unsigned char)v5, (__vector unsigned char)vzero, 4); ++ v6 = (__vector unsigned long long)vec_sld( ++ (__vector unsigned char)v6, (__vector unsigned char)vzero, 4); ++ v7 = (__vector unsigned long long)vec_sld( ++ (__vector unsigned char)v7, (__vector unsigned char)vzero, 4); ++#endif ++ ++ /* xor with the last 1024 bits. */ ++ va0 = vec_ld(0, (__vector unsigned long long *)p); ++ VEC_PERM(va0, va0, va0, vperm_const); ++ ++ va1 = vec_ld(16, (__vector unsigned long long *)p); ++ VEC_PERM(va1, va1, va1, vperm_const); ++ ++ va2 = vec_ld(32, (__vector unsigned long long *)p); ++ VEC_PERM(va2, va2, va2, vperm_const); ++ ++ va3 = vec_ld(48, (__vector unsigned long long *)p); ++ VEC_PERM(va3, va3, va3, vperm_const); ++ ++ va4 = vec_ld(64, (__vector unsigned long long *)p); ++ VEC_PERM(va4, va4, va4, vperm_const); ++ ++ va5 = vec_ld(80, (__vector unsigned long long *)p); ++ VEC_PERM(va5, va5, va5, vperm_const); ++ ++ va6 = vec_ld(96, (__vector unsigned long long *)p); ++ VEC_PERM(va6, va6, va6, vperm_const); ++ ++ va7 = vec_ld(112, (__vector unsigned long long *)p); ++ VEC_PERM(va7, va7, va7, vperm_const); ++ ++ p = (char *)p + 128; ++ ++ vdata0 = vec_xor(v0, va0); ++ vdata1 = vec_xor(v1, va1); ++ vdata2 = vec_xor(v2, va2); ++ vdata3 = vec_xor(v3, va3); ++ vdata4 = vec_xor(v4, va4); ++ vdata5 = vec_xor(v5, va5); ++ vdata6 = vec_xor(v6, va6); ++ vdata7 = vec_xor(v7, va7); ++ ++ /* Check if we have more blocks to process */ ++ next_block = 0; ++ if (length != 0) { ++ next_block = 1; ++ ++ /* zero v0-v7 */ ++ v0 = vec_xor(v0, v0); ++ v1 = vec_xor(v1, v1); ++ v2 = vec_xor(v2, v2); ++ v3 = vec_xor(v3, v3); ++ v4 = vec_xor(v4, v4); ++ v5 = vec_xor(v5, v5); ++ v6 = vec_xor(v6, v6); ++ v7 = vec_xor(v7, v7); ++ } ++ length = length + 128; ++ ++ } while (next_block); ++ ++ /* Calculate how many bytes we have left. */ ++ length = (len & 127); ++ ++ /* Calculate where in (short) constant table we need to start. */ ++ offset = 128 - length; ++ ++ v0 = vec_ld(offset, vcrc_short_const); ++ v1 = vec_ld(offset + 16, vcrc_short_const); ++ v2 = vec_ld(offset + 32, vcrc_short_const); ++ v3 = vec_ld(offset + 48, vcrc_short_const); ++ v4 = vec_ld(offset + 64, vcrc_short_const); ++ v5 = vec_ld(offset + 80, vcrc_short_const); ++ v6 = vec_ld(offset + 96, vcrc_short_const); ++ v7 = vec_ld(offset + 112, vcrc_short_const); ++ ++ offset += 128; ++ ++ v0 = (__vector unsigned long long)__builtin_crypto_vpmsumw( ++ (__vector unsigned int)vdata0, (__vector unsigned int)v0); ++ v1 = (__vector unsigned long long)__builtin_crypto_vpmsumw( ++ (__vector unsigned int)vdata1, (__vector unsigned int)v1); ++ v2 = (__vector unsigned long long)__builtin_crypto_vpmsumw( ++ (__vector unsigned int)vdata2, (__vector unsigned int)v2); ++ v3 = (__vector unsigned long long)__builtin_crypto_vpmsumw( ++ (__vector unsigned int)vdata3, (__vector unsigned int)v3); ++ v4 = (__vector unsigned long long)__builtin_crypto_vpmsumw( ++ (__vector unsigned int)vdata4, (__vector unsigned int)v4); ++ v5 = (__vector unsigned long long)__builtin_crypto_vpmsumw( ++ (__vector unsigned int)vdata5, (__vector unsigned int)v5); ++ v6 = (__vector unsigned long long)__builtin_crypto_vpmsumw( ++ (__vector unsigned int)vdata6, (__vector unsigned int)v6); ++ v7 = (__vector unsigned long long)__builtin_crypto_vpmsumw( ++ (__vector unsigned int)vdata7, (__vector unsigned int)v7); ++ ++ /* Now reduce the tail (0-112 bytes). */ ++ for (i = 0; i < length; i += 16) { ++ vdata0 = vec_ld(i, (__vector unsigned long long *)p); ++ VEC_PERM(vdata0, vdata0, vdata0, vperm_const); ++ va0 = vec_ld(offset + i, vcrc_short_const); ++ va0 = (__vector unsigned long long)__builtin_crypto_vpmsumw( ++ (__vector unsigned int)vdata0, (__vector unsigned int)va0); ++ v0 = vec_xor(v0, va0); ++ } ++ ++ /* xor all parallel chunks together. */ ++ v0 = vec_xor(v0, v1); ++ v2 = vec_xor(v2, v3); ++ v4 = vec_xor(v4, v5); ++ v6 = vec_xor(v6, v7); ++ ++ v0 = vec_xor(v0, v2); ++ v4 = vec_xor(v4, v6); ++ ++ v0 = vec_xor(v0, v4); ++ } ++ ++ /* Barrett Reduction */ ++ vconst1 = vec_ld(0, v_Barrett_const); ++ vconst2 = vec_ld(16, v_Barrett_const); ++ ++ v1 = (__vector unsigned long long)vec_sld((__vector unsigned char)v0, ++ (__vector unsigned char)v0, 8); ++ v0 = vec_xor(v1, v0); ++ ++#ifdef REFLECT ++ /* shift left one bit */ ++ __vector unsigned char vsht_splat = vec_splat_u8(1); ++ v0 = (__vector unsigned long long)vec_sll((__vector unsigned char)v0, ++ vsht_splat); ++#endif ++ ++ v0 = vec_and(v0, vmask_64bit); ++ ++#ifndef REFLECT ++ ++ /* ++ * Now for the actual algorithm. The idea is to calculate q, ++ * the multiple of our polynomial that we need to subtract. By ++ * doing the computation 2x bits higher (ie 64 bits) and shifting the ++ * result back down 2x bits, we round down to the nearest multiple. ++ */ ++ ++ /* ma */ ++ v1 = __builtin_crypto_vpmsumd((__vector unsigned long long)v0, ++ (__vector unsigned long long)vconst1); ++ /* q = floor(ma/(2^64)) */ ++ v1 = (__vector unsigned long long)vec_sld((__vector unsigned char)vzero, ++ (__vector unsigned char)v1, 8); ++ /* qn */ ++ v1 = __builtin_crypto_vpmsumd((__vector unsigned long long)v1, ++ (__vector unsigned long long)vconst2); ++ /* a - qn, subtraction is xor in GF(2) */ ++ v0 = vec_xor(v0, v1); ++ /* ++ * Get the result into r3. We need to shift it left 8 bytes: ++ * V0 [ 0 1 2 X ] ++ * V0 [ 0 X 2 3 ] ++ */ ++ result = __builtin_unpack_vector_1(v0); ++#else ++ ++ /* ++ * The reflected version of Barrett reduction. Instead of bit ++ * reflecting our data (which is expensive to do), we bit reflect our ++ * constants and our algorithm, which means the intermediate data in ++ * our vector registers goes from 0-63 instead of 63-0. We can reflect ++ * the algorithm because we don't carry in mod 2 arithmetic. ++ */ ++ ++ /* bottom 32 bits of a */ ++ v1 = vec_and(v0, vmask_32bit); ++ ++ /* ma */ ++ v1 = __builtin_crypto_vpmsumd((__vector unsigned long long)v1, ++ (__vector unsigned long long)vconst1); ++ ++ /* bottom 32bits of ma */ ++ v1 = vec_and(v1, vmask_32bit); ++ /* qn */ ++ v1 = __builtin_crypto_vpmsumd((__vector unsigned long long)v1, ++ (__vector unsigned long long)vconst2); ++ /* a - qn, subtraction is xor in GF(2) */ ++ v0 = vec_xor(v0, v1); ++ ++ /* ++ * Since we are bit reflected, the result (ie the low 32 bits) is in ++ * the high 32 bits. We just need to shift it left 4 bytes ++ * V0 [ 0 1 X 3 ] ++ * V0 [ 0 X 2 3 ] ++ */ ++ ++ /* shift result into top 64 bits of */ ++ v0 = (__vector unsigned long long)vec_sld((__vector unsigned char)v0, ++ (__vector unsigned char)vzero, 4); ++ ++ result = __builtin_unpack_vector_0(v0); ++#endif ++ ++ return result; ++} +diff --git a/util/crc32c_ppc.h b/util/crc32c_ppc.h +deleted file mode 100644 +index c359061c61..0000000000 +--- a/util/crc32c_ppc.h ++++ /dev/null +@@ -1,19 +0,0 @@ +-// Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved. +-// Copyright (c) 2017 International Business Machines Corp. +-// All rights reserved. +-// This source code is licensed under both the GPLv2 (found in the +-// COPYING file in the root directory) and Apache 2.0 License +-// (found in the LICENSE.Apache file in the root directory). +- +-#pragma once +- +-#ifdef __cplusplus +-extern "C" { +-#endif +- +-extern uint32_t crc32c_ppc(uint32_t crc, unsigned char const *buffer, +- unsigned len); +- +-#ifdef __cplusplus +-} +-#endif +diff --git a/util/crc32c_ppc_asm.S b/util/crc32c_ppc_asm.S +deleted file mode 100644 +index a317bf96b8..0000000000 +--- a/util/crc32c_ppc_asm.S ++++ /dev/null +@@ -1,752 +0,0 @@ +-// Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved. +-// Copyright (c) 2015 Anton Blanchard , IBM +-// Copyright (c) 2017 International Business Machines Corp. +-// All rights reserved. +-// This source code is licensed under both the GPLv2 (found in the +-// COPYING file in the root directory) and Apache 2.0 License +-// (found in the LICENSE.Apache file in the root directory). +- +-#include +-#include "ppc-opcode.h" +- +-#undef toc +- +-#ifndef r1 +-#define r1 1 +-#endif +- +-#ifndef r2 +-#define r2 2 +-#endif +- +- .section .rodata +-.balign 16 +- +-.byteswap_constant: +- /* byte reverse permute constant */ +- .octa 0x0F0E0D0C0B0A09080706050403020100 +- +-#define __ASSEMBLY__ +-#include "crc32c_ppc_constants.h" +- +- .text +- +-#if defined(__BIG_ENDIAN__) && defined(REFLECT) +-#define BYTESWAP_DATA +-#elif defined(__LITTLE_ENDIAN__) && !defined(REFLECT) +-#define BYTESWAP_DATA +-#else +-#undef BYTESWAP_DATA +-#endif +- +-#define off16 r25 +-#define off32 r26 +-#define off48 r27 +-#define off64 r28 +-#define off80 r29 +-#define off96 r30 +-#define off112 r31 +- +-#define const1 v24 +-#define const2 v25 +- +-#define byteswap v26 +-#define mask_32bit v27 +-#define mask_64bit v28 +-#define zeroes v29 +- +-#ifdef BYTESWAP_DATA +-#define VPERM(A, B, C, D) vperm A, B, C, D +-#else +-#define VPERM(A, B, C, D) +-#endif +- +-/* unsigned int __crc32_vpmsum(unsigned int crc, void *p, unsigned long len) */ +-FUNC_START(__crc32_vpmsum) +- std r31,-8(r1) +- std r30,-16(r1) +- std r29,-24(r1) +- std r28,-32(r1) +- std r27,-40(r1) +- std r26,-48(r1) +- std r25,-56(r1) +- +- li off16,16 +- li off32,32 +- li off48,48 +- li off64,64 +- li off80,80 +- li off96,96 +- li off112,112 +- li r0,0 +- +- /* Enough room for saving 10 non volatile VMX registers */ +- subi r6,r1,56+10*16 +- subi r7,r1,56+2*16 +- +- stvx v20,0,r6 +- stvx v21,off16,r6 +- stvx v22,off32,r6 +- stvx v23,off48,r6 +- stvx v24,off64,r6 +- stvx v25,off80,r6 +- stvx v26,off96,r6 +- stvx v27,off112,r6 +- stvx v28,0,r7 +- stvx v29,off16,r7 +- +- mr r10,r3 +- +- vxor zeroes,zeroes,zeroes +- vspltisw v0,-1 +- +- vsldoi mask_32bit,zeroes,v0,4 +- vsldoi mask_64bit,zeroes,v0,8 +- +- /* Get the initial value into v8 */ +- vxor v8,v8,v8 +- MTVRD(v8, r3) +-#ifdef REFLECT +- vsldoi v8,zeroes,v8,8 /* shift into bottom 32 bits */ +-#else +- vsldoi v8,v8,zeroes,4 /* shift into top 32 bits */ +-#endif +- +-#ifdef BYTESWAP_DATA +- addis r3,r2,.byteswap_constant@toc@ha +- addi r3,r3,.byteswap_constant@toc@l +- +- lvx byteswap,0,r3 +- addi r3,r3,16 +-#endif +- +- cmpdi r5,256 +- blt .Lshort +- +- rldicr r6,r5,0,56 +- +- /* Checksum in blocks of MAX_SIZE */ +-1: lis r7,MAX_SIZE@h +- ori r7,r7,MAX_SIZE@l +- mr r9,r7 +- cmpd r6,r7 +- bgt 2f +- mr r7,r6 +-2: subf r6,r7,r6 +- +- /* our main loop does 128 bytes at a time */ +- srdi r7,r7,7 +- +- /* +- * Work out the offset into the constants table to start at. Each +- * constant is 16 bytes, and it is used against 128 bytes of input +- * data - 128 / 16 = 8 +- */ +- sldi r8,r7,4 +- srdi r9,r9,3 +- subf r8,r8,r9 +- +- /* We reduce our final 128 bytes in a separate step */ +- addi r7,r7,-1 +- mtctr r7 +- +- addis r3,r2,.constants@toc@ha +- addi r3,r3,.constants@toc@l +- +- /* Find the start of our constants */ +- add r3,r3,r8 +- +- /* zero v0-v7 which will contain our checksums */ +- vxor v0,v0,v0 +- vxor v1,v1,v1 +- vxor v2,v2,v2 +- vxor v3,v3,v3 +- vxor v4,v4,v4 +- vxor v5,v5,v5 +- vxor v6,v6,v6 +- vxor v7,v7,v7 +- +- lvx const1,0,r3 +- +- /* +- * If we are looping back to consume more data we use the values +- * already in v16-v23. +- */ +- cmpdi r0,1 +- beq 2f +- +- /* First warm up pass */ +- lvx v16,0,r4 +- lvx v17,off16,r4 +- VPERM(v16,v16,v16,byteswap) +- VPERM(v17,v17,v17,byteswap) +- lvx v18,off32,r4 +- lvx v19,off48,r4 +- VPERM(v18,v18,v18,byteswap) +- VPERM(v19,v19,v19,byteswap) +- lvx v20,off64,r4 +- lvx v21,off80,r4 +- VPERM(v20,v20,v20,byteswap) +- VPERM(v21,v21,v21,byteswap) +- lvx v22,off96,r4 +- lvx v23,off112,r4 +- VPERM(v22,v22,v22,byteswap) +- VPERM(v23,v23,v23,byteswap) +- addi r4,r4,8*16 +- +- /* xor in initial value */ +- vxor v16,v16,v8 +- +-2: bdz .Lfirst_warm_up_done +- +- addi r3,r3,16 +- lvx const2,0,r3 +- +- /* Second warm up pass */ +- VPMSUMD(v8,v16,const1) +- lvx v16,0,r4 +- VPERM(v16,v16,v16,byteswap) +- ori r2,r2,0 +- +- VPMSUMD(v9,v17,const1) +- lvx v17,off16,r4 +- VPERM(v17,v17,v17,byteswap) +- ori r2,r2,0 +- +- VPMSUMD(v10,v18,const1) +- lvx v18,off32,r4 +- VPERM(v18,v18,v18,byteswap) +- ori r2,r2,0 +- +- VPMSUMD(v11,v19,const1) +- lvx v19,off48,r4 +- VPERM(v19,v19,v19,byteswap) +- ori r2,r2,0 +- +- VPMSUMD(v12,v20,const1) +- lvx v20,off64,r4 +- VPERM(v20,v20,v20,byteswap) +- ori r2,r2,0 +- +- VPMSUMD(v13,v21,const1) +- lvx v21,off80,r4 +- VPERM(v21,v21,v21,byteswap) +- ori r2,r2,0 +- +- VPMSUMD(v14,v22,const1) +- lvx v22,off96,r4 +- VPERM(v22,v22,v22,byteswap) +- ori r2,r2,0 +- +- VPMSUMD(v15,v23,const1) +- lvx v23,off112,r4 +- VPERM(v23,v23,v23,byteswap) +- +- addi r4,r4,8*16 +- +- bdz .Lfirst_cool_down +- +- /* +- * main loop. We modulo schedule it such that it takes three iterations +- * to complete - first iteration load, second iteration vpmsum, third +- * iteration xor. +- */ +- .balign 16 +-4: lvx const1,0,r3 +- addi r3,r3,16 +- ori r2,r2,0 +- +- vxor v0,v0,v8 +- VPMSUMD(v8,v16,const2) +- lvx v16,0,r4 +- VPERM(v16,v16,v16,byteswap) +- ori r2,r2,0 +- +- vxor v1,v1,v9 +- VPMSUMD(v9,v17,const2) +- lvx v17,off16,r4 +- VPERM(v17,v17,v17,byteswap) +- ori r2,r2,0 +- +- vxor v2,v2,v10 +- VPMSUMD(v10,v18,const2) +- lvx v18,off32,r4 +- VPERM(v18,v18,v18,byteswap) +- ori r2,r2,0 +- +- vxor v3,v3,v11 +- VPMSUMD(v11,v19,const2) +- lvx v19,off48,r4 +- VPERM(v19,v19,v19,byteswap) +- lvx const2,0,r3 +- ori r2,r2,0 +- +- vxor v4,v4,v12 +- VPMSUMD(v12,v20,const1) +- lvx v20,off64,r4 +- VPERM(v20,v20,v20,byteswap) +- ori r2,r2,0 +- +- vxor v5,v5,v13 +- VPMSUMD(v13,v21,const1) +- lvx v21,off80,r4 +- VPERM(v21,v21,v21,byteswap) +- ori r2,r2,0 +- +- vxor v6,v6,v14 +- VPMSUMD(v14,v22,const1) +- lvx v22,off96,r4 +- VPERM(v22,v22,v22,byteswap) +- ori r2,r2,0 +- +- vxor v7,v7,v15 +- VPMSUMD(v15,v23,const1) +- lvx v23,off112,r4 +- VPERM(v23,v23,v23,byteswap) +- +- addi r4,r4,8*16 +- +- bdnz 4b +- +-.Lfirst_cool_down: +- /* First cool down pass */ +- lvx const1,0,r3 +- addi r3,r3,16 +- +- vxor v0,v0,v8 +- VPMSUMD(v8,v16,const1) +- ori r2,r2,0 +- +- vxor v1,v1,v9 +- VPMSUMD(v9,v17,const1) +- ori r2,r2,0 +- +- vxor v2,v2,v10 +- VPMSUMD(v10,v18,const1) +- ori r2,r2,0 +- +- vxor v3,v3,v11 +- VPMSUMD(v11,v19,const1) +- ori r2,r2,0 +- +- vxor v4,v4,v12 +- VPMSUMD(v12,v20,const1) +- ori r2,r2,0 +- +- vxor v5,v5,v13 +- VPMSUMD(v13,v21,const1) +- ori r2,r2,0 +- +- vxor v6,v6,v14 +- VPMSUMD(v14,v22,const1) +- ori r2,r2,0 +- +- vxor v7,v7,v15 +- VPMSUMD(v15,v23,const1) +- ori r2,r2,0 +- +-.Lsecond_cool_down: +- /* Second cool down pass */ +- vxor v0,v0,v8 +- vxor v1,v1,v9 +- vxor v2,v2,v10 +- vxor v3,v3,v11 +- vxor v4,v4,v12 +- vxor v5,v5,v13 +- vxor v6,v6,v14 +- vxor v7,v7,v15 +- +-#ifdef REFLECT +- /* +- * vpmsumd produces a 96 bit result in the least significant bits +- * of the register. Since we are bit reflected we have to shift it +- * left 32 bits so it occupies the least significant bits in the +- * bit reflected domain. +- */ +- vsldoi v0,v0,zeroes,4 +- vsldoi v1,v1,zeroes,4 +- vsldoi v2,v2,zeroes,4 +- vsldoi v3,v3,zeroes,4 +- vsldoi v4,v4,zeroes,4 +- vsldoi v5,v5,zeroes,4 +- vsldoi v6,v6,zeroes,4 +- vsldoi v7,v7,zeroes,4 +-#endif +- +- /* xor with last 1024 bits */ +- lvx v8,0,r4 +- lvx v9,off16,r4 +- VPERM(v8,v8,v8,byteswap) +- VPERM(v9,v9,v9,byteswap) +- lvx v10,off32,r4 +- lvx v11,off48,r4 +- VPERM(v10,v10,v10,byteswap) +- VPERM(v11,v11,v11,byteswap) +- lvx v12,off64,r4 +- lvx v13,off80,r4 +- VPERM(v12,v12,v12,byteswap) +- VPERM(v13,v13,v13,byteswap) +- lvx v14,off96,r4 +- lvx v15,off112,r4 +- VPERM(v14,v14,v14,byteswap) +- VPERM(v15,v15,v15,byteswap) +- +- addi r4,r4,8*16 +- +- vxor v16,v0,v8 +- vxor v17,v1,v9 +- vxor v18,v2,v10 +- vxor v19,v3,v11 +- vxor v20,v4,v12 +- vxor v21,v5,v13 +- vxor v22,v6,v14 +- vxor v23,v7,v15 +- +- li r0,1 +- cmpdi r6,0 +- addi r6,r6,128 +- bne 1b +- +- /* Work out how many bytes we have left */ +- andi. r5,r5,127 +- +- /* Calculate where in the constant table we need to start */ +- subfic r6,r5,128 +- add r3,r3,r6 +- +- /* How many 16 byte chunks are in the tail */ +- srdi r7,r5,4 +- mtctr r7 +- +- /* +- * Reduce the previously calculated 1024 bits to 64 bits, shifting +- * 32 bits to include the trailing 32 bits of zeros +- */ +- lvx v0,0,r3 +- lvx v1,off16,r3 +- lvx v2,off32,r3 +- lvx v3,off48,r3 +- lvx v4,off64,r3 +- lvx v5,off80,r3 +- lvx v6,off96,r3 +- lvx v7,off112,r3 +- addi r3,r3,8*16 +- +- VPMSUMW(v0,v16,v0) +- VPMSUMW(v1,v17,v1) +- VPMSUMW(v2,v18,v2) +- VPMSUMW(v3,v19,v3) +- VPMSUMW(v4,v20,v4) +- VPMSUMW(v5,v21,v5) +- VPMSUMW(v6,v22,v6) +- VPMSUMW(v7,v23,v7) +- +- /* Now reduce the tail (0 - 112 bytes) */ +- cmpdi r7,0 +- beq 1f +- +- lvx v16,0,r4 +- lvx v17,0,r3 +- VPERM(v16,v16,v16,byteswap) +- VPMSUMW(v16,v16,v17) +- vxor v0,v0,v16 +- bdz 1f +- +- lvx v16,off16,r4 +- lvx v17,off16,r3 +- VPERM(v16,v16,v16,byteswap) +- VPMSUMW(v16,v16,v17) +- vxor v0,v0,v16 +- bdz 1f +- +- lvx v16,off32,r4 +- lvx v17,off32,r3 +- VPERM(v16,v16,v16,byteswap) +- VPMSUMW(v16,v16,v17) +- vxor v0,v0,v16 +- bdz 1f +- +- lvx v16,off48,r4 +- lvx v17,off48,r3 +- VPERM(v16,v16,v16,byteswap) +- VPMSUMW(v16,v16,v17) +- vxor v0,v0,v16 +- bdz 1f +- +- lvx v16,off64,r4 +- lvx v17,off64,r3 +- VPERM(v16,v16,v16,byteswap) +- VPMSUMW(v16,v16,v17) +- vxor v0,v0,v16 +- bdz 1f +- +- lvx v16,off80,r4 +- lvx v17,off80,r3 +- VPERM(v16,v16,v16,byteswap) +- VPMSUMW(v16,v16,v17) +- vxor v0,v0,v16 +- bdz 1f +- +- lvx v16,off96,r4 +- lvx v17,off96,r3 +- VPERM(v16,v16,v16,byteswap) +- VPMSUMW(v16,v16,v17) +- vxor v0,v0,v16 +- +- /* Now xor all the parallel chunks together */ +-1: vxor v0,v0,v1 +- vxor v2,v2,v3 +- vxor v4,v4,v5 +- vxor v6,v6,v7 +- +- vxor v0,v0,v2 +- vxor v4,v4,v6 +- +- vxor v0,v0,v4 +- +-.Lbarrett_reduction: +- /* Barrett constants */ +- addis r3,r2,.barrett_constants@toc@ha +- addi r3,r3,.barrett_constants@toc@l +- +- lvx const1,0,r3 +- lvx const2,off16,r3 +- +- vsldoi v1,v0,v0,8 +- vxor v0,v0,v1 /* xor two 64 bit results together */ +- +-#ifdef REFLECT +- /* shift left one bit */ +- vspltisb v1,1 +- vsl v0,v0,v1 +-#endif +- +- vand v0,v0,mask_64bit +- +-#ifndef REFLECT +- /* +- * Now for the Barrett reduction algorithm. The idea is to calculate q, +- * the multiple of our polynomial that we need to subtract. By +- * doing the computation 2x bits higher (ie 64 bits) and shifting the +- * result back down 2x bits, we round down to the nearest multiple. +- */ +- VPMSUMD(v1,v0,const1) /* ma */ +- vsldoi v1,zeroes,v1,8 /* q = floor(ma/(2^64)) */ +- VPMSUMD(v1,v1,const2) /* qn */ +- vxor v0,v0,v1 /* a - qn, subtraction is xor in GF(2) */ +- +- /* +- * Get the result into r3. We need to shift it left 8 bytes: +- * V0 [ 0 1 2 X ] +- * V0 [ 0 X 2 3 ] +- */ +- vsldoi v0,v0,zeroes,8 /* shift result into top 64 bits */ +-#else +- /* +- * The reflected version of Barrett reduction. Instead of bit +- * reflecting our data (which is expensive to do), we bit reflect our +- * constants and our algorithm, which means the intermediate data in +- * our vector registers goes from 0-63 instead of 63-0. We can reflect +- * the algorithm because we don't carry in mod 2 arithmetic. +- */ +- vand v1,v0,mask_32bit /* bottom 32 bits of a */ +- VPMSUMD(v1,v1,const1) /* ma */ +- vand v1,v1,mask_32bit /* bottom 32bits of ma */ +- VPMSUMD(v1,v1,const2) /* qn */ +- vxor v0,v0,v1 /* a - qn, subtraction is xor in GF(2) */ +- +- /* +- * Since we are bit reflected, the result (ie the low 32 bits) is in +- * the high 32 bits. We just need to shift it left 4 bytes +- * V0 [ 0 1 X 3 ] +- * V0 [ 0 X 2 3 ] +- */ +- vsldoi v0,v0,zeroes,4 /* shift result into top 64 bits of */ +-#endif +- +- /* Get it into r3 */ +- MFVRD(r3, v0) +- +-.Lout: +- subi r6,r1,56+10*16 +- subi r7,r1,56+2*16 +- +- lvx v20,0,r6 +- lvx v21,off16,r6 +- lvx v22,off32,r6 +- lvx v23,off48,r6 +- lvx v24,off64,r6 +- lvx v25,off80,r6 +- lvx v26,off96,r6 +- lvx v27,off112,r6 +- lvx v28,0,r7 +- lvx v29,off16,r7 +- +- ld r31,-8(r1) +- ld r30,-16(r1) +- ld r29,-24(r1) +- ld r28,-32(r1) +- ld r27,-40(r1) +- ld r26,-48(r1) +- ld r25,-56(r1) +- +- blr +- +-.Lfirst_warm_up_done: +- lvx const1,0,r3 +- addi r3,r3,16 +- +- VPMSUMD(v8,v16,const1) +- VPMSUMD(v9,v17,const1) +- VPMSUMD(v10,v18,const1) +- VPMSUMD(v11,v19,const1) +- VPMSUMD(v12,v20,const1) +- VPMSUMD(v13,v21,const1) +- VPMSUMD(v14,v22,const1) +- VPMSUMD(v15,v23,const1) +- +- b .Lsecond_cool_down +- +-.Lshort: +- cmpdi r5,0 +- beq .Lzero +- +- addis r3,r2,.short_constants@toc@ha +- addi r3,r3,.short_constants@toc@l +- +- /* Calculate where in the constant table we need to start */ +- subfic r6,r5,256 +- add r3,r3,r6 +- +- /* How many 16 byte chunks? */ +- srdi r7,r5,4 +- mtctr r7 +- +- vxor v19,v19,v19 +- vxor v20,v20,v20 +- +- lvx v0,0,r4 +- lvx v16,0,r3 +- VPERM(v0,v0,v16,byteswap) +- vxor v0,v0,v8 /* xor in initial value */ +- VPMSUMW(v0,v0,v16) +- bdz .Lv0 +- +- lvx v1,off16,r4 +- lvx v17,off16,r3 +- VPERM(v1,v1,v17,byteswap) +- VPMSUMW(v1,v1,v17) +- bdz .Lv1 +- +- lvx v2,off32,r4 +- lvx v16,off32,r3 +- VPERM(v2,v2,v16,byteswap) +- VPMSUMW(v2,v2,v16) +- bdz .Lv2 +- +- lvx v3,off48,r4 +- lvx v17,off48,r3 +- VPERM(v3,v3,v17,byteswap) +- VPMSUMW(v3,v3,v17) +- bdz .Lv3 +- +- lvx v4,off64,r4 +- lvx v16,off64,r3 +- VPERM(v4,v4,v16,byteswap) +- VPMSUMW(v4,v4,v16) +- bdz .Lv4 +- +- lvx v5,off80,r4 +- lvx v17,off80,r3 +- VPERM(v5,v5,v17,byteswap) +- VPMSUMW(v5,v5,v17) +- bdz .Lv5 +- +- lvx v6,off96,r4 +- lvx v16,off96,r3 +- VPERM(v6,v6,v16,byteswap) +- VPMSUMW(v6,v6,v16) +- bdz .Lv6 +- +- lvx v7,off112,r4 +- lvx v17,off112,r3 +- VPERM(v7,v7,v17,byteswap) +- VPMSUMW(v7,v7,v17) +- bdz .Lv7 +- +- addi r3,r3,128 +- addi r4,r4,128 +- +- lvx v8,0,r4 +- lvx v16,0,r3 +- VPERM(v8,v8,v16,byteswap) +- VPMSUMW(v8,v8,v16) +- bdz .Lv8 +- +- lvx v9,off16,r4 +- lvx v17,off16,r3 +- VPERM(v9,v9,v17,byteswap) +- VPMSUMW(v9,v9,v17) +- bdz .Lv9 +- +- lvx v10,off32,r4 +- lvx v16,off32,r3 +- VPERM(v10,v10,v16,byteswap) +- VPMSUMW(v10,v10,v16) +- bdz .Lv10 +- +- lvx v11,off48,r4 +- lvx v17,off48,r3 +- VPERM(v11,v11,v17,byteswap) +- VPMSUMW(v11,v11,v17) +- bdz .Lv11 +- +- lvx v12,off64,r4 +- lvx v16,off64,r3 +- VPERM(v12,v12,v16,byteswap) +- VPMSUMW(v12,v12,v16) +- bdz .Lv12 +- +- lvx v13,off80,r4 +- lvx v17,off80,r3 +- VPERM(v13,v13,v17,byteswap) +- VPMSUMW(v13,v13,v17) +- bdz .Lv13 +- +- lvx v14,off96,r4 +- lvx v16,off96,r3 +- VPERM(v14,v14,v16,byteswap) +- VPMSUMW(v14,v14,v16) +- bdz .Lv14 +- +- lvx v15,off112,r4 +- lvx v17,off112,r3 +- VPERM(v15,v15,v17,byteswap) +- VPMSUMW(v15,v15,v17) +- +-.Lv15: vxor v19,v19,v15 +-.Lv14: vxor v20,v20,v14 +-.Lv13: vxor v19,v19,v13 +-.Lv12: vxor v20,v20,v12 +-.Lv11: vxor v19,v19,v11 +-.Lv10: vxor v20,v20,v10 +-.Lv9: vxor v19,v19,v9 +-.Lv8: vxor v20,v20,v8 +-.Lv7: vxor v19,v19,v7 +-.Lv6: vxor v20,v20,v6 +-.Lv5: vxor v19,v19,v5 +-.Lv4: vxor v20,v20,v4 +-.Lv3: vxor v19,v19,v3 +-.Lv2: vxor v20,v20,v2 +-.Lv1: vxor v19,v19,v1 +-.Lv0: vxor v20,v20,v0 +- +- vxor v0,v19,v20 +- +- b .Lbarrett_reduction +- +-.Lzero: +- mr r3,r10 +- b .Lout +- +-FUNC_END(__crc32_vpmsum) +diff --git a/util/crc32c_ppc_clang_workaround.h b/util/crc32c_ppc_clang_workaround.h +new file mode 100644 +index 0000000000..110cb31782 +--- /dev/null ++++ b/util/crc32c_ppc_clang_workaround.h +@@ -0,0 +1,85 @@ ++// Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved. ++// Copyright (C) 2015, 2017 International Business Machines Corp. ++// All rights reserved. ++// This source code is licensed under both the GPLv2 (found in the ++// COPYING file in the root directory) and Apache 2.0 License ++// (found in the LICENSE.Apache file in the root directory). ++#ifndef CLANG_WORKAROUND_H ++#define CLANG_WORKAROUND_H ++ ++/* ++ * These stubs fix clang incompatibilities with GCC builtins. ++ */ ++ ++#ifndef __builtin_crypto_vpmsumw ++#define __builtin_crypto_vpmsumw __builtin_crypto_vpmsumb ++#endif ++#ifndef __builtin_crypto_vpmsumd ++#define __builtin_crypto_vpmsumd __builtin_crypto_vpmsumb ++#endif ++ ++static inline __vector unsigned long long __attribute__((overloadable)) ++vec_ld(int __a, const __vector unsigned long long* __b) { ++ return (__vector unsigned long long)__builtin_altivec_lvx(__a, __b); ++} ++ ++/* ++ * GCC __builtin_pack_vector_int128 returns a vector __int128_t but Clang ++ * does not recognize this type. On GCC this builtin is translated to a ++ * xxpermdi instruction that only moves the registers __a, __b instead generates ++ * a load. ++ * ++ * Clang has vec_xxpermdi intrinsics. It was implemented in 4.0.0. ++ */ ++static inline __vector unsigned long long __builtin_pack_vector( ++ unsigned long __a, unsigned long __b) { ++#if defined(__BIG_ENDIAN__) ++ __vector unsigned long long __v = {__a, __b}; ++#else ++ __vector unsigned long long __v = {__b, __a}; ++#endif ++ return __v; ++} ++ ++/* ++ * Clang 7 changed the behavior of vec_xxpermdi in order to provide the same ++ * behavior of GCC. That means code adapted to Clang >= 7 does not work on ++ * Clang <= 6. So, fallback to __builtin_unpack_vector() on Clang <= 6. ++ */ ++#if !defined vec_xxpermdi || __clang_major__ <= 6 ++ ++static inline unsigned long __builtin_unpack_vector( ++ __vector unsigned long long __v, int __o) { ++ return __v[__o]; ++} ++ ++#if defined(__BIG_ENDIAN__) ++#define __builtin_unpack_vector_0(a) __builtin_unpack_vector((a), 0) ++#define __builtin_unpack_vector_1(a) __builtin_unpack_vector((a), 1) ++#else ++#define __builtin_unpack_vector_0(a) __builtin_unpack_vector((a), 1) ++#define __builtin_unpack_vector_1(a) __builtin_unpack_vector((a), 0) ++#endif ++ ++#else ++ ++static inline unsigned long __builtin_unpack_vector_0( ++ __vector unsigned long long __v) { ++#if defined(__BIG_ENDIAN__) ++ return vec_xxpermdi(__v, __v, 0x0)[0]; ++#else ++ return vec_xxpermdi(__v, __v, 0x3)[0]; ++#endif ++} ++ ++static inline unsigned long __builtin_unpack_vector_1( ++ __vector unsigned long long __v) { ++#if defined(__BIG_ENDIAN__) ++ return vec_xxpermdi(__v, __v, 0x3)[0]; ++#else ++ return vec_xxpermdi(__v, __v, 0x0)[0]; ++#endif ++} ++#endif /* vec_xxpermdi */ ++ ++#endif +diff --git a/util/crc32c_ppc_constants.h b/util/crc32c_ppc_constants.h +index f6494cd01c..14df7ccda5 100644 +--- a/util/crc32c_ppc_constants.h ++++ b/util/crc32c_ppc_constants.h +@@ -5,13 +5,21 @@ + // COPYING file in the root directory) and Apache 2.0 License + // (found in the LICENSE.Apache file in the root directory). + +-#pragma once ++/* ++* ++* THIS FILE IS GENERATED WITH ++./crc32_constants -r -x 0x1edc6f41 ++ ++* This is from https://github.com/antonblanchard/crc32-vpmsum/ ++* DO NOT MODIFY IT MANUALLY! ++* ++*/ + + #define CRC 0x1edc6f41 +-#define REFLECT + #define CRC_XOR ++#define REFLECT ++#define MAX_SIZE 32768 + +-#ifndef __ASSEMBLY__ + #ifdef CRC_TABLE + static const unsigned int crc_table[] = { + 0x00000000, 0xf26b8303, 0xe13b70f7, 0x1350f3f4, 0xc79a971f, 0x35f1141c, +@@ -59,842 +67,1125 @@ static const unsigned int crc_table[] = { + 0xbe2da0a5, 0x4c4623a6, 0x5f16d052, 0xad7d5351, + }; + +-#endif ++#endif /* CRC_TABLE */ ++#ifdef POWER8_INTRINSICS + +-#else +-#define MAX_SIZE 32768 +-.constants : ++/* Constants */ + +- /* Reduce 262144 kbits to 1024 bits */ ++/* Reduce 262144 kbits to 1024 bits */ ++static const __vector unsigned long long vcrc_const[255] ++ __attribute__((aligned(16))) = { ++#ifdef __LITTLE_ENDIAN__ + /* x^261120 mod p(x)` << 1, x^261184 mod p(x)` << 1 */ +- .octa 0x00000000b6ca9e20000000009c37c408 +- ++ {0x000000009c37c408, 0x00000000b6ca9e20}, + /* x^260096 mod p(x)` << 1, x^260160 mod p(x)` << 1 */ +- .octa 0x00000000350249a800000001b51df26c +- ++ {0x00000001b51df26c, 0x00000000350249a8}, + /* x^259072 mod p(x)` << 1, x^259136 mod p(x)` << 1 */ +- .octa 0x00000001862dac54000000000724b9d0 +- ++ {0x000000000724b9d0, 0x00000001862dac54}, + /* x^258048 mod p(x)` << 1, x^258112 mod p(x)` << 1 */ +- .octa 0x00000001d87fb48c00000001c00532fe +- ++ {0x00000001c00532fe, 0x00000001d87fb48c}, + /* x^257024 mod p(x)` << 1, x^257088 mod p(x)` << 1 */ +- .octa 0x00000001f39b699e00000000f05a9362 +- ++ {0x00000000f05a9362, 0x00000001f39b699e}, + /* x^256000 mod p(x)` << 1, x^256064 mod p(x)` << 1 */ +- .octa 0x0000000101da11b400000001e1007970 +- ++ {0x00000001e1007970, 0x0000000101da11b4}, + /* x^254976 mod p(x)` << 1, x^255040 mod p(x)` << 1 */ +- .octa 0x00000001cab571e000000000a57366ee +- ++ {0x00000000a57366ee, 0x00000001cab571e0}, + /* x^253952 mod p(x)` << 1, x^254016 mod p(x)` << 1 */ +- .octa 0x00000000c7020cfe0000000192011284 +- ++ {0x0000000192011284, 0x00000000c7020cfe}, + /* x^252928 mod p(x)` << 1, x^252992 mod p(x)` << 1 */ +- .octa 0x00000000cdaed1ae0000000162716d9a +- ++ {0x0000000162716d9a, 0x00000000cdaed1ae}, + /* x^251904 mod p(x)` << 1, x^251968 mod p(x)` << 1 */ +- .octa 0x00000001e804effc00000000cd97ecde +- ++ {0x00000000cd97ecde, 0x00000001e804effc}, + /* x^250880 mod p(x)` << 1, x^250944 mod p(x)` << 1 */ +- .octa 0x0000000077c3ea3a0000000058812bc0 +- ++ {0x0000000058812bc0, 0x0000000077c3ea3a}, + /* x^249856 mod p(x)` << 1, x^249920 mod p(x)` << 1 */ +- .octa 0x0000000068df31b40000000088b8c12e +- ++ {0x0000000088b8c12e, 0x0000000068df31b4}, + /* x^248832 mod p(x)` << 1, x^248896 mod p(x)` << 1 */ +- .octa 0x00000000b059b6c200000001230b234c +- ++ {0x00000001230b234c, 0x00000000b059b6c2}, + /* x^247808 mod p(x)` << 1, x^247872 mod p(x)` << 1 */ +- .octa 0x0000000145fb8ed800000001120b416e +- ++ {0x00000001120b416e, 0x0000000145fb8ed8}, + /* x^246784 mod p(x)` << 1, x^246848 mod p(x)` << 1 */ +- .octa 0x00000000cbc0916800000001974aecb0 +- ++ {0x00000001974aecb0, 0x00000000cbc09168}, + /* x^245760 mod p(x)` << 1, x^245824 mod p(x)` << 1 */ +- .octa 0x000000005ceeedc2000000008ee3f226 +- ++ {0x000000008ee3f226, 0x000000005ceeedc2}, + /* x^244736 mod p(x)` << 1, x^244800 mod p(x)` << 1 */ +- .octa 0x0000000047d74e8600000001089aba9a +- ++ {0x00000001089aba9a, 0x0000000047d74e86}, + /* x^243712 mod p(x)` << 1, x^243776 mod p(x)` << 1 */ +- .octa 0x00000001407e9e220000000065113872 +- ++ {0x0000000065113872, 0x00000001407e9e22}, + /* x^242688 mod p(x)` << 1, x^242752 mod p(x)` << 1 */ +- .octa 0x00000001da967bda000000005c07ec10 +- ++ {0x000000005c07ec10, 0x00000001da967bda}, + /* x^241664 mod p(x)` << 1, x^241728 mod p(x)` << 1 */ +- .octa 0x000000006c8983680000000187590924 +- ++ {0x0000000187590924, 0x000000006c898368}, + /* x^240640 mod p(x)` << 1, x^240704 mod p(x)` << 1 */ +- .octa 0x00000000f2d14c9800000000e35da7c6 +- ++ {0x00000000e35da7c6, 0x00000000f2d14c98}, + /* x^239616 mod p(x)` << 1, x^239680 mod p(x)` << 1 */ +- .octa 0x00000001993c6ad4000000000415855a +- ++ {0x000000000415855a, 0x00000001993c6ad4}, + /* x^238592 mod p(x)` << 1, x^238656 mod p(x)` << 1 */ +- .octa 0x000000014683d1ac0000000073617758 +- ++ {0x0000000073617758, 0x000000014683d1ac}, + /* x^237568 mod p(x)` << 1, x^237632 mod p(x)` << 1 */ +- .octa 0x00000001a7c93e6c0000000176021d28 +- ++ {0x0000000176021d28, 0x00000001a7c93e6c}, + /* x^236544 mod p(x)` << 1, x^236608 mod p(x)` << 1 */ +- .octa 0x000000010211e90a00000001c358fd0a +- ++ {0x00000001c358fd0a, 0x000000010211e90a}, + /* x^235520 mod p(x)` << 1, x^235584 mod p(x)` << 1 */ +- .octa 0x000000001119403e00000001ff7a2c18 +- ++ {0x00000001ff7a2c18, 0x000000001119403e}, + /* x^234496 mod p(x)` << 1, x^234560 mod p(x)` << 1 */ +- .octa 0x000000001c3261aa00000000f2d9f7e4 +- ++ {0x00000000f2d9f7e4, 0x000000001c3261aa}, + /* x^233472 mod p(x)` << 1, x^233536 mod p(x)` << 1 */ +- .octa 0x000000014e37a634000000016cf1f9c8 +- ++ {0x000000016cf1f9c8, 0x000000014e37a634}, + /* x^232448 mod p(x)` << 1, x^232512 mod p(x)` << 1 */ +- .octa 0x0000000073786c0c000000010af9279a +- ++ {0x000000010af9279a, 0x0000000073786c0c}, + /* x^231424 mod p(x)` << 1, x^231488 mod p(x)` << 1 */ +- .octa 0x000000011dc037f80000000004f101e8 +- ++ {0x0000000004f101e8, 0x000000011dc037f8}, + /* x^230400 mod p(x)` << 1, x^230464 mod p(x)` << 1 */ +- .octa 0x0000000031433dfc0000000070bcf184 +- ++ {0x0000000070bcf184, 0x0000000031433dfc}, + /* x^229376 mod p(x)` << 1, x^229440 mod p(x)` << 1 */ +- .octa 0x000000009cde8348000000000a8de642 +- ++ {0x000000000a8de642, 0x000000009cde8348}, + /* x^228352 mod p(x)` << 1, x^228416 mod p(x)` << 1 */ +- .octa 0x0000000038d3c2a60000000062ea130c +- ++ {0x0000000062ea130c, 0x0000000038d3c2a6}, + /* x^227328 mod p(x)` << 1, x^227392 mod p(x)` << 1 */ +- .octa 0x000000011b25f26000000001eb31cbb2 +- ++ {0x00000001eb31cbb2, 0x000000011b25f260}, + /* x^226304 mod p(x)` << 1, x^226368 mod p(x)` << 1 */ +- .octa 0x000000001629e6f00000000170783448 +- ++ {0x0000000170783448, 0x000000001629e6f0}, + /* x^225280 mod p(x)` << 1, x^225344 mod p(x)` << 1 */ +- .octa 0x0000000160838b4c00000001a684b4c6 +- ++ {0x00000001a684b4c6, 0x0000000160838b4c}, + /* x^224256 mod p(x)` << 1, x^224320 mod p(x)` << 1 */ +- .octa 0x000000007a44011c00000000253ca5b4 +- ++ {0x00000000253ca5b4, 0x000000007a44011c}, + /* x^223232 mod p(x)` << 1, x^223296 mod p(x)` << 1 */ +- .octa 0x00000000226f417a0000000057b4b1e2 +- ++ {0x0000000057b4b1e2, 0x00000000226f417a}, + /* x^222208 mod p(x)` << 1, x^222272 mod p(x)` << 1 */ +- .octa 0x0000000045eb2eb400000000b6bd084c +- ++ {0x00000000b6bd084c, 0x0000000045eb2eb4}, + /* x^221184 mod p(x)` << 1, x^221248 mod p(x)` << 1 */ +- .octa 0x000000014459d70c0000000123c2d592 +- ++ {0x0000000123c2d592, 0x000000014459d70c}, + /* x^220160 mod p(x)` << 1, x^220224 mod p(x)` << 1 */ +- .octa 0x00000001d406ed8200000000159dafce +- ++ {0x00000000159dafce, 0x00000001d406ed82}, + /* x^219136 mod p(x)` << 1, x^219200 mod p(x)` << 1 */ +- .octa 0x0000000160c8e1a80000000127e1a64e +- ++ {0x0000000127e1a64e, 0x0000000160c8e1a8}, + /* x^218112 mod p(x)` << 1, x^218176 mod p(x)` << 1 */ +- .octa 0x0000000027ba80980000000056860754 +- ++ {0x0000000056860754, 0x0000000027ba8098}, + /* x^217088 mod p(x)` << 1, x^217152 mod p(x)` << 1 */ +- .octa 0x000000006d92d01800000001e661aae8 +- ++ {0x00000001e661aae8, 0x000000006d92d018}, + /* x^216064 mod p(x)` << 1, x^216128 mod p(x)` << 1 */ +- .octa 0x000000012ed7e3f200000000f82c6166 +- ++ {0x00000000f82c6166, 0x000000012ed7e3f2}, + /* x^215040 mod p(x)` << 1, x^215104 mod p(x)` << 1 */ +- .octa 0x000000002dc8778800000000c4f9c7ae +- ++ {0x00000000c4f9c7ae, 0x000000002dc87788}, + /* x^214016 mod p(x)` << 1, x^214080 mod p(x)` << 1 */ +- .octa 0x0000000018240bb80000000074203d20 +- ++ {0x0000000074203d20, 0x0000000018240bb8}, + /* x^212992 mod p(x)` << 1, x^213056 mod p(x)` << 1 */ +- .octa 0x000000001ad381580000000198173052 +- ++ {0x0000000198173052, 0x000000001ad38158}, + /* x^211968 mod p(x)` << 1, x^212032 mod p(x)` << 1 */ +- .octa 0x00000001396b78f200000001ce8aba54 +- ++ {0x00000001ce8aba54, 0x00000001396b78f2}, + /* x^210944 mod p(x)` << 1, x^211008 mod p(x)` << 1 */ +- .octa 0x000000011a68133400000001850d5d94 +- ++ {0x00000001850d5d94, 0x000000011a681334}, + /* x^209920 mod p(x)` << 1, x^209984 mod p(x)` << 1 */ +- .octa 0x000000012104732e00000001d609239c +- ++ {0x00000001d609239c, 0x000000012104732e}, + /* x^208896 mod p(x)` << 1, x^208960 mod p(x)` << 1 */ +- .octa 0x00000000a140d90c000000001595f048 +- ++ {0x000000001595f048, 0x00000000a140d90c}, + /* x^207872 mod p(x)` << 1, x^207936 mod p(x)` << 1 */ +- .octa 0x00000001b7215eda0000000042ccee08 +- ++ {0x0000000042ccee08, 0x00000001b7215eda}, + /* x^206848 mod p(x)` << 1, x^206912 mod p(x)` << 1 */ +- .octa 0x00000001aaf1df3c000000010a389d74 +- ++ {0x000000010a389d74, 0x00000001aaf1df3c}, + /* x^205824 mod p(x)` << 1, x^205888 mod p(x)` << 1 */ +- .octa 0x0000000029d15b8a000000012a840da6 +- ++ {0x000000012a840da6, 0x0000000029d15b8a}, + /* x^204800 mod p(x)` << 1, x^204864 mod p(x)` << 1 */ +- .octa 0x00000000f1a96922000000001d181c0c +- ++ {0x000000001d181c0c, 0x00000000f1a96922}, + /* x^203776 mod p(x)` << 1, x^203840 mod p(x)` << 1 */ +- .octa 0x00000001ac80d03c0000000068b7d1f6 +- ++ {0x0000000068b7d1f6, 0x00000001ac80d03c}, + /* x^202752 mod p(x)` << 1, x^202816 mod p(x)` << 1 */ +- .octa 0x000000000f11d56a000000005b0f14fc +- ++ {0x000000005b0f14fc, 0x000000000f11d56a}, + /* x^201728 mod p(x)` << 1, x^201792 mod p(x)` << 1 */ +- .octa 0x00000001f1c022a20000000179e9e730 +- ++ {0x0000000179e9e730, 0x00000001f1c022a2}, + /* x^200704 mod p(x)` << 1, x^200768 mod p(x)` << 1 */ +- .octa 0x0000000173d00ae200000001ce1368d6 +- ++ {0x00000001ce1368d6, 0x0000000173d00ae2}, + /* x^199680 mod p(x)` << 1, x^199744 mod p(x)` << 1 */ +- .octa 0x00000001d4ffe4ac0000000112c3a84c +- ++ {0x0000000112c3a84c, 0x00000001d4ffe4ac}, + /* x^198656 mod p(x)` << 1, x^198720 mod p(x)` << 1 */ +- .octa 0x000000016edc5ae400000000de940fee +- ++ {0x00000000de940fee, 0x000000016edc5ae4}, + /* x^197632 mod p(x)` << 1, x^197696 mod p(x)` << 1 */ +- .octa 0x00000001f1a0214000000000fe896b7e +- ++ {0x00000000fe896b7e, 0x00000001f1a02140}, + /* x^196608 mod p(x)` << 1, x^196672 mod p(x)` << 1 */ +- .octa 0x00000000ca0b28a000000001f797431c +- ++ {0x00000001f797431c, 0x00000000ca0b28a0}, + /* x^195584 mod p(x)` << 1, x^195648 mod p(x)` << 1 */ +- .octa 0x00000001928e30a20000000053e989ba +- ++ {0x0000000053e989ba, 0x00000001928e30a2}, + /* x^194560 mod p(x)` << 1, x^194624 mod p(x)` << 1 */ +- .octa 0x0000000097b1b002000000003920cd16 +- ++ {0x000000003920cd16, 0x0000000097b1b002}, + /* x^193536 mod p(x)` << 1, x^193600 mod p(x)` << 1 */ +- .octa 0x00000000b15bf90600000001e6f579b8 +- ++ {0x00000001e6f579b8, 0x00000000b15bf906}, + /* x^192512 mod p(x)` << 1, x^192576 mod p(x)` << 1 */ +- .octa 0x00000000411c5d52000000007493cb0a +- ++ {0x000000007493cb0a, 0x00000000411c5d52}, + /* x^191488 mod p(x)` << 1, x^191552 mod p(x)` << 1 */ +- .octa 0x00000001c36f330000000001bdd376d8 +- ++ {0x00000001bdd376d8, 0x00000001c36f3300}, + /* x^190464 mod p(x)` << 1, x^190528 mod p(x)` << 1 */ +- .octa 0x00000001119227e0000000016badfee6 +- ++ {0x000000016badfee6, 0x00000001119227e0}, + /* x^189440 mod p(x)` << 1, x^189504 mod p(x)` << 1 */ +- .octa 0x00000000114d47020000000071de5c58 +- ++ {0x0000000071de5c58, 0x00000000114d4702}, + /* x^188416 mod p(x)` << 1, x^188480 mod p(x)` << 1 */ +- .octa 0x00000000458b5b9800000000453f317c +- ++ {0x00000000453f317c, 0x00000000458b5b98}, + /* x^187392 mod p(x)` << 1, x^187456 mod p(x)` << 1 */ +- .octa 0x000000012e31fb8e0000000121675cce +- ++ {0x0000000121675cce, 0x000000012e31fb8e}, + /* x^186368 mod p(x)` << 1, x^186432 mod p(x)` << 1 */ +- .octa 0x000000005cf619d800000001f409ee92 +- ++ {0x00000001f409ee92, 0x000000005cf619d8}, + /* x^185344 mod p(x)` << 1, x^185408 mod p(x)` << 1 */ +- .octa 0x0000000063f4d8b200000000f36b9c88 +- ++ {0x00000000f36b9c88, 0x0000000063f4d8b2}, + /* x^184320 mod p(x)` << 1, x^184384 mod p(x)` << 1 */ +- .octa 0x000000004138dc8a0000000036b398f4 +- ++ {0x0000000036b398f4, 0x000000004138dc8a}, + /* x^183296 mod p(x)` << 1, x^183360 mod p(x)` << 1 */ +- .octa 0x00000001d29ee8e000000001748f9adc +- ++ {0x00000001748f9adc, 0x00000001d29ee8e0}, + /* x^182272 mod p(x)` << 1, x^182336 mod p(x)` << 1 */ +- .octa 0x000000006a08ace800000001be94ec00 +- ++ {0x00000001be94ec00, 0x000000006a08ace8}, + /* x^181248 mod p(x)` << 1, x^181312 mod p(x)` << 1 */ +- .octa 0x0000000127d4201000000000b74370d6 +- ++ {0x00000000b74370d6, 0x0000000127d42010}, + /* x^180224 mod p(x)` << 1, x^180288 mod p(x)` << 1 */ +- .octa 0x0000000019d76b6200000001174d0b98 +- ++ {0x00000001174d0b98, 0x0000000019d76b62}, + /* x^179200 mod p(x)` << 1, x^179264 mod p(x)` << 1 */ +- .octa 0x00000001b1471f6e00000000befc06a4 +- ++ {0x00000000befc06a4, 0x00000001b1471f6e}, + /* x^178176 mod p(x)` << 1, x^178240 mod p(x)` << 1 */ +- .octa 0x00000001f64c19cc00000001ae125288 +- ++ {0x00000001ae125288, 0x00000001f64c19cc}, + /* x^177152 mod p(x)` << 1, x^177216 mod p(x)` << 1 */ +- .octa 0x00000000003c0ea00000000095c19b34 +- ++ {0x0000000095c19b34, 0x00000000003c0ea0}, + /* x^176128 mod p(x)` << 1, x^176192 mod p(x)` << 1 */ +- .octa 0x000000014d73abf600000001a78496f2 +- ++ {0x00000001a78496f2, 0x000000014d73abf6}, + /* x^175104 mod p(x)` << 1, x^175168 mod p(x)` << 1 */ +- .octa 0x00000001620eb84400000001ac5390a0 +- ++ {0x00000001ac5390a0, 0x00000001620eb844}, + /* x^174080 mod p(x)` << 1, x^174144 mod p(x)` << 1 */ +- .octa 0x0000000147655048000000002a80ed6e +- ++ {0x000000002a80ed6e, 0x0000000147655048}, + /* x^173056 mod p(x)` << 1, x^173120 mod p(x)` << 1 */ +- .octa 0x0000000067b5077e00000001fa9b0128 +- ++ {0x00000001fa9b0128, 0x0000000067b5077e}, + /* x^172032 mod p(x)` << 1, x^172096 mod p(x)` << 1 */ +- .octa 0x0000000010ffe20600000001ea94929e +- ++ {0x00000001ea94929e, 0x0000000010ffe206}, + /* x^171008 mod p(x)` << 1, x^171072 mod p(x)` << 1 */ +- .octa 0x000000000fee8f1e0000000125f4305c +- ++ {0x0000000125f4305c, 0x000000000fee8f1e}, + /* x^169984 mod p(x)` << 1, x^170048 mod p(x)` << 1 */ +- .octa 0x00000001da26fbae00000001471e2002 +- ++ {0x00000001471e2002, 0x00000001da26fbae}, + /* x^168960 mod p(x)` << 1, x^169024 mod p(x)` << 1 */ +- .octa 0x00000001b3a8bd880000000132d2253a +- ++ {0x0000000132d2253a, 0x00000001b3a8bd88}, + /* x^167936 mod p(x)` << 1, x^168000 mod p(x)` << 1 */ +- .octa 0x00000000e8f3898e00000000f26b3592 +- ++ {0x00000000f26b3592, 0x00000000e8f3898e}, + /* x^166912 mod p(x)` << 1, x^166976 mod p(x)` << 1 */ +- .octa 0x00000000b0d0d28c00000000bc8b67b0 +- ++ {0x00000000bc8b67b0, 0x00000000b0d0d28c}, + /* x^165888 mod p(x)` << 1, x^165952 mod p(x)` << 1 */ +- .octa 0x0000000030f2a798000000013a826ef2 +- ++ {0x000000013a826ef2, 0x0000000030f2a798}, + /* x^164864 mod p(x)` << 1, x^164928 mod p(x)` << 1 */ +- .octa 0x000000000fba10020000000081482c84 +- ++ {0x0000000081482c84, 0x000000000fba1002}, + /* x^163840 mod p(x)` << 1, x^163904 mod p(x)` << 1 */ +- .octa 0x00000000bdb9bd7200000000e77307c2 +- ++ {0x00000000e77307c2, 0x00000000bdb9bd72}, + /* x^162816 mod p(x)` << 1, x^162880 mod p(x)` << 1 */ +- .octa 0x0000000075d3bf5a00000000d4a07ec8 +- ++ {0x00000000d4a07ec8, 0x0000000075d3bf5a}, + /* x^161792 mod p(x)` << 1, x^161856 mod p(x)` << 1 */ +- .octa 0x00000000ef1f98a00000000017102100 +- ++ {0x0000000017102100, 0x00000000ef1f98a0}, + /* x^160768 mod p(x)` << 1, x^160832 mod p(x)` << 1 */ +- .octa 0x00000000689c760200000000db406486 +- ++ {0x00000000db406486, 0x00000000689c7602}, + /* x^159744 mod p(x)` << 1, x^159808 mod p(x)` << 1 */ +- .octa 0x000000016d5fa5fe0000000192db7f88 +- ++ {0x0000000192db7f88, 0x000000016d5fa5fe}, + /* x^158720 mod p(x)` << 1, x^158784 mod p(x)` << 1 */ +- .octa 0x00000001d0d2b9ca000000018bf67b1e +- ++ {0x000000018bf67b1e, 0x00000001d0d2b9ca}, + /* x^157696 mod p(x)` << 1, x^157760 mod p(x)` << 1 */ +- .octa 0x0000000041e7b470000000007c09163e +- ++ {0x000000007c09163e, 0x0000000041e7b470}, + /* x^156672 mod p(x)` << 1, x^156736 mod p(x)` << 1 */ +- .octa 0x00000001cbb6495e000000000adac060 +- ++ {0x000000000adac060, 0x00000001cbb6495e}, + /* x^155648 mod p(x)` << 1, x^155712 mod p(x)` << 1 */ +- .octa 0x000000010052a0b000000000bd8316ae +- ++ {0x00000000bd8316ae, 0x000000010052a0b0}, + /* x^154624 mod p(x)` << 1, x^154688 mod p(x)` << 1 */ +- .octa 0x00000001d8effb5c000000019f09ab54 +- ++ {0x000000019f09ab54, 0x00000001d8effb5c}, + /* x^153600 mod p(x)` << 1, x^153664 mod p(x)` << 1 */ +- .octa 0x00000001d969853c0000000125155542 +- ++ {0x0000000125155542, 0x00000001d969853c}, + /* x^152576 mod p(x)` << 1, x^152640 mod p(x)` << 1 */ +- .octa 0x00000000523ccce2000000018fdb5882 +- ++ {0x000000018fdb5882, 0x00000000523ccce2}, + /* x^151552 mod p(x)` << 1, x^151616 mod p(x)` << 1 */ +- .octa 0x000000001e2436bc00000000e794b3f4 +- ++ {0x00000000e794b3f4, 0x000000001e2436bc}, + /* x^150528 mod p(x)` << 1, x^150592 mod p(x)` << 1 */ +- .octa 0x00000000ddd1c3a2000000016f9bb022 +- ++ {0x000000016f9bb022, 0x00000000ddd1c3a2}, + /* x^149504 mod p(x)` << 1, x^149568 mod p(x)` << 1 */ +- .octa 0x0000000019fcfe3800000000290c9978 +- ++ {0x00000000290c9978, 0x0000000019fcfe38}, + /* x^148480 mod p(x)` << 1, x^148544 mod p(x)` << 1 */ +- .octa 0x00000001ce95db640000000083c0f350 +- ++ {0x0000000083c0f350, 0x00000001ce95db64}, + /* x^147456 mod p(x)` << 1, x^147520 mod p(x)` << 1 */ +- .octa 0x00000000af5828060000000173ea6628 +- ++ {0x0000000173ea6628, 0x00000000af582806}, + /* x^146432 mod p(x)` << 1, x^146496 mod p(x)` << 1 */ +- .octa 0x00000001006388f600000001c8b4e00a +- ++ {0x00000001c8b4e00a, 0x00000001006388f6}, + /* x^145408 mod p(x)` << 1, x^145472 mod p(x)` << 1 */ +- .octa 0x0000000179eca00a00000000de95d6aa +- ++ {0x00000000de95d6aa, 0x0000000179eca00a}, + /* x^144384 mod p(x)` << 1, x^144448 mod p(x)` << 1 */ +- .octa 0x0000000122410a6a000000010b7f7248 +- ++ {0x000000010b7f7248, 0x0000000122410a6a}, + /* x^143360 mod p(x)` << 1, x^143424 mod p(x)` << 1 */ +- .octa 0x000000004288e87c00000001326e3a06 +- ++ {0x00000001326e3a06, 0x000000004288e87c}, + /* x^142336 mod p(x)` << 1, x^142400 mod p(x)` << 1 */ +- .octa 0x000000016c5490da00000000bb62c2e6 +- ++ {0x00000000bb62c2e6, 0x000000016c5490da}, + /* x^141312 mod p(x)` << 1, x^141376 mod p(x)` << 1 */ +- .octa 0x00000000d1c71f6e0000000156a4b2c2 +- ++ {0x0000000156a4b2c2, 0x00000000d1c71f6e}, + /* x^140288 mod p(x)` << 1, x^140352 mod p(x)` << 1 */ +- .octa 0x00000001b4ce08a6000000011dfe763a +- ++ {0x000000011dfe763a, 0x00000001b4ce08a6}, + /* x^139264 mod p(x)` << 1, x^139328 mod p(x)` << 1 */ +- .octa 0x00000001466ba60c000000007bcca8e2 +- ++ {0x000000007bcca8e2, 0x00000001466ba60c}, + /* x^138240 mod p(x)` << 1, x^138304 mod p(x)` << 1 */ +- .octa 0x00000001f6c488a40000000186118faa +- ++ {0x0000000186118faa, 0x00000001f6c488a4}, + /* x^137216 mod p(x)` << 1, x^137280 mod p(x)` << 1 */ +- .octa 0x000000013bfb06820000000111a65a88 +- ++ {0x0000000111a65a88, 0x000000013bfb0682}, + /* x^136192 mod p(x)` << 1, x^136256 mod p(x)` << 1 */ +- .octa 0x00000000690e9e54000000003565e1c4 +- ++ {0x000000003565e1c4, 0x00000000690e9e54}, + /* x^135168 mod p(x)` << 1, x^135232 mod p(x)` << 1 */ +- .octa 0x00000000281346b6000000012ed02a82 +- ++ {0x000000012ed02a82, 0x00000000281346b6}, + /* x^134144 mod p(x)` << 1, x^134208 mod p(x)` << 1 */ +- .octa 0x000000015646402400000000c486ecfc +- ++ {0x00000000c486ecfc, 0x0000000156464024}, + /* x^133120 mod p(x)` << 1, x^133184 mod p(x)` << 1 */ +- .octa 0x000000016063a8dc0000000001b951b2 +- ++ {0x0000000001b951b2, 0x000000016063a8dc}, + /* x^132096 mod p(x)` << 1, x^132160 mod p(x)` << 1 */ +- .octa 0x0000000116a663620000000048143916 +- ++ {0x0000000048143916, 0x0000000116a66362}, + /* x^131072 mod p(x)` << 1, x^131136 mod p(x)` << 1 */ +- .octa 0x000000017e8aa4d200000001dc2ae124 +- ++ {0x00000001dc2ae124, 0x000000017e8aa4d2}, + /* x^130048 mod p(x)` << 1, x^130112 mod p(x)` << 1 */ +- .octa 0x00000001728eb10c00000001416c58d6 +- ++ {0x00000001416c58d6, 0x00000001728eb10c}, + /* x^129024 mod p(x)` << 1, x^129088 mod p(x)` << 1 */ +- .octa 0x00000001b08fd7fa00000000a479744a +- ++ {0x00000000a479744a, 0x00000001b08fd7fa}, + /* x^128000 mod p(x)` << 1, x^128064 mod p(x)` << 1 */ +- .octa 0x00000001092a16e80000000096ca3a26 +- ++ {0x0000000096ca3a26, 0x00000001092a16e8}, + /* x^126976 mod p(x)` << 1, x^127040 mod p(x)` << 1 */ +- .octa 0x00000000a505637c00000000ff223d4e +- ++ {0x00000000ff223d4e, 0x00000000a505637c}, + /* x^125952 mod p(x)` << 1, x^126016 mod p(x)` << 1 */ +- .octa 0x00000000d94869b2000000010e84da42 +- ++ {0x000000010e84da42, 0x00000000d94869b2}, + /* x^124928 mod p(x)` << 1, x^124992 mod p(x)` << 1 */ +- .octa 0x00000001c8b203ae00000001b61ba3d0 +- ++ {0x00000001b61ba3d0, 0x00000001c8b203ae}, + /* x^123904 mod p(x)` << 1, x^123968 mod p(x)` << 1 */ +- .octa 0x000000005704aea000000000680f2de8 +- ++ {0x00000000680f2de8, 0x000000005704aea0}, + /* x^122880 mod p(x)` << 1, x^122944 mod p(x)` << 1 */ +- .octa 0x000000012e295fa2000000008772a9a8 +- ++ {0x000000008772a9a8, 0x000000012e295fa2}, + /* x^121856 mod p(x)` << 1, x^121920 mod p(x)` << 1 */ +- .octa 0x000000011d0908bc0000000155f295bc +- ++ {0x0000000155f295bc, 0x000000011d0908bc}, + /* x^120832 mod p(x)` << 1, x^120896 mod p(x)` << 1 */ +- .octa 0x0000000193ed97ea00000000595f9282 +- ++ {0x00000000595f9282, 0x0000000193ed97ea}, + /* x^119808 mod p(x)` << 1, x^119872 mod p(x)` << 1 */ +- .octa 0x000000013a0f1c520000000164b1c25a +- ++ {0x0000000164b1c25a, 0x000000013a0f1c52}, + /* x^118784 mod p(x)` << 1, x^118848 mod p(x)` << 1 */ +- .octa 0x000000010c2c40c000000000fbd67c50 +- ++ {0x00000000fbd67c50, 0x000000010c2c40c0}, + /* x^117760 mod p(x)` << 1, x^117824 mod p(x)` << 1 */ +- .octa 0x00000000ff6fac3e0000000096076268 +- ++ {0x0000000096076268, 0x00000000ff6fac3e}, + /* x^116736 mod p(x)` << 1, x^116800 mod p(x)` << 1 */ +- .octa 0x000000017b3609c000000001d288e4cc +- ++ {0x00000001d288e4cc, 0x000000017b3609c0}, + /* x^115712 mod p(x)` << 1, x^115776 mod p(x)` << 1 */ +- .octa 0x0000000088c8c92200000001eaac1bdc +- ++ {0x00000001eaac1bdc, 0x0000000088c8c922}, + /* x^114688 mod p(x)` << 1, x^114752 mod p(x)` << 1 */ +- .octa 0x00000001751baae600000001f1ea39e2 +- ++ {0x00000001f1ea39e2, 0x00000001751baae6}, + /* x^113664 mod p(x)` << 1, x^113728 mod p(x)` << 1 */ +- .octa 0x000000010795297200000001eb6506fc +- ++ {0x00000001eb6506fc, 0x0000000107952972}, + /* x^112640 mod p(x)` << 1, x^112704 mod p(x)` << 1 */ +- .octa 0x0000000162b00abe000000010f806ffe +- ++ {0x000000010f806ffe, 0x0000000162b00abe}, + /* x^111616 mod p(x)` << 1, x^111680 mod p(x)` << 1 */ +- .octa 0x000000000d7b404c000000010408481e +- ++ {0x000000010408481e, 0x000000000d7b404c}, + /* x^110592 mod p(x)` << 1, x^110656 mod p(x)` << 1 */ +- .octa 0x00000000763b13d40000000188260534 +- ++ {0x0000000188260534, 0x00000000763b13d4}, + /* x^109568 mod p(x)` << 1, x^109632 mod p(x)` << 1 */ +- .octa 0x00000000f6dc22d80000000058fc73e0 +- ++ {0x0000000058fc73e0, 0x00000000f6dc22d8}, + /* x^108544 mod p(x)` << 1, x^108608 mod p(x)` << 1 */ +- .octa 0x000000007daae06000000000391c59b8 +- ++ {0x00000000391c59b8, 0x000000007daae060}, + /* x^107520 mod p(x)` << 1, x^107584 mod p(x)` << 1 */ +- .octa 0x000000013359ab7c000000018b638400 +- ++ {0x000000018b638400, 0x000000013359ab7c}, + /* x^106496 mod p(x)` << 1, x^106560 mod p(x)` << 1 */ +- .octa 0x000000008add438a000000011738f5c4 +- ++ {0x000000011738f5c4, 0x000000008add438a}, + /* x^105472 mod p(x)` << 1, x^105536 mod p(x)` << 1 */ +- .octa 0x00000001edbefdea000000008cf7c6da +- ++ {0x000000008cf7c6da, 0x00000001edbefdea}, + /* x^104448 mod p(x)` << 1, x^104512 mod p(x)` << 1 */ +- .octa 0x000000004104e0f800000001ef97fb16 +- ++ {0x00000001ef97fb16, 0x000000004104e0f8}, + /* x^103424 mod p(x)` << 1, x^103488 mod p(x)` << 1 */ +- .octa 0x00000000b48a82220000000102130e20 +- ++ {0x0000000102130e20, 0x00000000b48a8222}, + /* x^102400 mod p(x)` << 1, x^102464 mod p(x)` << 1 */ +- .octa 0x00000001bcb4684400000000db968898 +- ++ {0x00000000db968898, 0x00000001bcb46844}, + /* x^101376 mod p(x)` << 1, x^101440 mod p(x)` << 1 */ +- .octa 0x000000013293ce0a00000000b5047b5e +- ++ {0x00000000b5047b5e, 0x000000013293ce0a}, + /* x^100352 mod p(x)` << 1, x^100416 mod p(x)` << 1 */ +- .octa 0x00000001710d0844000000010b90fdb2 +- ++ {0x000000010b90fdb2, 0x00000001710d0844}, + /* x^99328 mod p(x)` << 1, x^99392 mod p(x)` << 1 */ +- .octa 0x0000000117907f6e000000004834a32e +- ++ {0x000000004834a32e, 0x0000000117907f6e}, + /* x^98304 mod p(x)` << 1, x^98368 mod p(x)` << 1 */ +- .octa 0x0000000087ddf93e0000000059c8f2b0 +- ++ {0x0000000059c8f2b0, 0x0000000087ddf93e}, + /* x^97280 mod p(x)` << 1, x^97344 mod p(x)` << 1 */ +- .octa 0x000000005970e9b00000000122cec508 +- ++ {0x0000000122cec508, 0x000000005970e9b0}, + /* x^96256 mod p(x)` << 1, x^96320 mod p(x)` << 1 */ +- .octa 0x0000000185b2b7d0000000000a330cda +- ++ {0x000000000a330cda, 0x0000000185b2b7d0}, + /* x^95232 mod p(x)` << 1, x^95296 mod p(x)` << 1 */ +- .octa 0x00000001dcee0efc000000014a47148c +- ++ {0x000000014a47148c, 0x00000001dcee0efc}, + /* x^94208 mod p(x)` << 1, x^94272 mod p(x)` << 1 */ +- .octa 0x0000000030da27220000000042c61cb8 +- ++ {0x0000000042c61cb8, 0x0000000030da2722}, + /* x^93184 mod p(x)` << 1, x^93248 mod p(x)` << 1 */ +- .octa 0x000000012f925a180000000012fe6960 +- ++ {0x0000000012fe6960, 0x000000012f925a18}, + /* x^92160 mod p(x)` << 1, x^92224 mod p(x)` << 1 */ +- .octa 0x00000000dd2e357c00000000dbda2c20 +- ++ {0x00000000dbda2c20, 0x00000000dd2e357c}, + /* x^91136 mod p(x)` << 1, x^91200 mod p(x)` << 1 */ +- .octa 0x00000000071c80de000000011122410c +- ++ {0x000000011122410c, 0x00000000071c80de}, + /* x^90112 mod p(x)` << 1, x^90176 mod p(x)` << 1 */ +- .octa 0x000000011513140a00000000977b2070 +- ++ {0x00000000977b2070, 0x000000011513140a}, + /* x^89088 mod p(x)` << 1, x^89152 mod p(x)` << 1 */ +- .octa 0x00000001df876e8e000000014050438e +- ++ {0x000000014050438e, 0x00000001df876e8e}, + /* x^88064 mod p(x)` << 1, x^88128 mod p(x)` << 1 */ +- .octa 0x000000015f81d6ce0000000147c840e8 +- ++ {0x0000000147c840e8, 0x000000015f81d6ce}, + /* x^87040 mod p(x)` << 1, x^87104 mod p(x)` << 1 */ +- .octa 0x000000019dd94dbe00000001cc7c88ce +- ++ {0x00000001cc7c88ce, 0x000000019dd94dbe}, + /* x^86016 mod p(x)` << 1, x^86080 mod p(x)` << 1 */ +- .octa 0x00000001373d206e00000001476b35a4 +- ++ {0x00000001476b35a4, 0x00000001373d206e}, + /* x^84992 mod p(x)` << 1, x^85056 mod p(x)` << 1 */ +- .octa 0x00000000668ccade000000013d52d508 +- ++ {0x000000013d52d508, 0x00000000668ccade}, + /* x^83968 mod p(x)` << 1, x^84032 mod p(x)` << 1 */ +- .octa 0x00000001b192d268000000008e4be32e +- ++ {0x000000008e4be32e, 0x00000001b192d268}, + /* x^82944 mod p(x)` << 1, x^83008 mod p(x)` << 1 */ +- .octa 0x00000000e30f3a7800000000024120fe +- ++ {0x00000000024120fe, 0x00000000e30f3a78}, + /* x^81920 mod p(x)` << 1, x^81984 mod p(x)` << 1 */ +- .octa 0x000000010ef1f7bc00000000ddecddb4 +- ++ {0x00000000ddecddb4, 0x000000010ef1f7bc}, + /* x^80896 mod p(x)` << 1, x^80960 mod p(x)` << 1 */ +- .octa 0x00000001f5ac738000000000d4d403bc +- ++ {0x00000000d4d403bc, 0x00000001f5ac7380}, + /* x^79872 mod p(x)` << 1, x^79936 mod p(x)` << 1 */ +- .octa 0x000000011822ea7000000001734b89aa +- ++ {0x00000001734b89aa, 0x000000011822ea70}, + /* x^78848 mod p(x)` << 1, x^78912 mod p(x)` << 1 */ +- .octa 0x00000000c3a33848000000010e7a58d6 +- ++ {0x000000010e7a58d6, 0x00000000c3a33848}, + /* x^77824 mod p(x)` << 1, x^77888 mod p(x)` << 1 */ +- .octa 0x00000001bd151c2400000001f9f04e9c +- ++ {0x00000001f9f04e9c, 0x00000001bd151c24}, + /* x^76800 mod p(x)` << 1, x^76864 mod p(x)` << 1 */ +- .octa 0x0000000056002d7600000000b692225e +- ++ {0x00000000b692225e, 0x0000000056002d76}, + /* x^75776 mod p(x)` << 1, x^75840 mod p(x)` << 1 */ +- .octa 0x000000014657c4f4000000019b8d3f3e +- ++ {0x000000019b8d3f3e, 0x000000014657c4f4}, + /* x^74752 mod p(x)` << 1, x^74816 mod p(x)` << 1 */ +- .octa 0x0000000113742d7c00000001a874f11e +- ++ {0x00000001a874f11e, 0x0000000113742d7c}, + /* x^73728 mod p(x)` << 1, x^73792 mod p(x)` << 1 */ +- .octa 0x000000019c5920ba000000010d5a4254 +- ++ {0x000000010d5a4254, 0x000000019c5920ba}, + /* x^72704 mod p(x)` << 1, x^72768 mod p(x)` << 1 */ +- .octa 0x000000005216d2d600000000bbb2f5d6 +- ++ {0x00000000bbb2f5d6, 0x000000005216d2d6}, + /* x^71680 mod p(x)` << 1, x^71744 mod p(x)` << 1 */ +- .octa 0x0000000136f5ad8a0000000179cc0e36 +- ++ {0x0000000179cc0e36, 0x0000000136f5ad8a}, + /* x^70656 mod p(x)` << 1, x^70720 mod p(x)` << 1 */ +- .octa 0x000000018b07beb600000001dca1da4a +- ++ {0x00000001dca1da4a, 0x000000018b07beb6}, + /* x^69632 mod p(x)` << 1, x^69696 mod p(x)` << 1 */ +- .octa 0x00000000db1e93b000000000feb1a192 +- ++ {0x00000000feb1a192, 0x00000000db1e93b0}, + /* x^68608 mod p(x)` << 1, x^68672 mod p(x)` << 1 */ +- .octa 0x000000000b96fa3a00000000d1eeedd6 +- ++ {0x00000000d1eeedd6, 0x000000000b96fa3a}, + /* x^67584 mod p(x)` << 1, x^67648 mod p(x)` << 1 */ +- .octa 0x00000001d9968af0000000008fad9bb4 +- ++ {0x000000008fad9bb4, 0x00000001d9968af0}, + /* x^66560 mod p(x)` << 1, x^66624 mod p(x)` << 1 */ +- .octa 0x000000000e4a77a200000001884938e4 +- ++ {0x00000001884938e4, 0x000000000e4a77a2}, + /* x^65536 mod p(x)` << 1, x^65600 mod p(x)` << 1 */ +- .octa 0x00000000508c2ac800000001bc2e9bc0 +- ++ {0x00000001bc2e9bc0, 0x00000000508c2ac8}, + /* x^64512 mod p(x)` << 1, x^64576 mod p(x)` << 1 */ +- .octa 0x0000000021572a8000000001f9658a68 +- ++ {0x00000001f9658a68, 0x0000000021572a80}, + /* x^63488 mod p(x)` << 1, x^63552 mod p(x)` << 1 */ +- .octa 0x00000001b859daf2000000001b9224fc +- ++ {0x000000001b9224fc, 0x00000001b859daf2}, + /* x^62464 mod p(x)` << 1, x^62528 mod p(x)` << 1 */ +- .octa 0x000000016f7884740000000055b2fb84 +- ++ {0x0000000055b2fb84, 0x000000016f788474}, + /* x^61440 mod p(x)` << 1, x^61504 mod p(x)` << 1 */ +- .octa 0x00000001b438810e000000018b090348 +- ++ {0x000000018b090348, 0x00000001b438810e}, + /* x^60416 mod p(x)` << 1, x^60480 mod p(x)` << 1 */ +- .octa 0x0000000095ddc6f2000000011ccbd5ea +- ++ {0x000000011ccbd5ea, 0x0000000095ddc6f2}, + /* x^59392 mod p(x)` << 1, x^59456 mod p(x)` << 1 */ +- .octa 0x00000001d977c20c0000000007ae47f8 +- ++ {0x0000000007ae47f8, 0x00000001d977c20c}, + /* x^58368 mod p(x)` << 1, x^58432 mod p(x)` << 1 */ +- .octa 0x00000000ebedb99a0000000172acbec0 +- ++ {0x0000000172acbec0, 0x00000000ebedb99a}, + /* x^57344 mod p(x)` << 1, x^57408 mod p(x)` << 1 */ +- .octa 0x00000001df9e9e9200000001c6e3ff20 +- ++ {0x00000001c6e3ff20, 0x00000001df9e9e92}, + /* x^56320 mod p(x)` << 1, x^56384 mod p(x)` << 1 */ +- .octa 0x00000001a4a3f95200000000e1b38744 +- ++ {0x00000000e1b38744, 0x00000001a4a3f952}, + /* x^55296 mod p(x)` << 1, x^55360 mod p(x)` << 1 */ +- .octa 0x00000000e2f5122000000000791585b2 +- ++ {0x00000000791585b2, 0x00000000e2f51220}, + /* x^54272 mod p(x)` << 1, x^54336 mod p(x)` << 1 */ +- .octa 0x000000004aa01f3e00000000ac53b894 +- ++ {0x00000000ac53b894, 0x000000004aa01f3e}, + /* x^53248 mod p(x)` << 1, x^53312 mod p(x)` << 1 */ +- .octa 0x00000000b3e90a5800000001ed5f2cf4 +- ++ {0x00000001ed5f2cf4, 0x00000000b3e90a58}, + /* x^52224 mod p(x)` << 1, x^52288 mod p(x)` << 1 */ +- .octa 0x000000000c9ca2aa00000001df48b2e0 +- ++ {0x00000001df48b2e0, 0x000000000c9ca2aa}, + /* x^51200 mod p(x)` << 1, x^51264 mod p(x)` << 1 */ +- .octa 0x000000015168231600000000049c1c62 +- ++ {0x00000000049c1c62, 0x0000000151682316}, + /* x^50176 mod p(x)` << 1, x^50240 mod p(x)` << 1 */ +- .octa 0x0000000036fce78c000000017c460c12 +- ++ {0x000000017c460c12, 0x0000000036fce78c}, + /* x^49152 mod p(x)` << 1, x^49216 mod p(x)` << 1 */ +- .octa 0x000000009037dc10000000015be4da7e +- ++ {0x000000015be4da7e, 0x000000009037dc10}, + /* x^48128 mod p(x)` << 1, x^48192 mod p(x)` << 1 */ +- .octa 0x00000000d3298582000000010f38f668 +- ++ {0x000000010f38f668, 0x00000000d3298582}, + /* x^47104 mod p(x)` << 1, x^47168 mod p(x)` << 1 */ +- .octa 0x00000001b42e8ad60000000039f40a00 +- ++ {0x0000000039f40a00, 0x00000001b42e8ad6}, + /* x^46080 mod p(x)` << 1, x^46144 mod p(x)` << 1 */ +- .octa 0x00000000142a983800000000bd4c10c4 +- ++ {0x00000000bd4c10c4, 0x00000000142a9838}, + /* x^45056 mod p(x)` << 1, x^45120 mod p(x)` << 1 */ +- .octa 0x0000000109c7f1900000000042db1d98 +- ++ {0x0000000042db1d98, 0x0000000109c7f190}, + /* x^44032 mod p(x)` << 1, x^44096 mod p(x)` << 1 */ +- .octa 0x0000000056ff931000000001c905bae6 +- ++ {0x00000001c905bae6, 0x0000000056ff9310}, + /* x^43008 mod p(x)` << 1, x^43072 mod p(x)` << 1 */ +- .octa 0x00000001594513aa00000000069d40ea +- ++ {0x00000000069d40ea, 0x00000001594513aa}, + /* x^41984 mod p(x)` << 1, x^42048 mod p(x)` << 1 */ +- .octa 0x00000001e3b5b1e8000000008e4fbad0 +- ++ {0x000000008e4fbad0, 0x00000001e3b5b1e8}, + /* x^40960 mod p(x)` << 1, x^41024 mod p(x)` << 1 */ +- .octa 0x000000011dd5fc080000000047bedd46 +- ++ {0x0000000047bedd46, 0x000000011dd5fc08}, + /* x^39936 mod p(x)` << 1, x^40000 mod p(x)` << 1 */ +- .octa 0x00000001675f0cc20000000026396bf8 +- ++ {0x0000000026396bf8, 0x00000001675f0cc2}, + /* x^38912 mod p(x)` << 1, x^38976 mod p(x)` << 1 */ +- .octa 0x00000000d1c8dd4400000000379beb92 +- ++ {0x00000000379beb92, 0x00000000d1c8dd44}, + /* x^37888 mod p(x)` << 1, x^37952 mod p(x)` << 1 */ +- .octa 0x0000000115ebd3d8000000000abae54a +- ++ {0x000000000abae54a, 0x0000000115ebd3d8}, + /* x^36864 mod p(x)` << 1, x^36928 mod p(x)` << 1 */ +- .octa 0x00000001ecbd0dac0000000007e6a128 +- ++ {0x0000000007e6a128, 0x00000001ecbd0dac}, + /* x^35840 mod p(x)` << 1, x^35904 mod p(x)` << 1 */ +- .octa 0x00000000cdf67af2000000000ade29d2 +- ++ {0x000000000ade29d2, 0x00000000cdf67af2}, + /* x^34816 mod p(x)` << 1, x^34880 mod p(x)` << 1 */ +- .octa 0x000000004c01ff4c00000000f974c45c +- ++ {0x00000000f974c45c, 0x000000004c01ff4c}, + /* x^33792 mod p(x)` << 1, x^33856 mod p(x)` << 1 */ +- .octa 0x00000000f2d8657e00000000e77ac60a +- ++ {0x00000000e77ac60a, 0x00000000f2d8657e}, + /* x^32768 mod p(x)` << 1, x^32832 mod p(x)` << 1 */ +- .octa 0x000000006bae74c40000000145895816 +- ++ {0x0000000145895816, 0x000000006bae74c4}, + /* x^31744 mod p(x)` << 1, x^31808 mod p(x)` << 1 */ +- .octa 0x0000000152af8aa00000000038e362be +- ++ {0x0000000038e362be, 0x0000000152af8aa0}, + /* x^30720 mod p(x)` << 1, x^30784 mod p(x)` << 1 */ +- .octa 0x0000000004663802000000007f991a64 +- ++ {0x000000007f991a64, 0x0000000004663802}, + /* x^29696 mod p(x)` << 1, x^29760 mod p(x)` << 1 */ +- .octa 0x00000001ab2f5afc00000000fa366d3a +- ++ {0x00000000fa366d3a, 0x00000001ab2f5afc}, + /* x^28672 mod p(x)` << 1, x^28736 mod p(x)` << 1 */ +- .octa 0x0000000074a4ebd400000001a2bb34f0 +- ++ {0x00000001a2bb34f0, 0x0000000074a4ebd4}, + /* x^27648 mod p(x)` << 1, x^27712 mod p(x)` << 1 */ +- .octa 0x00000001d7ab3a4c0000000028a9981e +- ++ {0x0000000028a9981e, 0x00000001d7ab3a4c}, + /* x^26624 mod p(x)` << 1, x^26688 mod p(x)` << 1 */ +- .octa 0x00000001a8da60c600000001dbc672be +- ++ {0x00000001dbc672be, 0x00000001a8da60c6}, + /* x^25600 mod p(x)` << 1, x^25664 mod p(x)` << 1 */ +- .octa 0x000000013cf6382000000000b04d77f6 +- ++ {0x00000000b04d77f6, 0x000000013cf63820}, + /* x^24576 mod p(x)` << 1, x^24640 mod p(x)` << 1 */ +- .octa 0x00000000bec12e1e0000000124400d96 +- ++ {0x0000000124400d96, 0x00000000bec12e1e}, + /* x^23552 mod p(x)` << 1, x^23616 mod p(x)` << 1 */ +- .octa 0x00000001c6368010000000014ca4b414 +- ++ {0x000000014ca4b414, 0x00000001c6368010}, + /* x^22528 mod p(x)` << 1, x^22592 mod p(x)` << 1 */ +- .octa 0x00000001e6e78758000000012fe2c938 +- ++ {0x000000012fe2c938, 0x00000001e6e78758}, + /* x^21504 mod p(x)` << 1, x^21568 mod p(x)` << 1 */ +- .octa 0x000000008d7f2b3c00000001faed01e6 +- ++ {0x00000001faed01e6, 0x000000008d7f2b3c}, + /* x^20480 mod p(x)` << 1, x^20544 mod p(x)` << 1 */ +- .octa 0x000000016b4a156e000000007e80ecfe +- ++ {0x000000007e80ecfe, 0x000000016b4a156e}, + /* x^19456 mod p(x)` << 1, x^19520 mod p(x)` << 1 */ +- .octa 0x00000001c63cfeb60000000098daee94 +- ++ {0x0000000098daee94, 0x00000001c63cfeb6}, + /* x^18432 mod p(x)` << 1, x^18496 mod p(x)` << 1 */ +- .octa 0x000000015f902670000000010a04edea +- ++ {0x000000010a04edea, 0x000000015f902670}, + /* x^17408 mod p(x)` << 1, x^17472 mod p(x)` << 1 */ +- .octa 0x00000001cd5de11e00000001c00b4524 +- ++ {0x00000001c00b4524, 0x00000001cd5de11e}, + /* x^16384 mod p(x)` << 1, x^16448 mod p(x)` << 1 */ +- .octa 0x000000001acaec540000000170296550 +- ++ {0x0000000170296550, 0x000000001acaec54}, + /* x^15360 mod p(x)` << 1, x^15424 mod p(x)` << 1 */ +- .octa 0x000000002bd0ca780000000181afaa48 +- ++ {0x0000000181afaa48, 0x000000002bd0ca78}, + /* x^14336 mod p(x)` << 1, x^14400 mod p(x)` << 1 */ +- .octa 0x0000000032d63d5c0000000185a31ffa +- ++ {0x0000000185a31ffa, 0x0000000032d63d5c}, + /* x^13312 mod p(x)` << 1, x^13376 mod p(x)` << 1 */ +- .octa 0x000000001c6d4e4c000000002469f608 +- ++ {0x000000002469f608, 0x000000001c6d4e4c}, + /* x^12288 mod p(x)` << 1, x^12352 mod p(x)` << 1 */ +- .octa 0x0000000106a60b92000000006980102a +- ++ {0x000000006980102a, 0x0000000106a60b92}, + /* x^11264 mod p(x)` << 1, x^11328 mod p(x)` << 1 */ +- .octa 0x00000000d3855e120000000111ea9ca8 +- ++ {0x0000000111ea9ca8, 0x00000000d3855e12}, + /* x^10240 mod p(x)` << 1, x^10304 mod p(x)` << 1 */ +- .octa 0x00000000e312563600000001bd1d29ce +- ++ {0x00000001bd1d29ce, 0x00000000e3125636}, + /* x^9216 mod p(x)` << 1, x^9280 mod p(x)` << 1 */ +- .octa 0x000000009e8f7ea400000001b34b9580 +- ++ {0x00000001b34b9580, 0x000000009e8f7ea4}, + /* x^8192 mod p(x)` << 1, x^8256 mod p(x)` << 1 */ +- .octa 0x00000001c82e562c000000003076054e +- ++ {0x000000003076054e, 0x00000001c82e562c}, + /* x^7168 mod p(x)` << 1, x^7232 mod p(x)` << 1 */ +- .octa 0x00000000ca9f09ce000000012a608ea4 +- ++ {0x000000012a608ea4, 0x00000000ca9f09ce}, + /* x^6144 mod p(x)` << 1, x^6208 mod p(x)` << 1 */ +- .octa 0x00000000c63764e600000000784d05fe +- ++ {0x00000000784d05fe, 0x00000000c63764e6}, + /* x^5120 mod p(x)` << 1, x^5184 mod p(x)` << 1 */ +- .octa 0x0000000168d2e49e000000016ef0d82a +- ++ {0x000000016ef0d82a, 0x0000000168d2e49e}, + /* x^4096 mod p(x)` << 1, x^4160 mod p(x)` << 1 */ +- .octa 0x00000000e986c1480000000075bda454 +- ++ {0x0000000075bda454, 0x00000000e986c148}, + /* x^3072 mod p(x)` << 1, x^3136 mod p(x)` << 1 */ +- .octa 0x00000000cfb65894000000003dc0a1c4 +- ++ {0x000000003dc0a1c4, 0x00000000cfb65894}, + /* x^2048 mod p(x)` << 1, x^2112 mod p(x)` << 1 */ +- .octa 0x0000000111cadee400000000e9a5d8be +- ++ {0x00000000e9a5d8be, 0x0000000111cadee4}, + /* x^1024 mod p(x)` << 1, x^1088 mod p(x)` << 1 */ +- .octa 0x0000000171fb63ce00000001609bc4b4 +- +- .short_constants : +- +- /* Reduce final 1024-2048 bits to 64 bits, shifting 32 bits to include +- the trailing 32 bits of zeros */ +- /* x^1952 mod p(x)`, x^1984 mod p(x)`, x^2016 mod p(x)`, x^2048 mod +- p(x)` */ +- .octa 0x7fec2963e5bf80485cf015c388e56f72 +- +- /* x^1824 mod p(x)`, x^1856 mod p(x)`, x^1888 mod p(x)`, x^1920 mod +- p(x)` */ +- .octa 0x38e888d4844752a9963a18920246e2e6 +- +- /* x^1696 mod p(x)`, x^1728 mod p(x)`, x^1760 mod p(x)`, x^1792 mod +- p(x)` */ +- .octa 0x42316c00730206ad419a441956993a31 +- +- /* x^1568 mod p(x)`, x^1600 mod p(x)`, x^1632 mod p(x)`, x^1664 mod +- p(x)` */ +- .octa 0x543d5c543e65ddf9924752ba2b830011 +- +- /* x^1440 mod p(x)`, x^1472 mod p(x)`, x^1504 mod p(x)`, x^1536 mod +- p(x)` */ +- .octa 0x78e87aaf56767c9255bd7f9518e4a304 +- +- /* x^1312 mod p(x)`, x^1344 mod p(x)`, x^1376 mod p(x)`, x^1408 mod +- p(x)` */ +- .octa 0x8f68fcec1903da7f6d76739fe0553f1e +- +- /* x^1184 mod p(x)`, x^1216 mod p(x)`, x^1248 mod p(x)`, x^1280 mod +- p(x)` */ +- .octa 0x3f4840246791d588c133722b1fe0b5c3 +- +- /* x^1056 mod p(x)`, x^1088 mod p(x)`, x^1120 mod p(x)`, x^1152 mod +- p(x)` */ +- .octa 0x34c96751b04de25a64b67ee0e55ef1f3 +- +- /* x^928 mod p(x)`, x^960 mod p(x)`, x^992 mod p(x)`, x^1024 mod p(x)` +- */ +- .octa 0x156c8e180b4a395b069db049b8fdb1e7 +- +- /* x^800 mod p(x)`, x^832 mod p(x)`, x^864 mod p(x)`, x^896 mod p(x)` */ +- .octa 0xe0b99ccbe661f7bea11bfaf3c9e90b9e +- +- /* x^672 mod p(x)`, x^704 mod p(x)`, x^736 mod p(x)`, x^768 mod p(x)` */ +- .octa 0x041d37768cd75659817cdc5119b29a35 +- +- /* x^544 mod p(x)`, x^576 mod p(x)`, x^608 mod p(x)`, x^640 mod p(x)` */ +- .octa 0x3a0777818cfaa9651ce9d94b36c41f1c +- +- /* x^416 mod p(x)`, x^448 mod p(x)`, x^480 mod p(x)`, x^512 mod p(x)` */ +- .octa 0x0e148e8252377a554f256efcb82be955 +- +- /* x^288 mod p(x)`, x^320 mod p(x)`, x^352 mod p(x)`, x^384 mod p(x)` */ +- .octa 0x9c25531d19e65ddeec1631edb2dea967 +- +- /* x^160 mod p(x)`, x^192 mod p(x)`, x^224 mod p(x)`, x^256 mod p(x)` */ +- .octa 0x790606ff9957c0a65d27e147510ac59a ++ {0x00000001609bc4b4, 0x0000000171fb63ce} ++#else /* __LITTLE_ENDIAN__ */ ++ /* x^261120 mod p(x)` << 1, x^261184 mod p(x)` << 1 */ ++ {0x00000000b6ca9e20, 0x000000009c37c408}, ++ /* x^260096 mod p(x)` << 1, x^260160 mod p(x)` << 1 */ ++ {0x00000000350249a8, 0x00000001b51df26c}, ++ /* x^259072 mod p(x)` << 1, x^259136 mod p(x)` << 1 */ ++ {0x00000001862dac54, 0x000000000724b9d0}, ++ /* x^258048 mod p(x)` << 1, x^258112 mod p(x)` << 1 */ ++ {0x00000001d87fb48c, 0x00000001c00532fe}, ++ /* x^257024 mod p(x)` << 1, x^257088 mod p(x)` << 1 */ ++ {0x00000001f39b699e, 0x00000000f05a9362}, ++ /* x^256000 mod p(x)` << 1, x^256064 mod p(x)` << 1 */ ++ {0x0000000101da11b4, 0x00000001e1007970}, ++ /* x^254976 mod p(x)` << 1, x^255040 mod p(x)` << 1 */ ++ {0x00000001cab571e0, 0x00000000a57366ee}, ++ /* x^253952 mod p(x)` << 1, x^254016 mod p(x)` << 1 */ ++ {0x00000000c7020cfe, 0x0000000192011284}, ++ /* x^252928 mod p(x)` << 1, x^252992 mod p(x)` << 1 */ ++ {0x00000000cdaed1ae, 0x0000000162716d9a}, ++ /* x^251904 mod p(x)` << 1, x^251968 mod p(x)` << 1 */ ++ {0x00000001e804effc, 0x00000000cd97ecde}, ++ /* x^250880 mod p(x)` << 1, x^250944 mod p(x)` << 1 */ ++ {0x0000000077c3ea3a, 0x0000000058812bc0}, ++ /* x^249856 mod p(x)` << 1, x^249920 mod p(x)` << 1 */ ++ {0x0000000068df31b4, 0x0000000088b8c12e}, ++ /* x^248832 mod p(x)` << 1, x^248896 mod p(x)` << 1 */ ++ {0x00000000b059b6c2, 0x00000001230b234c}, ++ /* x^247808 mod p(x)` << 1, x^247872 mod p(x)` << 1 */ ++ {0x0000000145fb8ed8, 0x00000001120b416e}, ++ /* x^246784 mod p(x)` << 1, x^246848 mod p(x)` << 1 */ ++ {0x00000000cbc09168, 0x00000001974aecb0}, ++ /* x^245760 mod p(x)` << 1, x^245824 mod p(x)` << 1 */ ++ {0x000000005ceeedc2, 0x000000008ee3f226}, ++ /* x^244736 mod p(x)` << 1, x^244800 mod p(x)` << 1 */ ++ {0x0000000047d74e86, 0x00000001089aba9a}, ++ /* x^243712 mod p(x)` << 1, x^243776 mod p(x)` << 1 */ ++ {0x00000001407e9e22, 0x0000000065113872}, ++ /* x^242688 mod p(x)` << 1, x^242752 mod p(x)` << 1 */ ++ {0x00000001da967bda, 0x000000005c07ec10}, ++ /* x^241664 mod p(x)` << 1, x^241728 mod p(x)` << 1 */ ++ {0x000000006c898368, 0x0000000187590924}, ++ /* x^240640 mod p(x)` << 1, x^240704 mod p(x)` << 1 */ ++ {0x00000000f2d14c98, 0x00000000e35da7c6}, ++ /* x^239616 mod p(x)` << 1, x^239680 mod p(x)` << 1 */ ++ {0x00000001993c6ad4, 0x000000000415855a}, ++ /* x^238592 mod p(x)` << 1, x^238656 mod p(x)` << 1 */ ++ {0x000000014683d1ac, 0x0000000073617758}, ++ /* x^237568 mod p(x)` << 1, x^237632 mod p(x)` << 1 */ ++ {0x00000001a7c93e6c, 0x0000000176021d28}, ++ /* x^236544 mod p(x)` << 1, x^236608 mod p(x)` << 1 */ ++ {0x000000010211e90a, 0x00000001c358fd0a}, ++ /* x^235520 mod p(x)` << 1, x^235584 mod p(x)` << 1 */ ++ {0x000000001119403e, 0x00000001ff7a2c18}, ++ /* x^234496 mod p(x)` << 1, x^234560 mod p(x)` << 1 */ ++ {0x000000001c3261aa, 0x00000000f2d9f7e4}, ++ /* x^233472 mod p(x)` << 1, x^233536 mod p(x)` << 1 */ ++ {0x000000014e37a634, 0x000000016cf1f9c8}, ++ /* x^232448 mod p(x)` << 1, x^232512 mod p(x)` << 1 */ ++ {0x0000000073786c0c, 0x000000010af9279a}, ++ /* x^231424 mod p(x)` << 1, x^231488 mod p(x)` << 1 */ ++ {0x000000011dc037f8, 0x0000000004f101e8}, ++ /* x^230400 mod p(x)` << 1, x^230464 mod p(x)` << 1 */ ++ {0x0000000031433dfc, 0x0000000070bcf184}, ++ /* x^229376 mod p(x)` << 1, x^229440 mod p(x)` << 1 */ ++ {0x000000009cde8348, 0x000000000a8de642}, ++ /* x^228352 mod p(x)` << 1, x^228416 mod p(x)` << 1 */ ++ {0x0000000038d3c2a6, 0x0000000062ea130c}, ++ /* x^227328 mod p(x)` << 1, x^227392 mod p(x)` << 1 */ ++ {0x000000011b25f260, 0x00000001eb31cbb2}, ++ /* x^226304 mod p(x)` << 1, x^226368 mod p(x)` << 1 */ ++ {0x000000001629e6f0, 0x0000000170783448}, ++ /* x^225280 mod p(x)` << 1, x^225344 mod p(x)` << 1 */ ++ {0x0000000160838b4c, 0x00000001a684b4c6}, ++ /* x^224256 mod p(x)` << 1, x^224320 mod p(x)` << 1 */ ++ {0x000000007a44011c, 0x00000000253ca5b4}, ++ /* x^223232 mod p(x)` << 1, x^223296 mod p(x)` << 1 */ ++ {0x00000000226f417a, 0x0000000057b4b1e2}, ++ /* x^222208 mod p(x)` << 1, x^222272 mod p(x)` << 1 */ ++ {0x0000000045eb2eb4, 0x00000000b6bd084c}, ++ /* x^221184 mod p(x)` << 1, x^221248 mod p(x)` << 1 */ ++ {0x000000014459d70c, 0x0000000123c2d592}, ++ /* x^220160 mod p(x)` << 1, x^220224 mod p(x)` << 1 */ ++ {0x00000001d406ed82, 0x00000000159dafce}, ++ /* x^219136 mod p(x)` << 1, x^219200 mod p(x)` << 1 */ ++ {0x0000000160c8e1a8, 0x0000000127e1a64e}, ++ /* x^218112 mod p(x)` << 1, x^218176 mod p(x)` << 1 */ ++ {0x0000000027ba8098, 0x0000000056860754}, ++ /* x^217088 mod p(x)` << 1, x^217152 mod p(x)` << 1 */ ++ {0x000000006d92d018, 0x00000001e661aae8}, ++ /* x^216064 mod p(x)` << 1, x^216128 mod p(x)` << 1 */ ++ {0x000000012ed7e3f2, 0x00000000f82c6166}, ++ /* x^215040 mod p(x)` << 1, x^215104 mod p(x)` << 1 */ ++ {0x000000002dc87788, 0x00000000c4f9c7ae}, ++ /* x^214016 mod p(x)` << 1, x^214080 mod p(x)` << 1 */ ++ {0x0000000018240bb8, 0x0000000074203d20}, ++ /* x^212992 mod p(x)` << 1, x^213056 mod p(x)` << 1 */ ++ {0x000000001ad38158, 0x0000000198173052}, ++ /* x^211968 mod p(x)` << 1, x^212032 mod p(x)` << 1 */ ++ {0x00000001396b78f2, 0x00000001ce8aba54}, ++ /* x^210944 mod p(x)` << 1, x^211008 mod p(x)` << 1 */ ++ {0x000000011a681334, 0x00000001850d5d94}, ++ /* x^209920 mod p(x)` << 1, x^209984 mod p(x)` << 1 */ ++ {0x000000012104732e, 0x00000001d609239c}, ++ /* x^208896 mod p(x)` << 1, x^208960 mod p(x)` << 1 */ ++ {0x00000000a140d90c, 0x000000001595f048}, ++ /* x^207872 mod p(x)` << 1, x^207936 mod p(x)` << 1 */ ++ {0x00000001b7215eda, 0x0000000042ccee08}, ++ /* x^206848 mod p(x)` << 1, x^206912 mod p(x)` << 1 */ ++ {0x00000001aaf1df3c, 0x000000010a389d74}, ++ /* x^205824 mod p(x)` << 1, x^205888 mod p(x)` << 1 */ ++ {0x0000000029d15b8a, 0x000000012a840da6}, ++ /* x^204800 mod p(x)` << 1, x^204864 mod p(x)` << 1 */ ++ {0x00000000f1a96922, 0x000000001d181c0c}, ++ /* x^203776 mod p(x)` << 1, x^203840 mod p(x)` << 1 */ ++ {0x00000001ac80d03c, 0x0000000068b7d1f6}, ++ /* x^202752 mod p(x)` << 1, x^202816 mod p(x)` << 1 */ ++ {0x000000000f11d56a, 0x000000005b0f14fc}, ++ /* x^201728 mod p(x)` << 1, x^201792 mod p(x)` << 1 */ ++ {0x00000001f1c022a2, 0x0000000179e9e730}, ++ /* x^200704 mod p(x)` << 1, x^200768 mod p(x)` << 1 */ ++ {0x0000000173d00ae2, 0x00000001ce1368d6}, ++ /* x^199680 mod p(x)` << 1, x^199744 mod p(x)` << 1 */ ++ {0x00000001d4ffe4ac, 0x0000000112c3a84c}, ++ /* x^198656 mod p(x)` << 1, x^198720 mod p(x)` << 1 */ ++ {0x000000016edc5ae4, 0x00000000de940fee}, ++ /* x^197632 mod p(x)` << 1, x^197696 mod p(x)` << 1 */ ++ {0x00000001f1a02140, 0x00000000fe896b7e}, ++ /* x^196608 mod p(x)` << 1, x^196672 mod p(x)` << 1 */ ++ {0x00000000ca0b28a0, 0x00000001f797431c}, ++ /* x^195584 mod p(x)` << 1, x^195648 mod p(x)` << 1 */ ++ {0x00000001928e30a2, 0x0000000053e989ba}, ++ /* x^194560 mod p(x)` << 1, x^194624 mod p(x)` << 1 */ ++ {0x0000000097b1b002, 0x000000003920cd16}, ++ /* x^193536 mod p(x)` << 1, x^193600 mod p(x)` << 1 */ ++ {0x00000000b15bf906, 0x00000001e6f579b8}, ++ /* x^192512 mod p(x)` << 1, x^192576 mod p(x)` << 1 */ ++ {0x00000000411c5d52, 0x000000007493cb0a}, ++ /* x^191488 mod p(x)` << 1, x^191552 mod p(x)` << 1 */ ++ {0x00000001c36f3300, 0x00000001bdd376d8}, ++ /* x^190464 mod p(x)` << 1, x^190528 mod p(x)` << 1 */ ++ {0x00000001119227e0, 0x000000016badfee6}, ++ /* x^189440 mod p(x)` << 1, x^189504 mod p(x)` << 1 */ ++ {0x00000000114d4702, 0x0000000071de5c58}, ++ /* x^188416 mod p(x)` << 1, x^188480 mod p(x)` << 1 */ ++ {0x00000000458b5b98, 0x00000000453f317c}, ++ /* x^187392 mod p(x)` << 1, x^187456 mod p(x)` << 1 */ ++ {0x000000012e31fb8e, 0x0000000121675cce}, ++ /* x^186368 mod p(x)` << 1, x^186432 mod p(x)` << 1 */ ++ {0x000000005cf619d8, 0x00000001f409ee92}, ++ /* x^185344 mod p(x)` << 1, x^185408 mod p(x)` << 1 */ ++ {0x0000000063f4d8b2, 0x00000000f36b9c88}, ++ /* x^184320 mod p(x)` << 1, x^184384 mod p(x)` << 1 */ ++ {0x000000004138dc8a, 0x0000000036b398f4}, ++ /* x^183296 mod p(x)` << 1, x^183360 mod p(x)` << 1 */ ++ {0x00000001d29ee8e0, 0x00000001748f9adc}, ++ /* x^182272 mod p(x)` << 1, x^182336 mod p(x)` << 1 */ ++ {0x000000006a08ace8, 0x00000001be94ec00}, ++ /* x^181248 mod p(x)` << 1, x^181312 mod p(x)` << 1 */ ++ {0x0000000127d42010, 0x00000000b74370d6}, ++ /* x^180224 mod p(x)` << 1, x^180288 mod p(x)` << 1 */ ++ {0x0000000019d76b62, 0x00000001174d0b98}, ++ /* x^179200 mod p(x)` << 1, x^179264 mod p(x)` << 1 */ ++ {0x00000001b1471f6e, 0x00000000befc06a4}, ++ /* x^178176 mod p(x)` << 1, x^178240 mod p(x)` << 1 */ ++ {0x00000001f64c19cc, 0x00000001ae125288}, ++ /* x^177152 mod p(x)` << 1, x^177216 mod p(x)` << 1 */ ++ {0x00000000003c0ea0, 0x0000000095c19b34}, ++ /* x^176128 mod p(x)` << 1, x^176192 mod p(x)` << 1 */ ++ {0x000000014d73abf6, 0x00000001a78496f2}, ++ /* x^175104 mod p(x)` << 1, x^175168 mod p(x)` << 1 */ ++ {0x00000001620eb844, 0x00000001ac5390a0}, ++ /* x^174080 mod p(x)` << 1, x^174144 mod p(x)` << 1 */ ++ {0x0000000147655048, 0x000000002a80ed6e}, ++ /* x^173056 mod p(x)` << 1, x^173120 mod p(x)` << 1 */ ++ {0x0000000067b5077e, 0x00000001fa9b0128}, ++ /* x^172032 mod p(x)` << 1, x^172096 mod p(x)` << 1 */ ++ {0x0000000010ffe206, 0x00000001ea94929e}, ++ /* x^171008 mod p(x)` << 1, x^171072 mod p(x)` << 1 */ ++ {0x000000000fee8f1e, 0x0000000125f4305c}, ++ /* x^169984 mod p(x)` << 1, x^170048 mod p(x)` << 1 */ ++ {0x00000001da26fbae, 0x00000001471e2002}, ++ /* x^168960 mod p(x)` << 1, x^169024 mod p(x)` << 1 */ ++ {0x00000001b3a8bd88, 0x0000000132d2253a}, ++ /* x^167936 mod p(x)` << 1, x^168000 mod p(x)` << 1 */ ++ {0x00000000e8f3898e, 0x00000000f26b3592}, ++ /* x^166912 mod p(x)` << 1, x^166976 mod p(x)` << 1 */ ++ {0x00000000b0d0d28c, 0x00000000bc8b67b0}, ++ /* x^165888 mod p(x)` << 1, x^165952 mod p(x)` << 1 */ ++ {0x0000000030f2a798, 0x000000013a826ef2}, ++ /* x^164864 mod p(x)` << 1, x^164928 mod p(x)` << 1 */ ++ {0x000000000fba1002, 0x0000000081482c84}, ++ /* x^163840 mod p(x)` << 1, x^163904 mod p(x)` << 1 */ ++ {0x00000000bdb9bd72, 0x00000000e77307c2}, ++ /* x^162816 mod p(x)` << 1, x^162880 mod p(x)` << 1 */ ++ {0x0000000075d3bf5a, 0x00000000d4a07ec8}, ++ /* x^161792 mod p(x)` << 1, x^161856 mod p(x)` << 1 */ ++ {0x00000000ef1f98a0, 0x0000000017102100}, ++ /* x^160768 mod p(x)` << 1, x^160832 mod p(x)` << 1 */ ++ {0x00000000689c7602, 0x00000000db406486}, ++ /* x^159744 mod p(x)` << 1, x^159808 mod p(x)` << 1 */ ++ {0x000000016d5fa5fe, 0x0000000192db7f88}, ++ /* x^158720 mod p(x)` << 1, x^158784 mod p(x)` << 1 */ ++ {0x00000001d0d2b9ca, 0x000000018bf67b1e}, ++ /* x^157696 mod p(x)` << 1, x^157760 mod p(x)` << 1 */ ++ {0x0000000041e7b470, 0x000000007c09163e}, ++ /* x^156672 mod p(x)` << 1, x^156736 mod p(x)` << 1 */ ++ {0x00000001cbb6495e, 0x000000000adac060}, ++ /* x^155648 mod p(x)` << 1, x^155712 mod p(x)` << 1 */ ++ {0x000000010052a0b0, 0x00000000bd8316ae}, ++ /* x^154624 mod p(x)` << 1, x^154688 mod p(x)` << 1 */ ++ {0x00000001d8effb5c, 0x000000019f09ab54}, ++ /* x^153600 mod p(x)` << 1, x^153664 mod p(x)` << 1 */ ++ {0x00000001d969853c, 0x0000000125155542}, ++ /* x^152576 mod p(x)` << 1, x^152640 mod p(x)` << 1 */ ++ {0x00000000523ccce2, 0x000000018fdb5882}, ++ /* x^151552 mod p(x)` << 1, x^151616 mod p(x)` << 1 */ ++ {0x000000001e2436bc, 0x00000000e794b3f4}, ++ /* x^150528 mod p(x)` << 1, x^150592 mod p(x)` << 1 */ ++ {0x00000000ddd1c3a2, 0x000000016f9bb022}, ++ /* x^149504 mod p(x)` << 1, x^149568 mod p(x)` << 1 */ ++ {0x0000000019fcfe38, 0x00000000290c9978}, ++ /* x^148480 mod p(x)` << 1, x^148544 mod p(x)` << 1 */ ++ {0x00000001ce95db64, 0x0000000083c0f350}, ++ /* x^147456 mod p(x)` << 1, x^147520 mod p(x)` << 1 */ ++ {0x00000000af582806, 0x0000000173ea6628}, ++ /* x^146432 mod p(x)` << 1, x^146496 mod p(x)` << 1 */ ++ {0x00000001006388f6, 0x00000001c8b4e00a}, ++ /* x^145408 mod p(x)` << 1, x^145472 mod p(x)` << 1 */ ++ {0x0000000179eca00a, 0x00000000de95d6aa}, ++ /* x^144384 mod p(x)` << 1, x^144448 mod p(x)` << 1 */ ++ {0x0000000122410a6a, 0x000000010b7f7248}, ++ /* x^143360 mod p(x)` << 1, x^143424 mod p(x)` << 1 */ ++ {0x000000004288e87c, 0x00000001326e3a06}, ++ /* x^142336 mod p(x)` << 1, x^142400 mod p(x)` << 1 */ ++ {0x000000016c5490da, 0x00000000bb62c2e6}, ++ /* x^141312 mod p(x)` << 1, x^141376 mod p(x)` << 1 */ ++ {0x00000000d1c71f6e, 0x0000000156a4b2c2}, ++ /* x^140288 mod p(x)` << 1, x^140352 mod p(x)` << 1 */ ++ {0x00000001b4ce08a6, 0x000000011dfe763a}, ++ /* x^139264 mod p(x)` << 1, x^139328 mod p(x)` << 1 */ ++ {0x00000001466ba60c, 0x000000007bcca8e2}, ++ /* x^138240 mod p(x)` << 1, x^138304 mod p(x)` << 1 */ ++ {0x00000001f6c488a4, 0x0000000186118faa}, ++ /* x^137216 mod p(x)` << 1, x^137280 mod p(x)` << 1 */ ++ {0x000000013bfb0682, 0x0000000111a65a88}, ++ /* x^136192 mod p(x)` << 1, x^136256 mod p(x)` << 1 */ ++ {0x00000000690e9e54, 0x000000003565e1c4}, ++ /* x^135168 mod p(x)` << 1, x^135232 mod p(x)` << 1 */ ++ {0x00000000281346b6, 0x000000012ed02a82}, ++ /* x^134144 mod p(x)` << 1, x^134208 mod p(x)` << 1 */ ++ {0x0000000156464024, 0x00000000c486ecfc}, ++ /* x^133120 mod p(x)` << 1, x^133184 mod p(x)` << 1 */ ++ {0x000000016063a8dc, 0x0000000001b951b2}, ++ /* x^132096 mod p(x)` << 1, x^132160 mod p(x)` << 1 */ ++ {0x0000000116a66362, 0x0000000048143916}, ++ /* x^131072 mod p(x)` << 1, x^131136 mod p(x)` << 1 */ ++ {0x000000017e8aa4d2, 0x00000001dc2ae124}, ++ /* x^130048 mod p(x)` << 1, x^130112 mod p(x)` << 1 */ ++ {0x00000001728eb10c, 0x00000001416c58d6}, ++ /* x^129024 mod p(x)` << 1, x^129088 mod p(x)` << 1 */ ++ {0x00000001b08fd7fa, 0x00000000a479744a}, ++ /* x^128000 mod p(x)` << 1, x^128064 mod p(x)` << 1 */ ++ {0x00000001092a16e8, 0x0000000096ca3a26}, ++ /* x^126976 mod p(x)` << 1, x^127040 mod p(x)` << 1 */ ++ {0x00000000a505637c, 0x00000000ff223d4e}, ++ /* x^125952 mod p(x)` << 1, x^126016 mod p(x)` << 1 */ ++ {0x00000000d94869b2, 0x000000010e84da42}, ++ /* x^124928 mod p(x)` << 1, x^124992 mod p(x)` << 1 */ ++ {0x00000001c8b203ae, 0x00000001b61ba3d0}, ++ /* x^123904 mod p(x)` << 1, x^123968 mod p(x)` << 1 */ ++ {0x000000005704aea0, 0x00000000680f2de8}, ++ /* x^122880 mod p(x)` << 1, x^122944 mod p(x)` << 1 */ ++ {0x000000012e295fa2, 0x000000008772a9a8}, ++ /* x^121856 mod p(x)` << 1, x^121920 mod p(x)` << 1 */ ++ {0x000000011d0908bc, 0x0000000155f295bc}, ++ /* x^120832 mod p(x)` << 1, x^120896 mod p(x)` << 1 */ ++ {0x0000000193ed97ea, 0x00000000595f9282}, ++ /* x^119808 mod p(x)` << 1, x^119872 mod p(x)` << 1 */ ++ {0x000000013a0f1c52, 0x0000000164b1c25a}, ++ /* x^118784 mod p(x)` << 1, x^118848 mod p(x)` << 1 */ ++ {0x000000010c2c40c0, 0x00000000fbd67c50}, ++ /* x^117760 mod p(x)` << 1, x^117824 mod p(x)` << 1 */ ++ {0x00000000ff6fac3e, 0x0000000096076268}, ++ /* x^116736 mod p(x)` << 1, x^116800 mod p(x)` << 1 */ ++ {0x000000017b3609c0, 0x00000001d288e4cc}, ++ /* x^115712 mod p(x)` << 1, x^115776 mod p(x)` << 1 */ ++ {0x0000000088c8c922, 0x00000001eaac1bdc}, ++ /* x^114688 mod p(x)` << 1, x^114752 mod p(x)` << 1 */ ++ {0x00000001751baae6, 0x00000001f1ea39e2}, ++ /* x^113664 mod p(x)` << 1, x^113728 mod p(x)` << 1 */ ++ {0x0000000107952972, 0x00000001eb6506fc}, ++ /* x^112640 mod p(x)` << 1, x^112704 mod p(x)` << 1 */ ++ {0x0000000162b00abe, 0x000000010f806ffe}, ++ /* x^111616 mod p(x)` << 1, x^111680 mod p(x)` << 1 */ ++ {0x000000000d7b404c, 0x000000010408481e}, ++ /* x^110592 mod p(x)` << 1, x^110656 mod p(x)` << 1 */ ++ {0x00000000763b13d4, 0x0000000188260534}, ++ /* x^109568 mod p(x)` << 1, x^109632 mod p(x)` << 1 */ ++ {0x00000000f6dc22d8, 0x0000000058fc73e0}, ++ /* x^108544 mod p(x)` << 1, x^108608 mod p(x)` << 1 */ ++ {0x000000007daae060, 0x00000000391c59b8}, ++ /* x^107520 mod p(x)` << 1, x^107584 mod p(x)` << 1 */ ++ {0x000000013359ab7c, 0x000000018b638400}, ++ /* x^106496 mod p(x)` << 1, x^106560 mod p(x)` << 1 */ ++ {0x000000008add438a, 0x000000011738f5c4}, ++ /* x^105472 mod p(x)` << 1, x^105536 mod p(x)` << 1 */ ++ {0x00000001edbefdea, 0x000000008cf7c6da}, ++ /* x^104448 mod p(x)` << 1, x^104512 mod p(x)` << 1 */ ++ {0x000000004104e0f8, 0x00000001ef97fb16}, ++ /* x^103424 mod p(x)` << 1, x^103488 mod p(x)` << 1 */ ++ {0x00000000b48a8222, 0x0000000102130e20}, ++ /* x^102400 mod p(x)` << 1, x^102464 mod p(x)` << 1 */ ++ {0x00000001bcb46844, 0x00000000db968898}, ++ /* x^101376 mod p(x)` << 1, x^101440 mod p(x)` << 1 */ ++ {0x000000013293ce0a, 0x00000000b5047b5e}, ++ /* x^100352 mod p(x)` << 1, x^100416 mod p(x)` << 1 */ ++ {0x00000001710d0844, 0x000000010b90fdb2}, ++ /* x^99328 mod p(x)` << 1, x^99392 mod p(x)` << 1 */ ++ {0x0000000117907f6e, 0x000000004834a32e}, ++ /* x^98304 mod p(x)` << 1, x^98368 mod p(x)` << 1 */ ++ {0x0000000087ddf93e, 0x0000000059c8f2b0}, ++ /* x^97280 mod p(x)` << 1, x^97344 mod p(x)` << 1 */ ++ {0x000000005970e9b0, 0x0000000122cec508}, ++ /* x^96256 mod p(x)` << 1, x^96320 mod p(x)` << 1 */ ++ {0x0000000185b2b7d0, 0x000000000a330cda}, ++ /* x^95232 mod p(x)` << 1, x^95296 mod p(x)` << 1 */ ++ {0x00000001dcee0efc, 0x000000014a47148c}, ++ /* x^94208 mod p(x)` << 1, x^94272 mod p(x)` << 1 */ ++ {0x0000000030da2722, 0x0000000042c61cb8}, ++ /* x^93184 mod p(x)` << 1, x^93248 mod p(x)` << 1 */ ++ {0x000000012f925a18, 0x0000000012fe6960}, ++ /* x^92160 mod p(x)` << 1, x^92224 mod p(x)` << 1 */ ++ {0x00000000dd2e357c, 0x00000000dbda2c20}, ++ /* x^91136 mod p(x)` << 1, x^91200 mod p(x)` << 1 */ ++ {0x00000000071c80de, 0x000000011122410c}, ++ /* x^90112 mod p(x)` << 1, x^90176 mod p(x)` << 1 */ ++ {0x000000011513140a, 0x00000000977b2070}, ++ /* x^89088 mod p(x)` << 1, x^89152 mod p(x)` << 1 */ ++ {0x00000001df876e8e, 0x000000014050438e}, ++ /* x^88064 mod p(x)` << 1, x^88128 mod p(x)` << 1 */ ++ {0x000000015f81d6ce, 0x0000000147c840e8}, ++ /* x^87040 mod p(x)` << 1, x^87104 mod p(x)` << 1 */ ++ {0x000000019dd94dbe, 0x00000001cc7c88ce}, ++ /* x^86016 mod p(x)` << 1, x^86080 mod p(x)` << 1 */ ++ {0x00000001373d206e, 0x00000001476b35a4}, ++ /* x^84992 mod p(x)` << 1, x^85056 mod p(x)` << 1 */ ++ {0x00000000668ccade, 0x000000013d52d508}, ++ /* x^83968 mod p(x)` << 1, x^84032 mod p(x)` << 1 */ ++ {0x00000001b192d268, 0x000000008e4be32e}, ++ /* x^82944 mod p(x)` << 1, x^83008 mod p(x)` << 1 */ ++ {0x00000000e30f3a78, 0x00000000024120fe}, ++ /* x^81920 mod p(x)` << 1, x^81984 mod p(x)` << 1 */ ++ {0x000000010ef1f7bc, 0x00000000ddecddb4}, ++ /* x^80896 mod p(x)` << 1, x^80960 mod p(x)` << 1 */ ++ {0x00000001f5ac7380, 0x00000000d4d403bc}, ++ /* x^79872 mod p(x)` << 1, x^79936 mod p(x)` << 1 */ ++ {0x000000011822ea70, 0x00000001734b89aa}, ++ /* x^78848 mod p(x)` << 1, x^78912 mod p(x)` << 1 */ ++ {0x00000000c3a33848, 0x000000010e7a58d6}, ++ /* x^77824 mod p(x)` << 1, x^77888 mod p(x)` << 1 */ ++ {0x00000001bd151c24, 0x00000001f9f04e9c}, ++ /* x^76800 mod p(x)` << 1, x^76864 mod p(x)` << 1 */ ++ {0x0000000056002d76, 0x00000000b692225e}, ++ /* x^75776 mod p(x)` << 1, x^75840 mod p(x)` << 1 */ ++ {0x000000014657c4f4, 0x000000019b8d3f3e}, ++ /* x^74752 mod p(x)` << 1, x^74816 mod p(x)` << 1 */ ++ {0x0000000113742d7c, 0x00000001a874f11e}, ++ /* x^73728 mod p(x)` << 1, x^73792 mod p(x)` << 1 */ ++ {0x000000019c5920ba, 0x000000010d5a4254}, ++ /* x^72704 mod p(x)` << 1, x^72768 mod p(x)` << 1 */ ++ {0x000000005216d2d6, 0x00000000bbb2f5d6}, ++ /* x^71680 mod p(x)` << 1, x^71744 mod p(x)` << 1 */ ++ {0x0000000136f5ad8a, 0x0000000179cc0e36}, ++ /* x^70656 mod p(x)` << 1, x^70720 mod p(x)` << 1 */ ++ {0x000000018b07beb6, 0x00000001dca1da4a}, ++ /* x^69632 mod p(x)` << 1, x^69696 mod p(x)` << 1 */ ++ {0x00000000db1e93b0, 0x00000000feb1a192}, ++ /* x^68608 mod p(x)` << 1, x^68672 mod p(x)` << 1 */ ++ {0x000000000b96fa3a, 0x00000000d1eeedd6}, ++ /* x^67584 mod p(x)` << 1, x^67648 mod p(x)` << 1 */ ++ {0x00000001d9968af0, 0x000000008fad9bb4}, ++ /* x^66560 mod p(x)` << 1, x^66624 mod p(x)` << 1 */ ++ {0x000000000e4a77a2, 0x00000001884938e4}, ++ /* x^65536 mod p(x)` << 1, x^65600 mod p(x)` << 1 */ ++ {0x00000000508c2ac8, 0x00000001bc2e9bc0}, ++ /* x^64512 mod p(x)` << 1, x^64576 mod p(x)` << 1 */ ++ {0x0000000021572a80, 0x00000001f9658a68}, ++ /* x^63488 mod p(x)` << 1, x^63552 mod p(x)` << 1 */ ++ {0x00000001b859daf2, 0x000000001b9224fc}, ++ /* x^62464 mod p(x)` << 1, x^62528 mod p(x)` << 1 */ ++ {0x000000016f788474, 0x0000000055b2fb84}, ++ /* x^61440 mod p(x)` << 1, x^61504 mod p(x)` << 1 */ ++ {0x00000001b438810e, 0x000000018b090348}, ++ /* x^60416 mod p(x)` << 1, x^60480 mod p(x)` << 1 */ ++ {0x0000000095ddc6f2, 0x000000011ccbd5ea}, ++ /* x^59392 mod p(x)` << 1, x^59456 mod p(x)` << 1 */ ++ {0x00000001d977c20c, 0x0000000007ae47f8}, ++ /* x^58368 mod p(x)` << 1, x^58432 mod p(x)` << 1 */ ++ {0x00000000ebedb99a, 0x0000000172acbec0}, ++ /* x^57344 mod p(x)` << 1, x^57408 mod p(x)` << 1 */ ++ {0x00000001df9e9e92, 0x00000001c6e3ff20}, ++ /* x^56320 mod p(x)` << 1, x^56384 mod p(x)` << 1 */ ++ {0x00000001a4a3f952, 0x00000000e1b38744}, ++ /* x^55296 mod p(x)` << 1, x^55360 mod p(x)` << 1 */ ++ {0x00000000e2f51220, 0x00000000791585b2}, ++ /* x^54272 mod p(x)` << 1, x^54336 mod p(x)` << 1 */ ++ {0x000000004aa01f3e, 0x00000000ac53b894}, ++ /* x^53248 mod p(x)` << 1, x^53312 mod p(x)` << 1 */ ++ {0x00000000b3e90a58, 0x00000001ed5f2cf4}, ++ /* x^52224 mod p(x)` << 1, x^52288 mod p(x)` << 1 */ ++ {0x000000000c9ca2aa, 0x00000001df48b2e0}, ++ /* x^51200 mod p(x)` << 1, x^51264 mod p(x)` << 1 */ ++ {0x0000000151682316, 0x00000000049c1c62}, ++ /* x^50176 mod p(x)` << 1, x^50240 mod p(x)` << 1 */ ++ {0x0000000036fce78c, 0x000000017c460c12}, ++ /* x^49152 mod p(x)` << 1, x^49216 mod p(x)` << 1 */ ++ {0x000000009037dc10, 0x000000015be4da7e}, ++ /* x^48128 mod p(x)` << 1, x^48192 mod p(x)` << 1 */ ++ {0x00000000d3298582, 0x000000010f38f668}, ++ /* x^47104 mod p(x)` << 1, x^47168 mod p(x)` << 1 */ ++ {0x00000001b42e8ad6, 0x0000000039f40a00}, ++ /* x^46080 mod p(x)` << 1, x^46144 mod p(x)` << 1 */ ++ {0x00000000142a9838, 0x00000000bd4c10c4}, ++ /* x^45056 mod p(x)` << 1, x^45120 mod p(x)` << 1 */ ++ {0x0000000109c7f190, 0x0000000042db1d98}, ++ /* x^44032 mod p(x)` << 1, x^44096 mod p(x)` << 1 */ ++ {0x0000000056ff9310, 0x00000001c905bae6}, ++ /* x^43008 mod p(x)` << 1, x^43072 mod p(x)` << 1 */ ++ {0x00000001594513aa, 0x00000000069d40ea}, ++ /* x^41984 mod p(x)` << 1, x^42048 mod p(x)` << 1 */ ++ {0x00000001e3b5b1e8, 0x000000008e4fbad0}, ++ /* x^40960 mod p(x)` << 1, x^41024 mod p(x)` << 1 */ ++ {0x000000011dd5fc08, 0x0000000047bedd46}, ++ /* x^39936 mod p(x)` << 1, x^40000 mod p(x)` << 1 */ ++ {0x00000001675f0cc2, 0x0000000026396bf8}, ++ /* x^38912 mod p(x)` << 1, x^38976 mod p(x)` << 1 */ ++ {0x00000000d1c8dd44, 0x00000000379beb92}, ++ /* x^37888 mod p(x)` << 1, x^37952 mod p(x)` << 1 */ ++ {0x0000000115ebd3d8, 0x000000000abae54a}, ++ /* x^36864 mod p(x)` << 1, x^36928 mod p(x)` << 1 */ ++ {0x00000001ecbd0dac, 0x0000000007e6a128}, ++ /* x^35840 mod p(x)` << 1, x^35904 mod p(x)` << 1 */ ++ {0x00000000cdf67af2, 0x000000000ade29d2}, ++ /* x^34816 mod p(x)` << 1, x^34880 mod p(x)` << 1 */ ++ {0x000000004c01ff4c, 0x00000000f974c45c}, ++ /* x^33792 mod p(x)` << 1, x^33856 mod p(x)` << 1 */ ++ {0x00000000f2d8657e, 0x00000000e77ac60a}, ++ /* x^32768 mod p(x)` << 1, x^32832 mod p(x)` << 1 */ ++ {0x000000006bae74c4, 0x0000000145895816}, ++ /* x^31744 mod p(x)` << 1, x^31808 mod p(x)` << 1 */ ++ {0x0000000152af8aa0, 0x0000000038e362be}, ++ /* x^30720 mod p(x)` << 1, x^30784 mod p(x)` << 1 */ ++ {0x0000000004663802, 0x000000007f991a64}, ++ /* x^29696 mod p(x)` << 1, x^29760 mod p(x)` << 1 */ ++ {0x00000001ab2f5afc, 0x00000000fa366d3a}, ++ /* x^28672 mod p(x)` << 1, x^28736 mod p(x)` << 1 */ ++ {0x0000000074a4ebd4, 0x00000001a2bb34f0}, ++ /* x^27648 mod p(x)` << 1, x^27712 mod p(x)` << 1 */ ++ {0x00000001d7ab3a4c, 0x0000000028a9981e}, ++ /* x^26624 mod p(x)` << 1, x^26688 mod p(x)` << 1 */ ++ {0x00000001a8da60c6, 0x00000001dbc672be}, ++ /* x^25600 mod p(x)` << 1, x^25664 mod p(x)` << 1 */ ++ {0x000000013cf63820, 0x00000000b04d77f6}, ++ /* x^24576 mod p(x)` << 1, x^24640 mod p(x)` << 1 */ ++ {0x00000000bec12e1e, 0x0000000124400d96}, ++ /* x^23552 mod p(x)` << 1, x^23616 mod p(x)` << 1 */ ++ {0x00000001c6368010, 0x000000014ca4b414}, ++ /* x^22528 mod p(x)` << 1, x^22592 mod p(x)` << 1 */ ++ {0x00000001e6e78758, 0x000000012fe2c938}, ++ /* x^21504 mod p(x)` << 1, x^21568 mod p(x)` << 1 */ ++ {0x000000008d7f2b3c, 0x00000001faed01e6}, ++ /* x^20480 mod p(x)` << 1, x^20544 mod p(x)` << 1 */ ++ {0x000000016b4a156e, 0x000000007e80ecfe}, ++ /* x^19456 mod p(x)` << 1, x^19520 mod p(x)` << 1 */ ++ {0x00000001c63cfeb6, 0x0000000098daee94}, ++ /* x^18432 mod p(x)` << 1, x^18496 mod p(x)` << 1 */ ++ {0x000000015f902670, 0x000000010a04edea}, ++ /* x^17408 mod p(x)` << 1, x^17472 mod p(x)` << 1 */ ++ {0x00000001cd5de11e, 0x00000001c00b4524}, ++ /* x^16384 mod p(x)` << 1, x^16448 mod p(x)` << 1 */ ++ {0x000000001acaec54, 0x0000000170296550}, ++ /* x^15360 mod p(x)` << 1, x^15424 mod p(x)` << 1 */ ++ {0x000000002bd0ca78, 0x0000000181afaa48}, ++ /* x^14336 mod p(x)` << 1, x^14400 mod p(x)` << 1 */ ++ {0x0000000032d63d5c, 0x0000000185a31ffa}, ++ /* x^13312 mod p(x)` << 1, x^13376 mod p(x)` << 1 */ ++ {0x000000001c6d4e4c, 0x000000002469f608}, ++ /* x^12288 mod p(x)` << 1, x^12352 mod p(x)` << 1 */ ++ {0x0000000106a60b92, 0x000000006980102a}, ++ /* x^11264 mod p(x)` << 1, x^11328 mod p(x)` << 1 */ ++ {0x00000000d3855e12, 0x0000000111ea9ca8}, ++ /* x^10240 mod p(x)` << 1, x^10304 mod p(x)` << 1 */ ++ {0x00000000e3125636, 0x00000001bd1d29ce}, ++ /* x^9216 mod p(x)` << 1, x^9280 mod p(x)` << 1 */ ++ {0x000000009e8f7ea4, 0x00000001b34b9580}, ++ /* x^8192 mod p(x)` << 1, x^8256 mod p(x)` << 1 */ ++ {0x00000001c82e562c, 0x000000003076054e}, ++ /* x^7168 mod p(x)` << 1, x^7232 mod p(x)` << 1 */ ++ {0x00000000ca9f09ce, 0x000000012a608ea4}, ++ /* x^6144 mod p(x)` << 1, x^6208 mod p(x)` << 1 */ ++ {0x00000000c63764e6, 0x00000000784d05fe}, ++ /* x^5120 mod p(x)` << 1, x^5184 mod p(x)` << 1 */ ++ {0x0000000168d2e49e, 0x000000016ef0d82a}, ++ /* x^4096 mod p(x)` << 1, x^4160 mod p(x)` << 1 */ ++ {0x00000000e986c148, 0x0000000075bda454}, ++ /* x^3072 mod p(x)` << 1, x^3136 mod p(x)` << 1 */ ++ {0x00000000cfb65894, 0x000000003dc0a1c4}, ++ /* x^2048 mod p(x)` << 1, x^2112 mod p(x)` << 1 */ ++ {0x0000000111cadee4, 0x00000000e9a5d8be}, ++ /* x^1024 mod p(x)` << 1, x^1088 mod p(x)` << 1 */ ++ {0x0000000171fb63ce, 0x00000001609bc4b4} ++#endif /* __LITTLE_ENDIAN__ */ ++}; + +- /* x^32 mod p(x)`, x^64 mod p(x)`, x^96 mod p(x)`, x^128 mod p(x)` */ +- .octa 0x82f63b786ea2d55ca66805eb18b8ea18 ++/* Reduce final 1024-2048 bits to 64 bits, shifting 32 bits to include the ++ * trailing 32 bits of zeros */ ++ ++static const __vector unsigned long long vcrc_short_const[16] __attribute__(( ++ aligned(16))) = { ++#ifdef __LITTLE_ENDIAN__ ++ /* x^1952 mod p(x) , x^1984 mod p(x) , x^2016 mod p(x) , x^2048 mod p(x) */ ++ {0x5cf015c388e56f72, 0x7fec2963e5bf8048}, ++ /* x^1824 mod p(x) , x^1856 mod p(x) , x^1888 mod p(x) , x^1920 mod p(x) */ ++ {0x963a18920246e2e6, 0x38e888d4844752a9}, ++ /* x^1696 mod p(x) , x^1728 mod p(x) , x^1760 mod p(x) , x^1792 mod p(x) */ ++ {0x419a441956993a31, 0x42316c00730206ad}, ++ /* x^1568 mod p(x) , x^1600 mod p(x) , x^1632 mod p(x) , x^1664 mod p(x) */ ++ {0x924752ba2b830011, 0x543d5c543e65ddf9}, ++ /* x^1440 mod p(x) , x^1472 mod p(x) , x^1504 mod p(x) , x^1536 mod p(x) */ ++ {0x55bd7f9518e4a304, 0x78e87aaf56767c92}, ++ /* x^1312 mod p(x) , x^1344 mod p(x) , x^1376 mod p(x) , x^1408 mod p(x) */ ++ {0x6d76739fe0553f1e, 0x8f68fcec1903da7f}, ++ /* x^1184 mod p(x) , x^1216 mod p(x) , x^1248 mod p(x) , x^1280 mod p(x) */ ++ {0xc133722b1fe0b5c3, 0x3f4840246791d588}, ++ /* x^1056 mod p(x) , x^1088 mod p(x) , x^1120 mod p(x) , x^1152 mod p(x) */ ++ {0x64b67ee0e55ef1f3, 0x34c96751b04de25a}, ++ /* x^928 mod p(x) , x^960 mod p(x) , x^992 mod p(x) , x^1024 mod p(x) */ ++ {0x069db049b8fdb1e7, 0x156c8e180b4a395b}, ++ /* x^800 mod p(x) , x^832 mod p(x) , x^864 mod p(x) , x^896 mod p(x) */ ++ {0xa11bfaf3c9e90b9e, 0xe0b99ccbe661f7be}, ++ /* x^672 mod p(x) , x^704 mod p(x) , x^736 mod p(x) , x^768 mod p(x) */ ++ {0x817cdc5119b29a35, 0x041d37768cd75659}, ++ /* x^544 mod p(x) , x^576 mod p(x) , x^608 mod p(x) , x^640 mod p(x) */ ++ {0x1ce9d94b36c41f1c, 0x3a0777818cfaa965}, ++ /* x^416 mod p(x) , x^448 mod p(x) , x^480 mod p(x) , x^512 mod p(x) */ ++ {0x4f256efcb82be955, 0x0e148e8252377a55}, ++ /* x^288 mod p(x) , x^320 mod p(x) , x^352 mod p(x) , x^384 mod p(x) */ ++ {0xec1631edb2dea967, 0x9c25531d19e65dde}, ++ /* x^160 mod p(x) , x^192 mod p(x) , x^224 mod p(x) , x^256 mod p(x) */ ++ {0x5d27e147510ac59a, 0x790606ff9957c0a6}, ++ /* x^32 mod p(x) , x^64 mod p(x) , x^96 mod p(x) , x^128 mod p(x) */ ++ {0xa66805eb18b8ea18, 0x82f63b786ea2d55c} ++#else /* __LITTLE_ENDIAN__ */ ++ /* x^1952 mod p(x) , x^1984 mod p(x) , x^2016 mod p(x) , x^2048 mod p(x) */ ++ {0x7fec2963e5bf8048, 0x5cf015c388e56f72}, ++ /* x^1824 mod p(x) , x^1856 mod p(x) , x^1888 mod p(x) , x^1920 mod p(x) */ ++ {0x38e888d4844752a9, 0x963a18920246e2e6}, ++ /* x^1696 mod p(x) , x^1728 mod p(x) , x^1760 mod p(x) , x^1792 mod p(x) */ ++ {0x42316c00730206ad, 0x419a441956993a31}, ++ /* x^1568 mod p(x) , x^1600 mod p(x) , x^1632 mod p(x) , x^1664 mod p(x) */ ++ {0x543d5c543e65ddf9, 0x924752ba2b830011}, ++ /* x^1440 mod p(x) , x^1472 mod p(x) , x^1504 mod p(x) , x^1536 mod p(x) */ ++ {0x78e87aaf56767c92, 0x55bd7f9518e4a304}, ++ /* x^1312 mod p(x) , x^1344 mod p(x) , x^1376 mod p(x) , x^1408 mod p(x) */ ++ {0x8f68fcec1903da7f, 0x6d76739fe0553f1e}, ++ /* x^1184 mod p(x) , x^1216 mod p(x) , x^1248 mod p(x) , x^1280 mod p(x) */ ++ {0x3f4840246791d588, 0xc133722b1fe0b5c3}, ++ /* x^1056 mod p(x) , x^1088 mod p(x) , x^1120 mod p(x) , x^1152 mod p(x) */ ++ {0x34c96751b04de25a, 0x64b67ee0e55ef1f3}, ++ /* x^928 mod p(x) , x^960 mod p(x) , x^992 mod p(x) , x^1024 mod p(x) */ ++ {0x156c8e180b4a395b, 0x069db049b8fdb1e7}, ++ /* x^800 mod p(x) , x^832 mod p(x) , x^864 mod p(x) , x^896 mod p(x) */ ++ {0xe0b99ccbe661f7be, 0xa11bfaf3c9e90b9e}, ++ /* x^672 mod p(x) , x^704 mod p(x) , x^736 mod p(x) , x^768 mod p(x) */ ++ {0x041d37768cd75659, 0x817cdc5119b29a35}, ++ /* x^544 mod p(x) , x^576 mod p(x) , x^608 mod p(x) , x^640 mod p(x) */ ++ {0x3a0777818cfaa965, 0x1ce9d94b36c41f1c}, ++ /* x^416 mod p(x) , x^448 mod p(x) , x^480 mod p(x) , x^512 mod p(x) */ ++ {0x0e148e8252377a55, 0x4f256efcb82be955}, ++ /* x^288 mod p(x) , x^320 mod p(x) , x^352 mod p(x) , x^384 mod p(x) */ ++ {0x9c25531d19e65dde, 0xec1631edb2dea967}, ++ /* x^160 mod p(x) , x^192 mod p(x) , x^224 mod p(x) , x^256 mod p(x) */ ++ {0x790606ff9957c0a6, 0x5d27e147510ac59a}, ++ /* x^32 mod p(x) , x^64 mod p(x) , x^96 mod p(x) , x^128 mod p(x) */ ++ {0x82f63b786ea2d55c, 0xa66805eb18b8ea18} ++#endif /* __LITTLE_ENDIAN__ */ ++}; + +- .barrett_constants : +- /* 33 bit reflected Barrett constant m - (4^32)/n */ +- .octa 0x000000000000000000000000dea713f1 /* x^64 div p(x)` */ +- /* 33 bit reflected Barrett constant n */ +- .octa 0x00000000000000000000000105ec76f1 +-#endif ++/* Barrett constants */ ++/* 33 bit reflected Barrett constant m - (4^32)/n */ ++ ++static const __vector unsigned long long v_Barrett_const[2] ++ __attribute__((aligned(16))) = { ++/* x^64 div p(x) */ ++#ifdef __LITTLE_ENDIAN__ ++ {0x00000000dea713f1, 0x0000000000000000}, ++ {0x0000000105ec76f1, 0x0000000000000000} ++#else /* __LITTLE_ENDIAN__ */ ++ {0x0000000000000000, 0x00000000dea713f1}, ++ {0x0000000000000000, 0x0000000105ec76f1} ++#endif /* __LITTLE_ENDIAN__ */ ++}; ++#endif /* POWER8_INTRINSICS */ +diff --git a/util/crc32c_test.cc b/util/crc32c_test.cc +index 3e4f7396e7..546c6a4401 100644 +--- a/util/crc32c_test.cc ++++ b/util/crc32c_test.cc +@@ -108,6 +108,9 @@ TEST(CRC, StandardResults) { + EXPECT_EQ(~expected.crc32c, result); + } + ++ // NULL buffer ++ EXPECT_EQ((uint32_t)0, Value(NULL, 0)); ++ + // Test 2: stitching two computations + for (auto expected : expectedResults) { + size_t partialLength = expected.length / 2; diff --git a/package/rocksdb/0002-replace-POWER-crc32c-with-C-implementation.patch b/package/rocksdb/0002-replace-POWER-crc32c-with-C-implementation.patch deleted file mode 100644 index f0f4097369..0000000000 --- a/package/rocksdb/0002-replace-POWER-crc32c-with-C-implementation.patch +++ /dev/null @@ -1,4058 +0,0 @@ -From 085e4dcf8173e91311fbf9037d8bc9393f254c6f Mon Sep 17 00:00:00 2001 -From: Daniel Black -Date: Fri, 17 Apr 2020 18:54:37 +1000 -Subject: [PATCH] replace POWER crc32c with C implementation - -The presence of clang compile failures on POWER due to -missing ppc-asm.h prompted the replacement of the ASM -CRC32 implementation with the C implementation. - -https://github.com/antonblanchard/crc32-vpmsum/blob/master/vec_crc32.c -is used with only small include path change with the local copyright header -maintained. - -crc32c_ppc_constants.h per upstream generated, with assembler -compatible code removed. #pragma once per 64324e329eb0a9b4e77241a425a1615ff524c7f1 -removed unnecessary header wasn't used in util/crc32c.cc. - -util/crc32c.cc removes arch_ppc_crc32 which was only ever -used in a local context. Also incorporated significant advice from -tchaikov in #2869. HAVE_POWER was never passed from cmake, so replaced -with the architected _ARCH_PWR8 directive. Altivec overloading removed. - -Replaced arch_ppc_probe wrapper to used isAltivec directly. - -Corrects getauxval detection from 8bbd76edbf by including the header from the -right directory. - -From the crc32c_ppc.c (now replaced) comment: - - This wrapper function works around the fact that crc32_vpmsum - does not gracefully handle the case where the data pointer is NULL. There - may be room for performance improvement here. - -This isn't applicable provided the length is 0. Added test case for -this. - -[Retrieved from: -https://github.com/facebook/rocksdb/commit/085e4dcf8173e91311fbf9037d8bc9393f254c6f] -Signed-off-by: Fabrice Fontaine ---- - CMakeLists.txt | 19 +- - Makefile | 44 +- - util/crc32c.cc | 59 +- - util/crc32c_ppc.c | 679 ++++++++- - util/crc32c_ppc_asm.S | 752 ---------- - util/crc32c_ppc_clang_workaround.h | 93 ++ - util/crc32c_ppc_constants.h | 2084 ++++++++++++++++------------ - util/crc32c_test.cc | 3 + - 8 files changed, 1943 insertions(+), 1790 deletions(-) - delete mode 100644 util/crc32c_ppc_asm.S - create mode 100644 util/crc32c_ppc_clang_workaround.h - -diff --git a/CMakeLists.txt b/CMakeLists.txt -index 7a9bc71f80..5f8b226d51 100644 ---- a/CMakeLists.txt -+++ b/CMakeLists.txt -@@ -39,7 +39,7 @@ include(ReadVersion) - get_rocksdb_version(rocksdb_VERSION) - project(rocksdb - VERSION ${rocksdb_VERSION} -- LANGUAGES CXX C ASM) -+ LANGUAGES CXX C) - - if(POLICY CMP0042) - cmake_policy(SET CMP0042 NEW) -@@ -215,12 +215,6 @@ if(CMAKE_SYSTEM_PROCESSOR MATCHES "^(powerpc|ppc)64") - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mcpu=power8 -mtune=power8") - endif(HAS_POWER8) - endif(HAS_POWER9) -- CHECK_C_COMPILER_FLAG("-maltivec" HAS_ALTIVEC) -- if(HAS_ALTIVEC) -- message(STATUS " HAS_ALTIVEC yes") -- set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -maltivec") -- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -maltivec") -- endif(HAS_ALTIVEC) - endif(CMAKE_SYSTEM_PROCESSOR MATCHES "^(powerpc|ppc)64") - - if(CMAKE_SYSTEM_PROCESSOR MATCHES "aarch64|AARCH64") -@@ -490,7 +484,7 @@ if(HAVE_SCHED_GETCPU) - add_definitions(-DROCKSDB_SCHED_GETCPU_PRESENT) - endif() - --check_cxx_symbol_exists(getauxval auvx.h HAVE_AUXV_GETAUXVAL) -+check_cxx_symbol_exists(getauxval sys/auxv.h HAVE_AUXV_GETAUXVAL) - if(HAVE_AUXV_GETAUXVAL) - add_definitions(-DROCKSDB_AUXV_GETAUXVAL_PRESENT) - endif() -@@ -761,11 +755,14 @@ if(HAVE_SSE42 AND NOT MSVC) - PROPERTIES COMPILE_FLAGS "-msse4.2 -mpclmul") - endif() - --if(CMAKE_SYSTEM_PROCESSOR MATCHES "^(powerpc|ppc)64") -+if(HAS_POWER8) - list(APPEND SOURCES -+ util/crc32c_ppc.c) -+ set_source_files_properties( - util/crc32c_ppc.c -- util/crc32c_ppc_asm.S) --endif(CMAKE_SYSTEM_PROCESSOR MATCHES "^(powerpc|ppc)64") -+ PROPERTIES COMPILE_FLAGS "-maltivec" -+ COMPILE_DEFINITIONS "CRC32_FUNCTION=crc32c_ppc;CRC32_CONSTANTS_HEADER=\"crc32c_ppc_constants.h\"") -+endif(HAS_POWER8) - - if(HAS_ARMV8_CRC) - list(APPEND SOURCES -diff --git a/Makefile b/Makefile -index a258819f82..0249ce84bc 100644 ---- a/Makefile -+++ b/Makefile -@@ -132,16 +132,9 @@ OPT += -momit-leaf-frame-pointer - endif - endif - --ifeq (,$(shell $(CXX) -fsyntax-only -maltivec -xc /dev/null 2>&1)) --CXXFLAGS += -DHAS_ALTIVEC --CFLAGS += -DHAS_ALTIVEC --HAS_ALTIVEC=1 --endif -- - ifeq (,$(shell $(CXX) -fsyntax-only -mcpu=power8 -xc /dev/null 2>&1)) --CXXFLAGS += -DHAVE_POWER8 --CFLAGS += -DHAVE_POWER8 - HAVE_POWER8=1 -+POWER8_CFLAGS=-maltivec -DCRC32_CONSTANTS_HEADER='"crc32c_ppc_constants.h"' -DCRC32_FUNCTION=crc32c_ppc - endif - - ifeq (,$(shell $(CXX) -fsyntax-only -march=armv8-a+crc+crypto -xc /dev/null 2>&1)) -@@ -418,7 +411,6 @@ LIBOBJECTS = $(LIB_SOURCES:.cc=.o) - ifeq ($(HAVE_POWER8),1) - LIB_CC_OBJECTS = $(LIB_SOURCES:.cc=.o) - LIBOBJECTS += $(LIB_SOURCES_C:.c=.o) --LIBOBJECTS += $(LIB_SOURCES_ASM:.S=.o) - else - LIB_CC_OBJECTS = $(LIB_SOURCES:.cc=.o) - endif -@@ -730,9 +722,7 @@ $(SHARED3): $(SHARED4) - endif - ifeq ($(HAVE_POWER8),1) - SHARED_C_OBJECTS = $(LIB_SOURCES_C:.c=.o) --SHARED_ASM_OBJECTS = $(LIB_SOURCES_ASM:.S=.o) - SHARED_C_LIBOBJECTS = $(patsubst %.o,shared-objects/%.o,$(SHARED_C_OBJECTS)) --SHARED_ASM_LIBOBJECTS = $(patsubst %.o,shared-objects/%.o,$(SHARED_ASM_OBJECTS)) - shared_libobjects = $(patsubst %,shared-objects/%,$(LIB_CC_OBJECTS)) - else - shared_libobjects = $(patsubst %,shared-objects/%,$(LIBOBJECTS)) -@@ -742,13 +732,10 @@ CLEAN_FILES += shared-objects - shared_all_libobjects = $(shared_libobjects) - - ifeq ($(HAVE_POWER8),1) --shared-ppc-objects = $(SHARED_C_LIBOBJECTS) $(SHARED_ASM_LIBOBJECTS) -+shared-ppc-objects = $(SHARED_C_LIBOBJECTS) - - shared-objects/util/crc32c_ppc.o: util/crc32c_ppc.c -- $(AM_V_CC)$(CC) $(CFLAGS) -c $< -o $@ -- --shared-objects/util/crc32c_ppc_asm.o: util/crc32c_ppc_asm.S -- $(AM_V_CC)$(CC) $(CFLAGS) -c $< -o $@ -+ $(AM_V_CC)$(CC) $(CFLAGS) $(POWER8_CFLAGS) -c $< -o $@ - endif - $(shared_libobjects): shared-objects/%.o: %.cc - $(AM_V_CC)mkdir -p $(@D) && $(CXX) $(CXXFLAGS) $(PLATFORM_SHARED_CFLAGS) -c $< -o $@ -@@ -1981,15 +1968,11 @@ JAVA_STATIC_INCLUDES = -I./zlib-$(ZLIB_VER) -I./bzip2-$(BZIP2_VER) -I./snappy-$( - - ifeq ($(HAVE_POWER8),1) - JAVA_STATIC_C_LIBOBJECTS = $(patsubst %.c.o,jls/%.c.o,$(LIB_SOURCES_C:.c=.o)) --JAVA_STATIC_ASM_LIBOBJECTS = $(patsubst %.S.o,jls/%.S.o,$(LIB_SOURCES_ASM:.S=.o)) - --java_static_ppc_libobjects = $(JAVA_STATIC_C_LIBOBJECTS) $(JAVA_STATIC_ASM_LIBOBJECTS) -+java_static_ppc_libobjects = $(JAVA_STATIC_C_LIBOBJECTS) - - jls/util/crc32c_ppc.o: util/crc32c_ppc.c -- $(AM_V_CC)$(CC) $(CFLAGS) $(JAVA_STATIC_FLAGS) $(JAVA_STATIC_INCLUDES) -c $< -o $@ -- --jls/util/crc32c_ppc_asm.o: util/crc32c_ppc_asm.S -- $(AM_V_CC)$(CC) $(CFLAGS) $(JAVA_STATIC_FLAGS) $(JAVA_STATIC_INCLUDES) -c $< -o $@ -+ $(AM_V_CC)$(CC) $(CFLAGS) $(POWER8_CFLAGS) $(JAVA_STATIC_FLAGS) $(JAVA_STATIC_INCLUDES) -c $< -o $@ - - java_static_all_libobjects += $(java_static_ppc_libobjects) - endif -@@ -2075,10 +2058,8 @@ rocksdbjavastaticpublishcentral: - ifeq ($(HAVE_POWER8),1) - JAVA_CC_OBJECTS = $(SHARED_CC_OBJECTS) - JAVA_C_OBJECTS = $(SHARED_C_OBJECTS) --JAVA_ASM_OBJECTS = $(SHARED_ASM_OBJECTS) - - JAVA_C_LIBOBJECTS = $(patsubst %.c.o,jl/%.c.o,$(JAVA_C_OBJECTS)) --JAVA_ASM_LIBOBJECTS = $(patsubst %.S.o,jl/%.S.o,$(JAVA_ASM_OBJECTS)) - endif - - java_libobjects = $(patsubst %,jl/%,$(LIB_CC_OBJECTS)) -@@ -2086,13 +2067,11 @@ CLEAN_FILES += jl - java_all_libobjects = $(java_libobjects) - - ifeq ($(HAVE_POWER8),1) --java_ppc_libobjects = $(JAVA_C_LIBOBJECTS) $(JAVA_ASM_LIBOBJECTS) -+java_ppc_libobjects = $(JAVA_C_LIBOBJECTS) - - jl/crc32c_ppc.o: util/crc32c_ppc.c -- $(AM_V_CC)$(CC) $(CFLAGS) -c $< -o $@ -+ $(AM_V_CC)$(CC) $(CFLAGS) $(POWER8_CFLAGS) -c $< -o $@ - --jl/crc32c_ppc_asm.o: util/crc32c_ppc_asm.S -- $(AM_V_CC)$(CC) $(CFLAGS) -c $< -o $@ - java_all_libobjects += $(java_ppc_libobjects) - endif - -@@ -2160,10 +2139,7 @@ IOSVERSION=$(shell defaults read $(PLATFORMSROOT)/iPhoneOS.platform/version CFBu - else - ifeq ($(HAVE_POWER8),1) - util/crc32c_ppc.o: util/crc32c_ppc.c -- $(AM_V_CC)$(CC) $(CFLAGS) -c $< -o $@ -- --util/crc32c_ppc_asm.o: util/crc32c_ppc_asm.S -- $(AM_V_CC)$(CC) $(CFLAGS) -c $< -o $@ -+ $(AM_V_CC)$(CC) $(CFLAGS) $(POWER8_CFLAGS) -c $< -o $@ - endif - .cc.o: - $(AM_V_CC)$(CXX) $(CXXFLAGS) -c $< -o $@ $(COVERAGEFLAGS) -@@ -2200,7 +2176,6 @@ endif - - ifeq ($(HAVE_POWER8),1) - DEPFILES_C = $(LIB_SOURCES_C:.c=.c.d) --DEPFILES_ASM = $(LIB_SOURCES_ASM:.S=.S.d) - - %.c.d: %.c - @$(CXX) $(CXXFLAGS) $(PLATFORM_SHARED_CFLAGS) \ -@@ -2212,8 +2187,7 @@ DEPFILES_ASM = $(LIB_SOURCES_ASM:.S=.S.d) - - $(DEPFILES_C): %.c.d - --$(DEPFILES_ASM): %.S.d --depend: $(DEPFILES) $(DEPFILES_C) $(DEPFILES_ASM) -+depend: $(DEPFILES) $(DEPFILES_C) - else - depend: $(DEPFILES) - endif -diff --git a/util/crc32c.cc b/util/crc32c.cc -index fa70d23ff5..ce16cb777e 100644 ---- a/util/crc32c.cc -+++ b/util/crc32c.cc -@@ -20,15 +20,12 @@ - - #include "util/crc32c_arm64.h" - --#ifdef __powerpc64__ --#include "util/crc32c_ppc.h" --#include "util/crc32c_ppc_constants.h" -- --#if __linux__ - #ifdef ROCKSDB_AUXV_GETAUXVAL_PRESENT - #include - #endif - -+#ifdef __powerpc64__ -+#include "util/crc32c_ppc.h" - #ifndef PPC_FEATURE2_VEC_CRYPTO - #define PPC_FEATURE2_VEC_CRYPTO 0x02000000 - #endif -@@ -37,19 +34,11 @@ - #define AT_HWCAP2 26 - #endif - --#endif /* __linux__ */ -- - #endif - - namespace ROCKSDB_NAMESPACE { - namespace crc32c { - --#if defined(HAVE_POWER8) && defined(HAS_ALTIVEC) --#ifdef __powerpc64__ --static int arch_ppc_crc32 = 0; --#endif /* __powerpc64__ */ --#endif -- - static const uint32_t table0_[256] = { - 0x00000000, 0xf26b8303, 0xe13b70f7, 0x1350f3f4, - 0xc79a971f, 0x35f1141c, 0x26a1e7e8, 0xd4ca64eb, -@@ -342,6 +331,7 @@ static inline void Slow_CRC32(uint64_t* l, uint8_t const **p) { - table0_[c >> 24]; - } - -+#ifndef _ARCH_PWR8 - static inline void Fast_CRC32(uint64_t* l, uint8_t const **p) { - #ifndef HAVE_SSE42 - Slow_CRC32(l, p); -@@ -355,6 +345,7 @@ static inline void Fast_CRC32(uint64_t* l, uint8_t const **p) { - *p += 4; - #endif - } -+#endif - - template - uint32_t ExtendImpl(uint32_t crc, const char* buf, size_t size) { -@@ -403,7 +394,7 @@ uint32_t ExtendImpl(uint32_t crc, const char* buf, size_t size) { - // Detect if ARM64 CRC or not. - #ifndef HAVE_ARM64_CRC - // Detect if SS42 or not. --#ifndef HAVE_POWER8 -+#ifndef _ARCH_PWR8 - - static bool isSSE42() { - #ifndef HAVE_SSE42 -@@ -439,36 +430,23 @@ static bool isPCLMULQDQ() { - #endif - } - --#endif // HAVE_POWER8 -+#endif // _ARCH_PWR8 - #endif // HAVE_ARM64_CRC - - typedef uint32_t (*Function)(uint32_t, const char*, size_t); - --#if defined(HAVE_POWER8) && defined(HAS_ALTIVEC) -+#if defined(__powerpc64__) - uint32_t ExtendPPCImpl(uint32_t crc, const char *buf, size_t size) { - return crc32c_ppc(crc, (const unsigned char *)buf, size); - } - --#if __linux__ --static int arch_ppc_probe(void) { -- arch_ppc_crc32 = 0; -- --#if defined(__powerpc64__) && defined(ROCKSDB_AUXV_GETAUXVAL_PRESENT) -- if (getauxval(AT_HWCAP2) & PPC_FEATURE2_VEC_CRYPTO) arch_ppc_crc32 = 1; --#endif /* __powerpc64__ */ -- -- return arch_ppc_crc32; --} --#endif // __linux__ -- - static bool isAltiVec() { -- if (arch_ppc_probe()) { -- return true; -- } else { -- return false; -- } --} -+#if defined(__linux__) && defined(ROCKSDB_AUXV_GETAUXVAL_PRESENT) -+ if (getauxval(AT_HWCAP2) & PPC_FEATURE2_VEC_CRYPTO) return true; - #endif -+ return false; -+} -+#endif // __power64__ - - #if defined(__linux__) && defined(HAVE_ARM64_CRC) - uint32_t ExtendARMImpl(uint32_t crc, const char *buf, size_t size) { -@@ -480,16 +458,9 @@ std::string IsFastCrc32Supported() { - bool has_fast_crc = false; - std::string fast_zero_msg; - std::string arch; --#ifdef HAVE_POWER8 --#ifdef HAS_ALTIVEC -- if (arch_ppc_probe()) { -- has_fast_crc = true; -- arch = "PPC"; -- } --#else -- has_fast_crc = false; -+#ifdef __powerpc64__ -+ has_fast_crc = isAltiVec(); - arch = "PPC"; --#endif - #elif defined(__linux__) && defined(HAVE_ARM64_CRC) - if (crc32c_runtime_check()) { - has_fast_crc = true; -@@ -1220,7 +1191,7 @@ uint32_t crc32c_3way(uint32_t crc, const char* buf, size_t len) { - #endif //HAVE_SSE42 && HAVE_PCLMUL - - static inline Function Choose_Extend() { --#ifdef HAVE_POWER8 -+#ifdef __powerpc64__ - return isAltiVec() ? ExtendPPCImpl : ExtendImpl; - #elif defined(__linux__) && defined(HAVE_ARM64_CRC) - if(crc32c_runtime_check()) { -diff --git a/util/crc32c_ppc.c b/util/crc32c_ppc.c -index 888a4943ea..a8914e8fbd 100644 ---- a/util/crc32c_ppc.c -+++ b/util/crc32c_ppc.c -@@ -4,91 +4,648 @@ - // This source code is licensed under both the GPLv2 (found in the - // COPYING file in the root directory) and Apache 2.0 License - // (found in the LICENSE.Apache file in the root directory). -+// From: https://github.com/antonblanchard/crc32-vpmsum/blob/master/vec_crc32.c - -+#include -+ -+#define POWER8_INTRINSICS - #define CRC_TABLE --#include --#include --#include --#include "util/crc32c_ppc_constants.h" - --#define VMX_ALIGN 16 --#define VMX_ALIGN_MASK (VMX_ALIGN - 1) -+#ifdef CRC32_CONSTANTS_HEADER -+#include CRC32_CONSTANTS_HEADER -+#else -+#include "crc32_constants.h" -+#endif -+ -+#define VMX_ALIGN 16 -+#define VMX_ALIGN_MASK (VMX_ALIGN-1) - - #ifdef REFLECT --static unsigned int crc32_align(unsigned int crc, unsigned char const *p, -- unsigned long len) { -- while (len--) crc = crc_table[(crc ^ *p++) & 0xff] ^ (crc >> 8); -- return crc; -+static unsigned int crc32_align(unsigned int crc, const unsigned char *p, -+ unsigned long len) -+{ -+ while (len--) -+ crc = crc_table[(crc ^ *p++) & 0xff] ^ (crc >> 8); -+ return crc; -+} -+#else -+static unsigned int crc32_align(unsigned int crc, const unsigned char *p, -+ unsigned long len) -+{ -+ while (len--) -+ crc = crc_table[((crc >> 24) ^ *p++) & 0xff] ^ (crc << 8); -+ return crc; - } - #endif - --#ifdef HAVE_POWER8 --unsigned int __crc32_vpmsum(unsigned int crc, unsigned char const *p, -- unsigned long len); -+static unsigned int __attribute__ ((aligned (32))) -+__crc32_vpmsum(unsigned int crc, const void* p, unsigned long len); - --static uint32_t crc32_vpmsum(uint32_t crc, unsigned char const *data, -- unsigned len) { -- unsigned int prealign; -- unsigned int tail; -+#ifndef CRC32_FUNCTION -+#define CRC32_FUNCTION crc32_vpmsum -+#endif -+ -+unsigned int CRC32_FUNCTION(unsigned int crc, const unsigned char *p, -+ unsigned long len) -+{ -+ unsigned int prealign; -+ unsigned int tail; - - #ifdef CRC_XOR -- crc ^= 0xffffffff; -+ crc ^= 0xffffffff; - #endif - -- if (len < VMX_ALIGN + VMX_ALIGN_MASK) { -- crc = crc32_align(crc, data, (unsigned long)len); -- goto out; -- } -+ if (len < VMX_ALIGN + VMX_ALIGN_MASK) { -+ crc = crc32_align(crc, p, len); -+ goto out; -+ } - -- if ((unsigned long)data & VMX_ALIGN_MASK) { -- prealign = VMX_ALIGN - ((unsigned long)data & VMX_ALIGN_MASK); -- crc = crc32_align(crc, data, prealign); -- len -= prealign; -- data += prealign; -- } -+ if ((unsigned long)p & VMX_ALIGN_MASK) { -+ prealign = VMX_ALIGN - ((unsigned long)p & VMX_ALIGN_MASK); -+ crc = crc32_align(crc, p, prealign); -+ len -= prealign; -+ p += prealign; -+ } - -- crc = __crc32_vpmsum(crc, data, (unsigned long)len & ~VMX_ALIGN_MASK); -+ crc = __crc32_vpmsum(crc, p, len & ~VMX_ALIGN_MASK); - -- tail = len & VMX_ALIGN_MASK; -- if (tail) { -- data += len & ~VMX_ALIGN_MASK; -- crc = crc32_align(crc, data, tail); -- } -+ tail = len & VMX_ALIGN_MASK; -+ if (tail) { -+ p += len & ~VMX_ALIGN_MASK; -+ crc = crc32_align(crc, p, tail); -+ } - - out: - #ifdef CRC_XOR -- crc ^= 0xffffffff; -+ crc ^= 0xffffffff; - #endif - -- return crc; -+ return crc; - } - --/* This wrapper function works around the fact that crc32_vpmsum -- * does not gracefully handle the case where the data pointer is NULL. There -- * may be room for performance improvement here. -+#if defined (__clang__) -+#include "crc32c_ppc_clang_workaround.h" -+#else -+#define __builtin_pack_vector(a, b) __builtin_pack_vector_int128 ((a), (b)) -+#define __builtin_unpack_vector_0(a) __builtin_unpack_vector_int128 ((vector __int128_t)(a), 0) -+#define __builtin_unpack_vector_1(a) __builtin_unpack_vector_int128 ((vector __int128_t)(a), 1) -+#endif -+ -+/* When we have a load-store in a single-dispatch group and address overlap -+ * such that foward is not allowed (load-hit-store) the group must be flushed. -+ * A group ending NOP prevents the flush. - */ --uint32_t crc32c_ppc(uint32_t crc, unsigned char const *data, unsigned len) { -- unsigned char *buf2; -- -- if (!data) { -- buf2 = (unsigned char *)malloc(len); -- bzero(buf2, len); -- crc = crc32_vpmsum(crc, buf2, len); -- free(buf2); -- } else { -- crc = crc32_vpmsum(crc, data, (unsigned long)len); -- } -- return crc; --} -+#define GROUP_ENDING_NOP asm("ori 2,2,0" ::: "memory") - --#else /* HAVE_POWER8 */ -+#if defined(__BIG_ENDIAN__) && defined (REFLECT) -+#define BYTESWAP_DATA -+#elif defined(__LITTLE_ENDIAN__) && !defined(REFLECT) -+#define BYTESWAP_DATA -+#endif - --/* This symbol has to exist on non-ppc architectures (and on legacy -- * ppc systems using power7 or below) in order to compile properly -- * there, even though it won't be called. -- */ --uint32_t crc32c_ppc(uint32_t crc, unsigned char const *data, unsigned len) { -- return 0; --} -+#ifdef BYTESWAP_DATA -+#define VEC_PERM(vr, va, vb, vc) vr = vec_perm(va, vb,\ -+ (__vector unsigned char) vc) -+#if defined(__LITTLE_ENDIAN__) -+/* Byte reverse permute constant LE. */ -+static const __vector unsigned long long vperm_const -+ __attribute__ ((aligned(16))) = { 0x08090A0B0C0D0E0FUL, -+ 0x0001020304050607UL }; -+#else -+static const __vector unsigned long long vperm_const -+ __attribute__ ((aligned(16))) = { 0x0F0E0D0C0B0A0908UL, -+ 0X0706050403020100UL }; -+#endif -+#else -+#define VEC_PERM(vr, va, vb, vc) -+#endif -+ -+static unsigned int __attribute__ ((aligned (32))) -+__crc32_vpmsum(unsigned int crc, const void* p, unsigned long len) { -+ -+ const __vector unsigned long long vzero = {0,0}; -+ const __vector unsigned long long vones = {0xffffffffffffffffUL, -+ 0xffffffffffffffffUL}; -+ -+#ifdef REFLECT -+ const __vector unsigned long long vmask_32bit = -+ (__vector unsigned long long)vec_sld((__vector unsigned char)vzero, -+ (__vector unsigned char)vones, 4); -+#endif -+ -+ const __vector unsigned long long vmask_64bit = -+ (__vector unsigned long long)vec_sld((__vector unsigned char)vzero, -+ (__vector unsigned char)vones, 8); -+ -+ __vector unsigned long long vcrc; -+ -+ __vector unsigned long long vconst1, vconst2; -+ -+ /* vdata0-vdata7 will contain our data (p). */ -+ __vector unsigned long long vdata0, vdata1, vdata2, vdata3, vdata4, -+ vdata5, vdata6, vdata7; -+ -+ /* v0-v7 will contain our checksums */ -+ __vector unsigned long long v0 = {0,0}; -+ __vector unsigned long long v1 = {0,0}; -+ __vector unsigned long long v2 = {0,0}; -+ __vector unsigned long long v3 = {0,0}; -+ __vector unsigned long long v4 = {0,0}; -+ __vector unsigned long long v5 = {0,0}; -+ __vector unsigned long long v6 = {0,0}; -+ __vector unsigned long long v7 = {0,0}; -+ -+ -+ /* Vector auxiliary variables. */ -+ __vector unsigned long long va0, va1, va2, va3, va4, va5, va6, va7; -+ -+ unsigned int result = 0; -+ unsigned int offset; /* Constant table offset. */ -+ -+ unsigned long i; /* Counter. */ -+ unsigned long chunks; -+ -+ unsigned long block_size; -+ int next_block = 0; -+ -+ /* Align by 128 bits. The last 128 bit block will be processed at end. */ -+ unsigned long length = len & 0xFFFFFFFFFFFFFF80UL; -+ -+#ifdef REFLECT -+ vcrc = (__vector unsigned long long)__builtin_pack_vector(0UL, crc); -+#else -+ vcrc = (__vector unsigned long long)__builtin_pack_vector(crc, 0UL); -+ -+ /* Shift into top 32 bits */ -+ vcrc = (__vector unsigned long long)vec_sld((__vector unsigned char)vcrc, -+ (__vector unsigned char)vzero, 4); -+#endif -+ -+ /* Short version. */ -+ if (len < 256) { -+ /* Calculate where in the constant table we need to start. */ -+ offset = 256 - len; -+ -+ vconst1 = vec_ld(offset, vcrc_short_const); -+ vdata0 = vec_ld(0, (__vector unsigned long long*) p); -+ VEC_PERM(vdata0, vdata0, vconst1, vperm_const); -+ -+ /* xor initial value*/ -+ vdata0 = vec_xor(vdata0, vcrc); -+ -+ vdata0 = (__vector unsigned long long) __builtin_crypto_vpmsumw -+ ((__vector unsigned int)vdata0, (__vector unsigned int)vconst1); -+ v0 = vec_xor(v0, vdata0); -+ -+ for (i = 16; i < len; i += 16) { -+ vconst1 = vec_ld(offset + i, vcrc_short_const); -+ vdata0 = vec_ld(i, (__vector unsigned long long*) p); -+ VEC_PERM(vdata0, vdata0, vconst1, vperm_const); -+ vdata0 = (__vector unsigned long long) __builtin_crypto_vpmsumw -+ ((__vector unsigned int)vdata0, (__vector unsigned int)vconst1); -+ v0 = vec_xor(v0, vdata0); -+ } -+ } else { -+ -+ /* Load initial values. */ -+ vdata0 = vec_ld(0, (__vector unsigned long long*) p); -+ vdata1 = vec_ld(16, (__vector unsigned long long*) p); -+ -+ VEC_PERM(vdata0, vdata0, vdata0, vperm_const); -+ VEC_PERM(vdata1, vdata1, vdata1, vperm_const); -+ -+ vdata2 = vec_ld(32, (__vector unsigned long long*) p); -+ vdata3 = vec_ld(48, (__vector unsigned long long*) p); -+ -+ VEC_PERM(vdata2, vdata2, vdata2, vperm_const); -+ VEC_PERM(vdata3, vdata3, vdata3, vperm_const); -+ -+ vdata4 = vec_ld(64, (__vector unsigned long long*) p); -+ vdata5 = vec_ld(80, (__vector unsigned long long*) p); -+ -+ VEC_PERM(vdata4, vdata4, vdata4, vperm_const); -+ VEC_PERM(vdata5, vdata5, vdata5, vperm_const); -+ -+ vdata6 = vec_ld(96, (__vector unsigned long long*) p); -+ vdata7 = vec_ld(112, (__vector unsigned long long*) p); -+ -+ VEC_PERM(vdata6, vdata6, vdata6, vperm_const); -+ VEC_PERM(vdata7, vdata7, vdata7, vperm_const); -+ -+ /* xor in initial value */ -+ vdata0 = vec_xor(vdata0, vcrc); -+ -+ p = (char *)p + 128; -+ -+ do { -+ /* Checksum in blocks of MAX_SIZE. */ -+ block_size = length; -+ if (block_size > MAX_SIZE) { -+ block_size = MAX_SIZE; -+ } -+ -+ length = length - block_size; -+ -+ /* -+ * Work out the offset into the constants table to start at. Each -+ * constant is 16 bytes, and it is used against 128 bytes of input -+ * data - 128 / 16 = 8 -+ */ -+ offset = (MAX_SIZE/8) - (block_size/8); -+ /* We reduce our final 128 bytes in a separate step */ -+ chunks = (block_size/128)-1; -+ -+ vconst1 = vec_ld(offset, vcrc_const); -+ -+ va0 = __builtin_crypto_vpmsumd ((__vector unsigned long long)vdata0, -+ (__vector unsigned long long)vconst1); -+ va1 = __builtin_crypto_vpmsumd ((__vector unsigned long long)vdata1, -+ (__vector unsigned long long)vconst1); -+ va2 = __builtin_crypto_vpmsumd ((__vector unsigned long long)vdata2, -+ (__vector unsigned long long)vconst1); -+ va3 = __builtin_crypto_vpmsumd ((__vector unsigned long long)vdata3, -+ (__vector unsigned long long)vconst1); -+ va4 = __builtin_crypto_vpmsumd ((__vector unsigned long long)vdata4, -+ (__vector unsigned long long)vconst1); -+ va5 = __builtin_crypto_vpmsumd ((__vector unsigned long long)vdata5, -+ (__vector unsigned long long)vconst1); -+ va6 = __builtin_crypto_vpmsumd ((__vector unsigned long long)vdata6, -+ (__vector unsigned long long)vconst1); -+ va7 = __builtin_crypto_vpmsumd ((__vector unsigned long long)vdata7, -+ (__vector unsigned long long)vconst1); -+ -+ if (chunks > 1) { -+ offset += 16; -+ vconst2 = vec_ld(offset, vcrc_const); -+ GROUP_ENDING_NOP; -+ -+ vdata0 = vec_ld(0, (__vector unsigned long long*) p); -+ VEC_PERM(vdata0, vdata0, vdata0, vperm_const); -+ -+ vdata1 = vec_ld(16, (__vector unsigned long long*) p); -+ VEC_PERM(vdata1, vdata1, vdata1, vperm_const); -+ -+ vdata2 = vec_ld(32, (__vector unsigned long long*) p); -+ VEC_PERM(vdata2, vdata2, vdata2, vperm_const); -+ -+ vdata3 = vec_ld(48, (__vector unsigned long long*) p); -+ VEC_PERM(vdata3, vdata3, vdata3, vperm_const); -+ -+ vdata4 = vec_ld(64, (__vector unsigned long long*) p); -+ VEC_PERM(vdata4, vdata4, vdata4, vperm_const); -+ -+ vdata5 = vec_ld(80, (__vector unsigned long long*) p); -+ VEC_PERM(vdata5, vdata5, vdata5, vperm_const); -+ -+ vdata6 = vec_ld(96, (__vector unsigned long long*) p); -+ VEC_PERM(vdata6, vdata6, vdata6, vperm_const); -+ -+ vdata7 = vec_ld(112, (__vector unsigned long long*) p); -+ VEC_PERM(vdata7, vdata7, vdata7, vperm_const); -+ -+ p = (char *)p + 128; - --#endif /* HAVE_POWER8 */ -+ /* -+ * main loop. We modulo schedule it such that it takes three -+ * iterations to complete - first iteration load, second -+ * iteration vpmsum, third iteration xor. -+ */ -+ for (i = 0; i < chunks-2; i++) { -+ vconst1 = vec_ld(offset, vcrc_const); -+ offset += 16; -+ GROUP_ENDING_NOP; -+ -+ v0 = vec_xor(v0, va0); -+ va0 = __builtin_crypto_vpmsumd ((__vector unsigned long -+ long)vdata0, (__vector unsigned long long)vconst2); -+ vdata0 = vec_ld(0, (__vector unsigned long long*) p); -+ VEC_PERM(vdata0, vdata0, vdata0, vperm_const); -+ GROUP_ENDING_NOP; -+ -+ v1 = vec_xor(v1, va1); -+ va1 = __builtin_crypto_vpmsumd ((__vector unsigned long -+ long)vdata1, (__vector unsigned long long)vconst2); -+ vdata1 = vec_ld(16, (__vector unsigned long long*) p); -+ VEC_PERM(vdata1, vdata1, vdata1, vperm_const); -+ GROUP_ENDING_NOP; -+ -+ v2 = vec_xor(v2, va2); -+ va2 = __builtin_crypto_vpmsumd ((__vector unsigned long -+ long)vdata2, (__vector unsigned long long)vconst2); -+ vdata2 = vec_ld(32, (__vector unsigned long long*) p); -+ VEC_PERM(vdata2, vdata2, vdata2, vperm_const); -+ GROUP_ENDING_NOP; -+ -+ v3 = vec_xor(v3, va3); -+ va3 = __builtin_crypto_vpmsumd ((__vector unsigned long -+ long)vdata3, (__vector unsigned long long)vconst2); -+ vdata3 = vec_ld(48, (__vector unsigned long long*) p); -+ VEC_PERM(vdata3, vdata3, vdata3, vperm_const); -+ -+ vconst2 = vec_ld(offset, vcrc_const); -+ GROUP_ENDING_NOP; -+ -+ v4 = vec_xor(v4, va4); -+ va4 = __builtin_crypto_vpmsumd ((__vector unsigned long -+ long)vdata4, (__vector unsigned long long)vconst1); -+ vdata4 = vec_ld(64, (__vector unsigned long long*) p); -+ VEC_PERM(vdata4, vdata4, vdata4, vperm_const); -+ GROUP_ENDING_NOP; -+ -+ v5 = vec_xor(v5, va5); -+ va5 = __builtin_crypto_vpmsumd ((__vector unsigned long -+ long)vdata5, (__vector unsigned long long)vconst1); -+ vdata5 = vec_ld(80, (__vector unsigned long long*) p); -+ VEC_PERM(vdata5, vdata5, vdata5, vperm_const); -+ GROUP_ENDING_NOP; -+ -+ v6 = vec_xor(v6, va6); -+ va6 = __builtin_crypto_vpmsumd ((__vector unsigned long -+ long)vdata6, (__vector unsigned long long)vconst1); -+ vdata6 = vec_ld(96, (__vector unsigned long long*) p); -+ VEC_PERM(vdata6, vdata6, vdata6, vperm_const); -+ GROUP_ENDING_NOP; -+ -+ v7 = vec_xor(v7, va7); -+ va7 = __builtin_crypto_vpmsumd ((__vector unsigned long -+ long)vdata7, (__vector unsigned long long)vconst1); -+ vdata7 = vec_ld(112, (__vector unsigned long long*) p); -+ VEC_PERM(vdata7, vdata7, vdata7, vperm_const); -+ -+ p = (char *)p + 128; -+ } -+ -+ /* First cool down*/ -+ vconst1 = vec_ld(offset, vcrc_const); -+ offset += 16; -+ -+ v0 = vec_xor(v0, va0); -+ va0 = __builtin_crypto_vpmsumd ((__vector unsigned long -+ long)vdata0, (__vector unsigned long long)vconst1); -+ GROUP_ENDING_NOP; -+ -+ v1 = vec_xor(v1, va1); -+ va1 = __builtin_crypto_vpmsumd ((__vector unsigned long -+ long)vdata1, (__vector unsigned long long)vconst1); -+ GROUP_ENDING_NOP; -+ -+ v2 = vec_xor(v2, va2); -+ va2 = __builtin_crypto_vpmsumd ((__vector unsigned long -+ long)vdata2, (__vector unsigned long long)vconst1); -+ GROUP_ENDING_NOP; -+ -+ v3 = vec_xor(v3, va3); -+ va3 = __builtin_crypto_vpmsumd ((__vector unsigned long -+ long)vdata3, (__vector unsigned long long)vconst1); -+ GROUP_ENDING_NOP; -+ -+ v4 = vec_xor(v4, va4); -+ va4 = __builtin_crypto_vpmsumd ((__vector unsigned long -+ long)vdata4, (__vector unsigned long long)vconst1); -+ GROUP_ENDING_NOP; -+ -+ v5 = vec_xor(v5, va5); -+ va5 = __builtin_crypto_vpmsumd ((__vector unsigned long -+ long)vdata5, (__vector unsigned long long)vconst1); -+ GROUP_ENDING_NOP; -+ -+ v6 = vec_xor(v6, va6); -+ va6 = __builtin_crypto_vpmsumd ((__vector unsigned long -+ long)vdata6, (__vector unsigned long long)vconst1); -+ GROUP_ENDING_NOP; -+ -+ v7 = vec_xor(v7, va7); -+ va7 = __builtin_crypto_vpmsumd ((__vector unsigned long -+ long)vdata7, (__vector unsigned long long)vconst1); -+ }/* else */ -+ -+ /* Second cool down. */ -+ v0 = vec_xor(v0, va0); -+ v1 = vec_xor(v1, va1); -+ v2 = vec_xor(v2, va2); -+ v3 = vec_xor(v3, va3); -+ v4 = vec_xor(v4, va4); -+ v5 = vec_xor(v5, va5); -+ v6 = vec_xor(v6, va6); -+ v7 = vec_xor(v7, va7); -+ -+#ifdef REFLECT -+ /* -+ * vpmsumd produces a 96 bit result in the least significant bits -+ * of the register. Since we are bit reflected we have to shift it -+ * left 32 bits so it occupies the least significant bits in the -+ * bit reflected domain. -+ */ -+ v0 = (__vector unsigned long long)vec_sld((__vector unsigned char)v0, -+ (__vector unsigned char)vzero, 4); -+ v1 = (__vector unsigned long long)vec_sld((__vector unsigned char)v1, -+ (__vector unsigned char)vzero, 4); -+ v2 = (__vector unsigned long long)vec_sld((__vector unsigned char)v2, -+ (__vector unsigned char)vzero, 4); -+ v3 = (__vector unsigned long long)vec_sld((__vector unsigned char)v3, -+ (__vector unsigned char)vzero, 4); -+ v4 = (__vector unsigned long long)vec_sld((__vector unsigned char)v4, -+ (__vector unsigned char)vzero, 4); -+ v5 = (__vector unsigned long long)vec_sld((__vector unsigned char)v5, -+ (__vector unsigned char)vzero, 4); -+ v6 = (__vector unsigned long long)vec_sld((__vector unsigned char)v6, -+ (__vector unsigned char)vzero, 4); -+ v7 = (__vector unsigned long long)vec_sld((__vector unsigned char)v7, -+ (__vector unsigned char)vzero, 4); -+#endif -+ -+ /* xor with the last 1024 bits. */ -+ va0 = vec_ld(0, (__vector unsigned long long*) p); -+ VEC_PERM(va0, va0, va0, vperm_const); -+ -+ va1 = vec_ld(16, (__vector unsigned long long*) p); -+ VEC_PERM(va1, va1, va1, vperm_const); -+ -+ va2 = vec_ld(32, (__vector unsigned long long*) p); -+ VEC_PERM(va2, va2, va2, vperm_const); -+ -+ va3 = vec_ld(48, (__vector unsigned long long*) p); -+ VEC_PERM(va3, va3, va3, vperm_const); -+ -+ va4 = vec_ld(64, (__vector unsigned long long*) p); -+ VEC_PERM(va4, va4, va4, vperm_const); -+ -+ va5 = vec_ld(80, (__vector unsigned long long*) p); -+ VEC_PERM(va5, va5, va5, vperm_const); -+ -+ va6 = vec_ld(96, (__vector unsigned long long*) p); -+ VEC_PERM(va6, va6, va6, vperm_const); -+ -+ va7 = vec_ld(112, (__vector unsigned long long*) p); -+ VEC_PERM(va7, va7, va7, vperm_const); -+ -+ p = (char *)p + 128; -+ -+ vdata0 = vec_xor(v0, va0); -+ vdata1 = vec_xor(v1, va1); -+ vdata2 = vec_xor(v2, va2); -+ vdata3 = vec_xor(v3, va3); -+ vdata4 = vec_xor(v4, va4); -+ vdata5 = vec_xor(v5, va5); -+ vdata6 = vec_xor(v6, va6); -+ vdata7 = vec_xor(v7, va7); -+ -+ /* Check if we have more blocks to process */ -+ next_block = 0; -+ if (length != 0) { -+ next_block = 1; -+ -+ /* zero v0-v7 */ -+ v0 = vec_xor(v0, v0); -+ v1 = vec_xor(v1, v1); -+ v2 = vec_xor(v2, v2); -+ v3 = vec_xor(v3, v3); -+ v4 = vec_xor(v4, v4); -+ v5 = vec_xor(v5, v5); -+ v6 = vec_xor(v6, v6); -+ v7 = vec_xor(v7, v7); -+ } -+ length = length + 128; -+ -+ } while (next_block); -+ -+ /* Calculate how many bytes we have left. */ -+ length = (len & 127); -+ -+ /* Calculate where in (short) constant table we need to start. */ -+ offset = 128 - length; -+ -+ v0 = vec_ld(offset, vcrc_short_const); -+ v1 = vec_ld(offset + 16, vcrc_short_const); -+ v2 = vec_ld(offset + 32, vcrc_short_const); -+ v3 = vec_ld(offset + 48, vcrc_short_const); -+ v4 = vec_ld(offset + 64, vcrc_short_const); -+ v5 = vec_ld(offset + 80, vcrc_short_const); -+ v6 = vec_ld(offset + 96, vcrc_short_const); -+ v7 = vec_ld(offset + 112, vcrc_short_const); -+ -+ offset += 128; -+ -+ v0 = (__vector unsigned long long)__builtin_crypto_vpmsumw ( -+ (__vector unsigned int)vdata0,(__vector unsigned int)v0); -+ v1 = (__vector unsigned long long)__builtin_crypto_vpmsumw ( -+ (__vector unsigned int)vdata1,(__vector unsigned int)v1); -+ v2 = (__vector unsigned long long)__builtin_crypto_vpmsumw ( -+ (__vector unsigned int)vdata2,(__vector unsigned int)v2); -+ v3 = (__vector unsigned long long)__builtin_crypto_vpmsumw ( -+ (__vector unsigned int)vdata3,(__vector unsigned int)v3); -+ v4 = (__vector unsigned long long)__builtin_crypto_vpmsumw ( -+ (__vector unsigned int)vdata4,(__vector unsigned int)v4); -+ v5 = (__vector unsigned long long)__builtin_crypto_vpmsumw ( -+ (__vector unsigned int)vdata5,(__vector unsigned int)v5); -+ v6 = (__vector unsigned long long)__builtin_crypto_vpmsumw ( -+ (__vector unsigned int)vdata6,(__vector unsigned int)v6); -+ v7 = (__vector unsigned long long)__builtin_crypto_vpmsumw ( -+ (__vector unsigned int)vdata7,(__vector unsigned int)v7); -+ -+ /* Now reduce the tail (0-112 bytes). */ -+ for (i = 0; i < length; i+=16) { -+ vdata0 = vec_ld(i,(__vector unsigned long long*)p); -+ VEC_PERM(vdata0, vdata0, vdata0, vperm_const); -+ va0 = vec_ld(offset + i,vcrc_short_const); -+ va0 = (__vector unsigned long long)__builtin_crypto_vpmsumw ( -+ (__vector unsigned int)vdata0,(__vector unsigned int)va0); -+ v0 = vec_xor(v0, va0); -+ } -+ -+ /* xor all parallel chunks together. */ -+ v0 = vec_xor(v0, v1); -+ v2 = vec_xor(v2, v3); -+ v4 = vec_xor(v4, v5); -+ v6 = vec_xor(v6, v7); -+ -+ v0 = vec_xor(v0, v2); -+ v4 = vec_xor(v4, v6); -+ -+ v0 = vec_xor(v0, v4); -+ } -+ -+ /* Barrett Reduction */ -+ vconst1 = vec_ld(0, v_Barrett_const); -+ vconst2 = vec_ld(16, v_Barrett_const); -+ -+ v1 = (__vector unsigned long long)vec_sld((__vector unsigned char)v0, -+ (__vector unsigned char)v0, 8); -+ v0 = vec_xor(v1,v0); -+ -+#ifdef REFLECT -+ /* shift left one bit */ -+ __vector unsigned char vsht_splat = vec_splat_u8 (1); -+ v0 = (__vector unsigned long long)vec_sll ((__vector unsigned char)v0, -+ vsht_splat); -+#endif -+ -+ v0 = vec_and(v0, vmask_64bit); -+ -+#ifndef REFLECT -+ -+ /* -+ * Now for the actual algorithm. The idea is to calculate q, -+ * the multiple of our polynomial that we need to subtract. By -+ * doing the computation 2x bits higher (ie 64 bits) and shifting the -+ * result back down 2x bits, we round down to the nearest multiple. -+ */ -+ -+ /* ma */ -+ v1 = __builtin_crypto_vpmsumd ((__vector unsigned long long)v0, -+ (__vector unsigned long long)vconst1); -+ /* q = floor(ma/(2^64)) */ -+ v1 = (__vector unsigned long long)vec_sld ((__vector unsigned char)vzero, -+ (__vector unsigned char)v1, 8); -+ /* qn */ -+ v1 = __builtin_crypto_vpmsumd ((__vector unsigned long long)v1, -+ (__vector unsigned long long)vconst2); -+ /* a - qn, subtraction is xor in GF(2) */ -+ v0 = vec_xor (v0, v1); -+ /* -+ * Get the result into r3. We need to shift it left 8 bytes: -+ * V0 [ 0 1 2 X ] -+ * V0 [ 0 X 2 3 ] -+ */ -+ result = __builtin_unpack_vector_1 (v0); -+#else -+ -+ /* -+ * The reflected version of Barrett reduction. Instead of bit -+ * reflecting our data (which is expensive to do), we bit reflect our -+ * constants and our algorithm, which means the intermediate data in -+ * our vector registers goes from 0-63 instead of 63-0. We can reflect -+ * the algorithm because we don't carry in mod 2 arithmetic. -+ */ -+ -+ /* bottom 32 bits of a */ -+ v1 = vec_and(v0, vmask_32bit); -+ -+ /* ma */ -+ v1 = __builtin_crypto_vpmsumd ((__vector unsigned long long)v1, -+ (__vector unsigned long long)vconst1); -+ -+ /* bottom 32bits of ma */ -+ v1 = vec_and(v1, vmask_32bit); -+ /* qn */ -+ v1 = __builtin_crypto_vpmsumd ((__vector unsigned long long)v1, -+ (__vector unsigned long long)vconst2); -+ /* a - qn, subtraction is xor in GF(2) */ -+ v0 = vec_xor (v0, v1); -+ -+ /* -+ * Since we are bit reflected, the result (ie the low 32 bits) is in -+ * the high 32 bits. We just need to shift it left 4 bytes -+ * V0 [ 0 1 X 3 ] -+ * V0 [ 0 X 2 3 ] -+ */ -+ -+ /* shift result into top 64 bits of */ -+ v0 = (__vector unsigned long long)vec_sld((__vector unsigned char)v0, -+ (__vector unsigned char)vzero, 4); -+ -+ result = __builtin_unpack_vector_0 (v0); -+#endif -+ -+ return result; -+} -diff --git a/util/crc32c_ppc_asm.S b/util/crc32c_ppc_asm.S -deleted file mode 100644 -index a317bf96b8..0000000000 ---- a/util/crc32c_ppc_asm.S -+++ /dev/null -@@ -1,752 +0,0 @@ --// Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved. --// Copyright (c) 2015 Anton Blanchard , IBM --// Copyright (c) 2017 International Business Machines Corp. --// All rights reserved. --// This source code is licensed under both the GPLv2 (found in the --// COPYING file in the root directory) and Apache 2.0 License --// (found in the LICENSE.Apache file in the root directory). -- --#include --#include "ppc-opcode.h" -- --#undef toc -- --#ifndef r1 --#define r1 1 --#endif -- --#ifndef r2 --#define r2 2 --#endif -- -- .section .rodata --.balign 16 -- --.byteswap_constant: -- /* byte reverse permute constant */ -- .octa 0x0F0E0D0C0B0A09080706050403020100 -- --#define __ASSEMBLY__ --#include "crc32c_ppc_constants.h" -- -- .text -- --#if defined(__BIG_ENDIAN__) && defined(REFLECT) --#define BYTESWAP_DATA --#elif defined(__LITTLE_ENDIAN__) && !defined(REFLECT) --#define BYTESWAP_DATA --#else --#undef BYTESWAP_DATA --#endif -- --#define off16 r25 --#define off32 r26 --#define off48 r27 --#define off64 r28 --#define off80 r29 --#define off96 r30 --#define off112 r31 -- --#define const1 v24 --#define const2 v25 -- --#define byteswap v26 --#define mask_32bit v27 --#define mask_64bit v28 --#define zeroes v29 -- --#ifdef BYTESWAP_DATA --#define VPERM(A, B, C, D) vperm A, B, C, D --#else --#define VPERM(A, B, C, D) --#endif -- --/* unsigned int __crc32_vpmsum(unsigned int crc, void *p, unsigned long len) */ --FUNC_START(__crc32_vpmsum) -- std r31,-8(r1) -- std r30,-16(r1) -- std r29,-24(r1) -- std r28,-32(r1) -- std r27,-40(r1) -- std r26,-48(r1) -- std r25,-56(r1) -- -- li off16,16 -- li off32,32 -- li off48,48 -- li off64,64 -- li off80,80 -- li off96,96 -- li off112,112 -- li r0,0 -- -- /* Enough room for saving 10 non volatile VMX registers */ -- subi r6,r1,56+10*16 -- subi r7,r1,56+2*16 -- -- stvx v20,0,r6 -- stvx v21,off16,r6 -- stvx v22,off32,r6 -- stvx v23,off48,r6 -- stvx v24,off64,r6 -- stvx v25,off80,r6 -- stvx v26,off96,r6 -- stvx v27,off112,r6 -- stvx v28,0,r7 -- stvx v29,off16,r7 -- -- mr r10,r3 -- -- vxor zeroes,zeroes,zeroes -- vspltisw v0,-1 -- -- vsldoi mask_32bit,zeroes,v0,4 -- vsldoi mask_64bit,zeroes,v0,8 -- -- /* Get the initial value into v8 */ -- vxor v8,v8,v8 -- MTVRD(v8, r3) --#ifdef REFLECT -- vsldoi v8,zeroes,v8,8 /* shift into bottom 32 bits */ --#else -- vsldoi v8,v8,zeroes,4 /* shift into top 32 bits */ --#endif -- --#ifdef BYTESWAP_DATA -- addis r3,r2,.byteswap_constant@toc@ha -- addi r3,r3,.byteswap_constant@toc@l -- -- lvx byteswap,0,r3 -- addi r3,r3,16 --#endif -- -- cmpdi r5,256 -- blt .Lshort -- -- rldicr r6,r5,0,56 -- -- /* Checksum in blocks of MAX_SIZE */ --1: lis r7,MAX_SIZE@h -- ori r7,r7,MAX_SIZE@l -- mr r9,r7 -- cmpd r6,r7 -- bgt 2f -- mr r7,r6 --2: subf r6,r7,r6 -- -- /* our main loop does 128 bytes at a time */ -- srdi r7,r7,7 -- -- /* -- * Work out the offset into the constants table to start at. Each -- * constant is 16 bytes, and it is used against 128 bytes of input -- * data - 128 / 16 = 8 -- */ -- sldi r8,r7,4 -- srdi r9,r9,3 -- subf r8,r8,r9 -- -- /* We reduce our final 128 bytes in a separate step */ -- addi r7,r7,-1 -- mtctr r7 -- -- addis r3,r2,.constants@toc@ha -- addi r3,r3,.constants@toc@l -- -- /* Find the start of our constants */ -- add r3,r3,r8 -- -- /* zero v0-v7 which will contain our checksums */ -- vxor v0,v0,v0 -- vxor v1,v1,v1 -- vxor v2,v2,v2 -- vxor v3,v3,v3 -- vxor v4,v4,v4 -- vxor v5,v5,v5 -- vxor v6,v6,v6 -- vxor v7,v7,v7 -- -- lvx const1,0,r3 -- -- /* -- * If we are looping back to consume more data we use the values -- * already in v16-v23. -- */ -- cmpdi r0,1 -- beq 2f -- -- /* First warm up pass */ -- lvx v16,0,r4 -- lvx v17,off16,r4 -- VPERM(v16,v16,v16,byteswap) -- VPERM(v17,v17,v17,byteswap) -- lvx v18,off32,r4 -- lvx v19,off48,r4 -- VPERM(v18,v18,v18,byteswap) -- VPERM(v19,v19,v19,byteswap) -- lvx v20,off64,r4 -- lvx v21,off80,r4 -- VPERM(v20,v20,v20,byteswap) -- VPERM(v21,v21,v21,byteswap) -- lvx v22,off96,r4 -- lvx v23,off112,r4 -- VPERM(v22,v22,v22,byteswap) -- VPERM(v23,v23,v23,byteswap) -- addi r4,r4,8*16 -- -- /* xor in initial value */ -- vxor v16,v16,v8 -- --2: bdz .Lfirst_warm_up_done -- -- addi r3,r3,16 -- lvx const2,0,r3 -- -- /* Second warm up pass */ -- VPMSUMD(v8,v16,const1) -- lvx v16,0,r4 -- VPERM(v16,v16,v16,byteswap) -- ori r2,r2,0 -- -- VPMSUMD(v9,v17,const1) -- lvx v17,off16,r4 -- VPERM(v17,v17,v17,byteswap) -- ori r2,r2,0 -- -- VPMSUMD(v10,v18,const1) -- lvx v18,off32,r4 -- VPERM(v18,v18,v18,byteswap) -- ori r2,r2,0 -- -- VPMSUMD(v11,v19,const1) -- lvx v19,off48,r4 -- VPERM(v19,v19,v19,byteswap) -- ori r2,r2,0 -- -- VPMSUMD(v12,v20,const1) -- lvx v20,off64,r4 -- VPERM(v20,v20,v20,byteswap) -- ori r2,r2,0 -- -- VPMSUMD(v13,v21,const1) -- lvx v21,off80,r4 -- VPERM(v21,v21,v21,byteswap) -- ori r2,r2,0 -- -- VPMSUMD(v14,v22,const1) -- lvx v22,off96,r4 -- VPERM(v22,v22,v22,byteswap) -- ori r2,r2,0 -- -- VPMSUMD(v15,v23,const1) -- lvx v23,off112,r4 -- VPERM(v23,v23,v23,byteswap) -- -- addi r4,r4,8*16 -- -- bdz .Lfirst_cool_down -- -- /* -- * main loop. We modulo schedule it such that it takes three iterations -- * to complete - first iteration load, second iteration vpmsum, third -- * iteration xor. -- */ -- .balign 16 --4: lvx const1,0,r3 -- addi r3,r3,16 -- ori r2,r2,0 -- -- vxor v0,v0,v8 -- VPMSUMD(v8,v16,const2) -- lvx v16,0,r4 -- VPERM(v16,v16,v16,byteswap) -- ori r2,r2,0 -- -- vxor v1,v1,v9 -- VPMSUMD(v9,v17,const2) -- lvx v17,off16,r4 -- VPERM(v17,v17,v17,byteswap) -- ori r2,r2,0 -- -- vxor v2,v2,v10 -- VPMSUMD(v10,v18,const2) -- lvx v18,off32,r4 -- VPERM(v18,v18,v18,byteswap) -- ori r2,r2,0 -- -- vxor v3,v3,v11 -- VPMSUMD(v11,v19,const2) -- lvx v19,off48,r4 -- VPERM(v19,v19,v19,byteswap) -- lvx const2,0,r3 -- ori r2,r2,0 -- -- vxor v4,v4,v12 -- VPMSUMD(v12,v20,const1) -- lvx v20,off64,r4 -- VPERM(v20,v20,v20,byteswap) -- ori r2,r2,0 -- -- vxor v5,v5,v13 -- VPMSUMD(v13,v21,const1) -- lvx v21,off80,r4 -- VPERM(v21,v21,v21,byteswap) -- ori r2,r2,0 -- -- vxor v6,v6,v14 -- VPMSUMD(v14,v22,const1) -- lvx v22,off96,r4 -- VPERM(v22,v22,v22,byteswap) -- ori r2,r2,0 -- -- vxor v7,v7,v15 -- VPMSUMD(v15,v23,const1) -- lvx v23,off112,r4 -- VPERM(v23,v23,v23,byteswap) -- -- addi r4,r4,8*16 -- -- bdnz 4b -- --.Lfirst_cool_down: -- /* First cool down pass */ -- lvx const1,0,r3 -- addi r3,r3,16 -- -- vxor v0,v0,v8 -- VPMSUMD(v8,v16,const1) -- ori r2,r2,0 -- -- vxor v1,v1,v9 -- VPMSUMD(v9,v17,const1) -- ori r2,r2,0 -- -- vxor v2,v2,v10 -- VPMSUMD(v10,v18,const1) -- ori r2,r2,0 -- -- vxor v3,v3,v11 -- VPMSUMD(v11,v19,const1) -- ori r2,r2,0 -- -- vxor v4,v4,v12 -- VPMSUMD(v12,v20,const1) -- ori r2,r2,0 -- -- vxor v5,v5,v13 -- VPMSUMD(v13,v21,const1) -- ori r2,r2,0 -- -- vxor v6,v6,v14 -- VPMSUMD(v14,v22,const1) -- ori r2,r2,0 -- -- vxor v7,v7,v15 -- VPMSUMD(v15,v23,const1) -- ori r2,r2,0 -- --.Lsecond_cool_down: -- /* Second cool down pass */ -- vxor v0,v0,v8 -- vxor v1,v1,v9 -- vxor v2,v2,v10 -- vxor v3,v3,v11 -- vxor v4,v4,v12 -- vxor v5,v5,v13 -- vxor v6,v6,v14 -- vxor v7,v7,v15 -- --#ifdef REFLECT -- /* -- * vpmsumd produces a 96 bit result in the least significant bits -- * of the register. Since we are bit reflected we have to shift it -- * left 32 bits so it occupies the least significant bits in the -- * bit reflected domain. -- */ -- vsldoi v0,v0,zeroes,4 -- vsldoi v1,v1,zeroes,4 -- vsldoi v2,v2,zeroes,4 -- vsldoi v3,v3,zeroes,4 -- vsldoi v4,v4,zeroes,4 -- vsldoi v5,v5,zeroes,4 -- vsldoi v6,v6,zeroes,4 -- vsldoi v7,v7,zeroes,4 --#endif -- -- /* xor with last 1024 bits */ -- lvx v8,0,r4 -- lvx v9,off16,r4 -- VPERM(v8,v8,v8,byteswap) -- VPERM(v9,v9,v9,byteswap) -- lvx v10,off32,r4 -- lvx v11,off48,r4 -- VPERM(v10,v10,v10,byteswap) -- VPERM(v11,v11,v11,byteswap) -- lvx v12,off64,r4 -- lvx v13,off80,r4 -- VPERM(v12,v12,v12,byteswap) -- VPERM(v13,v13,v13,byteswap) -- lvx v14,off96,r4 -- lvx v15,off112,r4 -- VPERM(v14,v14,v14,byteswap) -- VPERM(v15,v15,v15,byteswap) -- -- addi r4,r4,8*16 -- -- vxor v16,v0,v8 -- vxor v17,v1,v9 -- vxor v18,v2,v10 -- vxor v19,v3,v11 -- vxor v20,v4,v12 -- vxor v21,v5,v13 -- vxor v22,v6,v14 -- vxor v23,v7,v15 -- -- li r0,1 -- cmpdi r6,0 -- addi r6,r6,128 -- bne 1b -- -- /* Work out how many bytes we have left */ -- andi. r5,r5,127 -- -- /* Calculate where in the constant table we need to start */ -- subfic r6,r5,128 -- add r3,r3,r6 -- -- /* How many 16 byte chunks are in the tail */ -- srdi r7,r5,4 -- mtctr r7 -- -- /* -- * Reduce the previously calculated 1024 bits to 64 bits, shifting -- * 32 bits to include the trailing 32 bits of zeros -- */ -- lvx v0,0,r3 -- lvx v1,off16,r3 -- lvx v2,off32,r3 -- lvx v3,off48,r3 -- lvx v4,off64,r3 -- lvx v5,off80,r3 -- lvx v6,off96,r3 -- lvx v7,off112,r3 -- addi r3,r3,8*16 -- -- VPMSUMW(v0,v16,v0) -- VPMSUMW(v1,v17,v1) -- VPMSUMW(v2,v18,v2) -- VPMSUMW(v3,v19,v3) -- VPMSUMW(v4,v20,v4) -- VPMSUMW(v5,v21,v5) -- VPMSUMW(v6,v22,v6) -- VPMSUMW(v7,v23,v7) -- -- /* Now reduce the tail (0 - 112 bytes) */ -- cmpdi r7,0 -- beq 1f -- -- lvx v16,0,r4 -- lvx v17,0,r3 -- VPERM(v16,v16,v16,byteswap) -- VPMSUMW(v16,v16,v17) -- vxor v0,v0,v16 -- bdz 1f -- -- lvx v16,off16,r4 -- lvx v17,off16,r3 -- VPERM(v16,v16,v16,byteswap) -- VPMSUMW(v16,v16,v17) -- vxor v0,v0,v16 -- bdz 1f -- -- lvx v16,off32,r4 -- lvx v17,off32,r3 -- VPERM(v16,v16,v16,byteswap) -- VPMSUMW(v16,v16,v17) -- vxor v0,v0,v16 -- bdz 1f -- -- lvx v16,off48,r4 -- lvx v17,off48,r3 -- VPERM(v16,v16,v16,byteswap) -- VPMSUMW(v16,v16,v17) -- vxor v0,v0,v16 -- bdz 1f -- -- lvx v16,off64,r4 -- lvx v17,off64,r3 -- VPERM(v16,v16,v16,byteswap) -- VPMSUMW(v16,v16,v17) -- vxor v0,v0,v16 -- bdz 1f -- -- lvx v16,off80,r4 -- lvx v17,off80,r3 -- VPERM(v16,v16,v16,byteswap) -- VPMSUMW(v16,v16,v17) -- vxor v0,v0,v16 -- bdz 1f -- -- lvx v16,off96,r4 -- lvx v17,off96,r3 -- VPERM(v16,v16,v16,byteswap) -- VPMSUMW(v16,v16,v17) -- vxor v0,v0,v16 -- -- /* Now xor all the parallel chunks together */ --1: vxor v0,v0,v1 -- vxor v2,v2,v3 -- vxor v4,v4,v5 -- vxor v6,v6,v7 -- -- vxor v0,v0,v2 -- vxor v4,v4,v6 -- -- vxor v0,v0,v4 -- --.Lbarrett_reduction: -- /* Barrett constants */ -- addis r3,r2,.barrett_constants@toc@ha -- addi r3,r3,.barrett_constants@toc@l -- -- lvx const1,0,r3 -- lvx const2,off16,r3 -- -- vsldoi v1,v0,v0,8 -- vxor v0,v0,v1 /* xor two 64 bit results together */ -- --#ifdef REFLECT -- /* shift left one bit */ -- vspltisb v1,1 -- vsl v0,v0,v1 --#endif -- -- vand v0,v0,mask_64bit -- --#ifndef REFLECT -- /* -- * Now for the Barrett reduction algorithm. The idea is to calculate q, -- * the multiple of our polynomial that we need to subtract. By -- * doing the computation 2x bits higher (ie 64 bits) and shifting the -- * result back down 2x bits, we round down to the nearest multiple. -- */ -- VPMSUMD(v1,v0,const1) /* ma */ -- vsldoi v1,zeroes,v1,8 /* q = floor(ma/(2^64)) */ -- VPMSUMD(v1,v1,const2) /* qn */ -- vxor v0,v0,v1 /* a - qn, subtraction is xor in GF(2) */ -- -- /* -- * Get the result into r3. We need to shift it left 8 bytes: -- * V0 [ 0 1 2 X ] -- * V0 [ 0 X 2 3 ] -- */ -- vsldoi v0,v0,zeroes,8 /* shift result into top 64 bits */ --#else -- /* -- * The reflected version of Barrett reduction. Instead of bit -- * reflecting our data (which is expensive to do), we bit reflect our -- * constants and our algorithm, which means the intermediate data in -- * our vector registers goes from 0-63 instead of 63-0. We can reflect -- * the algorithm because we don't carry in mod 2 arithmetic. -- */ -- vand v1,v0,mask_32bit /* bottom 32 bits of a */ -- VPMSUMD(v1,v1,const1) /* ma */ -- vand v1,v1,mask_32bit /* bottom 32bits of ma */ -- VPMSUMD(v1,v1,const2) /* qn */ -- vxor v0,v0,v1 /* a - qn, subtraction is xor in GF(2) */ -- -- /* -- * Since we are bit reflected, the result (ie the low 32 bits) is in -- * the high 32 bits. We just need to shift it left 4 bytes -- * V0 [ 0 1 X 3 ] -- * V0 [ 0 X 2 3 ] -- */ -- vsldoi v0,v0,zeroes,4 /* shift result into top 64 bits of */ --#endif -- -- /* Get it into r3 */ -- MFVRD(r3, v0) -- --.Lout: -- subi r6,r1,56+10*16 -- subi r7,r1,56+2*16 -- -- lvx v20,0,r6 -- lvx v21,off16,r6 -- lvx v22,off32,r6 -- lvx v23,off48,r6 -- lvx v24,off64,r6 -- lvx v25,off80,r6 -- lvx v26,off96,r6 -- lvx v27,off112,r6 -- lvx v28,0,r7 -- lvx v29,off16,r7 -- -- ld r31,-8(r1) -- ld r30,-16(r1) -- ld r29,-24(r1) -- ld r28,-32(r1) -- ld r27,-40(r1) -- ld r26,-48(r1) -- ld r25,-56(r1) -- -- blr -- --.Lfirst_warm_up_done: -- lvx const1,0,r3 -- addi r3,r3,16 -- -- VPMSUMD(v8,v16,const1) -- VPMSUMD(v9,v17,const1) -- VPMSUMD(v10,v18,const1) -- VPMSUMD(v11,v19,const1) -- VPMSUMD(v12,v20,const1) -- VPMSUMD(v13,v21,const1) -- VPMSUMD(v14,v22,const1) -- VPMSUMD(v15,v23,const1) -- -- b .Lsecond_cool_down -- --.Lshort: -- cmpdi r5,0 -- beq .Lzero -- -- addis r3,r2,.short_constants@toc@ha -- addi r3,r3,.short_constants@toc@l -- -- /* Calculate where in the constant table we need to start */ -- subfic r6,r5,256 -- add r3,r3,r6 -- -- /* How many 16 byte chunks? */ -- srdi r7,r5,4 -- mtctr r7 -- -- vxor v19,v19,v19 -- vxor v20,v20,v20 -- -- lvx v0,0,r4 -- lvx v16,0,r3 -- VPERM(v0,v0,v16,byteswap) -- vxor v0,v0,v8 /* xor in initial value */ -- VPMSUMW(v0,v0,v16) -- bdz .Lv0 -- -- lvx v1,off16,r4 -- lvx v17,off16,r3 -- VPERM(v1,v1,v17,byteswap) -- VPMSUMW(v1,v1,v17) -- bdz .Lv1 -- -- lvx v2,off32,r4 -- lvx v16,off32,r3 -- VPERM(v2,v2,v16,byteswap) -- VPMSUMW(v2,v2,v16) -- bdz .Lv2 -- -- lvx v3,off48,r4 -- lvx v17,off48,r3 -- VPERM(v3,v3,v17,byteswap) -- VPMSUMW(v3,v3,v17) -- bdz .Lv3 -- -- lvx v4,off64,r4 -- lvx v16,off64,r3 -- VPERM(v4,v4,v16,byteswap) -- VPMSUMW(v4,v4,v16) -- bdz .Lv4 -- -- lvx v5,off80,r4 -- lvx v17,off80,r3 -- VPERM(v5,v5,v17,byteswap) -- VPMSUMW(v5,v5,v17) -- bdz .Lv5 -- -- lvx v6,off96,r4 -- lvx v16,off96,r3 -- VPERM(v6,v6,v16,byteswap) -- VPMSUMW(v6,v6,v16) -- bdz .Lv6 -- -- lvx v7,off112,r4 -- lvx v17,off112,r3 -- VPERM(v7,v7,v17,byteswap) -- VPMSUMW(v7,v7,v17) -- bdz .Lv7 -- -- addi r3,r3,128 -- addi r4,r4,128 -- -- lvx v8,0,r4 -- lvx v16,0,r3 -- VPERM(v8,v8,v16,byteswap) -- VPMSUMW(v8,v8,v16) -- bdz .Lv8 -- -- lvx v9,off16,r4 -- lvx v17,off16,r3 -- VPERM(v9,v9,v17,byteswap) -- VPMSUMW(v9,v9,v17) -- bdz .Lv9 -- -- lvx v10,off32,r4 -- lvx v16,off32,r3 -- VPERM(v10,v10,v16,byteswap) -- VPMSUMW(v10,v10,v16) -- bdz .Lv10 -- -- lvx v11,off48,r4 -- lvx v17,off48,r3 -- VPERM(v11,v11,v17,byteswap) -- VPMSUMW(v11,v11,v17) -- bdz .Lv11 -- -- lvx v12,off64,r4 -- lvx v16,off64,r3 -- VPERM(v12,v12,v16,byteswap) -- VPMSUMW(v12,v12,v16) -- bdz .Lv12 -- -- lvx v13,off80,r4 -- lvx v17,off80,r3 -- VPERM(v13,v13,v17,byteswap) -- VPMSUMW(v13,v13,v17) -- bdz .Lv13 -- -- lvx v14,off96,r4 -- lvx v16,off96,r3 -- VPERM(v14,v14,v16,byteswap) -- VPMSUMW(v14,v14,v16) -- bdz .Lv14 -- -- lvx v15,off112,r4 -- lvx v17,off112,r3 -- VPERM(v15,v15,v17,byteswap) -- VPMSUMW(v15,v15,v17) -- --.Lv15: vxor v19,v19,v15 --.Lv14: vxor v20,v20,v14 --.Lv13: vxor v19,v19,v13 --.Lv12: vxor v20,v20,v12 --.Lv11: vxor v19,v19,v11 --.Lv10: vxor v20,v20,v10 --.Lv9: vxor v19,v19,v9 --.Lv8: vxor v20,v20,v8 --.Lv7: vxor v19,v19,v7 --.Lv6: vxor v20,v20,v6 --.Lv5: vxor v19,v19,v5 --.Lv4: vxor v20,v20,v4 --.Lv3: vxor v19,v19,v3 --.Lv2: vxor v20,v20,v2 --.Lv1: vxor v19,v19,v1 --.Lv0: vxor v20,v20,v0 -- -- vxor v0,v19,v20 -- -- b .Lbarrett_reduction -- --.Lzero: -- mr r3,r10 -- b .Lout -- --FUNC_END(__crc32_vpmsum) -diff --git a/util/crc32c_ppc_clang_workaround.h b/util/crc32c_ppc_clang_workaround.h -new file mode 100644 -index 0000000000..fc4391a603 ---- /dev/null -+++ b/util/crc32c_ppc_clang_workaround.h -@@ -0,0 +1,93 @@ -+// Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved. -+// Copyright (C) 2015, 2017 International Business Machines Corp. -+// All rights reserved. -+// This source code is licensed under both the GPLv2 (found in the -+// COPYING file in the root directory) and Apache 2.0 License -+// (found in the LICENSE.Apache file in the root directory). -+#ifndef CLANG_WORKAROUND_H -+#define CLANG_WORKAROUND_H -+ -+/* -+ * These stubs fix clang incompatibilities with GCC builtins. -+ */ -+ -+#ifndef __builtin_crypto_vpmsumw -+#define __builtin_crypto_vpmsumw __builtin_crypto_vpmsumb -+#endif -+#ifndef __builtin_crypto_vpmsumd -+#define __builtin_crypto_vpmsumd __builtin_crypto_vpmsumb -+#endif -+ -+static inline -+__vector unsigned long long __attribute__((overloadable)) -+vec_ld(int __a, const __vector unsigned long long* __b) -+{ -+ return (__vector unsigned long long)__builtin_altivec_lvx(__a, __b); -+} -+ -+/* -+ * GCC __builtin_pack_vector_int128 returns a vector __int128_t but Clang -+ * does not recognize this type. On GCC this builtin is translated to a -+ * xxpermdi instruction that only moves the registers __a, __b instead generates -+ * a load. -+ * -+ * Clang has vec_xxpermdi intrinsics. It was implemented in 4.0.0. -+ */ -+static inline -+__vector unsigned long long __builtin_pack_vector (unsigned long __a, -+ unsigned long __b) -+{ -+ #if defined(__BIG_ENDIAN__) -+ __vector unsigned long long __v = {__a, __b}; -+ #else -+ __vector unsigned long long __v = {__b, __a}; -+ #endif -+ return __v; -+} -+ -+/* -+ * Clang 7 changed the behavior of vec_xxpermdi in order to provide the same -+ * behavior of GCC. That means code adapted to Clang >= 7 does not work on -+ * Clang <= 6. So, fallback to __builtin_unpack_vector() on Clang <= 6. -+ */ -+#if !defined vec_xxpermdi || __clang_major__ <= 6 -+ -+static inline -+unsigned long __builtin_unpack_vector (__vector unsigned long long __v, -+ int __o) -+{ -+ return __v[__o]; -+} -+ -+#if defined(__BIG_ENDIAN__) -+#define __builtin_unpack_vector_0(a) __builtin_unpack_vector ((a), 0) -+#define __builtin_unpack_vector_1(a) __builtin_unpack_vector ((a), 1) -+#else -+#define __builtin_unpack_vector_0(a) __builtin_unpack_vector ((a), 1) -+#define __builtin_unpack_vector_1(a) __builtin_unpack_vector ((a), 0) -+#endif -+ -+#else -+ -+static inline -+unsigned long __builtin_unpack_vector_0 (__vector unsigned long long __v) -+{ -+ #if defined(__BIG_ENDIAN__) -+ return vec_xxpermdi(__v, __v, 0x0)[0]; -+ #else -+ return vec_xxpermdi(__v, __v, 0x3)[0]; -+ #endif -+} -+ -+static inline -+unsigned long __builtin_unpack_vector_1 (__vector unsigned long long __v) -+{ -+ #if defined(__BIG_ENDIAN__) -+ return vec_xxpermdi(__v, __v, 0x3)[0]; -+ #else -+ return vec_xxpermdi(__v, __v, 0x0)[0]; -+ #endif -+} -+#endif /* vec_xxpermdi */ -+ -+#endif -diff --git a/util/crc32c_ppc_constants.h b/util/crc32c_ppc_constants.h -index f6494cd01c..b558d46777 100644 ---- a/util/crc32c_ppc_constants.h -+++ b/util/crc32c_ppc_constants.h -@@ -5,896 +5,1206 @@ - // COPYING file in the root directory) and Apache 2.0 License - // (found in the LICENSE.Apache file in the root directory). - --#pragma once -+/* -+* -+* THIS FILE IS GENERATED WITH -+./crc32_constants -r -x 0x1edc6f41 -+ -+* This is from https://github.com/antonblanchard/crc32-vpmsum/ -+* DO NOT MODIFY IT MANUALLY! -+* -+*/ - - #define CRC 0x1edc6f41 --#define REFLECT - #define CRC_XOR -+#define REFLECT -+#define MAX_SIZE 32768 - --#ifndef __ASSEMBLY__ - #ifdef CRC_TABLE - static const unsigned int crc_table[] = { -- 0x00000000, 0xf26b8303, 0xe13b70f7, 0x1350f3f4, 0xc79a971f, 0x35f1141c, -- 0x26a1e7e8, 0xd4ca64eb, 0x8ad958cf, 0x78b2dbcc, 0x6be22838, 0x9989ab3b, -- 0x4d43cfd0, 0xbf284cd3, 0xac78bf27, 0x5e133c24, 0x105ec76f, 0xe235446c, -- 0xf165b798, 0x030e349b, 0xd7c45070, 0x25afd373, 0x36ff2087, 0xc494a384, -- 0x9a879fa0, 0x68ec1ca3, 0x7bbcef57, 0x89d76c54, 0x5d1d08bf, 0xaf768bbc, -- 0xbc267848, 0x4e4dfb4b, 0x20bd8ede, 0xd2d60ddd, 0xc186fe29, 0x33ed7d2a, -- 0xe72719c1, 0x154c9ac2, 0x061c6936, 0xf477ea35, 0xaa64d611, 0x580f5512, -- 0x4b5fa6e6, 0xb93425e5, 0x6dfe410e, 0x9f95c20d, 0x8cc531f9, 0x7eaeb2fa, -- 0x30e349b1, 0xc288cab2, 0xd1d83946, 0x23b3ba45, 0xf779deae, 0x05125dad, -- 0x1642ae59, 0xe4292d5a, 0xba3a117e, 0x4851927d, 0x5b016189, 0xa96ae28a, -- 0x7da08661, 0x8fcb0562, 0x9c9bf696, 0x6ef07595, 0x417b1dbc, 0xb3109ebf, -- 0xa0406d4b, 0x522bee48, 0x86e18aa3, 0x748a09a0, 0x67dafa54, 0x95b17957, -- 0xcba24573, 0x39c9c670, 0x2a993584, 0xd8f2b687, 0x0c38d26c, 0xfe53516f, -- 0xed03a29b, 0x1f682198, 0x5125dad3, 0xa34e59d0, 0xb01eaa24, 0x42752927, -- 0x96bf4dcc, 0x64d4cecf, 0x77843d3b, 0x85efbe38, 0xdbfc821c, 0x2997011f, -- 0x3ac7f2eb, 0xc8ac71e8, 0x1c661503, 0xee0d9600, 0xfd5d65f4, 0x0f36e6f7, -- 0x61c69362, 0x93ad1061, 0x80fde395, 0x72966096, 0xa65c047d, 0x5437877e, -- 0x4767748a, 0xb50cf789, 0xeb1fcbad, 0x197448ae, 0x0a24bb5a, 0xf84f3859, -- 0x2c855cb2, 0xdeeedfb1, 0xcdbe2c45, 0x3fd5af46, 0x7198540d, 0x83f3d70e, -- 0x90a324fa, 0x62c8a7f9, 0xb602c312, 0x44694011, 0x5739b3e5, 0xa55230e6, -- 0xfb410cc2, 0x092a8fc1, 0x1a7a7c35, 0xe811ff36, 0x3cdb9bdd, 0xceb018de, -- 0xdde0eb2a, 0x2f8b6829, 0x82f63b78, 0x709db87b, 0x63cd4b8f, 0x91a6c88c, -- 0x456cac67, 0xb7072f64, 0xa457dc90, 0x563c5f93, 0x082f63b7, 0xfa44e0b4, -- 0xe9141340, 0x1b7f9043, 0xcfb5f4a8, 0x3dde77ab, 0x2e8e845f, 0xdce5075c, -- 0x92a8fc17, 0x60c37f14, 0x73938ce0, 0x81f80fe3, 0x55326b08, 0xa759e80b, -- 0xb4091bff, 0x466298fc, 0x1871a4d8, 0xea1a27db, 0xf94ad42f, 0x0b21572c, -- 0xdfeb33c7, 0x2d80b0c4, 0x3ed04330, 0xccbbc033, 0xa24bb5a6, 0x502036a5, -- 0x4370c551, 0xb11b4652, 0x65d122b9, 0x97baa1ba, 0x84ea524e, 0x7681d14d, -- 0x2892ed69, 0xdaf96e6a, 0xc9a99d9e, 0x3bc21e9d, 0xef087a76, 0x1d63f975, -- 0x0e330a81, 0xfc588982, 0xb21572c9, 0x407ef1ca, 0x532e023e, 0xa145813d, -- 0x758fe5d6, 0x87e466d5, 0x94b49521, 0x66df1622, 0x38cc2a06, 0xcaa7a905, -- 0xd9f75af1, 0x2b9cd9f2, 0xff56bd19, 0x0d3d3e1a, 0x1e6dcdee, 0xec064eed, -- 0xc38d26c4, 0x31e6a5c7, 0x22b65633, 0xd0ddd530, 0x0417b1db, 0xf67c32d8, -- 0xe52cc12c, 0x1747422f, 0x49547e0b, 0xbb3ffd08, 0xa86f0efc, 0x5a048dff, -- 0x8ecee914, 0x7ca56a17, 0x6ff599e3, 0x9d9e1ae0, 0xd3d3e1ab, 0x21b862a8, -- 0x32e8915c, 0xc083125f, 0x144976b4, 0xe622f5b7, 0xf5720643, 0x07198540, -- 0x590ab964, 0xab613a67, 0xb831c993, 0x4a5a4a90, 0x9e902e7b, 0x6cfbad78, -- 0x7fab5e8c, 0x8dc0dd8f, 0xe330a81a, 0x115b2b19, 0x020bd8ed, 0xf0605bee, -- 0x24aa3f05, 0xd6c1bc06, 0xc5914ff2, 0x37faccf1, 0x69e9f0d5, 0x9b8273d6, -- 0x88d28022, 0x7ab90321, 0xae7367ca, 0x5c18e4c9, 0x4f48173d, 0xbd23943e, -- 0xf36e6f75, 0x0105ec76, 0x12551f82, 0xe03e9c81, 0x34f4f86a, 0xc69f7b69, -- 0xd5cf889d, 0x27a40b9e, 0x79b737ba, 0x8bdcb4b9, 0x988c474d, 0x6ae7c44e, -- 0xbe2da0a5, 0x4c4623a6, 0x5f16d052, 0xad7d5351, --}; -- --#endif -- --#else --#define MAX_SIZE 32768 --.constants : -- -- /* Reduce 262144 kbits to 1024 bits */ -- /* x^261120 mod p(x)` << 1, x^261184 mod p(x)` << 1 */ -- .octa 0x00000000b6ca9e20000000009c37c408 -- -- /* x^260096 mod p(x)` << 1, x^260160 mod p(x)` << 1 */ -- .octa 0x00000000350249a800000001b51df26c -- -- /* x^259072 mod p(x)` << 1, x^259136 mod p(x)` << 1 */ -- .octa 0x00000001862dac54000000000724b9d0 -- -- /* x^258048 mod p(x)` << 1, x^258112 mod p(x)` << 1 */ -- .octa 0x00000001d87fb48c00000001c00532fe -- -- /* x^257024 mod p(x)` << 1, x^257088 mod p(x)` << 1 */ -- .octa 0x00000001f39b699e00000000f05a9362 -- -- /* x^256000 mod p(x)` << 1, x^256064 mod p(x)` << 1 */ -- .octa 0x0000000101da11b400000001e1007970 -- -- /* x^254976 mod p(x)` << 1, x^255040 mod p(x)` << 1 */ -- .octa 0x00000001cab571e000000000a57366ee -- -- /* x^253952 mod p(x)` << 1, x^254016 mod p(x)` << 1 */ -- .octa 0x00000000c7020cfe0000000192011284 -- -- /* x^252928 mod p(x)` << 1, x^252992 mod p(x)` << 1 */ -- .octa 0x00000000cdaed1ae0000000162716d9a -- -- /* x^251904 mod p(x)` << 1, x^251968 mod p(x)` << 1 */ -- .octa 0x00000001e804effc00000000cd97ecde -- -- /* x^250880 mod p(x)` << 1, x^250944 mod p(x)` << 1 */ -- .octa 0x0000000077c3ea3a0000000058812bc0 -- -- /* x^249856 mod p(x)` << 1, x^249920 mod p(x)` << 1 */ -- .octa 0x0000000068df31b40000000088b8c12e -- -- /* x^248832 mod p(x)` << 1, x^248896 mod p(x)` << 1 */ -- .octa 0x00000000b059b6c200000001230b234c -- -- /* x^247808 mod p(x)` << 1, x^247872 mod p(x)` << 1 */ -- .octa 0x0000000145fb8ed800000001120b416e -- -- /* x^246784 mod p(x)` << 1, x^246848 mod p(x)` << 1 */ -- .octa 0x00000000cbc0916800000001974aecb0 -- -- /* x^245760 mod p(x)` << 1, x^245824 mod p(x)` << 1 */ -- .octa 0x000000005ceeedc2000000008ee3f226 -- -- /* x^244736 mod p(x)` << 1, x^244800 mod p(x)` << 1 */ -- .octa 0x0000000047d74e8600000001089aba9a -- -- /* x^243712 mod p(x)` << 1, x^243776 mod p(x)` << 1 */ -- .octa 0x00000001407e9e220000000065113872 -- -- /* x^242688 mod p(x)` << 1, x^242752 mod p(x)` << 1 */ -- .octa 0x00000001da967bda000000005c07ec10 -- -- /* x^241664 mod p(x)` << 1, x^241728 mod p(x)` << 1 */ -- .octa 0x000000006c8983680000000187590924 -- -- /* x^240640 mod p(x)` << 1, x^240704 mod p(x)` << 1 */ -- .octa 0x00000000f2d14c9800000000e35da7c6 -- -- /* x^239616 mod p(x)` << 1, x^239680 mod p(x)` << 1 */ -- .octa 0x00000001993c6ad4000000000415855a -- -- /* x^238592 mod p(x)` << 1, x^238656 mod p(x)` << 1 */ -- .octa 0x000000014683d1ac0000000073617758 -- -- /* x^237568 mod p(x)` << 1, x^237632 mod p(x)` << 1 */ -- .octa 0x00000001a7c93e6c0000000176021d28 -- -- /* x^236544 mod p(x)` << 1, x^236608 mod p(x)` << 1 */ -- .octa 0x000000010211e90a00000001c358fd0a -- -- /* x^235520 mod p(x)` << 1, x^235584 mod p(x)` << 1 */ -- .octa 0x000000001119403e00000001ff7a2c18 -- -- /* x^234496 mod p(x)` << 1, x^234560 mod p(x)` << 1 */ -- .octa 0x000000001c3261aa00000000f2d9f7e4 -- -- /* x^233472 mod p(x)` << 1, x^233536 mod p(x)` << 1 */ -- .octa 0x000000014e37a634000000016cf1f9c8 -- -- /* x^232448 mod p(x)` << 1, x^232512 mod p(x)` << 1 */ -- .octa 0x0000000073786c0c000000010af9279a -- -- /* x^231424 mod p(x)` << 1, x^231488 mod p(x)` << 1 */ -- .octa 0x000000011dc037f80000000004f101e8 -- -- /* x^230400 mod p(x)` << 1, x^230464 mod p(x)` << 1 */ -- .octa 0x0000000031433dfc0000000070bcf184 -- -- /* x^229376 mod p(x)` << 1, x^229440 mod p(x)` << 1 */ -- .octa 0x000000009cde8348000000000a8de642 -- -- /* x^228352 mod p(x)` << 1, x^228416 mod p(x)` << 1 */ -- .octa 0x0000000038d3c2a60000000062ea130c -- -- /* x^227328 mod p(x)` << 1, x^227392 mod p(x)` << 1 */ -- .octa 0x000000011b25f26000000001eb31cbb2 -- -- /* x^226304 mod p(x)` << 1, x^226368 mod p(x)` << 1 */ -- .octa 0x000000001629e6f00000000170783448 -- -- /* x^225280 mod p(x)` << 1, x^225344 mod p(x)` << 1 */ -- .octa 0x0000000160838b4c00000001a684b4c6 -- -- /* x^224256 mod p(x)` << 1, x^224320 mod p(x)` << 1 */ -- .octa 0x000000007a44011c00000000253ca5b4 -- -- /* x^223232 mod p(x)` << 1, x^223296 mod p(x)` << 1 */ -- .octa 0x00000000226f417a0000000057b4b1e2 -- -- /* x^222208 mod p(x)` << 1, x^222272 mod p(x)` << 1 */ -- .octa 0x0000000045eb2eb400000000b6bd084c -- -- /* x^221184 mod p(x)` << 1, x^221248 mod p(x)` << 1 */ -- .octa 0x000000014459d70c0000000123c2d592 -- -- /* x^220160 mod p(x)` << 1, x^220224 mod p(x)` << 1 */ -- .octa 0x00000001d406ed8200000000159dafce -- -- /* x^219136 mod p(x)` << 1, x^219200 mod p(x)` << 1 */ -- .octa 0x0000000160c8e1a80000000127e1a64e -- -- /* x^218112 mod p(x)` << 1, x^218176 mod p(x)` << 1 */ -- .octa 0x0000000027ba80980000000056860754 -- -- /* x^217088 mod p(x)` << 1, x^217152 mod p(x)` << 1 */ -- .octa 0x000000006d92d01800000001e661aae8 -- -- /* x^216064 mod p(x)` << 1, x^216128 mod p(x)` << 1 */ -- .octa 0x000000012ed7e3f200000000f82c6166 -- -- /* x^215040 mod p(x)` << 1, x^215104 mod p(x)` << 1 */ -- .octa 0x000000002dc8778800000000c4f9c7ae -- -- /* x^214016 mod p(x)` << 1, x^214080 mod p(x)` << 1 */ -- .octa 0x0000000018240bb80000000074203d20 -- -- /* x^212992 mod p(x)` << 1, x^213056 mod p(x)` << 1 */ -- .octa 0x000000001ad381580000000198173052 -- -- /* x^211968 mod p(x)` << 1, x^212032 mod p(x)` << 1 */ -- .octa 0x00000001396b78f200000001ce8aba54 -- -- /* x^210944 mod p(x)` << 1, x^211008 mod p(x)` << 1 */ -- .octa 0x000000011a68133400000001850d5d94 -- -- /* x^209920 mod p(x)` << 1, x^209984 mod p(x)` << 1 */ -- .octa 0x000000012104732e00000001d609239c -- -- /* x^208896 mod p(x)` << 1, x^208960 mod p(x)` << 1 */ -- .octa 0x00000000a140d90c000000001595f048 -- -- /* x^207872 mod p(x)` << 1, x^207936 mod p(x)` << 1 */ -- .octa 0x00000001b7215eda0000000042ccee08 -- -- /* x^206848 mod p(x)` << 1, x^206912 mod p(x)` << 1 */ -- .octa 0x00000001aaf1df3c000000010a389d74 -- -- /* x^205824 mod p(x)` << 1, x^205888 mod p(x)` << 1 */ -- .octa 0x0000000029d15b8a000000012a840da6 -- -- /* x^204800 mod p(x)` << 1, x^204864 mod p(x)` << 1 */ -- .octa 0x00000000f1a96922000000001d181c0c -- -- /* x^203776 mod p(x)` << 1, x^203840 mod p(x)` << 1 */ -- .octa 0x00000001ac80d03c0000000068b7d1f6 -- -- /* x^202752 mod p(x)` << 1, x^202816 mod p(x)` << 1 */ -- .octa 0x000000000f11d56a000000005b0f14fc -- -- /* x^201728 mod p(x)` << 1, x^201792 mod p(x)` << 1 */ -- .octa 0x00000001f1c022a20000000179e9e730 -- -- /* x^200704 mod p(x)` << 1, x^200768 mod p(x)` << 1 */ -- .octa 0x0000000173d00ae200000001ce1368d6 -- -- /* x^199680 mod p(x)` << 1, x^199744 mod p(x)` << 1 */ -- .octa 0x00000001d4ffe4ac0000000112c3a84c -- -- /* x^198656 mod p(x)` << 1, x^198720 mod p(x)` << 1 */ -- .octa 0x000000016edc5ae400000000de940fee -- -- /* x^197632 mod p(x)` << 1, x^197696 mod p(x)` << 1 */ -- .octa 0x00000001f1a0214000000000fe896b7e -- -- /* x^196608 mod p(x)` << 1, x^196672 mod p(x)` << 1 */ -- .octa 0x00000000ca0b28a000000001f797431c -- -- /* x^195584 mod p(x)` << 1, x^195648 mod p(x)` << 1 */ -- .octa 0x00000001928e30a20000000053e989ba -- -- /* x^194560 mod p(x)` << 1, x^194624 mod p(x)` << 1 */ -- .octa 0x0000000097b1b002000000003920cd16 -- -- /* x^193536 mod p(x)` << 1, x^193600 mod p(x)` << 1 */ -- .octa 0x00000000b15bf90600000001e6f579b8 -- -- /* x^192512 mod p(x)` << 1, x^192576 mod p(x)` << 1 */ -- .octa 0x00000000411c5d52000000007493cb0a -- -- /* x^191488 mod p(x)` << 1, x^191552 mod p(x)` << 1 */ -- .octa 0x00000001c36f330000000001bdd376d8 -- -- /* x^190464 mod p(x)` << 1, x^190528 mod p(x)` << 1 */ -- .octa 0x00000001119227e0000000016badfee6 -- -- /* x^189440 mod p(x)` << 1, x^189504 mod p(x)` << 1 */ -- .octa 0x00000000114d47020000000071de5c58 -- -- /* x^188416 mod p(x)` << 1, x^188480 mod p(x)` << 1 */ -- .octa 0x00000000458b5b9800000000453f317c -- -- /* x^187392 mod p(x)` << 1, x^187456 mod p(x)` << 1 */ -- .octa 0x000000012e31fb8e0000000121675cce -- -- /* x^186368 mod p(x)` << 1, x^186432 mod p(x)` << 1 */ -- .octa 0x000000005cf619d800000001f409ee92 -- -- /* x^185344 mod p(x)` << 1, x^185408 mod p(x)` << 1 */ -- .octa 0x0000000063f4d8b200000000f36b9c88 -- -- /* x^184320 mod p(x)` << 1, x^184384 mod p(x)` << 1 */ -- .octa 0x000000004138dc8a0000000036b398f4 -- -- /* x^183296 mod p(x)` << 1, x^183360 mod p(x)` << 1 */ -- .octa 0x00000001d29ee8e000000001748f9adc -- -- /* x^182272 mod p(x)` << 1, x^182336 mod p(x)` << 1 */ -- .octa 0x000000006a08ace800000001be94ec00 -- -- /* x^181248 mod p(x)` << 1, x^181312 mod p(x)` << 1 */ -- .octa 0x0000000127d4201000000000b74370d6 -- -- /* x^180224 mod p(x)` << 1, x^180288 mod p(x)` << 1 */ -- .octa 0x0000000019d76b6200000001174d0b98 -- -- /* x^179200 mod p(x)` << 1, x^179264 mod p(x)` << 1 */ -- .octa 0x00000001b1471f6e00000000befc06a4 -- -- /* x^178176 mod p(x)` << 1, x^178240 mod p(x)` << 1 */ -- .octa 0x00000001f64c19cc00000001ae125288 -- -- /* x^177152 mod p(x)` << 1, x^177216 mod p(x)` << 1 */ -- .octa 0x00000000003c0ea00000000095c19b34 -- -- /* x^176128 mod p(x)` << 1, x^176192 mod p(x)` << 1 */ -- .octa 0x000000014d73abf600000001a78496f2 -- -- /* x^175104 mod p(x)` << 1, x^175168 mod p(x)` << 1 */ -- .octa 0x00000001620eb84400000001ac5390a0 -- -- /* x^174080 mod p(x)` << 1, x^174144 mod p(x)` << 1 */ -- .octa 0x0000000147655048000000002a80ed6e -- -- /* x^173056 mod p(x)` << 1, x^173120 mod p(x)` << 1 */ -- .octa 0x0000000067b5077e00000001fa9b0128 -- -- /* x^172032 mod p(x)` << 1, x^172096 mod p(x)` << 1 */ -- .octa 0x0000000010ffe20600000001ea94929e -- -- /* x^171008 mod p(x)` << 1, x^171072 mod p(x)` << 1 */ -- .octa 0x000000000fee8f1e0000000125f4305c -- -- /* x^169984 mod p(x)` << 1, x^170048 mod p(x)` << 1 */ -- .octa 0x00000001da26fbae00000001471e2002 -- -- /* x^168960 mod p(x)` << 1, x^169024 mod p(x)` << 1 */ -- .octa 0x00000001b3a8bd880000000132d2253a -- -- /* x^167936 mod p(x)` << 1, x^168000 mod p(x)` << 1 */ -- .octa 0x00000000e8f3898e00000000f26b3592 -- -- /* x^166912 mod p(x)` << 1, x^166976 mod p(x)` << 1 */ -- .octa 0x00000000b0d0d28c00000000bc8b67b0 -- -- /* x^165888 mod p(x)` << 1, x^165952 mod p(x)` << 1 */ -- .octa 0x0000000030f2a798000000013a826ef2 -- -- /* x^164864 mod p(x)` << 1, x^164928 mod p(x)` << 1 */ -- .octa 0x000000000fba10020000000081482c84 -- -- /* x^163840 mod p(x)` << 1, x^163904 mod p(x)` << 1 */ -- .octa 0x00000000bdb9bd7200000000e77307c2 -- -- /* x^162816 mod p(x)` << 1, x^162880 mod p(x)` << 1 */ -- .octa 0x0000000075d3bf5a00000000d4a07ec8 -- -- /* x^161792 mod p(x)` << 1, x^161856 mod p(x)` << 1 */ -- .octa 0x00000000ef1f98a00000000017102100 -- -- /* x^160768 mod p(x)` << 1, x^160832 mod p(x)` << 1 */ -- .octa 0x00000000689c760200000000db406486 -- -- /* x^159744 mod p(x)` << 1, x^159808 mod p(x)` << 1 */ -- .octa 0x000000016d5fa5fe0000000192db7f88 -- -- /* x^158720 mod p(x)` << 1, x^158784 mod p(x)` << 1 */ -- .octa 0x00000001d0d2b9ca000000018bf67b1e -- -- /* x^157696 mod p(x)` << 1, x^157760 mod p(x)` << 1 */ -- .octa 0x0000000041e7b470000000007c09163e -- -- /* x^156672 mod p(x)` << 1, x^156736 mod p(x)` << 1 */ -- .octa 0x00000001cbb6495e000000000adac060 -- -- /* x^155648 mod p(x)` << 1, x^155712 mod p(x)` << 1 */ -- .octa 0x000000010052a0b000000000bd8316ae -- -- /* x^154624 mod p(x)` << 1, x^154688 mod p(x)` << 1 */ -- .octa 0x00000001d8effb5c000000019f09ab54 -- -- /* x^153600 mod p(x)` << 1, x^153664 mod p(x)` << 1 */ -- .octa 0x00000001d969853c0000000125155542 -- -- /* x^152576 mod p(x)` << 1, x^152640 mod p(x)` << 1 */ -- .octa 0x00000000523ccce2000000018fdb5882 -- -- /* x^151552 mod p(x)` << 1, x^151616 mod p(x)` << 1 */ -- .octa 0x000000001e2436bc00000000e794b3f4 -- -- /* x^150528 mod p(x)` << 1, x^150592 mod p(x)` << 1 */ -- .octa 0x00000000ddd1c3a2000000016f9bb022 -- -- /* x^149504 mod p(x)` << 1, x^149568 mod p(x)` << 1 */ -- .octa 0x0000000019fcfe3800000000290c9978 -- -- /* x^148480 mod p(x)` << 1, x^148544 mod p(x)` << 1 */ -- .octa 0x00000001ce95db640000000083c0f350 -- -- /* x^147456 mod p(x)` << 1, x^147520 mod p(x)` << 1 */ -- .octa 0x00000000af5828060000000173ea6628 -- -- /* x^146432 mod p(x)` << 1, x^146496 mod p(x)` << 1 */ -- .octa 0x00000001006388f600000001c8b4e00a -- -- /* x^145408 mod p(x)` << 1, x^145472 mod p(x)` << 1 */ -- .octa 0x0000000179eca00a00000000de95d6aa -- -- /* x^144384 mod p(x)` << 1, x^144448 mod p(x)` << 1 */ -- .octa 0x0000000122410a6a000000010b7f7248 -- -- /* x^143360 mod p(x)` << 1, x^143424 mod p(x)` << 1 */ -- .octa 0x000000004288e87c00000001326e3a06 -- -- /* x^142336 mod p(x)` << 1, x^142400 mod p(x)` << 1 */ -- .octa 0x000000016c5490da00000000bb62c2e6 -- -- /* x^141312 mod p(x)` << 1, x^141376 mod p(x)` << 1 */ -- .octa 0x00000000d1c71f6e0000000156a4b2c2 -- -- /* x^140288 mod p(x)` << 1, x^140352 mod p(x)` << 1 */ -- .octa 0x00000001b4ce08a6000000011dfe763a -- -- /* x^139264 mod p(x)` << 1, x^139328 mod p(x)` << 1 */ -- .octa 0x00000001466ba60c000000007bcca8e2 -- -- /* x^138240 mod p(x)` << 1, x^138304 mod p(x)` << 1 */ -- .octa 0x00000001f6c488a40000000186118faa -- -- /* x^137216 mod p(x)` << 1, x^137280 mod p(x)` << 1 */ -- .octa 0x000000013bfb06820000000111a65a88 -- -- /* x^136192 mod p(x)` << 1, x^136256 mod p(x)` << 1 */ -- .octa 0x00000000690e9e54000000003565e1c4 -- -- /* x^135168 mod p(x)` << 1, x^135232 mod p(x)` << 1 */ -- .octa 0x00000000281346b6000000012ed02a82 -- -- /* x^134144 mod p(x)` << 1, x^134208 mod p(x)` << 1 */ -- .octa 0x000000015646402400000000c486ecfc -- -- /* x^133120 mod p(x)` << 1, x^133184 mod p(x)` << 1 */ -- .octa 0x000000016063a8dc0000000001b951b2 -- -- /* x^132096 mod p(x)` << 1, x^132160 mod p(x)` << 1 */ -- .octa 0x0000000116a663620000000048143916 -- -- /* x^131072 mod p(x)` << 1, x^131136 mod p(x)` << 1 */ -- .octa 0x000000017e8aa4d200000001dc2ae124 -- -- /* x^130048 mod p(x)` << 1, x^130112 mod p(x)` << 1 */ -- .octa 0x00000001728eb10c00000001416c58d6 -- -- /* x^129024 mod p(x)` << 1, x^129088 mod p(x)` << 1 */ -- .octa 0x00000001b08fd7fa00000000a479744a -- -- /* x^128000 mod p(x)` << 1, x^128064 mod p(x)` << 1 */ -- .octa 0x00000001092a16e80000000096ca3a26 -- -- /* x^126976 mod p(x)` << 1, x^127040 mod p(x)` << 1 */ -- .octa 0x00000000a505637c00000000ff223d4e -- -- /* x^125952 mod p(x)` << 1, x^126016 mod p(x)` << 1 */ -- .octa 0x00000000d94869b2000000010e84da42 -- -- /* x^124928 mod p(x)` << 1, x^124992 mod p(x)` << 1 */ -- .octa 0x00000001c8b203ae00000001b61ba3d0 -- -- /* x^123904 mod p(x)` << 1, x^123968 mod p(x)` << 1 */ -- .octa 0x000000005704aea000000000680f2de8 -- -- /* x^122880 mod p(x)` << 1, x^122944 mod p(x)` << 1 */ -- .octa 0x000000012e295fa2000000008772a9a8 -- -- /* x^121856 mod p(x)` << 1, x^121920 mod p(x)` << 1 */ -- .octa 0x000000011d0908bc0000000155f295bc -- -- /* x^120832 mod p(x)` << 1, x^120896 mod p(x)` << 1 */ -- .octa 0x0000000193ed97ea00000000595f9282 -- -- /* x^119808 mod p(x)` << 1, x^119872 mod p(x)` << 1 */ -- .octa 0x000000013a0f1c520000000164b1c25a -- -- /* x^118784 mod p(x)` << 1, x^118848 mod p(x)` << 1 */ -- .octa 0x000000010c2c40c000000000fbd67c50 -- -- /* x^117760 mod p(x)` << 1, x^117824 mod p(x)` << 1 */ -- .octa 0x00000000ff6fac3e0000000096076268 -- -- /* x^116736 mod p(x)` << 1, x^116800 mod p(x)` << 1 */ -- .octa 0x000000017b3609c000000001d288e4cc -- -- /* x^115712 mod p(x)` << 1, x^115776 mod p(x)` << 1 */ -- .octa 0x0000000088c8c92200000001eaac1bdc -- -- /* x^114688 mod p(x)` << 1, x^114752 mod p(x)` << 1 */ -- .octa 0x00000001751baae600000001f1ea39e2 -- -- /* x^113664 mod p(x)` << 1, x^113728 mod p(x)` << 1 */ -- .octa 0x000000010795297200000001eb6506fc -- -- /* x^112640 mod p(x)` << 1, x^112704 mod p(x)` << 1 */ -- .octa 0x0000000162b00abe000000010f806ffe -- -- /* x^111616 mod p(x)` << 1, x^111680 mod p(x)` << 1 */ -- .octa 0x000000000d7b404c000000010408481e -- -- /* x^110592 mod p(x)` << 1, x^110656 mod p(x)` << 1 */ -- .octa 0x00000000763b13d40000000188260534 -- -- /* x^109568 mod p(x)` << 1, x^109632 mod p(x)` << 1 */ -- .octa 0x00000000f6dc22d80000000058fc73e0 -- -- /* x^108544 mod p(x)` << 1, x^108608 mod p(x)` << 1 */ -- .octa 0x000000007daae06000000000391c59b8 -- -- /* x^107520 mod p(x)` << 1, x^107584 mod p(x)` << 1 */ -- .octa 0x000000013359ab7c000000018b638400 -- -- /* x^106496 mod p(x)` << 1, x^106560 mod p(x)` << 1 */ -- .octa 0x000000008add438a000000011738f5c4 -- -- /* x^105472 mod p(x)` << 1, x^105536 mod p(x)` << 1 */ -- .octa 0x00000001edbefdea000000008cf7c6da -- -- /* x^104448 mod p(x)` << 1, x^104512 mod p(x)` << 1 */ -- .octa 0x000000004104e0f800000001ef97fb16 -- -- /* x^103424 mod p(x)` << 1, x^103488 mod p(x)` << 1 */ -- .octa 0x00000000b48a82220000000102130e20 -- -- /* x^102400 mod p(x)` << 1, x^102464 mod p(x)` << 1 */ -- .octa 0x00000001bcb4684400000000db968898 -- -- /* x^101376 mod p(x)` << 1, x^101440 mod p(x)` << 1 */ -- .octa 0x000000013293ce0a00000000b5047b5e -- -- /* x^100352 mod p(x)` << 1, x^100416 mod p(x)` << 1 */ -- .octa 0x00000001710d0844000000010b90fdb2 -- -- /* x^99328 mod p(x)` << 1, x^99392 mod p(x)` << 1 */ -- .octa 0x0000000117907f6e000000004834a32e -- -- /* x^98304 mod p(x)` << 1, x^98368 mod p(x)` << 1 */ -- .octa 0x0000000087ddf93e0000000059c8f2b0 -- -- /* x^97280 mod p(x)` << 1, x^97344 mod p(x)` << 1 */ -- .octa 0x000000005970e9b00000000122cec508 -- -- /* x^96256 mod p(x)` << 1, x^96320 mod p(x)` << 1 */ -- .octa 0x0000000185b2b7d0000000000a330cda -- -- /* x^95232 mod p(x)` << 1, x^95296 mod p(x)` << 1 */ -- .octa 0x00000001dcee0efc000000014a47148c -- -- /* x^94208 mod p(x)` << 1, x^94272 mod p(x)` << 1 */ -- .octa 0x0000000030da27220000000042c61cb8 -- -- /* x^93184 mod p(x)` << 1, x^93248 mod p(x)` << 1 */ -- .octa 0x000000012f925a180000000012fe6960 -- -- /* x^92160 mod p(x)` << 1, x^92224 mod p(x)` << 1 */ -- .octa 0x00000000dd2e357c00000000dbda2c20 -- -- /* x^91136 mod p(x)` << 1, x^91200 mod p(x)` << 1 */ -- .octa 0x00000000071c80de000000011122410c -- -- /* x^90112 mod p(x)` << 1, x^90176 mod p(x)` << 1 */ -- .octa 0x000000011513140a00000000977b2070 -- -- /* x^89088 mod p(x)` << 1, x^89152 mod p(x)` << 1 */ -- .octa 0x00000001df876e8e000000014050438e -- -- /* x^88064 mod p(x)` << 1, x^88128 mod p(x)` << 1 */ -- .octa 0x000000015f81d6ce0000000147c840e8 -- -- /* x^87040 mod p(x)` << 1, x^87104 mod p(x)` << 1 */ -- .octa 0x000000019dd94dbe00000001cc7c88ce -- -- /* x^86016 mod p(x)` << 1, x^86080 mod p(x)` << 1 */ -- .octa 0x00000001373d206e00000001476b35a4 -- -- /* x^84992 mod p(x)` << 1, x^85056 mod p(x)` << 1 */ -- .octa 0x00000000668ccade000000013d52d508 -- -- /* x^83968 mod p(x)` << 1, x^84032 mod p(x)` << 1 */ -- .octa 0x00000001b192d268000000008e4be32e -- -- /* x^82944 mod p(x)` << 1, x^83008 mod p(x)` << 1 */ -- .octa 0x00000000e30f3a7800000000024120fe -- -- /* x^81920 mod p(x)` << 1, x^81984 mod p(x)` << 1 */ -- .octa 0x000000010ef1f7bc00000000ddecddb4 -- -- /* x^80896 mod p(x)` << 1, x^80960 mod p(x)` << 1 */ -- .octa 0x00000001f5ac738000000000d4d403bc -- -- /* x^79872 mod p(x)` << 1, x^79936 mod p(x)` << 1 */ -- .octa 0x000000011822ea7000000001734b89aa -- -- /* x^78848 mod p(x)` << 1, x^78912 mod p(x)` << 1 */ -- .octa 0x00000000c3a33848000000010e7a58d6 -- -- /* x^77824 mod p(x)` << 1, x^77888 mod p(x)` << 1 */ -- .octa 0x00000001bd151c2400000001f9f04e9c -- -- /* x^76800 mod p(x)` << 1, x^76864 mod p(x)` << 1 */ -- .octa 0x0000000056002d7600000000b692225e -- -- /* x^75776 mod p(x)` << 1, x^75840 mod p(x)` << 1 */ -- .octa 0x000000014657c4f4000000019b8d3f3e -- -- /* x^74752 mod p(x)` << 1, x^74816 mod p(x)` << 1 */ -- .octa 0x0000000113742d7c00000001a874f11e -- -- /* x^73728 mod p(x)` << 1, x^73792 mod p(x)` << 1 */ -- .octa 0x000000019c5920ba000000010d5a4254 -- -- /* x^72704 mod p(x)` << 1, x^72768 mod p(x)` << 1 */ -- .octa 0x000000005216d2d600000000bbb2f5d6 -- -- /* x^71680 mod p(x)` << 1, x^71744 mod p(x)` << 1 */ -- .octa 0x0000000136f5ad8a0000000179cc0e36 -- -- /* x^70656 mod p(x)` << 1, x^70720 mod p(x)` << 1 */ -- .octa 0x000000018b07beb600000001dca1da4a -- -- /* x^69632 mod p(x)` << 1, x^69696 mod p(x)` << 1 */ -- .octa 0x00000000db1e93b000000000feb1a192 -- -- /* x^68608 mod p(x)` << 1, x^68672 mod p(x)` << 1 */ -- .octa 0x000000000b96fa3a00000000d1eeedd6 -- -- /* x^67584 mod p(x)` << 1, x^67648 mod p(x)` << 1 */ -- .octa 0x00000001d9968af0000000008fad9bb4 -- -- /* x^66560 mod p(x)` << 1, x^66624 mod p(x)` << 1 */ -- .octa 0x000000000e4a77a200000001884938e4 -- -- /* x^65536 mod p(x)` << 1, x^65600 mod p(x)` << 1 */ -- .octa 0x00000000508c2ac800000001bc2e9bc0 -- -- /* x^64512 mod p(x)` << 1, x^64576 mod p(x)` << 1 */ -- .octa 0x0000000021572a8000000001f9658a68 -- -- /* x^63488 mod p(x)` << 1, x^63552 mod p(x)` << 1 */ -- .octa 0x00000001b859daf2000000001b9224fc -- -- /* x^62464 mod p(x)` << 1, x^62528 mod p(x)` << 1 */ -- .octa 0x000000016f7884740000000055b2fb84 -- -- /* x^61440 mod p(x)` << 1, x^61504 mod p(x)` << 1 */ -- .octa 0x00000001b438810e000000018b090348 -- -- /* x^60416 mod p(x)` << 1, x^60480 mod p(x)` << 1 */ -- .octa 0x0000000095ddc6f2000000011ccbd5ea -- -- /* x^59392 mod p(x)` << 1, x^59456 mod p(x)` << 1 */ -- .octa 0x00000001d977c20c0000000007ae47f8 -- -- /* x^58368 mod p(x)` << 1, x^58432 mod p(x)` << 1 */ -- .octa 0x00000000ebedb99a0000000172acbec0 -- -- /* x^57344 mod p(x)` << 1, x^57408 mod p(x)` << 1 */ -- .octa 0x00000001df9e9e9200000001c6e3ff20 -- -- /* x^56320 mod p(x)` << 1, x^56384 mod p(x)` << 1 */ -- .octa 0x00000001a4a3f95200000000e1b38744 -- -- /* x^55296 mod p(x)` << 1, x^55360 mod p(x)` << 1 */ -- .octa 0x00000000e2f5122000000000791585b2 -- -- /* x^54272 mod p(x)` << 1, x^54336 mod p(x)` << 1 */ -- .octa 0x000000004aa01f3e00000000ac53b894 -- -- /* x^53248 mod p(x)` << 1, x^53312 mod p(x)` << 1 */ -- .octa 0x00000000b3e90a5800000001ed5f2cf4 -- -- /* x^52224 mod p(x)` << 1, x^52288 mod p(x)` << 1 */ -- .octa 0x000000000c9ca2aa00000001df48b2e0 -- -- /* x^51200 mod p(x)` << 1, x^51264 mod p(x)` << 1 */ -- .octa 0x000000015168231600000000049c1c62 -- -- /* x^50176 mod p(x)` << 1, x^50240 mod p(x)` << 1 */ -- .octa 0x0000000036fce78c000000017c460c12 -- -- /* x^49152 mod p(x)` << 1, x^49216 mod p(x)` << 1 */ -- .octa 0x000000009037dc10000000015be4da7e -- -- /* x^48128 mod p(x)` << 1, x^48192 mod p(x)` << 1 */ -- .octa 0x00000000d3298582000000010f38f668 -- -- /* x^47104 mod p(x)` << 1, x^47168 mod p(x)` << 1 */ -- .octa 0x00000001b42e8ad60000000039f40a00 -- -- /* x^46080 mod p(x)` << 1, x^46144 mod p(x)` << 1 */ -- .octa 0x00000000142a983800000000bd4c10c4 -- -- /* x^45056 mod p(x)` << 1, x^45120 mod p(x)` << 1 */ -- .octa 0x0000000109c7f1900000000042db1d98 -- -- /* x^44032 mod p(x)` << 1, x^44096 mod p(x)` << 1 */ -- .octa 0x0000000056ff931000000001c905bae6 -- -- /* x^43008 mod p(x)` << 1, x^43072 mod p(x)` << 1 */ -- .octa 0x00000001594513aa00000000069d40ea -- -- /* x^41984 mod p(x)` << 1, x^42048 mod p(x)` << 1 */ -- .octa 0x00000001e3b5b1e8000000008e4fbad0 -- -- /* x^40960 mod p(x)` << 1, x^41024 mod p(x)` << 1 */ -- .octa 0x000000011dd5fc080000000047bedd46 -- -- /* x^39936 mod p(x)` << 1, x^40000 mod p(x)` << 1 */ -- .octa 0x00000001675f0cc20000000026396bf8 -- -- /* x^38912 mod p(x)` << 1, x^38976 mod p(x)` << 1 */ -- .octa 0x00000000d1c8dd4400000000379beb92 -- -- /* x^37888 mod p(x)` << 1, x^37952 mod p(x)` << 1 */ -- .octa 0x0000000115ebd3d8000000000abae54a -- -- /* x^36864 mod p(x)` << 1, x^36928 mod p(x)` << 1 */ -- .octa 0x00000001ecbd0dac0000000007e6a128 -- -- /* x^35840 mod p(x)` << 1, x^35904 mod p(x)` << 1 */ -- .octa 0x00000000cdf67af2000000000ade29d2 -- -- /* x^34816 mod p(x)` << 1, x^34880 mod p(x)` << 1 */ -- .octa 0x000000004c01ff4c00000000f974c45c -- -- /* x^33792 mod p(x)` << 1, x^33856 mod p(x)` << 1 */ -- .octa 0x00000000f2d8657e00000000e77ac60a -- -- /* x^32768 mod p(x)` << 1, x^32832 mod p(x)` << 1 */ -- .octa 0x000000006bae74c40000000145895816 -- -- /* x^31744 mod p(x)` << 1, x^31808 mod p(x)` << 1 */ -- .octa 0x0000000152af8aa00000000038e362be -- -- /* x^30720 mod p(x)` << 1, x^30784 mod p(x)` << 1 */ -- .octa 0x0000000004663802000000007f991a64 -- -- /* x^29696 mod p(x)` << 1, x^29760 mod p(x)` << 1 */ -- .octa 0x00000001ab2f5afc00000000fa366d3a -- -- /* x^28672 mod p(x)` << 1, x^28736 mod p(x)` << 1 */ -- .octa 0x0000000074a4ebd400000001a2bb34f0 -- -- /* x^27648 mod p(x)` << 1, x^27712 mod p(x)` << 1 */ -- .octa 0x00000001d7ab3a4c0000000028a9981e -- -- /* x^26624 mod p(x)` << 1, x^26688 mod p(x)` << 1 */ -- .octa 0x00000001a8da60c600000001dbc672be -- -- /* x^25600 mod p(x)` << 1, x^25664 mod p(x)` << 1 */ -- .octa 0x000000013cf6382000000000b04d77f6 -- -- /* x^24576 mod p(x)` << 1, x^24640 mod p(x)` << 1 */ -- .octa 0x00000000bec12e1e0000000124400d96 -- -- /* x^23552 mod p(x)` << 1, x^23616 mod p(x)` << 1 */ -- .octa 0x00000001c6368010000000014ca4b414 -- -- /* x^22528 mod p(x)` << 1, x^22592 mod p(x)` << 1 */ -- .octa 0x00000001e6e78758000000012fe2c938 -- -- /* x^21504 mod p(x)` << 1, x^21568 mod p(x)` << 1 */ -- .octa 0x000000008d7f2b3c00000001faed01e6 -- -- /* x^20480 mod p(x)` << 1, x^20544 mod p(x)` << 1 */ -- .octa 0x000000016b4a156e000000007e80ecfe -- -- /* x^19456 mod p(x)` << 1, x^19520 mod p(x)` << 1 */ -- .octa 0x00000001c63cfeb60000000098daee94 -- -- /* x^18432 mod p(x)` << 1, x^18496 mod p(x)` << 1 */ -- .octa 0x000000015f902670000000010a04edea -- -- /* x^17408 mod p(x)` << 1, x^17472 mod p(x)` << 1 */ -- .octa 0x00000001cd5de11e00000001c00b4524 -- -- /* x^16384 mod p(x)` << 1, x^16448 mod p(x)` << 1 */ -- .octa 0x000000001acaec540000000170296550 -- -- /* x^15360 mod p(x)` << 1, x^15424 mod p(x)` << 1 */ -- .octa 0x000000002bd0ca780000000181afaa48 -- -- /* x^14336 mod p(x)` << 1, x^14400 mod p(x)` << 1 */ -- .octa 0x0000000032d63d5c0000000185a31ffa -- -- /* x^13312 mod p(x)` << 1, x^13376 mod p(x)` << 1 */ -- .octa 0x000000001c6d4e4c000000002469f608 -- -- /* x^12288 mod p(x)` << 1, x^12352 mod p(x)` << 1 */ -- .octa 0x0000000106a60b92000000006980102a -- -- /* x^11264 mod p(x)` << 1, x^11328 mod p(x)` << 1 */ -- .octa 0x00000000d3855e120000000111ea9ca8 -- -- /* x^10240 mod p(x)` << 1, x^10304 mod p(x)` << 1 */ -- .octa 0x00000000e312563600000001bd1d29ce -- -- /* x^9216 mod p(x)` << 1, x^9280 mod p(x)` << 1 */ -- .octa 0x000000009e8f7ea400000001b34b9580 -- -- /* x^8192 mod p(x)` << 1, x^8256 mod p(x)` << 1 */ -- .octa 0x00000001c82e562c000000003076054e -- -- /* x^7168 mod p(x)` << 1, x^7232 mod p(x)` << 1 */ -- .octa 0x00000000ca9f09ce000000012a608ea4 -- -- /* x^6144 mod p(x)` << 1, x^6208 mod p(x)` << 1 */ -- .octa 0x00000000c63764e600000000784d05fe -- -- /* x^5120 mod p(x)` << 1, x^5184 mod p(x)` << 1 */ -- .octa 0x0000000168d2e49e000000016ef0d82a -- -- /* x^4096 mod p(x)` << 1, x^4160 mod p(x)` << 1 */ -- .octa 0x00000000e986c1480000000075bda454 -- -- /* x^3072 mod p(x)` << 1, x^3136 mod p(x)` << 1 */ -- .octa 0x00000000cfb65894000000003dc0a1c4 -- -- /* x^2048 mod p(x)` << 1, x^2112 mod p(x)` << 1 */ -- .octa 0x0000000111cadee400000000e9a5d8be -- -- /* x^1024 mod p(x)` << 1, x^1088 mod p(x)` << 1 */ -- .octa 0x0000000171fb63ce00000001609bc4b4 -- -- .short_constants : -- -- /* Reduce final 1024-2048 bits to 64 bits, shifting 32 bits to include -- the trailing 32 bits of zeros */ -- /* x^1952 mod p(x)`, x^1984 mod p(x)`, x^2016 mod p(x)`, x^2048 mod -- p(x)` */ -- .octa 0x7fec2963e5bf80485cf015c388e56f72 -- -- /* x^1824 mod p(x)`, x^1856 mod p(x)`, x^1888 mod p(x)`, x^1920 mod -- p(x)` */ -- .octa 0x38e888d4844752a9963a18920246e2e6 -- -- /* x^1696 mod p(x)`, x^1728 mod p(x)`, x^1760 mod p(x)`, x^1792 mod -- p(x)` */ -- .octa 0x42316c00730206ad419a441956993a31 -- -- /* x^1568 mod p(x)`, x^1600 mod p(x)`, x^1632 mod p(x)`, x^1664 mod -- p(x)` */ -- .octa 0x543d5c543e65ddf9924752ba2b830011 -- -- /* x^1440 mod p(x)`, x^1472 mod p(x)`, x^1504 mod p(x)`, x^1536 mod -- p(x)` */ -- .octa 0x78e87aaf56767c9255bd7f9518e4a304 -- -- /* x^1312 mod p(x)`, x^1344 mod p(x)`, x^1376 mod p(x)`, x^1408 mod -- p(x)` */ -- .octa 0x8f68fcec1903da7f6d76739fe0553f1e -- -- /* x^1184 mod p(x)`, x^1216 mod p(x)`, x^1248 mod p(x)`, x^1280 mod -- p(x)` */ -- .octa 0x3f4840246791d588c133722b1fe0b5c3 -- -- /* x^1056 mod p(x)`, x^1088 mod p(x)`, x^1120 mod p(x)`, x^1152 mod -- p(x)` */ -- .octa 0x34c96751b04de25a64b67ee0e55ef1f3 -- -- /* x^928 mod p(x)`, x^960 mod p(x)`, x^992 mod p(x)`, x^1024 mod p(x)` -- */ -- .octa 0x156c8e180b4a395b069db049b8fdb1e7 -- -- /* x^800 mod p(x)`, x^832 mod p(x)`, x^864 mod p(x)`, x^896 mod p(x)` */ -- .octa 0xe0b99ccbe661f7bea11bfaf3c9e90b9e -- -- /* x^672 mod p(x)`, x^704 mod p(x)`, x^736 mod p(x)`, x^768 mod p(x)` */ -- .octa 0x041d37768cd75659817cdc5119b29a35 -- -- /* x^544 mod p(x)`, x^576 mod p(x)`, x^608 mod p(x)`, x^640 mod p(x)` */ -- .octa 0x3a0777818cfaa9651ce9d94b36c41f1c -- -- /* x^416 mod p(x)`, x^448 mod p(x)`, x^480 mod p(x)`, x^512 mod p(x)` */ -- .octa 0x0e148e8252377a554f256efcb82be955 -- -- /* x^288 mod p(x)`, x^320 mod p(x)`, x^352 mod p(x)`, x^384 mod p(x)` */ -- .octa 0x9c25531d19e65ddeec1631edb2dea967 -- -- /* x^160 mod p(x)`, x^192 mod p(x)`, x^224 mod p(x)`, x^256 mod p(x)` */ -- .octa 0x790606ff9957c0a65d27e147510ac59a -- -- /* x^32 mod p(x)`, x^64 mod p(x)`, x^96 mod p(x)`, x^128 mod p(x)` */ -- .octa 0x82f63b786ea2d55ca66805eb18b8ea18 -- -- .barrett_constants : -- /* 33 bit reflected Barrett constant m - (4^32)/n */ -- .octa 0x000000000000000000000000dea713f1 /* x^64 div p(x)` */ -- /* 33 bit reflected Barrett constant n */ -- .octa 0x00000000000000000000000105ec76f1 --#endif -+ 0x00000000, 0xf26b8303, 0xe13b70f7, 0x1350f3f4, -+ 0xc79a971f, 0x35f1141c, 0x26a1e7e8, 0xd4ca64eb, -+ 0x8ad958cf, 0x78b2dbcc, 0x6be22838, 0x9989ab3b, -+ 0x4d43cfd0, 0xbf284cd3, 0xac78bf27, 0x5e133c24, -+ 0x105ec76f, 0xe235446c, 0xf165b798, 0x030e349b, -+ 0xd7c45070, 0x25afd373, 0x36ff2087, 0xc494a384, -+ 0x9a879fa0, 0x68ec1ca3, 0x7bbcef57, 0x89d76c54, -+ 0x5d1d08bf, 0xaf768bbc, 0xbc267848, 0x4e4dfb4b, -+ 0x20bd8ede, 0xd2d60ddd, 0xc186fe29, 0x33ed7d2a, -+ 0xe72719c1, 0x154c9ac2, 0x061c6936, 0xf477ea35, -+ 0xaa64d611, 0x580f5512, 0x4b5fa6e6, 0xb93425e5, -+ 0x6dfe410e, 0x9f95c20d, 0x8cc531f9, 0x7eaeb2fa, -+ 0x30e349b1, 0xc288cab2, 0xd1d83946, 0x23b3ba45, -+ 0xf779deae, 0x05125dad, 0x1642ae59, 0xe4292d5a, -+ 0xba3a117e, 0x4851927d, 0x5b016189, 0xa96ae28a, -+ 0x7da08661, 0x8fcb0562, 0x9c9bf696, 0x6ef07595, -+ 0x417b1dbc, 0xb3109ebf, 0xa0406d4b, 0x522bee48, -+ 0x86e18aa3, 0x748a09a0, 0x67dafa54, 0x95b17957, -+ 0xcba24573, 0x39c9c670, 0x2a993584, 0xd8f2b687, -+ 0x0c38d26c, 0xfe53516f, 0xed03a29b, 0x1f682198, -+ 0x5125dad3, 0xa34e59d0, 0xb01eaa24, 0x42752927, -+ 0x96bf4dcc, 0x64d4cecf, 0x77843d3b, 0x85efbe38, -+ 0xdbfc821c, 0x2997011f, 0x3ac7f2eb, 0xc8ac71e8, -+ 0x1c661503, 0xee0d9600, 0xfd5d65f4, 0x0f36e6f7, -+ 0x61c69362, 0x93ad1061, 0x80fde395, 0x72966096, -+ 0xa65c047d, 0x5437877e, 0x4767748a, 0xb50cf789, -+ 0xeb1fcbad, 0x197448ae, 0x0a24bb5a, 0xf84f3859, -+ 0x2c855cb2, 0xdeeedfb1, 0xcdbe2c45, 0x3fd5af46, -+ 0x7198540d, 0x83f3d70e, 0x90a324fa, 0x62c8a7f9, -+ 0xb602c312, 0x44694011, 0x5739b3e5, 0xa55230e6, -+ 0xfb410cc2, 0x092a8fc1, 0x1a7a7c35, 0xe811ff36, -+ 0x3cdb9bdd, 0xceb018de, 0xdde0eb2a, 0x2f8b6829, -+ 0x82f63b78, 0x709db87b, 0x63cd4b8f, 0x91a6c88c, -+ 0x456cac67, 0xb7072f64, 0xa457dc90, 0x563c5f93, -+ 0x082f63b7, 0xfa44e0b4, 0xe9141340, 0x1b7f9043, -+ 0xcfb5f4a8, 0x3dde77ab, 0x2e8e845f, 0xdce5075c, -+ 0x92a8fc17, 0x60c37f14, 0x73938ce0, 0x81f80fe3, -+ 0x55326b08, 0xa759e80b, 0xb4091bff, 0x466298fc, -+ 0x1871a4d8, 0xea1a27db, 0xf94ad42f, 0x0b21572c, -+ 0xdfeb33c7, 0x2d80b0c4, 0x3ed04330, 0xccbbc033, -+ 0xa24bb5a6, 0x502036a5, 0x4370c551, 0xb11b4652, -+ 0x65d122b9, 0x97baa1ba, 0x84ea524e, 0x7681d14d, -+ 0x2892ed69, 0xdaf96e6a, 0xc9a99d9e, 0x3bc21e9d, -+ 0xef087a76, 0x1d63f975, 0x0e330a81, 0xfc588982, -+ 0xb21572c9, 0x407ef1ca, 0x532e023e, 0xa145813d, -+ 0x758fe5d6, 0x87e466d5, 0x94b49521, 0x66df1622, -+ 0x38cc2a06, 0xcaa7a905, 0xd9f75af1, 0x2b9cd9f2, -+ 0xff56bd19, 0x0d3d3e1a, 0x1e6dcdee, 0xec064eed, -+ 0xc38d26c4, 0x31e6a5c7, 0x22b65633, 0xd0ddd530, -+ 0x0417b1db, 0xf67c32d8, 0xe52cc12c, 0x1747422f, -+ 0x49547e0b, 0xbb3ffd08, 0xa86f0efc, 0x5a048dff, -+ 0x8ecee914, 0x7ca56a17, 0x6ff599e3, 0x9d9e1ae0, -+ 0xd3d3e1ab, 0x21b862a8, 0x32e8915c, 0xc083125f, -+ 0x144976b4, 0xe622f5b7, 0xf5720643, 0x07198540, -+ 0x590ab964, 0xab613a67, 0xb831c993, 0x4a5a4a90, -+ 0x9e902e7b, 0x6cfbad78, 0x7fab5e8c, 0x8dc0dd8f, -+ 0xe330a81a, 0x115b2b19, 0x020bd8ed, 0xf0605bee, -+ 0x24aa3f05, 0xd6c1bc06, 0xc5914ff2, 0x37faccf1, -+ 0x69e9f0d5, 0x9b8273d6, 0x88d28022, 0x7ab90321, -+ 0xae7367ca, 0x5c18e4c9, 0x4f48173d, 0xbd23943e, -+ 0xf36e6f75, 0x0105ec76, 0x12551f82, 0xe03e9c81, -+ 0x34f4f86a, 0xc69f7b69, 0xd5cf889d, 0x27a40b9e, -+ 0x79b737ba, 0x8bdcb4b9, 0x988c474d, 0x6ae7c44e, -+ 0xbe2da0a5, 0x4c4623a6, 0x5f16d052, 0xad7d5351,}; -+ -+#endif /* CRC_TABLE */ -+#ifdef POWER8_INTRINSICS -+ -+/* Constants */ -+ -+/* Reduce 262144 kbits to 1024 bits */ -+static const __vector unsigned long long vcrc_const[255] -+ __attribute__((aligned (16))) = { -+#ifdef __LITTLE_ENDIAN__ -+ /* x^261120 mod p(x)` << 1, x^261184 mod p(x)` << 1 */ -+ { 0x000000009c37c408, 0x00000000b6ca9e20 }, -+ /* x^260096 mod p(x)` << 1, x^260160 mod p(x)` << 1 */ -+ { 0x00000001b51df26c, 0x00000000350249a8 }, -+ /* x^259072 mod p(x)` << 1, x^259136 mod p(x)` << 1 */ -+ { 0x000000000724b9d0, 0x00000001862dac54 }, -+ /* x^258048 mod p(x)` << 1, x^258112 mod p(x)` << 1 */ -+ { 0x00000001c00532fe, 0x00000001d87fb48c }, -+ /* x^257024 mod p(x)` << 1, x^257088 mod p(x)` << 1 */ -+ { 0x00000000f05a9362, 0x00000001f39b699e }, -+ /* x^256000 mod p(x)` << 1, x^256064 mod p(x)` << 1 */ -+ { 0x00000001e1007970, 0x0000000101da11b4 }, -+ /* x^254976 mod p(x)` << 1, x^255040 mod p(x)` << 1 */ -+ { 0x00000000a57366ee, 0x00000001cab571e0 }, -+ /* x^253952 mod p(x)` << 1, x^254016 mod p(x)` << 1 */ -+ { 0x0000000192011284, 0x00000000c7020cfe }, -+ /* x^252928 mod p(x)` << 1, x^252992 mod p(x)` << 1 */ -+ { 0x0000000162716d9a, 0x00000000cdaed1ae }, -+ /* x^251904 mod p(x)` << 1, x^251968 mod p(x)` << 1 */ -+ { 0x00000000cd97ecde, 0x00000001e804effc }, -+ /* x^250880 mod p(x)` << 1, x^250944 mod p(x)` << 1 */ -+ { 0x0000000058812bc0, 0x0000000077c3ea3a }, -+ /* x^249856 mod p(x)` << 1, x^249920 mod p(x)` << 1 */ -+ { 0x0000000088b8c12e, 0x0000000068df31b4 }, -+ /* x^248832 mod p(x)` << 1, x^248896 mod p(x)` << 1 */ -+ { 0x00000001230b234c, 0x00000000b059b6c2 }, -+ /* x^247808 mod p(x)` << 1, x^247872 mod p(x)` << 1 */ -+ { 0x00000001120b416e, 0x0000000145fb8ed8 }, -+ /* x^246784 mod p(x)` << 1, x^246848 mod p(x)` << 1 */ -+ { 0x00000001974aecb0, 0x00000000cbc09168 }, -+ /* x^245760 mod p(x)` << 1, x^245824 mod p(x)` << 1 */ -+ { 0x000000008ee3f226, 0x000000005ceeedc2 }, -+ /* x^244736 mod p(x)` << 1, x^244800 mod p(x)` << 1 */ -+ { 0x00000001089aba9a, 0x0000000047d74e86 }, -+ /* x^243712 mod p(x)` << 1, x^243776 mod p(x)` << 1 */ -+ { 0x0000000065113872, 0x00000001407e9e22 }, -+ /* x^242688 mod p(x)` << 1, x^242752 mod p(x)` << 1 */ -+ { 0x000000005c07ec10, 0x00000001da967bda }, -+ /* x^241664 mod p(x)` << 1, x^241728 mod p(x)` << 1 */ -+ { 0x0000000187590924, 0x000000006c898368 }, -+ /* x^240640 mod p(x)` << 1, x^240704 mod p(x)` << 1 */ -+ { 0x00000000e35da7c6, 0x00000000f2d14c98 }, -+ /* x^239616 mod p(x)` << 1, x^239680 mod p(x)` << 1 */ -+ { 0x000000000415855a, 0x00000001993c6ad4 }, -+ /* x^238592 mod p(x)` << 1, x^238656 mod p(x)` << 1 */ -+ { 0x0000000073617758, 0x000000014683d1ac }, -+ /* x^237568 mod p(x)` << 1, x^237632 mod p(x)` << 1 */ -+ { 0x0000000176021d28, 0x00000001a7c93e6c }, -+ /* x^236544 mod p(x)` << 1, x^236608 mod p(x)` << 1 */ -+ { 0x00000001c358fd0a, 0x000000010211e90a }, -+ /* x^235520 mod p(x)` << 1, x^235584 mod p(x)` << 1 */ -+ { 0x00000001ff7a2c18, 0x000000001119403e }, -+ /* x^234496 mod p(x)` << 1, x^234560 mod p(x)` << 1 */ -+ { 0x00000000f2d9f7e4, 0x000000001c3261aa }, -+ /* x^233472 mod p(x)` << 1, x^233536 mod p(x)` << 1 */ -+ { 0x000000016cf1f9c8, 0x000000014e37a634 }, -+ /* x^232448 mod p(x)` << 1, x^232512 mod p(x)` << 1 */ -+ { 0x000000010af9279a, 0x0000000073786c0c }, -+ /* x^231424 mod p(x)` << 1, x^231488 mod p(x)` << 1 */ -+ { 0x0000000004f101e8, 0x000000011dc037f8 }, -+ /* x^230400 mod p(x)` << 1, x^230464 mod p(x)` << 1 */ -+ { 0x0000000070bcf184, 0x0000000031433dfc }, -+ /* x^229376 mod p(x)` << 1, x^229440 mod p(x)` << 1 */ -+ { 0x000000000a8de642, 0x000000009cde8348 }, -+ /* x^228352 mod p(x)` << 1, x^228416 mod p(x)` << 1 */ -+ { 0x0000000062ea130c, 0x0000000038d3c2a6 }, -+ /* x^227328 mod p(x)` << 1, x^227392 mod p(x)` << 1 */ -+ { 0x00000001eb31cbb2, 0x000000011b25f260 }, -+ /* x^226304 mod p(x)` << 1, x^226368 mod p(x)` << 1 */ -+ { 0x0000000170783448, 0x000000001629e6f0 }, -+ /* x^225280 mod p(x)` << 1, x^225344 mod p(x)` << 1 */ -+ { 0x00000001a684b4c6, 0x0000000160838b4c }, -+ /* x^224256 mod p(x)` << 1, x^224320 mod p(x)` << 1 */ -+ { 0x00000000253ca5b4, 0x000000007a44011c }, -+ /* x^223232 mod p(x)` << 1, x^223296 mod p(x)` << 1 */ -+ { 0x0000000057b4b1e2, 0x00000000226f417a }, -+ /* x^222208 mod p(x)` << 1, x^222272 mod p(x)` << 1 */ -+ { 0x00000000b6bd084c, 0x0000000045eb2eb4 }, -+ /* x^221184 mod p(x)` << 1, x^221248 mod p(x)` << 1 */ -+ { 0x0000000123c2d592, 0x000000014459d70c }, -+ /* x^220160 mod p(x)` << 1, x^220224 mod p(x)` << 1 */ -+ { 0x00000000159dafce, 0x00000001d406ed82 }, -+ /* x^219136 mod p(x)` << 1, x^219200 mod p(x)` << 1 */ -+ { 0x0000000127e1a64e, 0x0000000160c8e1a8 }, -+ /* x^218112 mod p(x)` << 1, x^218176 mod p(x)` << 1 */ -+ { 0x0000000056860754, 0x0000000027ba8098 }, -+ /* x^217088 mod p(x)` << 1, x^217152 mod p(x)` << 1 */ -+ { 0x00000001e661aae8, 0x000000006d92d018 }, -+ /* x^216064 mod p(x)` << 1, x^216128 mod p(x)` << 1 */ -+ { 0x00000000f82c6166, 0x000000012ed7e3f2 }, -+ /* x^215040 mod p(x)` << 1, x^215104 mod p(x)` << 1 */ -+ { 0x00000000c4f9c7ae, 0x000000002dc87788 }, -+ /* x^214016 mod p(x)` << 1, x^214080 mod p(x)` << 1 */ -+ { 0x0000000074203d20, 0x0000000018240bb8 }, -+ /* x^212992 mod p(x)` << 1, x^213056 mod p(x)` << 1 */ -+ { 0x0000000198173052, 0x000000001ad38158 }, -+ /* x^211968 mod p(x)` << 1, x^212032 mod p(x)` << 1 */ -+ { 0x00000001ce8aba54, 0x00000001396b78f2 }, -+ /* x^210944 mod p(x)` << 1, x^211008 mod p(x)` << 1 */ -+ { 0x00000001850d5d94, 0x000000011a681334 }, -+ /* x^209920 mod p(x)` << 1, x^209984 mod p(x)` << 1 */ -+ { 0x00000001d609239c, 0x000000012104732e }, -+ /* x^208896 mod p(x)` << 1, x^208960 mod p(x)` << 1 */ -+ { 0x000000001595f048, 0x00000000a140d90c }, -+ /* x^207872 mod p(x)` << 1, x^207936 mod p(x)` << 1 */ -+ { 0x0000000042ccee08, 0x00000001b7215eda }, -+ /* x^206848 mod p(x)` << 1, x^206912 mod p(x)` << 1 */ -+ { 0x000000010a389d74, 0x00000001aaf1df3c }, -+ /* x^205824 mod p(x)` << 1, x^205888 mod p(x)` << 1 */ -+ { 0x000000012a840da6, 0x0000000029d15b8a }, -+ /* x^204800 mod p(x)` << 1, x^204864 mod p(x)` << 1 */ -+ { 0x000000001d181c0c, 0x00000000f1a96922 }, -+ /* x^203776 mod p(x)` << 1, x^203840 mod p(x)` << 1 */ -+ { 0x0000000068b7d1f6, 0x00000001ac80d03c }, -+ /* x^202752 mod p(x)` << 1, x^202816 mod p(x)` << 1 */ -+ { 0x000000005b0f14fc, 0x000000000f11d56a }, -+ /* x^201728 mod p(x)` << 1, x^201792 mod p(x)` << 1 */ -+ { 0x0000000179e9e730, 0x00000001f1c022a2 }, -+ /* x^200704 mod p(x)` << 1, x^200768 mod p(x)` << 1 */ -+ { 0x00000001ce1368d6, 0x0000000173d00ae2 }, -+ /* x^199680 mod p(x)` << 1, x^199744 mod p(x)` << 1 */ -+ { 0x0000000112c3a84c, 0x00000001d4ffe4ac }, -+ /* x^198656 mod p(x)` << 1, x^198720 mod p(x)` << 1 */ -+ { 0x00000000de940fee, 0x000000016edc5ae4 }, -+ /* x^197632 mod p(x)` << 1, x^197696 mod p(x)` << 1 */ -+ { 0x00000000fe896b7e, 0x00000001f1a02140 }, -+ /* x^196608 mod p(x)` << 1, x^196672 mod p(x)` << 1 */ -+ { 0x00000001f797431c, 0x00000000ca0b28a0 }, -+ /* x^195584 mod p(x)` << 1, x^195648 mod p(x)` << 1 */ -+ { 0x0000000053e989ba, 0x00000001928e30a2 }, -+ /* x^194560 mod p(x)` << 1, x^194624 mod p(x)` << 1 */ -+ { 0x000000003920cd16, 0x0000000097b1b002 }, -+ /* x^193536 mod p(x)` << 1, x^193600 mod p(x)` << 1 */ -+ { 0x00000001e6f579b8, 0x00000000b15bf906 }, -+ /* x^192512 mod p(x)` << 1, x^192576 mod p(x)` << 1 */ -+ { 0x000000007493cb0a, 0x00000000411c5d52 }, -+ /* x^191488 mod p(x)` << 1, x^191552 mod p(x)` << 1 */ -+ { 0x00000001bdd376d8, 0x00000001c36f3300 }, -+ /* x^190464 mod p(x)` << 1, x^190528 mod p(x)` << 1 */ -+ { 0x000000016badfee6, 0x00000001119227e0 }, -+ /* x^189440 mod p(x)` << 1, x^189504 mod p(x)` << 1 */ -+ { 0x0000000071de5c58, 0x00000000114d4702 }, -+ /* x^188416 mod p(x)` << 1, x^188480 mod p(x)` << 1 */ -+ { 0x00000000453f317c, 0x00000000458b5b98 }, -+ /* x^187392 mod p(x)` << 1, x^187456 mod p(x)` << 1 */ -+ { 0x0000000121675cce, 0x000000012e31fb8e }, -+ /* x^186368 mod p(x)` << 1, x^186432 mod p(x)` << 1 */ -+ { 0x00000001f409ee92, 0x000000005cf619d8 }, -+ /* x^185344 mod p(x)` << 1, x^185408 mod p(x)` << 1 */ -+ { 0x00000000f36b9c88, 0x0000000063f4d8b2 }, -+ /* x^184320 mod p(x)` << 1, x^184384 mod p(x)` << 1 */ -+ { 0x0000000036b398f4, 0x000000004138dc8a }, -+ /* x^183296 mod p(x)` << 1, x^183360 mod p(x)` << 1 */ -+ { 0x00000001748f9adc, 0x00000001d29ee8e0 }, -+ /* x^182272 mod p(x)` << 1, x^182336 mod p(x)` << 1 */ -+ { 0x00000001be94ec00, 0x000000006a08ace8 }, -+ /* x^181248 mod p(x)` << 1, x^181312 mod p(x)` << 1 */ -+ { 0x00000000b74370d6, 0x0000000127d42010 }, -+ /* x^180224 mod p(x)` << 1, x^180288 mod p(x)` << 1 */ -+ { 0x00000001174d0b98, 0x0000000019d76b62 }, -+ /* x^179200 mod p(x)` << 1, x^179264 mod p(x)` << 1 */ -+ { 0x00000000befc06a4, 0x00000001b1471f6e }, -+ /* x^178176 mod p(x)` << 1, x^178240 mod p(x)` << 1 */ -+ { 0x00000001ae125288, 0x00000001f64c19cc }, -+ /* x^177152 mod p(x)` << 1, x^177216 mod p(x)` << 1 */ -+ { 0x0000000095c19b34, 0x00000000003c0ea0 }, -+ /* x^176128 mod p(x)` << 1, x^176192 mod p(x)` << 1 */ -+ { 0x00000001a78496f2, 0x000000014d73abf6 }, -+ /* x^175104 mod p(x)` << 1, x^175168 mod p(x)` << 1 */ -+ { 0x00000001ac5390a0, 0x00000001620eb844 }, -+ /* x^174080 mod p(x)` << 1, x^174144 mod p(x)` << 1 */ -+ { 0x000000002a80ed6e, 0x0000000147655048 }, -+ /* x^173056 mod p(x)` << 1, x^173120 mod p(x)` << 1 */ -+ { 0x00000001fa9b0128, 0x0000000067b5077e }, -+ /* x^172032 mod p(x)` << 1, x^172096 mod p(x)` << 1 */ -+ { 0x00000001ea94929e, 0x0000000010ffe206 }, -+ /* x^171008 mod p(x)` << 1, x^171072 mod p(x)` << 1 */ -+ { 0x0000000125f4305c, 0x000000000fee8f1e }, -+ /* x^169984 mod p(x)` << 1, x^170048 mod p(x)` << 1 */ -+ { 0x00000001471e2002, 0x00000001da26fbae }, -+ /* x^168960 mod p(x)` << 1, x^169024 mod p(x)` << 1 */ -+ { 0x0000000132d2253a, 0x00000001b3a8bd88 }, -+ /* x^167936 mod p(x)` << 1, x^168000 mod p(x)` << 1 */ -+ { 0x00000000f26b3592, 0x00000000e8f3898e }, -+ /* x^166912 mod p(x)` << 1, x^166976 mod p(x)` << 1 */ -+ { 0x00000000bc8b67b0, 0x00000000b0d0d28c }, -+ /* x^165888 mod p(x)` << 1, x^165952 mod p(x)` << 1 */ -+ { 0x000000013a826ef2, 0x0000000030f2a798 }, -+ /* x^164864 mod p(x)` << 1, x^164928 mod p(x)` << 1 */ -+ { 0x0000000081482c84, 0x000000000fba1002 }, -+ /* x^163840 mod p(x)` << 1, x^163904 mod p(x)` << 1 */ -+ { 0x00000000e77307c2, 0x00000000bdb9bd72 }, -+ /* x^162816 mod p(x)` << 1, x^162880 mod p(x)` << 1 */ -+ { 0x00000000d4a07ec8, 0x0000000075d3bf5a }, -+ /* x^161792 mod p(x)` << 1, x^161856 mod p(x)` << 1 */ -+ { 0x0000000017102100, 0x00000000ef1f98a0 }, -+ /* x^160768 mod p(x)` << 1, x^160832 mod p(x)` << 1 */ -+ { 0x00000000db406486, 0x00000000689c7602 }, -+ /* x^159744 mod p(x)` << 1, x^159808 mod p(x)` << 1 */ -+ { 0x0000000192db7f88, 0x000000016d5fa5fe }, -+ /* x^158720 mod p(x)` << 1, x^158784 mod p(x)` << 1 */ -+ { 0x000000018bf67b1e, 0x00000001d0d2b9ca }, -+ /* x^157696 mod p(x)` << 1, x^157760 mod p(x)` << 1 */ -+ { 0x000000007c09163e, 0x0000000041e7b470 }, -+ /* x^156672 mod p(x)` << 1, x^156736 mod p(x)` << 1 */ -+ { 0x000000000adac060, 0x00000001cbb6495e }, -+ /* x^155648 mod p(x)` << 1, x^155712 mod p(x)` << 1 */ -+ { 0x00000000bd8316ae, 0x000000010052a0b0 }, -+ /* x^154624 mod p(x)` << 1, x^154688 mod p(x)` << 1 */ -+ { 0x000000019f09ab54, 0x00000001d8effb5c }, -+ /* x^153600 mod p(x)` << 1, x^153664 mod p(x)` << 1 */ -+ { 0x0000000125155542, 0x00000001d969853c }, -+ /* x^152576 mod p(x)` << 1, x^152640 mod p(x)` << 1 */ -+ { 0x000000018fdb5882, 0x00000000523ccce2 }, -+ /* x^151552 mod p(x)` << 1, x^151616 mod p(x)` << 1 */ -+ { 0x00000000e794b3f4, 0x000000001e2436bc }, -+ /* x^150528 mod p(x)` << 1, x^150592 mod p(x)` << 1 */ -+ { 0x000000016f9bb022, 0x00000000ddd1c3a2 }, -+ /* x^149504 mod p(x)` << 1, x^149568 mod p(x)` << 1 */ -+ { 0x00000000290c9978, 0x0000000019fcfe38 }, -+ /* x^148480 mod p(x)` << 1, x^148544 mod p(x)` << 1 */ -+ { 0x0000000083c0f350, 0x00000001ce95db64 }, -+ /* x^147456 mod p(x)` << 1, x^147520 mod p(x)` << 1 */ -+ { 0x0000000173ea6628, 0x00000000af582806 }, -+ /* x^146432 mod p(x)` << 1, x^146496 mod p(x)` << 1 */ -+ { 0x00000001c8b4e00a, 0x00000001006388f6 }, -+ /* x^145408 mod p(x)` << 1, x^145472 mod p(x)` << 1 */ -+ { 0x00000000de95d6aa, 0x0000000179eca00a }, -+ /* x^144384 mod p(x)` << 1, x^144448 mod p(x)` << 1 */ -+ { 0x000000010b7f7248, 0x0000000122410a6a }, -+ /* x^143360 mod p(x)` << 1, x^143424 mod p(x)` << 1 */ -+ { 0x00000001326e3a06, 0x000000004288e87c }, -+ /* x^142336 mod p(x)` << 1, x^142400 mod p(x)` << 1 */ -+ { 0x00000000bb62c2e6, 0x000000016c5490da }, -+ /* x^141312 mod p(x)` << 1, x^141376 mod p(x)` << 1 */ -+ { 0x0000000156a4b2c2, 0x00000000d1c71f6e }, -+ /* x^140288 mod p(x)` << 1, x^140352 mod p(x)` << 1 */ -+ { 0x000000011dfe763a, 0x00000001b4ce08a6 }, -+ /* x^139264 mod p(x)` << 1, x^139328 mod p(x)` << 1 */ -+ { 0x000000007bcca8e2, 0x00000001466ba60c }, -+ /* x^138240 mod p(x)` << 1, x^138304 mod p(x)` << 1 */ -+ { 0x0000000186118faa, 0x00000001f6c488a4 }, -+ /* x^137216 mod p(x)` << 1, x^137280 mod p(x)` << 1 */ -+ { 0x0000000111a65a88, 0x000000013bfb0682 }, -+ /* x^136192 mod p(x)` << 1, x^136256 mod p(x)` << 1 */ -+ { 0x000000003565e1c4, 0x00000000690e9e54 }, -+ /* x^135168 mod p(x)` << 1, x^135232 mod p(x)` << 1 */ -+ { 0x000000012ed02a82, 0x00000000281346b6 }, -+ /* x^134144 mod p(x)` << 1, x^134208 mod p(x)` << 1 */ -+ { 0x00000000c486ecfc, 0x0000000156464024 }, -+ /* x^133120 mod p(x)` << 1, x^133184 mod p(x)` << 1 */ -+ { 0x0000000001b951b2, 0x000000016063a8dc }, -+ /* x^132096 mod p(x)` << 1, x^132160 mod p(x)` << 1 */ -+ { 0x0000000048143916, 0x0000000116a66362 }, -+ /* x^131072 mod p(x)` << 1, x^131136 mod p(x)` << 1 */ -+ { 0x00000001dc2ae124, 0x000000017e8aa4d2 }, -+ /* x^130048 mod p(x)` << 1, x^130112 mod p(x)` << 1 */ -+ { 0x00000001416c58d6, 0x00000001728eb10c }, -+ /* x^129024 mod p(x)` << 1, x^129088 mod p(x)` << 1 */ -+ { 0x00000000a479744a, 0x00000001b08fd7fa }, -+ /* x^128000 mod p(x)` << 1, x^128064 mod p(x)` << 1 */ -+ { 0x0000000096ca3a26, 0x00000001092a16e8 }, -+ /* x^126976 mod p(x)` << 1, x^127040 mod p(x)` << 1 */ -+ { 0x00000000ff223d4e, 0x00000000a505637c }, -+ /* x^125952 mod p(x)` << 1, x^126016 mod p(x)` << 1 */ -+ { 0x000000010e84da42, 0x00000000d94869b2 }, -+ /* x^124928 mod p(x)` << 1, x^124992 mod p(x)` << 1 */ -+ { 0x00000001b61ba3d0, 0x00000001c8b203ae }, -+ /* x^123904 mod p(x)` << 1, x^123968 mod p(x)` << 1 */ -+ { 0x00000000680f2de8, 0x000000005704aea0 }, -+ /* x^122880 mod p(x)` << 1, x^122944 mod p(x)` << 1 */ -+ { 0x000000008772a9a8, 0x000000012e295fa2 }, -+ /* x^121856 mod p(x)` << 1, x^121920 mod p(x)` << 1 */ -+ { 0x0000000155f295bc, 0x000000011d0908bc }, -+ /* x^120832 mod p(x)` << 1, x^120896 mod p(x)` << 1 */ -+ { 0x00000000595f9282, 0x0000000193ed97ea }, -+ /* x^119808 mod p(x)` << 1, x^119872 mod p(x)` << 1 */ -+ { 0x0000000164b1c25a, 0x000000013a0f1c52 }, -+ /* x^118784 mod p(x)` << 1, x^118848 mod p(x)` << 1 */ -+ { 0x00000000fbd67c50, 0x000000010c2c40c0 }, -+ /* x^117760 mod p(x)` << 1, x^117824 mod p(x)` << 1 */ -+ { 0x0000000096076268, 0x00000000ff6fac3e }, -+ /* x^116736 mod p(x)` << 1, x^116800 mod p(x)` << 1 */ -+ { 0x00000001d288e4cc, 0x000000017b3609c0 }, -+ /* x^115712 mod p(x)` << 1, x^115776 mod p(x)` << 1 */ -+ { 0x00000001eaac1bdc, 0x0000000088c8c922 }, -+ /* x^114688 mod p(x)` << 1, x^114752 mod p(x)` << 1 */ -+ { 0x00000001f1ea39e2, 0x00000001751baae6 }, -+ /* x^113664 mod p(x)` << 1, x^113728 mod p(x)` << 1 */ -+ { 0x00000001eb6506fc, 0x0000000107952972 }, -+ /* x^112640 mod p(x)` << 1, x^112704 mod p(x)` << 1 */ -+ { 0x000000010f806ffe, 0x0000000162b00abe }, -+ /* x^111616 mod p(x)` << 1, x^111680 mod p(x)` << 1 */ -+ { 0x000000010408481e, 0x000000000d7b404c }, -+ /* x^110592 mod p(x)` << 1, x^110656 mod p(x)` << 1 */ -+ { 0x0000000188260534, 0x00000000763b13d4 }, -+ /* x^109568 mod p(x)` << 1, x^109632 mod p(x)` << 1 */ -+ { 0x0000000058fc73e0, 0x00000000f6dc22d8 }, -+ /* x^108544 mod p(x)` << 1, x^108608 mod p(x)` << 1 */ -+ { 0x00000000391c59b8, 0x000000007daae060 }, -+ /* x^107520 mod p(x)` << 1, x^107584 mod p(x)` << 1 */ -+ { 0x000000018b638400, 0x000000013359ab7c }, -+ /* x^106496 mod p(x)` << 1, x^106560 mod p(x)` << 1 */ -+ { 0x000000011738f5c4, 0x000000008add438a }, -+ /* x^105472 mod p(x)` << 1, x^105536 mod p(x)` << 1 */ -+ { 0x000000008cf7c6da, 0x00000001edbefdea }, -+ /* x^104448 mod p(x)` << 1, x^104512 mod p(x)` << 1 */ -+ { 0x00000001ef97fb16, 0x000000004104e0f8 }, -+ /* x^103424 mod p(x)` << 1, x^103488 mod p(x)` << 1 */ -+ { 0x0000000102130e20, 0x00000000b48a8222 }, -+ /* x^102400 mod p(x)` << 1, x^102464 mod p(x)` << 1 */ -+ { 0x00000000db968898, 0x00000001bcb46844 }, -+ /* x^101376 mod p(x)` << 1, x^101440 mod p(x)` << 1 */ -+ { 0x00000000b5047b5e, 0x000000013293ce0a }, -+ /* x^100352 mod p(x)` << 1, x^100416 mod p(x)` << 1 */ -+ { 0x000000010b90fdb2, 0x00000001710d0844 }, -+ /* x^99328 mod p(x)` << 1, x^99392 mod p(x)` << 1 */ -+ { 0x000000004834a32e, 0x0000000117907f6e }, -+ /* x^98304 mod p(x)` << 1, x^98368 mod p(x)` << 1 */ -+ { 0x0000000059c8f2b0, 0x0000000087ddf93e }, -+ /* x^97280 mod p(x)` << 1, x^97344 mod p(x)` << 1 */ -+ { 0x0000000122cec508, 0x000000005970e9b0 }, -+ /* x^96256 mod p(x)` << 1, x^96320 mod p(x)` << 1 */ -+ { 0x000000000a330cda, 0x0000000185b2b7d0 }, -+ /* x^95232 mod p(x)` << 1, x^95296 mod p(x)` << 1 */ -+ { 0x000000014a47148c, 0x00000001dcee0efc }, -+ /* x^94208 mod p(x)` << 1, x^94272 mod p(x)` << 1 */ -+ { 0x0000000042c61cb8, 0x0000000030da2722 }, -+ /* x^93184 mod p(x)` << 1, x^93248 mod p(x)` << 1 */ -+ { 0x0000000012fe6960, 0x000000012f925a18 }, -+ /* x^92160 mod p(x)` << 1, x^92224 mod p(x)` << 1 */ -+ { 0x00000000dbda2c20, 0x00000000dd2e357c }, -+ /* x^91136 mod p(x)` << 1, x^91200 mod p(x)` << 1 */ -+ { 0x000000011122410c, 0x00000000071c80de }, -+ /* x^90112 mod p(x)` << 1, x^90176 mod p(x)` << 1 */ -+ { 0x00000000977b2070, 0x000000011513140a }, -+ /* x^89088 mod p(x)` << 1, x^89152 mod p(x)` << 1 */ -+ { 0x000000014050438e, 0x00000001df876e8e }, -+ /* x^88064 mod p(x)` << 1, x^88128 mod p(x)` << 1 */ -+ { 0x0000000147c840e8, 0x000000015f81d6ce }, -+ /* x^87040 mod p(x)` << 1, x^87104 mod p(x)` << 1 */ -+ { 0x00000001cc7c88ce, 0x000000019dd94dbe }, -+ /* x^86016 mod p(x)` << 1, x^86080 mod p(x)` << 1 */ -+ { 0x00000001476b35a4, 0x00000001373d206e }, -+ /* x^84992 mod p(x)` << 1, x^85056 mod p(x)` << 1 */ -+ { 0x000000013d52d508, 0x00000000668ccade }, -+ /* x^83968 mod p(x)` << 1, x^84032 mod p(x)` << 1 */ -+ { 0x000000008e4be32e, 0x00000001b192d268 }, -+ /* x^82944 mod p(x)` << 1, x^83008 mod p(x)` << 1 */ -+ { 0x00000000024120fe, 0x00000000e30f3a78 }, -+ /* x^81920 mod p(x)` << 1, x^81984 mod p(x)` << 1 */ -+ { 0x00000000ddecddb4, 0x000000010ef1f7bc }, -+ /* x^80896 mod p(x)` << 1, x^80960 mod p(x)` << 1 */ -+ { 0x00000000d4d403bc, 0x00000001f5ac7380 }, -+ /* x^79872 mod p(x)` << 1, x^79936 mod p(x)` << 1 */ -+ { 0x00000001734b89aa, 0x000000011822ea70 }, -+ /* x^78848 mod p(x)` << 1, x^78912 mod p(x)` << 1 */ -+ { 0x000000010e7a58d6, 0x00000000c3a33848 }, -+ /* x^77824 mod p(x)` << 1, x^77888 mod p(x)` << 1 */ -+ { 0x00000001f9f04e9c, 0x00000001bd151c24 }, -+ /* x^76800 mod p(x)` << 1, x^76864 mod p(x)` << 1 */ -+ { 0x00000000b692225e, 0x0000000056002d76 }, -+ /* x^75776 mod p(x)` << 1, x^75840 mod p(x)` << 1 */ -+ { 0x000000019b8d3f3e, 0x000000014657c4f4 }, -+ /* x^74752 mod p(x)` << 1, x^74816 mod p(x)` << 1 */ -+ { 0x00000001a874f11e, 0x0000000113742d7c }, -+ /* x^73728 mod p(x)` << 1, x^73792 mod p(x)` << 1 */ -+ { 0x000000010d5a4254, 0x000000019c5920ba }, -+ /* x^72704 mod p(x)` << 1, x^72768 mod p(x)` << 1 */ -+ { 0x00000000bbb2f5d6, 0x000000005216d2d6 }, -+ /* x^71680 mod p(x)` << 1, x^71744 mod p(x)` << 1 */ -+ { 0x0000000179cc0e36, 0x0000000136f5ad8a }, -+ /* x^70656 mod p(x)` << 1, x^70720 mod p(x)` << 1 */ -+ { 0x00000001dca1da4a, 0x000000018b07beb6 }, -+ /* x^69632 mod p(x)` << 1, x^69696 mod p(x)` << 1 */ -+ { 0x00000000feb1a192, 0x00000000db1e93b0 }, -+ /* x^68608 mod p(x)` << 1, x^68672 mod p(x)` << 1 */ -+ { 0x00000000d1eeedd6, 0x000000000b96fa3a }, -+ /* x^67584 mod p(x)` << 1, x^67648 mod p(x)` << 1 */ -+ { 0x000000008fad9bb4, 0x00000001d9968af0 }, -+ /* x^66560 mod p(x)` << 1, x^66624 mod p(x)` << 1 */ -+ { 0x00000001884938e4, 0x000000000e4a77a2 }, -+ /* x^65536 mod p(x)` << 1, x^65600 mod p(x)` << 1 */ -+ { 0x00000001bc2e9bc0, 0x00000000508c2ac8 }, -+ /* x^64512 mod p(x)` << 1, x^64576 mod p(x)` << 1 */ -+ { 0x00000001f9658a68, 0x0000000021572a80 }, -+ /* x^63488 mod p(x)` << 1, x^63552 mod p(x)` << 1 */ -+ { 0x000000001b9224fc, 0x00000001b859daf2 }, -+ /* x^62464 mod p(x)` << 1, x^62528 mod p(x)` << 1 */ -+ { 0x0000000055b2fb84, 0x000000016f788474 }, -+ /* x^61440 mod p(x)` << 1, x^61504 mod p(x)` << 1 */ -+ { 0x000000018b090348, 0x00000001b438810e }, -+ /* x^60416 mod p(x)` << 1, x^60480 mod p(x)` << 1 */ -+ { 0x000000011ccbd5ea, 0x0000000095ddc6f2 }, -+ /* x^59392 mod p(x)` << 1, x^59456 mod p(x)` << 1 */ -+ { 0x0000000007ae47f8, 0x00000001d977c20c }, -+ /* x^58368 mod p(x)` << 1, x^58432 mod p(x)` << 1 */ -+ { 0x0000000172acbec0, 0x00000000ebedb99a }, -+ /* x^57344 mod p(x)` << 1, x^57408 mod p(x)` << 1 */ -+ { 0x00000001c6e3ff20, 0x00000001df9e9e92 }, -+ /* x^56320 mod p(x)` << 1, x^56384 mod p(x)` << 1 */ -+ { 0x00000000e1b38744, 0x00000001a4a3f952 }, -+ /* x^55296 mod p(x)` << 1, x^55360 mod p(x)` << 1 */ -+ { 0x00000000791585b2, 0x00000000e2f51220 }, -+ /* x^54272 mod p(x)` << 1, x^54336 mod p(x)` << 1 */ -+ { 0x00000000ac53b894, 0x000000004aa01f3e }, -+ /* x^53248 mod p(x)` << 1, x^53312 mod p(x)` << 1 */ -+ { 0x00000001ed5f2cf4, 0x00000000b3e90a58 }, -+ /* x^52224 mod p(x)` << 1, x^52288 mod p(x)` << 1 */ -+ { 0x00000001df48b2e0, 0x000000000c9ca2aa }, -+ /* x^51200 mod p(x)` << 1, x^51264 mod p(x)` << 1 */ -+ { 0x00000000049c1c62, 0x0000000151682316 }, -+ /* x^50176 mod p(x)` << 1, x^50240 mod p(x)` << 1 */ -+ { 0x000000017c460c12, 0x0000000036fce78c }, -+ /* x^49152 mod p(x)` << 1, x^49216 mod p(x)` << 1 */ -+ { 0x000000015be4da7e, 0x000000009037dc10 }, -+ /* x^48128 mod p(x)` << 1, x^48192 mod p(x)` << 1 */ -+ { 0x000000010f38f668, 0x00000000d3298582 }, -+ /* x^47104 mod p(x)` << 1, x^47168 mod p(x)` << 1 */ -+ { 0x0000000039f40a00, 0x00000001b42e8ad6 }, -+ /* x^46080 mod p(x)` << 1, x^46144 mod p(x)` << 1 */ -+ { 0x00000000bd4c10c4, 0x00000000142a9838 }, -+ /* x^45056 mod p(x)` << 1, x^45120 mod p(x)` << 1 */ -+ { 0x0000000042db1d98, 0x0000000109c7f190 }, -+ /* x^44032 mod p(x)` << 1, x^44096 mod p(x)` << 1 */ -+ { 0x00000001c905bae6, 0x0000000056ff9310 }, -+ /* x^43008 mod p(x)` << 1, x^43072 mod p(x)` << 1 */ -+ { 0x00000000069d40ea, 0x00000001594513aa }, -+ /* x^41984 mod p(x)` << 1, x^42048 mod p(x)` << 1 */ -+ { 0x000000008e4fbad0, 0x00000001e3b5b1e8 }, -+ /* x^40960 mod p(x)` << 1, x^41024 mod p(x)` << 1 */ -+ { 0x0000000047bedd46, 0x000000011dd5fc08 }, -+ /* x^39936 mod p(x)` << 1, x^40000 mod p(x)` << 1 */ -+ { 0x0000000026396bf8, 0x00000001675f0cc2 }, -+ /* x^38912 mod p(x)` << 1, x^38976 mod p(x)` << 1 */ -+ { 0x00000000379beb92, 0x00000000d1c8dd44 }, -+ /* x^37888 mod p(x)` << 1, x^37952 mod p(x)` << 1 */ -+ { 0x000000000abae54a, 0x0000000115ebd3d8 }, -+ /* x^36864 mod p(x)` << 1, x^36928 mod p(x)` << 1 */ -+ { 0x0000000007e6a128, 0x00000001ecbd0dac }, -+ /* x^35840 mod p(x)` << 1, x^35904 mod p(x)` << 1 */ -+ { 0x000000000ade29d2, 0x00000000cdf67af2 }, -+ /* x^34816 mod p(x)` << 1, x^34880 mod p(x)` << 1 */ -+ { 0x00000000f974c45c, 0x000000004c01ff4c }, -+ /* x^33792 mod p(x)` << 1, x^33856 mod p(x)` << 1 */ -+ { 0x00000000e77ac60a, 0x00000000f2d8657e }, -+ /* x^32768 mod p(x)` << 1, x^32832 mod p(x)` << 1 */ -+ { 0x0000000145895816, 0x000000006bae74c4 }, -+ /* x^31744 mod p(x)` << 1, x^31808 mod p(x)` << 1 */ -+ { 0x0000000038e362be, 0x0000000152af8aa0 }, -+ /* x^30720 mod p(x)` << 1, x^30784 mod p(x)` << 1 */ -+ { 0x000000007f991a64, 0x0000000004663802 }, -+ /* x^29696 mod p(x)` << 1, x^29760 mod p(x)` << 1 */ -+ { 0x00000000fa366d3a, 0x00000001ab2f5afc }, -+ /* x^28672 mod p(x)` << 1, x^28736 mod p(x)` << 1 */ -+ { 0x00000001a2bb34f0, 0x0000000074a4ebd4 }, -+ /* x^27648 mod p(x)` << 1, x^27712 mod p(x)` << 1 */ -+ { 0x0000000028a9981e, 0x00000001d7ab3a4c }, -+ /* x^26624 mod p(x)` << 1, x^26688 mod p(x)` << 1 */ -+ { 0x00000001dbc672be, 0x00000001a8da60c6 }, -+ /* x^25600 mod p(x)` << 1, x^25664 mod p(x)` << 1 */ -+ { 0x00000000b04d77f6, 0x000000013cf63820 }, -+ /* x^24576 mod p(x)` << 1, x^24640 mod p(x)` << 1 */ -+ { 0x0000000124400d96, 0x00000000bec12e1e }, -+ /* x^23552 mod p(x)` << 1, x^23616 mod p(x)` << 1 */ -+ { 0x000000014ca4b414, 0x00000001c6368010 }, -+ /* x^22528 mod p(x)` << 1, x^22592 mod p(x)` << 1 */ -+ { 0x000000012fe2c938, 0x00000001e6e78758 }, -+ /* x^21504 mod p(x)` << 1, x^21568 mod p(x)` << 1 */ -+ { 0x00000001faed01e6, 0x000000008d7f2b3c }, -+ /* x^20480 mod p(x)` << 1, x^20544 mod p(x)` << 1 */ -+ { 0x000000007e80ecfe, 0x000000016b4a156e }, -+ /* x^19456 mod p(x)` << 1, x^19520 mod p(x)` << 1 */ -+ { 0x0000000098daee94, 0x00000001c63cfeb6 }, -+ /* x^18432 mod p(x)` << 1, x^18496 mod p(x)` << 1 */ -+ { 0x000000010a04edea, 0x000000015f902670 }, -+ /* x^17408 mod p(x)` << 1, x^17472 mod p(x)` << 1 */ -+ { 0x00000001c00b4524, 0x00000001cd5de11e }, -+ /* x^16384 mod p(x)` << 1, x^16448 mod p(x)` << 1 */ -+ { 0x0000000170296550, 0x000000001acaec54 }, -+ /* x^15360 mod p(x)` << 1, x^15424 mod p(x)` << 1 */ -+ { 0x0000000181afaa48, 0x000000002bd0ca78 }, -+ /* x^14336 mod p(x)` << 1, x^14400 mod p(x)` << 1 */ -+ { 0x0000000185a31ffa, 0x0000000032d63d5c }, -+ /* x^13312 mod p(x)` << 1, x^13376 mod p(x)` << 1 */ -+ { 0x000000002469f608, 0x000000001c6d4e4c }, -+ /* x^12288 mod p(x)` << 1, x^12352 mod p(x)` << 1 */ -+ { 0x000000006980102a, 0x0000000106a60b92 }, -+ /* x^11264 mod p(x)` << 1, x^11328 mod p(x)` << 1 */ -+ { 0x0000000111ea9ca8, 0x00000000d3855e12 }, -+ /* x^10240 mod p(x)` << 1, x^10304 mod p(x)` << 1 */ -+ { 0x00000001bd1d29ce, 0x00000000e3125636 }, -+ /* x^9216 mod p(x)` << 1, x^9280 mod p(x)` << 1 */ -+ { 0x00000001b34b9580, 0x000000009e8f7ea4 }, -+ /* x^8192 mod p(x)` << 1, x^8256 mod p(x)` << 1 */ -+ { 0x000000003076054e, 0x00000001c82e562c }, -+ /* x^7168 mod p(x)` << 1, x^7232 mod p(x)` << 1 */ -+ { 0x000000012a608ea4, 0x00000000ca9f09ce }, -+ /* x^6144 mod p(x)` << 1, x^6208 mod p(x)` << 1 */ -+ { 0x00000000784d05fe, 0x00000000c63764e6 }, -+ /* x^5120 mod p(x)` << 1, x^5184 mod p(x)` << 1 */ -+ { 0x000000016ef0d82a, 0x0000000168d2e49e }, -+ /* x^4096 mod p(x)` << 1, x^4160 mod p(x)` << 1 */ -+ { 0x0000000075bda454, 0x00000000e986c148 }, -+ /* x^3072 mod p(x)` << 1, x^3136 mod p(x)` << 1 */ -+ { 0x000000003dc0a1c4, 0x00000000cfb65894 }, -+ /* x^2048 mod p(x)` << 1, x^2112 mod p(x)` << 1 */ -+ { 0x00000000e9a5d8be, 0x0000000111cadee4 }, -+ /* x^1024 mod p(x)` << 1, x^1088 mod p(x)` << 1 */ -+ { 0x00000001609bc4b4, 0x0000000171fb63ce } -+#else /* __LITTLE_ENDIAN__ */ -+ /* x^261120 mod p(x)` << 1, x^261184 mod p(x)` << 1 */ -+ { 0x00000000b6ca9e20, 0x000000009c37c408 }, -+ /* x^260096 mod p(x)` << 1, x^260160 mod p(x)` << 1 */ -+ { 0x00000000350249a8, 0x00000001b51df26c }, -+ /* x^259072 mod p(x)` << 1, x^259136 mod p(x)` << 1 */ -+ { 0x00000001862dac54, 0x000000000724b9d0 }, -+ /* x^258048 mod p(x)` << 1, x^258112 mod p(x)` << 1 */ -+ { 0x00000001d87fb48c, 0x00000001c00532fe }, -+ /* x^257024 mod p(x)` << 1, x^257088 mod p(x)` << 1 */ -+ { 0x00000001f39b699e, 0x00000000f05a9362 }, -+ /* x^256000 mod p(x)` << 1, x^256064 mod p(x)` << 1 */ -+ { 0x0000000101da11b4, 0x00000001e1007970 }, -+ /* x^254976 mod p(x)` << 1, x^255040 mod p(x)` << 1 */ -+ { 0x00000001cab571e0, 0x00000000a57366ee }, -+ /* x^253952 mod p(x)` << 1, x^254016 mod p(x)` << 1 */ -+ { 0x00000000c7020cfe, 0x0000000192011284 }, -+ /* x^252928 mod p(x)` << 1, x^252992 mod p(x)` << 1 */ -+ { 0x00000000cdaed1ae, 0x0000000162716d9a }, -+ /* x^251904 mod p(x)` << 1, x^251968 mod p(x)` << 1 */ -+ { 0x00000001e804effc, 0x00000000cd97ecde }, -+ /* x^250880 mod p(x)` << 1, x^250944 mod p(x)` << 1 */ -+ { 0x0000000077c3ea3a, 0x0000000058812bc0 }, -+ /* x^249856 mod p(x)` << 1, x^249920 mod p(x)` << 1 */ -+ { 0x0000000068df31b4, 0x0000000088b8c12e }, -+ /* x^248832 mod p(x)` << 1, x^248896 mod p(x)` << 1 */ -+ { 0x00000000b059b6c2, 0x00000001230b234c }, -+ /* x^247808 mod p(x)` << 1, x^247872 mod p(x)` << 1 */ -+ { 0x0000000145fb8ed8, 0x00000001120b416e }, -+ /* x^246784 mod p(x)` << 1, x^246848 mod p(x)` << 1 */ -+ { 0x00000000cbc09168, 0x00000001974aecb0 }, -+ /* x^245760 mod p(x)` << 1, x^245824 mod p(x)` << 1 */ -+ { 0x000000005ceeedc2, 0x000000008ee3f226 }, -+ /* x^244736 mod p(x)` << 1, x^244800 mod p(x)` << 1 */ -+ { 0x0000000047d74e86, 0x00000001089aba9a }, -+ /* x^243712 mod p(x)` << 1, x^243776 mod p(x)` << 1 */ -+ { 0x00000001407e9e22, 0x0000000065113872 }, -+ /* x^242688 mod p(x)` << 1, x^242752 mod p(x)` << 1 */ -+ { 0x00000001da967bda, 0x000000005c07ec10 }, -+ /* x^241664 mod p(x)` << 1, x^241728 mod p(x)` << 1 */ -+ { 0x000000006c898368, 0x0000000187590924 }, -+ /* x^240640 mod p(x)` << 1, x^240704 mod p(x)` << 1 */ -+ { 0x00000000f2d14c98, 0x00000000e35da7c6 }, -+ /* x^239616 mod p(x)` << 1, x^239680 mod p(x)` << 1 */ -+ { 0x00000001993c6ad4, 0x000000000415855a }, -+ /* x^238592 mod p(x)` << 1, x^238656 mod p(x)` << 1 */ -+ { 0x000000014683d1ac, 0x0000000073617758 }, -+ /* x^237568 mod p(x)` << 1, x^237632 mod p(x)` << 1 */ -+ { 0x00000001a7c93e6c, 0x0000000176021d28 }, -+ /* x^236544 mod p(x)` << 1, x^236608 mod p(x)` << 1 */ -+ { 0x000000010211e90a, 0x00000001c358fd0a }, -+ /* x^235520 mod p(x)` << 1, x^235584 mod p(x)` << 1 */ -+ { 0x000000001119403e, 0x00000001ff7a2c18 }, -+ /* x^234496 mod p(x)` << 1, x^234560 mod p(x)` << 1 */ -+ { 0x000000001c3261aa, 0x00000000f2d9f7e4 }, -+ /* x^233472 mod p(x)` << 1, x^233536 mod p(x)` << 1 */ -+ { 0x000000014e37a634, 0x000000016cf1f9c8 }, -+ /* x^232448 mod p(x)` << 1, x^232512 mod p(x)` << 1 */ -+ { 0x0000000073786c0c, 0x000000010af9279a }, -+ /* x^231424 mod p(x)` << 1, x^231488 mod p(x)` << 1 */ -+ { 0x000000011dc037f8, 0x0000000004f101e8 }, -+ /* x^230400 mod p(x)` << 1, x^230464 mod p(x)` << 1 */ -+ { 0x0000000031433dfc, 0x0000000070bcf184 }, -+ /* x^229376 mod p(x)` << 1, x^229440 mod p(x)` << 1 */ -+ { 0x000000009cde8348, 0x000000000a8de642 }, -+ /* x^228352 mod p(x)` << 1, x^228416 mod p(x)` << 1 */ -+ { 0x0000000038d3c2a6, 0x0000000062ea130c }, -+ /* x^227328 mod p(x)` << 1, x^227392 mod p(x)` << 1 */ -+ { 0x000000011b25f260, 0x00000001eb31cbb2 }, -+ /* x^226304 mod p(x)` << 1, x^226368 mod p(x)` << 1 */ -+ { 0x000000001629e6f0, 0x0000000170783448 }, -+ /* x^225280 mod p(x)` << 1, x^225344 mod p(x)` << 1 */ -+ { 0x0000000160838b4c, 0x00000001a684b4c6 }, -+ /* x^224256 mod p(x)` << 1, x^224320 mod p(x)` << 1 */ -+ { 0x000000007a44011c, 0x00000000253ca5b4 }, -+ /* x^223232 mod p(x)` << 1, x^223296 mod p(x)` << 1 */ -+ { 0x00000000226f417a, 0x0000000057b4b1e2 }, -+ /* x^222208 mod p(x)` << 1, x^222272 mod p(x)` << 1 */ -+ { 0x0000000045eb2eb4, 0x00000000b6bd084c }, -+ /* x^221184 mod p(x)` << 1, x^221248 mod p(x)` << 1 */ -+ { 0x000000014459d70c, 0x0000000123c2d592 }, -+ /* x^220160 mod p(x)` << 1, x^220224 mod p(x)` << 1 */ -+ { 0x00000001d406ed82, 0x00000000159dafce }, -+ /* x^219136 mod p(x)` << 1, x^219200 mod p(x)` << 1 */ -+ { 0x0000000160c8e1a8, 0x0000000127e1a64e }, -+ /* x^218112 mod p(x)` << 1, x^218176 mod p(x)` << 1 */ -+ { 0x0000000027ba8098, 0x0000000056860754 }, -+ /* x^217088 mod p(x)` << 1, x^217152 mod p(x)` << 1 */ -+ { 0x000000006d92d018, 0x00000001e661aae8 }, -+ /* x^216064 mod p(x)` << 1, x^216128 mod p(x)` << 1 */ -+ { 0x000000012ed7e3f2, 0x00000000f82c6166 }, -+ /* x^215040 mod p(x)` << 1, x^215104 mod p(x)` << 1 */ -+ { 0x000000002dc87788, 0x00000000c4f9c7ae }, -+ /* x^214016 mod p(x)` << 1, x^214080 mod p(x)` << 1 */ -+ { 0x0000000018240bb8, 0x0000000074203d20 }, -+ /* x^212992 mod p(x)` << 1, x^213056 mod p(x)` << 1 */ -+ { 0x000000001ad38158, 0x0000000198173052 }, -+ /* x^211968 mod p(x)` << 1, x^212032 mod p(x)` << 1 */ -+ { 0x00000001396b78f2, 0x00000001ce8aba54 }, -+ /* x^210944 mod p(x)` << 1, x^211008 mod p(x)` << 1 */ -+ { 0x000000011a681334, 0x00000001850d5d94 }, -+ /* x^209920 mod p(x)` << 1, x^209984 mod p(x)` << 1 */ -+ { 0x000000012104732e, 0x00000001d609239c }, -+ /* x^208896 mod p(x)` << 1, x^208960 mod p(x)` << 1 */ -+ { 0x00000000a140d90c, 0x000000001595f048 }, -+ /* x^207872 mod p(x)` << 1, x^207936 mod p(x)` << 1 */ -+ { 0x00000001b7215eda, 0x0000000042ccee08 }, -+ /* x^206848 mod p(x)` << 1, x^206912 mod p(x)` << 1 */ -+ { 0x00000001aaf1df3c, 0x000000010a389d74 }, -+ /* x^205824 mod p(x)` << 1, x^205888 mod p(x)` << 1 */ -+ { 0x0000000029d15b8a, 0x000000012a840da6 }, -+ /* x^204800 mod p(x)` << 1, x^204864 mod p(x)` << 1 */ -+ { 0x00000000f1a96922, 0x000000001d181c0c }, -+ /* x^203776 mod p(x)` << 1, x^203840 mod p(x)` << 1 */ -+ { 0x00000001ac80d03c, 0x0000000068b7d1f6 }, -+ /* x^202752 mod p(x)` << 1, x^202816 mod p(x)` << 1 */ -+ { 0x000000000f11d56a, 0x000000005b0f14fc }, -+ /* x^201728 mod p(x)` << 1, x^201792 mod p(x)` << 1 */ -+ { 0x00000001f1c022a2, 0x0000000179e9e730 }, -+ /* x^200704 mod p(x)` << 1, x^200768 mod p(x)` << 1 */ -+ { 0x0000000173d00ae2, 0x00000001ce1368d6 }, -+ /* x^199680 mod p(x)` << 1, x^199744 mod p(x)` << 1 */ -+ { 0x00000001d4ffe4ac, 0x0000000112c3a84c }, -+ /* x^198656 mod p(x)` << 1, x^198720 mod p(x)` << 1 */ -+ { 0x000000016edc5ae4, 0x00000000de940fee }, -+ /* x^197632 mod p(x)` << 1, x^197696 mod p(x)` << 1 */ -+ { 0x00000001f1a02140, 0x00000000fe896b7e }, -+ /* x^196608 mod p(x)` << 1, x^196672 mod p(x)` << 1 */ -+ { 0x00000000ca0b28a0, 0x00000001f797431c }, -+ /* x^195584 mod p(x)` << 1, x^195648 mod p(x)` << 1 */ -+ { 0x00000001928e30a2, 0x0000000053e989ba }, -+ /* x^194560 mod p(x)` << 1, x^194624 mod p(x)` << 1 */ -+ { 0x0000000097b1b002, 0x000000003920cd16 }, -+ /* x^193536 mod p(x)` << 1, x^193600 mod p(x)` << 1 */ -+ { 0x00000000b15bf906, 0x00000001e6f579b8 }, -+ /* x^192512 mod p(x)` << 1, x^192576 mod p(x)` << 1 */ -+ { 0x00000000411c5d52, 0x000000007493cb0a }, -+ /* x^191488 mod p(x)` << 1, x^191552 mod p(x)` << 1 */ -+ { 0x00000001c36f3300, 0x00000001bdd376d8 }, -+ /* x^190464 mod p(x)` << 1, x^190528 mod p(x)` << 1 */ -+ { 0x00000001119227e0, 0x000000016badfee6 }, -+ /* x^189440 mod p(x)` << 1, x^189504 mod p(x)` << 1 */ -+ { 0x00000000114d4702, 0x0000000071de5c58 }, -+ /* x^188416 mod p(x)` << 1, x^188480 mod p(x)` << 1 */ -+ { 0x00000000458b5b98, 0x00000000453f317c }, -+ /* x^187392 mod p(x)` << 1, x^187456 mod p(x)` << 1 */ -+ { 0x000000012e31fb8e, 0x0000000121675cce }, -+ /* x^186368 mod p(x)` << 1, x^186432 mod p(x)` << 1 */ -+ { 0x000000005cf619d8, 0x00000001f409ee92 }, -+ /* x^185344 mod p(x)` << 1, x^185408 mod p(x)` << 1 */ -+ { 0x0000000063f4d8b2, 0x00000000f36b9c88 }, -+ /* x^184320 mod p(x)` << 1, x^184384 mod p(x)` << 1 */ -+ { 0x000000004138dc8a, 0x0000000036b398f4 }, -+ /* x^183296 mod p(x)` << 1, x^183360 mod p(x)` << 1 */ -+ { 0x00000001d29ee8e0, 0x00000001748f9adc }, -+ /* x^182272 mod p(x)` << 1, x^182336 mod p(x)` << 1 */ -+ { 0x000000006a08ace8, 0x00000001be94ec00 }, -+ /* x^181248 mod p(x)` << 1, x^181312 mod p(x)` << 1 */ -+ { 0x0000000127d42010, 0x00000000b74370d6 }, -+ /* x^180224 mod p(x)` << 1, x^180288 mod p(x)` << 1 */ -+ { 0x0000000019d76b62, 0x00000001174d0b98 }, -+ /* x^179200 mod p(x)` << 1, x^179264 mod p(x)` << 1 */ -+ { 0x00000001b1471f6e, 0x00000000befc06a4 }, -+ /* x^178176 mod p(x)` << 1, x^178240 mod p(x)` << 1 */ -+ { 0x00000001f64c19cc, 0x00000001ae125288 }, -+ /* x^177152 mod p(x)` << 1, x^177216 mod p(x)` << 1 */ -+ { 0x00000000003c0ea0, 0x0000000095c19b34 }, -+ /* x^176128 mod p(x)` << 1, x^176192 mod p(x)` << 1 */ -+ { 0x000000014d73abf6, 0x00000001a78496f2 }, -+ /* x^175104 mod p(x)` << 1, x^175168 mod p(x)` << 1 */ -+ { 0x00000001620eb844, 0x00000001ac5390a0 }, -+ /* x^174080 mod p(x)` << 1, x^174144 mod p(x)` << 1 */ -+ { 0x0000000147655048, 0x000000002a80ed6e }, -+ /* x^173056 mod p(x)` << 1, x^173120 mod p(x)` << 1 */ -+ { 0x0000000067b5077e, 0x00000001fa9b0128 }, -+ /* x^172032 mod p(x)` << 1, x^172096 mod p(x)` << 1 */ -+ { 0x0000000010ffe206, 0x00000001ea94929e }, -+ /* x^171008 mod p(x)` << 1, x^171072 mod p(x)` << 1 */ -+ { 0x000000000fee8f1e, 0x0000000125f4305c }, -+ /* x^169984 mod p(x)` << 1, x^170048 mod p(x)` << 1 */ -+ { 0x00000001da26fbae, 0x00000001471e2002 }, -+ /* x^168960 mod p(x)` << 1, x^169024 mod p(x)` << 1 */ -+ { 0x00000001b3a8bd88, 0x0000000132d2253a }, -+ /* x^167936 mod p(x)` << 1, x^168000 mod p(x)` << 1 */ -+ { 0x00000000e8f3898e, 0x00000000f26b3592 }, -+ /* x^166912 mod p(x)` << 1, x^166976 mod p(x)` << 1 */ -+ { 0x00000000b0d0d28c, 0x00000000bc8b67b0 }, -+ /* x^165888 mod p(x)` << 1, x^165952 mod p(x)` << 1 */ -+ { 0x0000000030f2a798, 0x000000013a826ef2 }, -+ /* x^164864 mod p(x)` << 1, x^164928 mod p(x)` << 1 */ -+ { 0x000000000fba1002, 0x0000000081482c84 }, -+ /* x^163840 mod p(x)` << 1, x^163904 mod p(x)` << 1 */ -+ { 0x00000000bdb9bd72, 0x00000000e77307c2 }, -+ /* x^162816 mod p(x)` << 1, x^162880 mod p(x)` << 1 */ -+ { 0x0000000075d3bf5a, 0x00000000d4a07ec8 }, -+ /* x^161792 mod p(x)` << 1, x^161856 mod p(x)` << 1 */ -+ { 0x00000000ef1f98a0, 0x0000000017102100 }, -+ /* x^160768 mod p(x)` << 1, x^160832 mod p(x)` << 1 */ -+ { 0x00000000689c7602, 0x00000000db406486 }, -+ /* x^159744 mod p(x)` << 1, x^159808 mod p(x)` << 1 */ -+ { 0x000000016d5fa5fe, 0x0000000192db7f88 }, -+ /* x^158720 mod p(x)` << 1, x^158784 mod p(x)` << 1 */ -+ { 0x00000001d0d2b9ca, 0x000000018bf67b1e }, -+ /* x^157696 mod p(x)` << 1, x^157760 mod p(x)` << 1 */ -+ { 0x0000000041e7b470, 0x000000007c09163e }, -+ /* x^156672 mod p(x)` << 1, x^156736 mod p(x)` << 1 */ -+ { 0x00000001cbb6495e, 0x000000000adac060 }, -+ /* x^155648 mod p(x)` << 1, x^155712 mod p(x)` << 1 */ -+ { 0x000000010052a0b0, 0x00000000bd8316ae }, -+ /* x^154624 mod p(x)` << 1, x^154688 mod p(x)` << 1 */ -+ { 0x00000001d8effb5c, 0x000000019f09ab54 }, -+ /* x^153600 mod p(x)` << 1, x^153664 mod p(x)` << 1 */ -+ { 0x00000001d969853c, 0x0000000125155542 }, -+ /* x^152576 mod p(x)` << 1, x^152640 mod p(x)` << 1 */ -+ { 0x00000000523ccce2, 0x000000018fdb5882 }, -+ /* x^151552 mod p(x)` << 1, x^151616 mod p(x)` << 1 */ -+ { 0x000000001e2436bc, 0x00000000e794b3f4 }, -+ /* x^150528 mod p(x)` << 1, x^150592 mod p(x)` << 1 */ -+ { 0x00000000ddd1c3a2, 0x000000016f9bb022 }, -+ /* x^149504 mod p(x)` << 1, x^149568 mod p(x)` << 1 */ -+ { 0x0000000019fcfe38, 0x00000000290c9978 }, -+ /* x^148480 mod p(x)` << 1, x^148544 mod p(x)` << 1 */ -+ { 0x00000001ce95db64, 0x0000000083c0f350 }, -+ /* x^147456 mod p(x)` << 1, x^147520 mod p(x)` << 1 */ -+ { 0x00000000af582806, 0x0000000173ea6628 }, -+ /* x^146432 mod p(x)` << 1, x^146496 mod p(x)` << 1 */ -+ { 0x00000001006388f6, 0x00000001c8b4e00a }, -+ /* x^145408 mod p(x)` << 1, x^145472 mod p(x)` << 1 */ -+ { 0x0000000179eca00a, 0x00000000de95d6aa }, -+ /* x^144384 mod p(x)` << 1, x^144448 mod p(x)` << 1 */ -+ { 0x0000000122410a6a, 0x000000010b7f7248 }, -+ /* x^143360 mod p(x)` << 1, x^143424 mod p(x)` << 1 */ -+ { 0x000000004288e87c, 0x00000001326e3a06 }, -+ /* x^142336 mod p(x)` << 1, x^142400 mod p(x)` << 1 */ -+ { 0x000000016c5490da, 0x00000000bb62c2e6 }, -+ /* x^141312 mod p(x)` << 1, x^141376 mod p(x)` << 1 */ -+ { 0x00000000d1c71f6e, 0x0000000156a4b2c2 }, -+ /* x^140288 mod p(x)` << 1, x^140352 mod p(x)` << 1 */ -+ { 0x00000001b4ce08a6, 0x000000011dfe763a }, -+ /* x^139264 mod p(x)` << 1, x^139328 mod p(x)` << 1 */ -+ { 0x00000001466ba60c, 0x000000007bcca8e2 }, -+ /* x^138240 mod p(x)` << 1, x^138304 mod p(x)` << 1 */ -+ { 0x00000001f6c488a4, 0x0000000186118faa }, -+ /* x^137216 mod p(x)` << 1, x^137280 mod p(x)` << 1 */ -+ { 0x000000013bfb0682, 0x0000000111a65a88 }, -+ /* x^136192 mod p(x)` << 1, x^136256 mod p(x)` << 1 */ -+ { 0x00000000690e9e54, 0x000000003565e1c4 }, -+ /* x^135168 mod p(x)` << 1, x^135232 mod p(x)` << 1 */ -+ { 0x00000000281346b6, 0x000000012ed02a82 }, -+ /* x^134144 mod p(x)` << 1, x^134208 mod p(x)` << 1 */ -+ { 0x0000000156464024, 0x00000000c486ecfc }, -+ /* x^133120 mod p(x)` << 1, x^133184 mod p(x)` << 1 */ -+ { 0x000000016063a8dc, 0x0000000001b951b2 }, -+ /* x^132096 mod p(x)` << 1, x^132160 mod p(x)` << 1 */ -+ { 0x0000000116a66362, 0x0000000048143916 }, -+ /* x^131072 mod p(x)` << 1, x^131136 mod p(x)` << 1 */ -+ { 0x000000017e8aa4d2, 0x00000001dc2ae124 }, -+ /* x^130048 mod p(x)` << 1, x^130112 mod p(x)` << 1 */ -+ { 0x00000001728eb10c, 0x00000001416c58d6 }, -+ /* x^129024 mod p(x)` << 1, x^129088 mod p(x)` << 1 */ -+ { 0x00000001b08fd7fa, 0x00000000a479744a }, -+ /* x^128000 mod p(x)` << 1, x^128064 mod p(x)` << 1 */ -+ { 0x00000001092a16e8, 0x0000000096ca3a26 }, -+ /* x^126976 mod p(x)` << 1, x^127040 mod p(x)` << 1 */ -+ { 0x00000000a505637c, 0x00000000ff223d4e }, -+ /* x^125952 mod p(x)` << 1, x^126016 mod p(x)` << 1 */ -+ { 0x00000000d94869b2, 0x000000010e84da42 }, -+ /* x^124928 mod p(x)` << 1, x^124992 mod p(x)` << 1 */ -+ { 0x00000001c8b203ae, 0x00000001b61ba3d0 }, -+ /* x^123904 mod p(x)` << 1, x^123968 mod p(x)` << 1 */ -+ { 0x000000005704aea0, 0x00000000680f2de8 }, -+ /* x^122880 mod p(x)` << 1, x^122944 mod p(x)` << 1 */ -+ { 0x000000012e295fa2, 0x000000008772a9a8 }, -+ /* x^121856 mod p(x)` << 1, x^121920 mod p(x)` << 1 */ -+ { 0x000000011d0908bc, 0x0000000155f295bc }, -+ /* x^120832 mod p(x)` << 1, x^120896 mod p(x)` << 1 */ -+ { 0x0000000193ed97ea, 0x00000000595f9282 }, -+ /* x^119808 mod p(x)` << 1, x^119872 mod p(x)` << 1 */ -+ { 0x000000013a0f1c52, 0x0000000164b1c25a }, -+ /* x^118784 mod p(x)` << 1, x^118848 mod p(x)` << 1 */ -+ { 0x000000010c2c40c0, 0x00000000fbd67c50 }, -+ /* x^117760 mod p(x)` << 1, x^117824 mod p(x)` << 1 */ -+ { 0x00000000ff6fac3e, 0x0000000096076268 }, -+ /* x^116736 mod p(x)` << 1, x^116800 mod p(x)` << 1 */ -+ { 0x000000017b3609c0, 0x00000001d288e4cc }, -+ /* x^115712 mod p(x)` << 1, x^115776 mod p(x)` << 1 */ -+ { 0x0000000088c8c922, 0x00000001eaac1bdc }, -+ /* x^114688 mod p(x)` << 1, x^114752 mod p(x)` << 1 */ -+ { 0x00000001751baae6, 0x00000001f1ea39e2 }, -+ /* x^113664 mod p(x)` << 1, x^113728 mod p(x)` << 1 */ -+ { 0x0000000107952972, 0x00000001eb6506fc }, -+ /* x^112640 mod p(x)` << 1, x^112704 mod p(x)` << 1 */ -+ { 0x0000000162b00abe, 0x000000010f806ffe }, -+ /* x^111616 mod p(x)` << 1, x^111680 mod p(x)` << 1 */ -+ { 0x000000000d7b404c, 0x000000010408481e }, -+ /* x^110592 mod p(x)` << 1, x^110656 mod p(x)` << 1 */ -+ { 0x00000000763b13d4, 0x0000000188260534 }, -+ /* x^109568 mod p(x)` << 1, x^109632 mod p(x)` << 1 */ -+ { 0x00000000f6dc22d8, 0x0000000058fc73e0 }, -+ /* x^108544 mod p(x)` << 1, x^108608 mod p(x)` << 1 */ -+ { 0x000000007daae060, 0x00000000391c59b8 }, -+ /* x^107520 mod p(x)` << 1, x^107584 mod p(x)` << 1 */ -+ { 0x000000013359ab7c, 0x000000018b638400 }, -+ /* x^106496 mod p(x)` << 1, x^106560 mod p(x)` << 1 */ -+ { 0x000000008add438a, 0x000000011738f5c4 }, -+ /* x^105472 mod p(x)` << 1, x^105536 mod p(x)` << 1 */ -+ { 0x00000001edbefdea, 0x000000008cf7c6da }, -+ /* x^104448 mod p(x)` << 1, x^104512 mod p(x)` << 1 */ -+ { 0x000000004104e0f8, 0x00000001ef97fb16 }, -+ /* x^103424 mod p(x)` << 1, x^103488 mod p(x)` << 1 */ -+ { 0x00000000b48a8222, 0x0000000102130e20 }, -+ /* x^102400 mod p(x)` << 1, x^102464 mod p(x)` << 1 */ -+ { 0x00000001bcb46844, 0x00000000db968898 }, -+ /* x^101376 mod p(x)` << 1, x^101440 mod p(x)` << 1 */ -+ { 0x000000013293ce0a, 0x00000000b5047b5e }, -+ /* x^100352 mod p(x)` << 1, x^100416 mod p(x)` << 1 */ -+ { 0x00000001710d0844, 0x000000010b90fdb2 }, -+ /* x^99328 mod p(x)` << 1, x^99392 mod p(x)` << 1 */ -+ { 0x0000000117907f6e, 0x000000004834a32e }, -+ /* x^98304 mod p(x)` << 1, x^98368 mod p(x)` << 1 */ -+ { 0x0000000087ddf93e, 0x0000000059c8f2b0 }, -+ /* x^97280 mod p(x)` << 1, x^97344 mod p(x)` << 1 */ -+ { 0x000000005970e9b0, 0x0000000122cec508 }, -+ /* x^96256 mod p(x)` << 1, x^96320 mod p(x)` << 1 */ -+ { 0x0000000185b2b7d0, 0x000000000a330cda }, -+ /* x^95232 mod p(x)` << 1, x^95296 mod p(x)` << 1 */ -+ { 0x00000001dcee0efc, 0x000000014a47148c }, -+ /* x^94208 mod p(x)` << 1, x^94272 mod p(x)` << 1 */ -+ { 0x0000000030da2722, 0x0000000042c61cb8 }, -+ /* x^93184 mod p(x)` << 1, x^93248 mod p(x)` << 1 */ -+ { 0x000000012f925a18, 0x0000000012fe6960 }, -+ /* x^92160 mod p(x)` << 1, x^92224 mod p(x)` << 1 */ -+ { 0x00000000dd2e357c, 0x00000000dbda2c20 }, -+ /* x^91136 mod p(x)` << 1, x^91200 mod p(x)` << 1 */ -+ { 0x00000000071c80de, 0x000000011122410c }, -+ /* x^90112 mod p(x)` << 1, x^90176 mod p(x)` << 1 */ -+ { 0x000000011513140a, 0x00000000977b2070 }, -+ /* x^89088 mod p(x)` << 1, x^89152 mod p(x)` << 1 */ -+ { 0x00000001df876e8e, 0x000000014050438e }, -+ /* x^88064 mod p(x)` << 1, x^88128 mod p(x)` << 1 */ -+ { 0x000000015f81d6ce, 0x0000000147c840e8 }, -+ /* x^87040 mod p(x)` << 1, x^87104 mod p(x)` << 1 */ -+ { 0x000000019dd94dbe, 0x00000001cc7c88ce }, -+ /* x^86016 mod p(x)` << 1, x^86080 mod p(x)` << 1 */ -+ { 0x00000001373d206e, 0x00000001476b35a4 }, -+ /* x^84992 mod p(x)` << 1, x^85056 mod p(x)` << 1 */ -+ { 0x00000000668ccade, 0x000000013d52d508 }, -+ /* x^83968 mod p(x)` << 1, x^84032 mod p(x)` << 1 */ -+ { 0x00000001b192d268, 0x000000008e4be32e }, -+ /* x^82944 mod p(x)` << 1, x^83008 mod p(x)` << 1 */ -+ { 0x00000000e30f3a78, 0x00000000024120fe }, -+ /* x^81920 mod p(x)` << 1, x^81984 mod p(x)` << 1 */ -+ { 0x000000010ef1f7bc, 0x00000000ddecddb4 }, -+ /* x^80896 mod p(x)` << 1, x^80960 mod p(x)` << 1 */ -+ { 0x00000001f5ac7380, 0x00000000d4d403bc }, -+ /* x^79872 mod p(x)` << 1, x^79936 mod p(x)` << 1 */ -+ { 0x000000011822ea70, 0x00000001734b89aa }, -+ /* x^78848 mod p(x)` << 1, x^78912 mod p(x)` << 1 */ -+ { 0x00000000c3a33848, 0x000000010e7a58d6 }, -+ /* x^77824 mod p(x)` << 1, x^77888 mod p(x)` << 1 */ -+ { 0x00000001bd151c24, 0x00000001f9f04e9c }, -+ /* x^76800 mod p(x)` << 1, x^76864 mod p(x)` << 1 */ -+ { 0x0000000056002d76, 0x00000000b692225e }, -+ /* x^75776 mod p(x)` << 1, x^75840 mod p(x)` << 1 */ -+ { 0x000000014657c4f4, 0x000000019b8d3f3e }, -+ /* x^74752 mod p(x)` << 1, x^74816 mod p(x)` << 1 */ -+ { 0x0000000113742d7c, 0x00000001a874f11e }, -+ /* x^73728 mod p(x)` << 1, x^73792 mod p(x)` << 1 */ -+ { 0x000000019c5920ba, 0x000000010d5a4254 }, -+ /* x^72704 mod p(x)` << 1, x^72768 mod p(x)` << 1 */ -+ { 0x000000005216d2d6, 0x00000000bbb2f5d6 }, -+ /* x^71680 mod p(x)` << 1, x^71744 mod p(x)` << 1 */ -+ { 0x0000000136f5ad8a, 0x0000000179cc0e36 }, -+ /* x^70656 mod p(x)` << 1, x^70720 mod p(x)` << 1 */ -+ { 0x000000018b07beb6, 0x00000001dca1da4a }, -+ /* x^69632 mod p(x)` << 1, x^69696 mod p(x)` << 1 */ -+ { 0x00000000db1e93b0, 0x00000000feb1a192 }, -+ /* x^68608 mod p(x)` << 1, x^68672 mod p(x)` << 1 */ -+ { 0x000000000b96fa3a, 0x00000000d1eeedd6 }, -+ /* x^67584 mod p(x)` << 1, x^67648 mod p(x)` << 1 */ -+ { 0x00000001d9968af0, 0x000000008fad9bb4 }, -+ /* x^66560 mod p(x)` << 1, x^66624 mod p(x)` << 1 */ -+ { 0x000000000e4a77a2, 0x00000001884938e4 }, -+ /* x^65536 mod p(x)` << 1, x^65600 mod p(x)` << 1 */ -+ { 0x00000000508c2ac8, 0x00000001bc2e9bc0 }, -+ /* x^64512 mod p(x)` << 1, x^64576 mod p(x)` << 1 */ -+ { 0x0000000021572a80, 0x00000001f9658a68 }, -+ /* x^63488 mod p(x)` << 1, x^63552 mod p(x)` << 1 */ -+ { 0x00000001b859daf2, 0x000000001b9224fc }, -+ /* x^62464 mod p(x)` << 1, x^62528 mod p(x)` << 1 */ -+ { 0x000000016f788474, 0x0000000055b2fb84 }, -+ /* x^61440 mod p(x)` << 1, x^61504 mod p(x)` << 1 */ -+ { 0x00000001b438810e, 0x000000018b090348 }, -+ /* x^60416 mod p(x)` << 1, x^60480 mod p(x)` << 1 */ -+ { 0x0000000095ddc6f2, 0x000000011ccbd5ea }, -+ /* x^59392 mod p(x)` << 1, x^59456 mod p(x)` << 1 */ -+ { 0x00000001d977c20c, 0x0000000007ae47f8 }, -+ /* x^58368 mod p(x)` << 1, x^58432 mod p(x)` << 1 */ -+ { 0x00000000ebedb99a, 0x0000000172acbec0 }, -+ /* x^57344 mod p(x)` << 1, x^57408 mod p(x)` << 1 */ -+ { 0x00000001df9e9e92, 0x00000001c6e3ff20 }, -+ /* x^56320 mod p(x)` << 1, x^56384 mod p(x)` << 1 */ -+ { 0x00000001a4a3f952, 0x00000000e1b38744 }, -+ /* x^55296 mod p(x)` << 1, x^55360 mod p(x)` << 1 */ -+ { 0x00000000e2f51220, 0x00000000791585b2 }, -+ /* x^54272 mod p(x)` << 1, x^54336 mod p(x)` << 1 */ -+ { 0x000000004aa01f3e, 0x00000000ac53b894 }, -+ /* x^53248 mod p(x)` << 1, x^53312 mod p(x)` << 1 */ -+ { 0x00000000b3e90a58, 0x00000001ed5f2cf4 }, -+ /* x^52224 mod p(x)` << 1, x^52288 mod p(x)` << 1 */ -+ { 0x000000000c9ca2aa, 0x00000001df48b2e0 }, -+ /* x^51200 mod p(x)` << 1, x^51264 mod p(x)` << 1 */ -+ { 0x0000000151682316, 0x00000000049c1c62 }, -+ /* x^50176 mod p(x)` << 1, x^50240 mod p(x)` << 1 */ -+ { 0x0000000036fce78c, 0x000000017c460c12 }, -+ /* x^49152 mod p(x)` << 1, x^49216 mod p(x)` << 1 */ -+ { 0x000000009037dc10, 0x000000015be4da7e }, -+ /* x^48128 mod p(x)` << 1, x^48192 mod p(x)` << 1 */ -+ { 0x00000000d3298582, 0x000000010f38f668 }, -+ /* x^47104 mod p(x)` << 1, x^47168 mod p(x)` << 1 */ -+ { 0x00000001b42e8ad6, 0x0000000039f40a00 }, -+ /* x^46080 mod p(x)` << 1, x^46144 mod p(x)` << 1 */ -+ { 0x00000000142a9838, 0x00000000bd4c10c4 }, -+ /* x^45056 mod p(x)` << 1, x^45120 mod p(x)` << 1 */ -+ { 0x0000000109c7f190, 0x0000000042db1d98 }, -+ /* x^44032 mod p(x)` << 1, x^44096 mod p(x)` << 1 */ -+ { 0x0000000056ff9310, 0x00000001c905bae6 }, -+ /* x^43008 mod p(x)` << 1, x^43072 mod p(x)` << 1 */ -+ { 0x00000001594513aa, 0x00000000069d40ea }, -+ /* x^41984 mod p(x)` << 1, x^42048 mod p(x)` << 1 */ -+ { 0x00000001e3b5b1e8, 0x000000008e4fbad0 }, -+ /* x^40960 mod p(x)` << 1, x^41024 mod p(x)` << 1 */ -+ { 0x000000011dd5fc08, 0x0000000047bedd46 }, -+ /* x^39936 mod p(x)` << 1, x^40000 mod p(x)` << 1 */ -+ { 0x00000001675f0cc2, 0x0000000026396bf8 }, -+ /* x^38912 mod p(x)` << 1, x^38976 mod p(x)` << 1 */ -+ { 0x00000000d1c8dd44, 0x00000000379beb92 }, -+ /* x^37888 mod p(x)` << 1, x^37952 mod p(x)` << 1 */ -+ { 0x0000000115ebd3d8, 0x000000000abae54a }, -+ /* x^36864 mod p(x)` << 1, x^36928 mod p(x)` << 1 */ -+ { 0x00000001ecbd0dac, 0x0000000007e6a128 }, -+ /* x^35840 mod p(x)` << 1, x^35904 mod p(x)` << 1 */ -+ { 0x00000000cdf67af2, 0x000000000ade29d2 }, -+ /* x^34816 mod p(x)` << 1, x^34880 mod p(x)` << 1 */ -+ { 0x000000004c01ff4c, 0x00000000f974c45c }, -+ /* x^33792 mod p(x)` << 1, x^33856 mod p(x)` << 1 */ -+ { 0x00000000f2d8657e, 0x00000000e77ac60a }, -+ /* x^32768 mod p(x)` << 1, x^32832 mod p(x)` << 1 */ -+ { 0x000000006bae74c4, 0x0000000145895816 }, -+ /* x^31744 mod p(x)` << 1, x^31808 mod p(x)` << 1 */ -+ { 0x0000000152af8aa0, 0x0000000038e362be }, -+ /* x^30720 mod p(x)` << 1, x^30784 mod p(x)` << 1 */ -+ { 0x0000000004663802, 0x000000007f991a64 }, -+ /* x^29696 mod p(x)` << 1, x^29760 mod p(x)` << 1 */ -+ { 0x00000001ab2f5afc, 0x00000000fa366d3a }, -+ /* x^28672 mod p(x)` << 1, x^28736 mod p(x)` << 1 */ -+ { 0x0000000074a4ebd4, 0x00000001a2bb34f0 }, -+ /* x^27648 mod p(x)` << 1, x^27712 mod p(x)` << 1 */ -+ { 0x00000001d7ab3a4c, 0x0000000028a9981e }, -+ /* x^26624 mod p(x)` << 1, x^26688 mod p(x)` << 1 */ -+ { 0x00000001a8da60c6, 0x00000001dbc672be }, -+ /* x^25600 mod p(x)` << 1, x^25664 mod p(x)` << 1 */ -+ { 0x000000013cf63820, 0x00000000b04d77f6 }, -+ /* x^24576 mod p(x)` << 1, x^24640 mod p(x)` << 1 */ -+ { 0x00000000bec12e1e, 0x0000000124400d96 }, -+ /* x^23552 mod p(x)` << 1, x^23616 mod p(x)` << 1 */ -+ { 0x00000001c6368010, 0x000000014ca4b414 }, -+ /* x^22528 mod p(x)` << 1, x^22592 mod p(x)` << 1 */ -+ { 0x00000001e6e78758, 0x000000012fe2c938 }, -+ /* x^21504 mod p(x)` << 1, x^21568 mod p(x)` << 1 */ -+ { 0x000000008d7f2b3c, 0x00000001faed01e6 }, -+ /* x^20480 mod p(x)` << 1, x^20544 mod p(x)` << 1 */ -+ { 0x000000016b4a156e, 0x000000007e80ecfe }, -+ /* x^19456 mod p(x)` << 1, x^19520 mod p(x)` << 1 */ -+ { 0x00000001c63cfeb6, 0x0000000098daee94 }, -+ /* x^18432 mod p(x)` << 1, x^18496 mod p(x)` << 1 */ -+ { 0x000000015f902670, 0x000000010a04edea }, -+ /* x^17408 mod p(x)` << 1, x^17472 mod p(x)` << 1 */ -+ { 0x00000001cd5de11e, 0x00000001c00b4524 }, -+ /* x^16384 mod p(x)` << 1, x^16448 mod p(x)` << 1 */ -+ { 0x000000001acaec54, 0x0000000170296550 }, -+ /* x^15360 mod p(x)` << 1, x^15424 mod p(x)` << 1 */ -+ { 0x000000002bd0ca78, 0x0000000181afaa48 }, -+ /* x^14336 mod p(x)` << 1, x^14400 mod p(x)` << 1 */ -+ { 0x0000000032d63d5c, 0x0000000185a31ffa }, -+ /* x^13312 mod p(x)` << 1, x^13376 mod p(x)` << 1 */ -+ { 0x000000001c6d4e4c, 0x000000002469f608 }, -+ /* x^12288 mod p(x)` << 1, x^12352 mod p(x)` << 1 */ -+ { 0x0000000106a60b92, 0x000000006980102a }, -+ /* x^11264 mod p(x)` << 1, x^11328 mod p(x)` << 1 */ -+ { 0x00000000d3855e12, 0x0000000111ea9ca8 }, -+ /* x^10240 mod p(x)` << 1, x^10304 mod p(x)` << 1 */ -+ { 0x00000000e3125636, 0x00000001bd1d29ce }, -+ /* x^9216 mod p(x)` << 1, x^9280 mod p(x)` << 1 */ -+ { 0x000000009e8f7ea4, 0x00000001b34b9580 }, -+ /* x^8192 mod p(x)` << 1, x^8256 mod p(x)` << 1 */ -+ { 0x00000001c82e562c, 0x000000003076054e }, -+ /* x^7168 mod p(x)` << 1, x^7232 mod p(x)` << 1 */ -+ { 0x00000000ca9f09ce, 0x000000012a608ea4 }, -+ /* x^6144 mod p(x)` << 1, x^6208 mod p(x)` << 1 */ -+ { 0x00000000c63764e6, 0x00000000784d05fe }, -+ /* x^5120 mod p(x)` << 1, x^5184 mod p(x)` << 1 */ -+ { 0x0000000168d2e49e, 0x000000016ef0d82a }, -+ /* x^4096 mod p(x)` << 1, x^4160 mod p(x)` << 1 */ -+ { 0x00000000e986c148, 0x0000000075bda454 }, -+ /* x^3072 mod p(x)` << 1, x^3136 mod p(x)` << 1 */ -+ { 0x00000000cfb65894, 0x000000003dc0a1c4 }, -+ /* x^2048 mod p(x)` << 1, x^2112 mod p(x)` << 1 */ -+ { 0x0000000111cadee4, 0x00000000e9a5d8be }, -+ /* x^1024 mod p(x)` << 1, x^1088 mod p(x)` << 1 */ -+ { 0x0000000171fb63ce, 0x00000001609bc4b4 } -+#endif /* __LITTLE_ENDIAN__ */ -+ }; -+ -+/* Reduce final 1024-2048 bits to 64 bits, shifting 32 bits to include the trailing 32 bits of zeros */ -+ -+static const __vector unsigned long long vcrc_short_const[16] -+ __attribute__((aligned (16))) = { -+#ifdef __LITTLE_ENDIAN__ -+ /* x^1952 mod p(x) , x^1984 mod p(x) , x^2016 mod p(x) , x^2048 mod p(x) */ -+ { 0x5cf015c388e56f72, 0x7fec2963e5bf8048 }, -+ /* x^1824 mod p(x) , x^1856 mod p(x) , x^1888 mod p(x) , x^1920 mod p(x) */ -+ { 0x963a18920246e2e6, 0x38e888d4844752a9 }, -+ /* x^1696 mod p(x) , x^1728 mod p(x) , x^1760 mod p(x) , x^1792 mod p(x) */ -+ { 0x419a441956993a31, 0x42316c00730206ad }, -+ /* x^1568 mod p(x) , x^1600 mod p(x) , x^1632 mod p(x) , x^1664 mod p(x) */ -+ { 0x924752ba2b830011, 0x543d5c543e65ddf9 }, -+ /* x^1440 mod p(x) , x^1472 mod p(x) , x^1504 mod p(x) , x^1536 mod p(x) */ -+ { 0x55bd7f9518e4a304, 0x78e87aaf56767c92 }, -+ /* x^1312 mod p(x) , x^1344 mod p(x) , x^1376 mod p(x) , x^1408 mod p(x) */ -+ { 0x6d76739fe0553f1e, 0x8f68fcec1903da7f }, -+ /* x^1184 mod p(x) , x^1216 mod p(x) , x^1248 mod p(x) , x^1280 mod p(x) */ -+ { 0xc133722b1fe0b5c3, 0x3f4840246791d588 }, -+ /* x^1056 mod p(x) , x^1088 mod p(x) , x^1120 mod p(x) , x^1152 mod p(x) */ -+ { 0x64b67ee0e55ef1f3, 0x34c96751b04de25a }, -+ /* x^928 mod p(x) , x^960 mod p(x) , x^992 mod p(x) , x^1024 mod p(x) */ -+ { 0x069db049b8fdb1e7, 0x156c8e180b4a395b }, -+ /* x^800 mod p(x) , x^832 mod p(x) , x^864 mod p(x) , x^896 mod p(x) */ -+ { 0xa11bfaf3c9e90b9e, 0xe0b99ccbe661f7be }, -+ /* x^672 mod p(x) , x^704 mod p(x) , x^736 mod p(x) , x^768 mod p(x) */ -+ { 0x817cdc5119b29a35, 0x041d37768cd75659 }, -+ /* x^544 mod p(x) , x^576 mod p(x) , x^608 mod p(x) , x^640 mod p(x) */ -+ { 0x1ce9d94b36c41f1c, 0x3a0777818cfaa965 }, -+ /* x^416 mod p(x) , x^448 mod p(x) , x^480 mod p(x) , x^512 mod p(x) */ -+ { 0x4f256efcb82be955, 0x0e148e8252377a55 }, -+ /* x^288 mod p(x) , x^320 mod p(x) , x^352 mod p(x) , x^384 mod p(x) */ -+ { 0xec1631edb2dea967, 0x9c25531d19e65dde }, -+ /* x^160 mod p(x) , x^192 mod p(x) , x^224 mod p(x) , x^256 mod p(x) */ -+ { 0x5d27e147510ac59a, 0x790606ff9957c0a6 }, -+ /* x^32 mod p(x) , x^64 mod p(x) , x^96 mod p(x) , x^128 mod p(x) */ -+ { 0xa66805eb18b8ea18, 0x82f63b786ea2d55c } -+#else /* __LITTLE_ENDIAN__ */ -+ /* x^1952 mod p(x) , x^1984 mod p(x) , x^2016 mod p(x) , x^2048 mod p(x) */ -+ { 0x7fec2963e5bf8048, 0x5cf015c388e56f72 }, -+ /* x^1824 mod p(x) , x^1856 mod p(x) , x^1888 mod p(x) , x^1920 mod p(x) */ -+ { 0x38e888d4844752a9, 0x963a18920246e2e6 }, -+ /* x^1696 mod p(x) , x^1728 mod p(x) , x^1760 mod p(x) , x^1792 mod p(x) */ -+ { 0x42316c00730206ad, 0x419a441956993a31 }, -+ /* x^1568 mod p(x) , x^1600 mod p(x) , x^1632 mod p(x) , x^1664 mod p(x) */ -+ { 0x543d5c543e65ddf9, 0x924752ba2b830011 }, -+ /* x^1440 mod p(x) , x^1472 mod p(x) , x^1504 mod p(x) , x^1536 mod p(x) */ -+ { 0x78e87aaf56767c92, 0x55bd7f9518e4a304 }, -+ /* x^1312 mod p(x) , x^1344 mod p(x) , x^1376 mod p(x) , x^1408 mod p(x) */ -+ { 0x8f68fcec1903da7f, 0x6d76739fe0553f1e }, -+ /* x^1184 mod p(x) , x^1216 mod p(x) , x^1248 mod p(x) , x^1280 mod p(x) */ -+ { 0x3f4840246791d588, 0xc133722b1fe0b5c3 }, -+ /* x^1056 mod p(x) , x^1088 mod p(x) , x^1120 mod p(x) , x^1152 mod p(x) */ -+ { 0x34c96751b04de25a, 0x64b67ee0e55ef1f3 }, -+ /* x^928 mod p(x) , x^960 mod p(x) , x^992 mod p(x) , x^1024 mod p(x) */ -+ { 0x156c8e180b4a395b, 0x069db049b8fdb1e7 }, -+ /* x^800 mod p(x) , x^832 mod p(x) , x^864 mod p(x) , x^896 mod p(x) */ -+ { 0xe0b99ccbe661f7be, 0xa11bfaf3c9e90b9e }, -+ /* x^672 mod p(x) , x^704 mod p(x) , x^736 mod p(x) , x^768 mod p(x) */ -+ { 0x041d37768cd75659, 0x817cdc5119b29a35 }, -+ /* x^544 mod p(x) , x^576 mod p(x) , x^608 mod p(x) , x^640 mod p(x) */ -+ { 0x3a0777818cfaa965, 0x1ce9d94b36c41f1c }, -+ /* x^416 mod p(x) , x^448 mod p(x) , x^480 mod p(x) , x^512 mod p(x) */ -+ { 0x0e148e8252377a55, 0x4f256efcb82be955 }, -+ /* x^288 mod p(x) , x^320 mod p(x) , x^352 mod p(x) , x^384 mod p(x) */ -+ { 0x9c25531d19e65dde, 0xec1631edb2dea967 }, -+ /* x^160 mod p(x) , x^192 mod p(x) , x^224 mod p(x) , x^256 mod p(x) */ -+ { 0x790606ff9957c0a6, 0x5d27e147510ac59a }, -+ /* x^32 mod p(x) , x^64 mod p(x) , x^96 mod p(x) , x^128 mod p(x) */ -+ { 0x82f63b786ea2d55c, 0xa66805eb18b8ea18 } -+#endif /* __LITTLE_ENDIAN__ */ -+ }; -+ -+/* Barrett constants */ -+/* 33 bit reflected Barrett constant m - (4^32)/n */ -+ -+static const __vector unsigned long long v_Barrett_const[2] -+ __attribute__((aligned (16))) = { -+ /* x^64 div p(x) */ -+#ifdef __LITTLE_ENDIAN__ -+ { 0x00000000dea713f1, 0x0000000000000000 }, -+ { 0x0000000105ec76f1, 0x0000000000000000 } -+#else /* __LITTLE_ENDIAN__ */ -+ { 0x0000000000000000, 0x00000000dea713f1 }, -+ { 0x0000000000000000, 0x0000000105ec76f1 } -+#endif /* __LITTLE_ENDIAN__ */ -+ }; -+#endif /* POWER8_INTRINSICS */ -diff --git a/util/crc32c_test.cc b/util/crc32c_test.cc -index 3e4f7396e7..6fd7d34876 100644 ---- a/util/crc32c_test.cc -+++ b/util/crc32c_test.cc -@@ -108,6 +108,9 @@ TEST(CRC, StandardResults) { - EXPECT_EQ(~expected.crc32c, result); - } - -+ // NULL buffer -+ EXPECT_EQ((uint32_t) 0, Value(NULL, 0)); -+ - // Test 2: stitching two computations - for (auto expected : expectedResults) { - size_t partialLength = expected.length / 2; diff --git a/package/rocksdb/rocksdb.hash b/package/rocksdb/rocksdb.hash index d404488322..35c4a702b5 100644 --- a/package/rocksdb/rocksdb.hash +++ b/package/rocksdb/rocksdb.hash @@ -1,8 +1,8 @@ # Locally computed: -sha256 d573d2f15cdda883714f7e0bc87b814a8d4a53a82edde558f08f940e905541ee rocksdb-6.10.1.tar.gz +sha256 b86741983c5842716128efc2eecc1a2f3bc86ba5125cf3111fb58d26fb195ff0 rocksdb-6.13.3.tar.gz # Hash for license files: sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 COPYING sha256 cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30 LICENSE.Apache sha256 b568f1f37a5a1d37a3e981e7c8b7fc4856ca33b2ca0a45bc8e847aaaf7afe485 LICENSE.leveldb -sha256 054f4b04473dd7003fcd9e48b75c61fd257e50beb418c501099c651c0356a556 README.md +sha256 5791f5e0a4569112a97183581a8550e18db9fdf666479485fb98be10489ed5ca README.md diff --git a/package/rocksdb/rocksdb.mk b/package/rocksdb/rocksdb.mk index 2288c406a6..3b8583131c 100644 --- a/package/rocksdb/rocksdb.mk +++ b/package/rocksdb/rocksdb.mk @@ -4,13 +4,15 @@ # ################################################################################ -ROCKSDB_VERSION = 6.10.1 +ROCKSDB_VERSION = 6.13.3 ROCKSDB_SITE = $(call github,facebook,rocksdb,v$(ROCKSDB_VERSION)) ROCKSDB_LICENSE = GPL-2.0 or Apache-2.0 ROCKSDB_LICENSE_FILES = COPYING LICENSE.Apache LICENSE.leveldb README.md ROCKSDB_INSTALL_STAGING = YES -ROCKSDB_MAKE_OPTS = PORTABLE=1 +ROCKSDB_MAKE_OPTS = \ + PORTABLE=1 \ + PREFIX=/usr # Internal error, aborting at dwarf2cfi.c:2802 in connect_traces # https://gcc.gnu.org/bugzilla/show_bug.cgi?id=58864 @@ -67,6 +69,12 @@ else ROCKSDB_MAKE_OPTS += ROCKSDB_DISABLE_ZSTD=1 endif +ifeq ($(BR2_GCC_ENABLE_LTO),y) +ROCKSDB_MAKE_OPTS += USE_LTO=1 +else +ROCKSDB_MAKE_OPTS += USE_LTO=0 +endif + ifeq ($(BR2_STATIC_LIBS),y) ROCKSDB_BUILD_TARGETS += static_lib ROCKSDB_INSTALL_TARGETS += install-static @@ -88,12 +96,12 @@ endef define ROCKSDB_INSTALL_STAGING_CMDS $(TARGET_CONFIGURE_OPTS) $(MAKE) $(ROCKSDB_MAKE_OPTS) -C $(@D) \ - INSTALL_PATH=$(STAGING_DIR) $(ROCKSDB_INSTALL_TARGETS) + DESTDIR=$(STAGING_DIR) $(ROCKSDB_INSTALL_TARGETS) endef define ROCKSDB_INSTALL_TARGET_CMDS $(TARGET_CONFIGURE_OPTS) $(MAKE) $(ROCKSDB_MAKE_OPTS) -C $(@D) \ - INSTALL_PATH=$(TARGET_DIR) $(ROCKSDB_INSTALL_TARGETS) + DESTDIR=$(TARGET_DIR) $(ROCKSDB_INSTALL_TARGETS) endef $(eval $(generic-package)) From ead2afda13e5541a7d8e759f5cfec4ab38605dcc Mon Sep 17 00:00:00 2001 From: Bernd Kuhls Date: Fri, 6 Nov 2020 21:26:31 +0100 Subject: [PATCH 14/95] package/rhash: bump version to 1.4.0 Project switched license to BSD Zero Clause License: https://github.com/rhash/RHash/commit/007a303dacb1ad27fb64e2133dfb8b4e28428af2 Add RHASH_CONFIGURE_CMDS after upstream added a configure script: https://github.com/rhash/RHash/commit/cdaf43862229fb0f10d2b6b7448bcded2ef8edde Make target install-headers was renamed to install-lib-headers: https://github.com/rhash/RHash/commit/5184f57ed8c8a3d3ad66d789429bd8d1afc012ff Make target install-shared was removed, use build-install-binary instead: https://github.com/rhash/RHash/commit/cdaf43862229fb0f10d2b6b7448bcded2ef8edde Signed-off-by: Bernd Kuhls Signed-off-by: Thomas Petazzoni --- package/rhash/rhash.hash | 9 ++++----- package/rhash/rhash.mk | 36 +++++++++++++++++++++++------------- 2 files changed, 27 insertions(+), 18 deletions(-) diff --git a/package/rhash/rhash.hash b/package/rhash/rhash.hash index 9a29b988a6..29df4daa12 100644 --- a/package/rhash/rhash.hash +++ b/package/rhash/rhash.hash @@ -1,6 +1,5 @@ -# From https://sourceforge.net/projects/rhash/files/rhash/1.3.5/ -md5 f586644019c10c83c6b6835de4b99e74 rhash-1.3.5-src.tar.gz -sha1 990c9a0135afe48dee4ce1dbf83578e44735f302 rhash-1.3.5-src.tar.gz +# From https://sourceforge.net/projects/rhash/files/rhash/1.4.0/ +sha1 3db1e87a31c77ca2fa5507db7932ef92e9eb5148 rhash-1.4.0-src.tar.gz # Locally calculated -sha256 98e0688acae29e68c298ffbcdbb0f838864105f9b2bd8857980664435b1f1f2e rhash-1.3.5-src.tar.gz -sha256 8cf876d3406a2eed6c17ae804c8958bd78d3a0f63c30d6e2e789ab575e9fde40 COPYING +sha256 2ea39540f5c580da0e655f7b483c19e0d31506aed4202d88e8459fa7aeeb8861 rhash-1.4.0-src.tar.gz +sha256 953e55838353335148c90b5a38a4894292680b1d4c37228ffddddbf18ce54bf5 COPYING diff --git a/package/rhash/rhash.mk b/package/rhash/rhash.mk index 28fffe4528..55fb08ecea 100644 --- a/package/rhash/rhash.mk +++ b/package/rhash/rhash.mk @@ -4,26 +4,36 @@ # ################################################################################ -RHASH_VERSION = 1.3.5 +RHASH_VERSION = 1.4.0 RHASH_SOURCE = rhash-$(RHASH_VERSION)-src.tar.gz RHASH_SITE = https://sourceforge.net/projects/rhash/files/rhash/$(RHASH_VERSION) -RHASH_LICENSE = MIT +RHASH_LICENSE = 0BSD RHASH_LICENSE_FILES = COPYING RHASH_INSTALL_STAGING = YES RHASH_DEPENDENCIES = $(TARGET_NLS_DEPENDENCIES) RHASH_ADDLDFLAGS = $(TARGET_NLS_LIBS) -RHASH_ADDCFLAGS = $(if $(BR2_SYSTEM_ENABLE_NLS),-DUSE_GETTEXT) -ifeq ($(BR2_PACKAGE_OPENSSL)x$(BR2_STATIC_LIBS),yx) -RHASH_DEPENDENCIES += openssl -RHASH_ADDCFLAGS += -DOPENSSL_RUNTIME -rdynamic -RHASH_ADDLDFLAGS += -ldl +ifeq ($(BR2_SYSTEM_ENABLE_NLS),y) +RHASH_CONF_OPTS += --disable-gettext +else +RHASH_CONF_OPTS += --enable-gettext endif -RHASH_MAKE_OPTS = \ - ADDCFLAGS="$(RHASH_ADDCFLAGS)" \ - ADDLDFLAGS="$(RHASH_ADDLDFLAGS)" \ - PREFIX="/usr" +ifeq ($(BR2_PACKAGE_OPENSSL)x$(BR2_STATIC_LIBS),yx) +RHASH_CONF_OPTS += --enable-openssl +RHASH_DEPENDENCIES += openssl +else +RHASH_CONF_OPTS += --disable-openssl +endif + +define RHASH_CONFIGURE_CMDS + (cd $(@D); $(TARGET_CONFIGURE_OPTS) ./configure \ + --prefix=/usr \ + --cc=$(TARGET_CC) \ + --target=$(GNU_TARGET_NAME) \ + $(RHASH_CONF_OPTS) \ + ) +endef ifeq ($(BR2_SHARED_LIBS),y) RHASH_BUILD_TARGETS = lib-shared build-shared @@ -44,13 +54,13 @@ endef define RHASH_INSTALL_STAGING_CMDS $(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D)/librhash \ DESTDIR="$(STAGING_DIR)" $(RHASH_MAKE_OPTS) $(RHASH_INSTALL_TARGETS) \ - install-headers + install-lib-headers endef ifeq ($(BR2_PACKAGE_RHASH_BIN),y) define RHASH_INSTALL_TARGET_RHASH_BIN $(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) \ - DESTDIR="$(TARGET_DIR)" $(RHASH_MAKE_OPTS) install-shared + DESTDIR="$(TARGET_DIR)" $(RHASH_MAKE_OPTS) build-install-binary endef endif From 109df4deba86839704d902204d130714e32df0fa Mon Sep 17 00:00:00 2001 From: Jeff Zignego Date: Wed, 4 Nov 2020 12:12:21 -0600 Subject: [PATCH 15/95] package/qt5/qt5base: add -syslog option QT can default to outputting the logs to syslog instead of to the console with this compile time switch. That behavior can still be overridden by setting the environment variable QT_LOGGING_TO_CONSOLE to 1. Signed-off-by: Jeff Zignego Signed-off-by: Thomas Petazzoni --- package/qt5/qt5base/Config.in | 5 +++++ package/qt5/qt5base/qt5base.mk | 6 ++++++ 2 files changed, 11 insertions(+) diff --git a/package/qt5/qt5base/Config.in b/package/qt5/qt5base/Config.in index ce7230c728..ee7c757c60 100644 --- a/package/qt5/qt5base/Config.in +++ b/package/qt5/qt5base/Config.in @@ -263,6 +263,11 @@ config BR2_PACKAGE_QT5BASE_PNG endif +config BR2_PACKAGE_QT5BASE_SYSLOG + bool "syslog support" + help + Logs to the standard UNIX logging mechanism. + config BR2_PACKAGE_QT5BASE_DBUS bool "DBus module" depends on BR2_TOOLCHAIN_HAS_THREADS diff --git a/package/qt5/qt5base/qt5base.mk b/package/qt5/qt5base/qt5base.mk index ed308c1fa2..fa92625738 100644 --- a/package/qt5/qt5base/qt5base.mk +++ b/package/qt5/qt5base/qt5base.mk @@ -254,6 +254,12 @@ else QT5BASE_CONFIGURE_OPTS += -no-journald endif +ifeq ($(BR2_PACKAGE_QT5BASE_SYSLOG),y) +QT5BASE_CONIGURE_OPTS += -syslog +else +QT5BASE_CONFIGURE_OPTS += -no-syslog +endif + ifeq ($(BR2_PACKAGE_IMX_GPU_VIV),y) # use vivante backend QT5BASE_EGLFS_DEVICE = EGLFS_DEVICE_INTEGRATION = eglfs_viv From ba8f55d7c1c945178aa9f409edb374c6bdba48ac Mon Sep 17 00:00:00 2001 From: Fabrice Fontaine Date: Wed, 4 Nov 2020 18:39:04 +0100 Subject: [PATCH 16/95] package/openvpn: bump to version 2.5.0 - Disable unit-tests which are enabled by default if cmocka is found: https://github.com/OpenVPN/openvpn/commit/222e691739a111f5becbce39c4cceaa8fff3c284 - Drop --enable-iproute2 to enable netlink(3) support (and so drop IFCONFIG, IPROUTE and ROUTE environment variables and keep NETSTAT even if it is only used by tests/t_client.sh.in). netlink is much faster than calling ifconfig or route and also enables OpenVPN to run with less privileges. - Update indentation in hash file (two spaces) https://github.com/OpenVPN/openvpn/blob/release/2.5/Changes.rst Signed-off-by: Fabrice Fontaine Signed-off-by: Thomas Petazzoni --- package/openvpn/openvpn.hash | 4 ++-- package/openvpn/openvpn.mk | 9 +++------ 2 files changed, 5 insertions(+), 8 deletions(-) diff --git a/package/openvpn/openvpn.hash b/package/openvpn/openvpn.hash index b9b0a4d8d5..4e371fc87b 100644 --- a/package/openvpn/openvpn.hash +++ b/package/openvpn/openvpn.hash @@ -1,3 +1,3 @@ # Locally calculated after checking signature -sha256 641f3add8694b2ccc39fd4fd92554e4f089ad16a8db6d2b473ec284839a5ebe2 openvpn-2.4.9.tar.xz -sha256 1fcb78d7e478bb8a9408010bdc91b36e213b1facfad093df3f7ce7e28af19043 COPYRIGHT.GPL +sha256 029a426e44d656cb4e1189319c95fe6fc9864247724f5599d99df9c4c3478fbd openvpn-2.5.0.tar.xz +sha256 1fcb78d7e478bb8a9408010bdc91b36e213b1facfad093df3f7ce7e28af19043 COPYRIGHT.GPL diff --git a/package/openvpn/openvpn.mk b/package/openvpn/openvpn.mk index 1008c47b5a..3efc9e2354 100644 --- a/package/openvpn/openvpn.mk +++ b/package/openvpn/openvpn.mk @@ -4,19 +4,16 @@ # ################################################################################ -OPENVPN_VERSION = 2.4.9 +OPENVPN_VERSION = 2.5.0 OPENVPN_SOURCE = openvpn-$(OPENVPN_VERSION).tar.xz OPENVPN_SITE = http://swupdate.openvpn.net/community/releases OPENVPN_DEPENDENCIES = host-pkgconf OPENVPN_LICENSE = GPL-2.0 OPENVPN_LICENSE_FILES = COPYRIGHT.GPL OPENVPN_CONF_OPTS = \ - --enable-iproute2 \ + --disable-unit-tests \ $(if $(BR2_STATIC_LIBS),--disable-plugins) -OPENVPN_CONF_ENV = IFCONFIG=/sbin/ifconfig \ - NETSTAT=/bin/netstat \ - ROUTE=/sbin/route \ - IPROUTE=/sbin/ip +OPENVPN_CONF_ENV = NETSTAT=/bin/netstat ifeq ($(BR2_PACKAGE_OPENVPN_SMALL),y) OPENVPN_CONF_OPTS += \ From fbab0c22d9c367de8425e6c0ae5bdb900e30a681 Mon Sep 17 00:00:00 2001 From: Timo Ketola Date: Mon, 9 Nov 2020 14:56:45 +0200 Subject: [PATCH 17/95] package/fbgrab: bump to version 1.4 Add support for line length deviating from width Signed-off-by: Timo Ketola Reviewed-by: Peter Seiderer Signed-off-by: Peter Korsgaard --- package/fbgrab/fbgrab.hash | 2 +- package/fbgrab/fbgrab.mk | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package/fbgrab/fbgrab.hash b/package/fbgrab/fbgrab.hash index 414a93c99e..4d9a6b97d4 100644 --- a/package/fbgrab/fbgrab.hash +++ b/package/fbgrab/fbgrab.hash @@ -1,3 +1,3 @@ # Locally calculated -sha256 2bfdad379579c4ca1a910d0a8ac63183ef2c12a45e6b7d402fd045d83bb3faee fbgrab-1.3.3.tar.gz +sha256 62d7aa82138ac36db0921832f3b5267b4cffc0dc22c8701857ebcb997960a32e fbgrab-1.4.tar.gz sha256 fa5fc1d1eec39532ea517518eeefd7b6e3c14341a55e5880a0e2a49eee47a5b7 COPYING diff --git a/package/fbgrab/fbgrab.mk b/package/fbgrab/fbgrab.mk index 6d2f09bc21..1ae03ae43f 100644 --- a/package/fbgrab/fbgrab.mk +++ b/package/fbgrab/fbgrab.mk @@ -4,7 +4,7 @@ # ################################################################################ -FBGRAB_VERSION = 1.3.3 +FBGRAB_VERSION = 1.4 FBGRAB_SITE = $(call github,GunnarMonell,fbgrab,$(FBGRAB_VERSION)) FBGRAB_DEPENDENCIES = libpng FBGRAB_LICENSE = GPL-2.0 From 29ece7ead59e3621bcc4f85f07552c5ffe3df3b1 Mon Sep 17 00:00:00 2001 From: Angelo Compagnucci Date: Mon, 9 Nov 2020 17:38:29 +0100 Subject: [PATCH 18/95] package/grep: bump to version 3.6 Signed-off-by: Angelo Compagnucci Signed-off-by: Peter Korsgaard --- package/grep/grep.hash | 4 ++-- package/grep/grep.mk | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package/grep/grep.hash b/package/grep/grep.hash index fae3b73e80..9dfe2f2c23 100644 --- a/package/grep/grep.hash +++ b/package/grep/grep.hash @@ -1,5 +1,5 @@ # Locally calculated after checking signature -# http://ftp.gnu.org/gnu/grep/grep-3.5.tar.xz.sig +# http://ftp.gnu.org/gnu/grep/grep-3.6.tar.xz.sig # using key 155D3FC500C834486D1EEA677FD9FCCB000BEEEE -sha256 b82ac77707c2ab945520c8404c9fa9f890f7791a62cf2103cf6238acad87a44a grep-3.5.tar.xz +sha256 667e15e8afe189e93f9f21a7cd3a7b3f776202f417330b248c2ad4f997d9373e grep-3.6.tar.xz sha256 3972dc9744f6499f0f9b2dbf76696f2ae7ad8af9b23dde66d6af86c9dfb36986 COPYING diff --git a/package/grep/grep.mk b/package/grep/grep.mk index bdc22fa46c..198dc854e9 100644 --- a/package/grep/grep.mk +++ b/package/grep/grep.mk @@ -4,7 +4,7 @@ # ################################################################################ -GREP_VERSION = 3.5 +GREP_VERSION = 3.6 GREP_SITE = $(BR2_GNU_MIRROR)/grep GREP_SOURCE = grep-$(GREP_VERSION).tar.xz GREP_LICENSE = GPL-3.0+ From 3b615593b96b2d350fae4b3d4145c60715dfcc22 Mon Sep 17 00:00:00 2001 From: Fabrice Fontaine Date: Sun, 8 Nov 2020 18:23:47 +0100 Subject: [PATCH 19/95] package/postgresql: drop unrecognized variables pgac_cv_snprintf_long_long_int_modifier has been dropped since version 11.0 and https://github.com/postgres/postgres/commit/b929614f5e867c70721b3db31d3dec6cb35e1eb5 pgac_cv_snprintf_size_t_support has been dropped since version 12.0 and https://github.com/postgres/postgres/commit/96bf88d52711ad3a0a4cc2d1d9cb0e2acab85e63 Signed-off-by: Fabrice Fontaine Signed-off-by: Peter Korsgaard --- package/postgresql/postgresql.mk | 2 -- 1 file changed, 2 deletions(-) diff --git a/package/postgresql/postgresql.mk b/package/postgresql/postgresql.mk index 3630b5a385..d984235249 100644 --- a/package/postgresql/postgresql.mk +++ b/package/postgresql/postgresql.mk @@ -13,8 +13,6 @@ POSTGRESQL_INSTALL_STAGING = YES POSTGRESQL_CONFIG_SCRIPTS = pg_config POSTGRESQL_CONF_ENV = \ ac_cv_type_struct_sockaddr_in6=yes \ - pgac_cv_snprintf_long_long_int_modifier="ll" \ - pgac_cv_snprintf_size_t_support=yes \ LIBS=$(TARGET_NLS_LIBS) POSTGRESQL_CONF_OPTS = --disable-rpath POSTGRESQL_DEPENDENCIES = $(TARGET_NLS_DEPENDENCIES) From e7a68dd9cf175acdd9266fd4067af2d6b986d992 Mon Sep 17 00:00:00 2001 From: Angelo Compagnucci Date: Sun, 8 Nov 2020 16:41:48 +0100 Subject: [PATCH 20/95] package/python-pillow: bump to version 8.0.1 Bumping the package requires two fixes: * pillow looks for header files in paths returned by pkg-config. On buildroot, pkg-config returns nothing if PKG_CONFIG_ALLOW_SYSTEM_CFLAGS is disabled. * png is the default pillow image format and png format is working only if python zlib module is available. Signed-off-by: Angelo Compagnucci Tested-by: Adam Duskett Signed-off-by: Peter Korsgaard --- package/python-pillow/Config.in | 1 + package/python-pillow/python-pillow.hash | 3 +-- package/python-pillow/python-pillow.mk | 13 ++++--------- 3 files changed, 6 insertions(+), 11 deletions(-) diff --git a/package/python-pillow/Config.in b/package/python-pillow/Config.in index f98a4a9e5b..ae6d8c8346 100644 --- a/package/python-pillow/Config.in +++ b/package/python-pillow/Config.in @@ -2,6 +2,7 @@ config BR2_PACKAGE_PYTHON_PILLOW bool "python-pillow" depends on BR2_PACKAGE_PYTHON3 select BR2_PACKAGE_PYTHON3_PYEXPAT # runtime + select BR2_PACKAGE_PYTHON3_ZLIB help Pillow is the "friendly" PIL fork by Alex Clark and Contributors. PIL is the Python Imaging Library by Fredrik diff --git a/package/python-pillow/python-pillow.hash b/package/python-pillow/python-pillow.hash index f80b79fe5f..0849577f66 100644 --- a/package/python-pillow/python-pillow.hash +++ b/package/python-pillow/python-pillow.hash @@ -1,5 +1,4 @@ # md5, sha256 from https://pypi.org/project/Pillow/ -md5 f1f7592c51260e5080d3cd71781ea675 Pillow-7.1.2.tar.gz -sha256 97f9e7953a77d5a70f49b9a48da7776dc51e9b738151b22dacf101641594a626 Pillow-7.2.0.tar.gz +sha256 11c5c6e9b02c9dac08af04f093eb5a2f84857df70a7d4a6a6ad461aca803fb9e Pillow-8.0.1.tar.gz # Locally computed sha256 checksums sha256 37de42abe33a247e8f03d2313657a0f174a239a198f526add6544ff3e2643b81 LICENSE diff --git a/package/python-pillow/python-pillow.mk b/package/python-pillow/python-pillow.mk index 931dce53d2..60a0bb3e1b 100644 --- a/package/python-pillow/python-pillow.mk +++ b/package/python-pillow/python-pillow.mk @@ -4,8 +4,8 @@ # ################################################################################ -PYTHON_PILLOW_VERSION = 7.2.0 -PYTHON_PILLOW_SITE = https://files.pythonhosted.org/packages/3e/02/b09732ca4b14405ff159c470a612979acfc6e8645dc32f83ea0129709f7a +PYTHON_PILLOW_VERSION = 8.0.1 +PYTHON_PILLOW_SITE = https://files.pythonhosted.org/packages/2b/06/93bf1626ef36815010e971a5ce90f49919d84ab5d2fa310329f843a74bc1 PYTHON_PILLOW_SOURCE = Pillow-$(PYTHON_PILLOW_VERSION).tar.gz PYTHON_PILLOW_LICENSE = PIL Software License PYTHON_PILLOW_LICENSE_FILES = LICENSE @@ -47,15 +47,9 @@ else PYTHON_PILLOW_BUILD_OPTS += --disable-webp endif -ifeq ($(BR2_PACKAGE_ZLIB),y) -PYTHON_PILLOW_DEPENDENCIES += zlib -PYTHON_PILLOW_BUILD_OPTS += --enable-zlib -else -PYTHON_PILLOW_BUILD_OPTS += --disable-zlib -endif - define PYTHON_PILLOW_BUILD_CMDS cd $(PYTHON_PILLOW_BUILDDIR); \ + PKG_CONFIG_ALLOW_SYSTEM_CFLAGS=1 \ $(PYTHON_PILLOW_BASE_ENV) $(PYTHON_PILLOW_ENV) \ $(PYTHON_PILLOW_PYTHON_INTERPRETER) setup.py build_ext \ $(PYTHON_PILLOW_BASE_BUILD_OPTS) $(PYTHON_PILLOW_BUILD_OPTS) @@ -63,6 +57,7 @@ endef define PYTHON_PILLOW_INSTALL_TARGET_CMDS cd $(PYTHON_PILLOW_BUILDDIR); \ + PKG_CONFIG_ALLOW_SYSTEM_CFLAGS=1 \ $(PYTHON_PILLOW_BASE_ENV) $(PYTHON_PILLOW_ENV) \ $(PYTHON_PILLOW_PYTHON_INTERPRETER) setup.py build_ext \ $(PYTHON_PILLOW_BUILD_OPTS) install \ From 99facff76c1f15e769d2c26b8dca2ae92b03bb17 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=A1clav=20Kubern=C3=A1t?= Date: Wed, 11 Nov 2020 17:00:07 +0100 Subject: [PATCH 21/95] package/perf: if audit is enabled, depend on it MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Enables the `perf trace` command. Signed-off-by: Václav Kubernát Reviewed-by: Jan Kundrát Signed-off-by: Peter Korsgaard --- package/linux-tools/linux-tool-perf.mk.in | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/package/linux-tools/linux-tool-perf.mk.in b/package/linux-tools/linux-tool-perf.mk.in index 53b7c5b9cd..e54f019888 100644 --- a/package/linux-tools/linux-tool-perf.mk.in +++ b/package/linux-tools/linux-tool-perf.mk.in @@ -21,7 +21,6 @@ PERF_MAKE_FLAGS = \ DESTDIR=$(TARGET_DIR) \ prefix=/usr \ WERROR=0 \ - NO_LIBAUDIT=1 \ NO_GTK2=1 \ NO_LIBPERL=1 \ NO_LIBPYTHON=1 \ @@ -64,6 +63,12 @@ else PERF_MAKE_FLAGS += NO_NEWT=1 NO_SLANG=1 endif +ifeq ($(BR2_PACKAGE_AUDIT),y) +PERF_DEPENDENCIES += audit +else +PERF_MAKE_FLAGS += NO_LIBAUDIT=1 +endif + ifeq ($(BR2_PACKAGE_LIBUNWIND),y) PERF_DEPENDENCIES += libunwind else From 409b29288738bc377bff239d5aebf4d1cb15aefb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=A1clav=20Kubern=C3=A1t?= Date: Wed, 11 Nov 2020 17:00:08 +0100 Subject: [PATCH 22/95] package/perf: if zstd is enabled, depend on it MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Enables the "-z" flag. Signed-off-by: Václav Kubernát Reviewed-by: Jan Kundrát Signed-off-by: Peter Korsgaard --- package/linux-tools/linux-tool-perf.mk.in | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/package/linux-tools/linux-tool-perf.mk.in b/package/linux-tools/linux-tool-perf.mk.in index e54f019888..efa747cf8d 100644 --- a/package/linux-tools/linux-tool-perf.mk.in +++ b/package/linux-tools/linux-tool-perf.mk.in @@ -69,6 +69,10 @@ else PERF_MAKE_FLAGS += NO_LIBAUDIT=1 endif +ifeq ($(BR2_PACKAGE_ZSTD),y) +PERF_DEPENDENCIES += zstd +endif + ifeq ($(BR2_PACKAGE_LIBUNWIND),y) PERF_DEPENDENCIES += libunwind else From 75750b45ef7005f49ac6b0433ec5c42c7c28a8bf Mon Sep 17 00:00:00 2001 From: Fabrice Fontaine Date: Thu, 12 Nov 2020 23:16:30 +0100 Subject: [PATCH 23/95] package/sshfs: bump to version 3.7.1 Drop patch (already in version) https://github.com/libfuse/sshfs/blob/sshfs-3.7.1/ChangeLog.rst Signed-off-by: Fabrice Fontaine Signed-off-by: Peter Korsgaard --- .../0001-sshfs.c-fix-build-with-gcc-4.8.patch | 47 ------------------- package/sshfs/sshfs.hash | 2 +- package/sshfs/sshfs.mk | 2 +- 3 files changed, 2 insertions(+), 49 deletions(-) delete mode 100644 package/sshfs/0001-sshfs.c-fix-build-with-gcc-4.8.patch diff --git a/package/sshfs/0001-sshfs.c-fix-build-with-gcc-4.8.patch b/package/sshfs/0001-sshfs.c-fix-build-with-gcc-4.8.patch deleted file mode 100644 index 312985d8dc..0000000000 --- a/package/sshfs/0001-sshfs.c-fix-build-with-gcc-4.8.patch +++ /dev/null @@ -1,47 +0,0 @@ -From 35ff9ed71b89f34e5462de1ee63f88edf98aeb69 Mon Sep 17 00:00:00 2001 -From: Fabrice Fontaine -Date: Sat, 31 Oct 2020 21:08:53 +0100 -Subject: [PATCH] sshfs.c: fix build with gcc 4.8 - -Fix the following build failure with gcc 4.8: - -../sshfs.c:1092:2: error: 'for' loop initial declarations are only allowed in C99 mode - for (int i = 0; i < sshfs.max_conns; i++) { - ^ - -This build failure has been added with -https://github.com/libfuse/sshfs/commit/8822b60d9dbd9907065e7999f616b11ddce6d584 - -Fixes: - - http://autobuild.buildroot.org/results/2dbdc579c55543175716d5f739cabe2ad0864ed6 - -Signed-off-by: Fabrice Fontaine -[Upstream status: https://github.com/libfuse/sshfs/pull/233] ---- - sshfs.c | 3 ++- - 1 file changed, 2 insertions(+), 1 deletion(-) - -diff --git a/sshfs.c b/sshfs.c -index d5f2ff7..2c2db42 100644 ---- a/sshfs.c -+++ b/sshfs.c -@@ -1068,6 +1068,7 @@ static struct conn* get_conn(const struct sshfs_file *sf, - const char *path) - { - struct conntab_entry *ce; -+ int i; - - if (sshfs.max_conns == 1) - return &sshfs.conns[0]; -@@ -1089,7 +1090,7 @@ static struct conn* get_conn(const struct sshfs_file *sf, - - int best_index = 0; - uint64_t best_score = ~0ULL; /* smaller is better */ -- for (int i = 0; i < sshfs.max_conns; i++) { -+ for (i = 0; i < sshfs.max_conns; i++) { - uint64_t score = ((uint64_t) sshfs.conns[i].req_count << 43) + - ((uint64_t) sshfs.conns[i].dir_count << 22) + - ((uint64_t) sshfs.conns[i].file_count << 1) + --- -2.28.0 - diff --git a/package/sshfs/sshfs.hash b/package/sshfs/sshfs.hash index b8488013a7..106f06f09f 100644 --- a/package/sshfs/sshfs.hash +++ b/package/sshfs/sshfs.hash @@ -1,3 +1,3 @@ # Locally calculated after checking pgp signature -sha256 6e7e86831f3066b356e7f16e22f1b8a8f177fda05146f6a5eb821c2fd0541c34 sshfs-3.7.0.tar.xz +sha256 fe5d3436d61b46974889e0c4515899c21a9d67851e3793c209989f72353d7750 sshfs-3.7.1.tar.xz sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 COPYING diff --git a/package/sshfs/sshfs.mk b/package/sshfs/sshfs.mk index 70e7feab1d..6759f6ab3b 100644 --- a/package/sshfs/sshfs.mk +++ b/package/sshfs/sshfs.mk @@ -4,7 +4,7 @@ # ################################################################################ -SSHFS_VERSION = 3.7.0 +SSHFS_VERSION = 3.7.1 SSHFS_SOURCE = sshfs-$(SSHFS_VERSION).tar.xz SSHFS_SITE = https://github.com/libfuse/sshfs/releases/download/sshfs-$(SSHFS_VERSION) SSHFS_LICENSE = GPL-2.0 From f3ef4d26dcab297e3480ba129c26b5e899643a64 Mon Sep 17 00:00:00 2001 From: Fabrice Fontaine Date: Thu, 12 Nov 2020 20:31:28 +0100 Subject: [PATCH 24/95] package/python-yatl: bump to version 20200711.1 https://github.com/web2py/yatl/compare/v20200430.1...master Signed-off-by: Fabrice Fontaine Signed-off-by: Peter Korsgaard --- package/python-yatl/python-yatl.hash | 4 ++-- package/python-yatl/python-yatl.mk | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/package/python-yatl/python-yatl.hash b/package/python-yatl/python-yatl.hash index 9238e71b22..534d74b654 100644 --- a/package/python-yatl/python-yatl.hash +++ b/package/python-yatl/python-yatl.hash @@ -1,3 +1,3 @@ # md5, sha256 from https://pypi.org/pypi/yatl/json -md5 930be78b3d6e33f3f920619d673c345a yatl-20200430.1.tar.gz -sha256 5220390b27f010046642c00aded9ffc694e383a3d7a47985c8809d8482c8478a yatl-20200430.1.tar.gz +md5 3368146e56b35ba5569ff64054c2a3fd yatl-20200711.1.tar.gz +sha256 d37b90e7679d2d2873ac634e66adfcd0cd7e4c34438e76a3192cf984faba2595 yatl-20200711.1.tar.gz diff --git a/package/python-yatl/python-yatl.mk b/package/python-yatl/python-yatl.mk index fca39bb5ef..6df5fcd83e 100644 --- a/package/python-yatl/python-yatl.mk +++ b/package/python-yatl/python-yatl.mk @@ -4,9 +4,9 @@ # ################################################################################ -PYTHON_YATL_VERSION = 20200430.1 +PYTHON_YATL_VERSION = 20200711.1 PYTHON_YATL_SOURCE = yatl-$(PYTHON_YATL_VERSION).tar.gz -PYTHON_YATL_SITE = https://files.pythonhosted.org/packages/7f/bd/aa36c1a1d876757e3fa365e6c455097ebd3f2e8e7ded23e75901ff9c9ecf +PYTHON_YATL_SITE = https://files.pythonhosted.org/packages/b4/f5/b6020f8ccb3e156fbe0ed7e4a35fbdce4d6a7ef6a9ab0c54cb8880fb7c04 PYTHON_YATL_SETUP_TYPE = setuptools PYTHON_YATL_LICENSE = BSD-3-Clause From e39b019becdf9ab54069200b44a6d8fec6c8d7e3 Mon Sep 17 00:00:00 2001 From: Fabrice Fontaine Date: Thu, 12 Nov 2020 22:03:00 +0100 Subject: [PATCH 25/95] package/python-thrift: bump to version 0.13.0 Updated through scanpypi https://github.com/apache/thrift/blob/v0.13.0/CHANGES.md Signed-off-by: Fabrice Fontaine Signed-off-by: Peter Korsgaard --- package/python-thrift/Config.in | 5 ++--- package/python-thrift/python-thrift.hash | 6 +++--- package/python-thrift/python-thrift.mk | 8 ++++---- 3 files changed, 9 insertions(+), 10 deletions(-) diff --git a/package/python-thrift/Config.in b/package/python-thrift/Config.in index 1ecfda357b..71fef5be81 100644 --- a/package/python-thrift/Config.in +++ b/package/python-thrift/Config.in @@ -2,7 +2,6 @@ config BR2_PACKAGE_PYTHON_THRIFT bool "python-thrift" select BR2_PACKAGE_PYTHON_SIX # runtime help - python-thrift is a Python bindings for the Apache Thrift RPC - system. + Python bindings for the Apache Thrift RPC system. - http://thrift.apache.org/ + https://thrift.apache.org diff --git a/package/python-thrift/python-thrift.hash b/package/python-thrift/python-thrift.hash index 56d99f2a54..1d1d628908 100644 --- a/package/python-thrift/python-thrift.hash +++ b/package/python-thrift/python-thrift.hash @@ -1,5 +1,5 @@ # md5, sha256 from https://pypi.org/pypi/thrift/json -md5 36165d5c80e6b101dbe9fcf7ef524d51 thrift-0.11.0.tar.gz -sha256 7d59ac4fdcb2c58037ebd4a9da5f9a49e3e034bf75b3f26d9fe48ba3d8806e6b thrift-0.11.0.tar.gz +md5 c3bc8d9a910d2c9ce26f2ad1f7c96762 thrift-0.13.0.tar.gz +sha256 9af1c86bf73433afc6010ed376a6c6aca2b54099cc0d61895f640870a9ae7d89 thrift-0.13.0.tar.gz # Locally computed sha256 checksums -sha256 6a62a493bd7c741378619ff61c56282d64f3ad033dc8154b67c808311960bb02 setup.py +sha256 c13578ae9d0529d0252e1c7375b917bacf58723dce1fcd40c7ed59183401b468 LICENSE diff --git a/package/python-thrift/python-thrift.mk b/package/python-thrift/python-thrift.mk index 21f2355f63..3a908ca91c 100644 --- a/package/python-thrift/python-thrift.mk +++ b/package/python-thrift/python-thrift.mk @@ -4,11 +4,11 @@ # ################################################################################ -PYTHON_THRIFT_VERSION = 0.11.0 +PYTHON_THRIFT_VERSION = 0.13.0 PYTHON_THRIFT_SOURCE = thrift-$(PYTHON_THRIFT_VERSION).tar.gz -PYTHON_THRIFT_SITE = https://files.pythonhosted.org/packages/c6/b4/510617906f8e0c5660e7d96fbc5585113f83ad547a3989b80297ac72a74c -PYTHON_THRIFT_LICENSE = Apache-2.0 -PYTHON_THRIFT_LICENSE_FILES = setup.py +PYTHON_THRIFT_SITE = https://files.pythonhosted.org/packages/97/1e/3284d19d7be99305eda145b8aa46b0c33244e4a496ec66440dac19f8274d PYTHON_THRIFT_SETUP_TYPE = setuptools +PYTHON_THRIFT_LICENSE = Apache-2.0 +PYTHON_THRIFT_LICENSE_FILES = LICENSE $(eval $(python-package)) From 7f156471ab1a18676d7ec24c68173a66e5553df5 Mon Sep 17 00:00:00 2001 From: Fabrice Fontaine Date: Fri, 13 Nov 2020 07:35:35 +0100 Subject: [PATCH 26/95] package/quota: bump to version 4.06 - Drop patch (already in version) and so autoreconf - Update hash of COPYING (mailing address updated: https://sourceforge.net/p/linuxquota/code/ci/b6bb53e1124e6b813fe4de5682b9d9a9f8a1fba8) - Update indentation in hash file (two spaces) https://sourceforge.net/p/linuxquota/code/ci/v4.06/tree/Changelog Signed-off-by: Fabrice Fontaine Signed-off-by: Peter Korsgaard --- ...-configure.ac-add-disable-pie-option.patch | 55 ------------------- ...-realloc-3-instead-of-reallocarray-3.patch | 34 ++++++++++++ package/quota/quota.hash | 10 ++-- package/quota/quota.mk | 5 +- 4 files changed, 40 insertions(+), 64 deletions(-) delete mode 100644 package/quota/0001-configure.ac-add-disable-pie-option.patch create mode 100644 package/quota/0001-quota-Use-realloc-3-instead-of-reallocarray-3.patch diff --git a/package/quota/0001-configure.ac-add-disable-pie-option.patch b/package/quota/0001-configure.ac-add-disable-pie-option.patch deleted file mode 100644 index c3b57fea66..0000000000 --- a/package/quota/0001-configure.ac-add-disable-pie-option.patch +++ /dev/null @@ -1,55 +0,0 @@ -From cb20e19028a8996de9305502ba5e5da3bd1181bf Mon Sep 17 00:00:00 2001 -From: Fabrice Fontaine -Date: Tue, 2 Apr 2019 09:19:36 +0200 -Subject: [PATCH] configure.ac: add --disable-pie option - -PIE is not necessarily supported on all architectures, so add an option -to allow the user to disable the PIE. - -This fixes the build on the m68k architecture: - - http://autobuild.buildroot.org/results/25985bbc160e3d62b23c4c613b2a81f3711621e3 - -Signed-off-by: Fabrice Fontaine -[Upstream status: merged] ---- - Makefile.am | 2 +- - configure.ac | 12 ++++++++++++ - 2 files changed, 13 insertions(+), 1 deletion(-) - -diff --git a/Makefile.am b/Makefile.am -index 638198d..332bd67 100644 ---- a/Makefile.am -+++ b/Makefile.am -@@ -1,5 +1,5 @@ - ACLOCAL_AMFLAGS = -I m4 --AM_LDFLAGS = -pie -+AM_LDFLAGS = @PIE_LDFLAGS@ - - doc_DATA = \ - README.mailserver \ -diff --git a/configure.ac b/configure.ac -index 095ff86..5af4235 100644 ---- a/configure.ac -+++ b/configure.ac -@@ -55,6 +55,18 @@ AS_IF([test "x${prefix}" = "xNONE"], [ - AC_DEFINE_UNQUOTED(PACKAGE_LOCALE_DIR, "${prefix}/share/locale", [Locale-specific data directory]) - ]) - -+# ================ -+# Check for ldflags -+# ================ -+AC_ARG_ENABLE([pie], -+ [AS_HELP_STRING([--disable-pie], [Disable Position Independent Executable])], -+ [enable_pie="$enableval"], -+ [enable_pie=yes] -+) -+AS_IF([test x"$enable_pie" != "xno"], [ -+ PIE_LDFLAGS="-pie" -+]) -+AC_SUBST([PIE_LDFLAGS]) - - # ================ - # Check for cflags --- -2.14.1 - diff --git a/package/quota/0001-quota-Use-realloc-3-instead-of-reallocarray-3.patch b/package/quota/0001-quota-Use-realloc-3-instead-of-reallocarray-3.patch new file mode 100644 index 0000000000..093d7cc821 --- /dev/null +++ b/package/quota/0001-quota-Use-realloc-3-instead-of-reallocarray-3.patch @@ -0,0 +1,34 @@ +From 02b222a335527f1031cc9495d8c5ebc1bc5b1d4e Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Wed, 11 Nov 2020 15:00:47 +0100 +Subject: [PATCH] quota: Use realloc(3) instead of reallocarray(3) + +reallocarray(3) has been added to glibc relatively recently (version +2.26, from 2017) and apparently not all users run new enough glibc. Just +use realloc(3) for now since in this case there's no real risk of +overflow. + +Signed-off-by: Fabrice Fontaine +Signed-off-by: Jan Kara +[Retrieved from: +https://sourceforge.net/p/linuxquota/code/ci/02b222a335527f1031cc9495d8c5ebc1bc5b1d4e] +--- + quota.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/quota.c b/quota.c +index a6ed61f..a60de12 100644 +--- a/quota.c ++++ b/quota.c +@@ -385,7 +385,7 @@ int main(int argc, char **argv) + break; + case 259: + fscount++; +- fsnames = reallocarray(fsnames, fscount, sizeof(char *)); ++ fsnames = realloc(fsnames, fscount * sizeof(char *)); + if (!fsnames) + die(1, _("Not enough memory for filesystem names")); + fsnames[fscount - 1] = optarg; +-- +2.28.0 + diff --git a/package/quota/quota.hash b/package/quota/quota.hash index d9f42e51c7..354a3e2de4 100644 --- a/package/quota/quota.hash +++ b/package/quota/quota.hash @@ -1,7 +1,7 @@ -# From http://sourceforge.net/projects/linuxquota/files/quota-tools/4.05/ (click on info button) -md5 1c1dbd2cd3d680ccac661239b067e147 quota-4.05.tar.gz -sha1 d23711f3b204e0a86b8378c32545c95fb149168d quota-4.05.tar.gz +# From http://sourceforge.net/projects/linuxquota/files/quota-tools/4.06/ (click on info button) +md5 aef94648438832b684978d46fdf75110 quota-4.06.tar.gz +sha1 98288699cc14da42f762301c2b6731ec7c777681 quota-4.06.tar.gz # Locally calculated -sha256 ef3b5b5d1014ed1344b46c1826145e20cbef8db967b522403c9a060761cf7ab9 quota-4.05.tar.gz -sha256 35b2d9797b83bce16076da9c3273f264f50b8d02f492ee32cd4c51ba6897bceb COPYING +sha256 2f3e03039f378d4f0d97acdb49daf581dcaad64d2e1ddf129495fd579fbd268d quota-4.06.tar.gz +sha256 32a5fd41e7a257f7f0373988ea8d45cebdbf376060703c242c11c000751b1203 COPYING diff --git a/package/quota/quota.mk b/package/quota/quota.mk index f4bf9e5c58..18502da9aa 100644 --- a/package/quota/quota.mk +++ b/package/quota/quota.mk @@ -4,14 +4,11 @@ # ################################################################################ -QUOTA_VERSION = 4.05 +QUOTA_VERSION = 4.06 QUOTA_SITE = http://downloads.sourceforge.net/project/linuxquota/quota-tools/$(QUOTA_VERSION) QUOTA_DEPENDENCIES = $(TARGET_NLS_DEPENDENCIES) host-nfs-utils QUOTA_LICENSE = GPL-2.0+ QUOTA_LICENSE_FILES = COPYING -# We're patching configure.ac -QUOTA_AUTORECONF = YES -QUOTA_GETTEXTIZE = YES QUOTA_CONF_ENV = LIBS="$(TARGET_NLS_LIBS)" QUOTA_CONF_OPTS = --disable-pie From 2310d3588cd75f9f503e4e219da2b85762ed3247 Mon Sep 17 00:00:00 2001 From: Baruch Siach Date: Thu, 12 Nov 2020 20:34:45 +0200 Subject: [PATCH 27/95] package/luajit: drop static build handling Static build of luajit is disabled since commit b2e8f28efac ("package/luajit: disable for static build"). Remove the related BUILDMODE handling as well. Cc: Francois Perrad Signed-off-by: Baruch Siach Signed-off-by: Peter Korsgaard --- package/luajit/luajit.mk | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/package/luajit/luajit.mk b/package/luajit/luajit.mk index 68e6af4f5e..defa21dd3f 100644 --- a/package/luajit/luajit.mk +++ b/package/luajit/luajit.mk @@ -17,12 +17,6 @@ ifeq ($(BR2_PACKAGE_LUAJIT_COMPAT52),y) LUAJIT_XCFLAGS += -DLUAJIT_ENABLE_LUA52COMPAT endif -ifeq ($(BR2_STATIC_LIBS),y) -LUAJIT_BUILDMODE = static -else -LUAJIT_BUILDMODE = dynamic -endif - # The luajit build procedure requires the host compiler to have the # same bitness as the target compiler. Therefore, on a x86 build # machine, we can't build luajit for x86_64, which is checked in @@ -50,7 +44,7 @@ define LUAJIT_BUILD_CMDS HOST_CC="$(LUAJIT_HOST_CC)" \ HOST_CFLAGS="$(HOST_CFLAGS)" \ HOST_LDFLAGS="$(HOST_LDFLAGS)" \ - BUILDMODE=$(LUAJIT_BUILDMODE) \ + BUILDMODE=dynamic \ XCFLAGS=$(LUAJIT_XCFLAGS) \ -C $(@D) amalg endef From aaa21d40b3ee7c74fa19f9c6d74d8a8198e66341 Mon Sep 17 00:00:00 2001 From: Bernd Kuhls Date: Sat, 14 Nov 2020 18:14:29 +0100 Subject: [PATCH 28/95] package/samba4: bump version to 4.11.16 Release notes: https://www.samba.org/samba/history/samba-4.11.16.html Signed-off-by: Bernd Kuhls Signed-off-by: Peter Korsgaard --- package/samba4/samba4.hash | 4 ++-- package/samba4/samba4.mk | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package/samba4/samba4.hash b/package/samba4/samba4.hash index 0ce22a8526..45de534ecd 100644 --- a/package/samba4/samba4.hash +++ b/package/samba4/samba4.hash @@ -1,4 +1,4 @@ # Locally calculated after checking pgp signature -# https://download.samba.org/pub/samba/stable/samba-4.11.15.tar.asc -sha256 922d461bb2e6e490cf7708b297a9312ea6cda1edc7bdfea4ee665f45ff99038a samba-4.11.15.tar.gz +# https://download.samba.org/pub/samba/stable/samba-4.11.16.tar.asc +sha256 5a7b1647f2e629b9abfbd880bd01799060663dc0494f8c4d10caa353b5c6e28b samba-4.11.16.tar.gz sha256 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903 COPYING diff --git a/package/samba4/samba4.mk b/package/samba4/samba4.mk index 51ee2c9c39..5874ef32ad 100644 --- a/package/samba4/samba4.mk +++ b/package/samba4/samba4.mk @@ -4,7 +4,7 @@ # ################################################################################ -SAMBA4_VERSION = 4.11.15 +SAMBA4_VERSION = 4.11.16 SAMBA4_SITE = https://download.samba.org/pub/samba/stable SAMBA4_SOURCE = samba-$(SAMBA4_VERSION).tar.gz SAMBA4_INSTALL_STAGING = YES From aa5a363a343bf2e78071fbcd9550813ab9c27958 Mon Sep 17 00:00:00 2001 From: Fabrice Fontaine Date: Tue, 17 Nov 2020 08:04:51 +0100 Subject: [PATCH 29/95] package/bctoolbox: drop GIT_EXECUTABLE GIT_EXECUTABLE is not needed since version 4.3.0 and https://github.com/BelledonneCommunications/bctoolbox/commit/a92ea8672fc0a736c9018de31588aeeeef4a4157 https://github.com/BelledonneCommunications/bctoolbox/commit/6c2e02ffb16f999e270c5de29bbf4dd13b9e986d CMake Warning: Manually-specified variables were not used by the project: BUILD_DOC BUILD_DOCS BUILD_EXAMPLE BUILD_EXAMPLES BUILD_TEST BUILD_TESTING BUILD_TESTS GIT_EXECUTABLE Signed-off-by: Fabrice Fontaine Signed-off-by: Peter Korsgaard --- package/bctoolbox/bctoolbox.mk | 1 - 1 file changed, 1 deletion(-) diff --git a/package/bctoolbox/bctoolbox.mk b/package/bctoolbox/bctoolbox.mk index f9d740820d..230394970c 100644 --- a/package/bctoolbox/bctoolbox.mk +++ b/package/bctoolbox/bctoolbox.mk @@ -17,7 +17,6 @@ BCTOOLBOX_CONF_OPTS = \ -DENABLE_STRICT=OFF \ -DENABLE_TESTS_COMPONENT=OFF \ -DENABLE_TESTS=OFF \ - -DGIT_EXECUTABLE=OFF \ -DCMAKE_SKIP_RPATH=ON ifeq ($(BR2_PACKAGE_LIBICONV),y) From 1931f9abf9821140bc9e2685fbf10861234b633a Mon Sep 17 00:00:00 2001 From: Asaf Kahlon Date: Sun, 15 Nov 2020 21:56:53 +0200 Subject: [PATCH 30/95] package/{libuv, uvw}: bump to versions 1.40.0, 2.8.0_libuv_v1.40 Signed-off-by: Asaf Kahlon Signed-off-by: Peter Korsgaard --- package/libuv/libuv.hash | 2 +- package/libuv/libuv.mk | 2 +- package/uvw/uvw.hash | 2 +- package/uvw/uvw.mk | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/package/libuv/libuv.hash b/package/libuv/libuv.hash index 2aba18490e..c682affae7 100644 --- a/package/libuv/libuv.hash +++ b/package/libuv/libuv.hash @@ -1,3 +1,3 @@ # Locally calculated -sha256 2cd9a757fe6c512440933e2bdcab21143d4aa6249b2541399908ce038b756c9d libuv-1.38.0.tar.gz +sha256 70fe1c9ba4f2c509e8166c0ca2351000237da573bb6c82092339207a9715ba6b libuv-1.40.0.tar.gz sha256 6d20216ae022fbeed23916f48508fd807ece3d8464992330643b0e64e5c0c24b LICENSE diff --git a/package/libuv/libuv.mk b/package/libuv/libuv.mk index 493168cd99..5876ab8935 100644 --- a/package/libuv/libuv.mk +++ b/package/libuv/libuv.mk @@ -6,7 +6,7 @@ # When bumping libuv, check if a new version of uvw is available # and bump it too. -LIBUV_VERSION = 1.38.0 +LIBUV_VERSION = 1.40.0 LIBUV_SITE = $(call github,libuv,libuv,v$(LIBUV_VERSION)) LIBUV_DEPENDENCIES = host-pkgconf LIBUV_INSTALL_STAGING = YES diff --git a/package/uvw/uvw.hash b/package/uvw/uvw.hash index f842345ea6..ba8c7b893d 100644 --- a/package/uvw/uvw.hash +++ b/package/uvw/uvw.hash @@ -1,3 +1,3 @@ # Locally calculated -sha256 2695276bb4b154174ac0a6401bde5c0768bca99a43c9a469af67526f7e2e9410 uvw-2.6.0_libuv-v1.38.tar.gz +sha256 aa5769f5b9ba50de72ab02a8f8acf298b4aa9ceaef07992418a13a0fa119ce7d uvw-2.8.0_libuv_v1.40.tar.gz sha256 755b2f245af22830c15b60c54469c0d92fbed42009b0d0074cec4b3959905757 LICENSE diff --git a/package/uvw/uvw.mk b/package/uvw/uvw.mk index dd9b6b27dc..39952caa11 100644 --- a/package/uvw/uvw.mk +++ b/package/uvw/uvw.mk @@ -4,7 +4,7 @@ # ################################################################################ -UVW_VERSION = 2.6.0_libuv-v1.38 +UVW_VERSION = 2.8.0_libuv_v1.40 UVW_SITE = $(call github,skypjack,uvw,v$(UVW_VERSION)) UVW_INSTALL_STAGING = YES UVW_INSTALL_TARGET = NO From 74486e3ce1747cb7cec948a5c8985157b2bf49ec Mon Sep 17 00:00:00 2001 From: Asaf Kahlon Date: Sun, 15 Nov 2020 21:56:54 +0200 Subject: [PATCH 31/95] package/spdlog: bump to version 1.8.1 Signed-off-by: Asaf Kahlon Signed-off-by: Peter Korsgaard --- package/spdlog/spdlog.hash | 2 +- package/spdlog/spdlog.mk | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package/spdlog/spdlog.hash b/package/spdlog/spdlog.hash index 68dd7f1978..abb8bf9bdd 100644 --- a/package/spdlog/spdlog.hash +++ b/package/spdlog/spdlog.hash @@ -1,3 +1,3 @@ # Locally calculated -sha256 1e68e9b40cf63bb022a4b18cdc1c9d88eb5d97e4fd64fa981950a9cacf57a4bf spdlog-1.8.0.tar.gz +sha256 5197b3147cfcfaa67dd564db7b878e4a4b3d9f3443801722b3915cdeced656cb spdlog-1.8.1.tar.gz sha256 a7241a379cb98d37788f82c2fc2e484c3ae85dae881fd3406f0637644850926f LICENSE diff --git a/package/spdlog/spdlog.mk b/package/spdlog/spdlog.mk index 8d8c3888bf..3c745f60ad 100644 --- a/package/spdlog/spdlog.mk +++ b/package/spdlog/spdlog.mk @@ -4,7 +4,7 @@ # ################################################################################ -SPDLOG_VERSION = 1.8.0 +SPDLOG_VERSION = 1.8.1 SPDLOG_SITE = $(call github,gabime,spdlog,v$(SPDLOG_VERSION)) SPDLOG_LICENSE = MIT SPDLOG_LICENSE_FILES = LICENSE From ee64a2eaad38a0d8564c27acdeac0ea29d2dabd3 Mon Sep 17 00:00:00 2001 From: Mircea GLIGA Date: Tue, 17 Nov 2020 10:37:48 +0200 Subject: [PATCH 32/95] package/mbuffer: bump to version 20200929 Signed-off-by: Mircea GLIGA Signed-off-by: Peter Korsgaard --- package/mbuffer/mbuffer.hash | 4 ++-- package/mbuffer/mbuffer.mk | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package/mbuffer/mbuffer.hash b/package/mbuffer/mbuffer.hash index 688ada6900..73a8d3cf44 100644 --- a/package/mbuffer/mbuffer.hash +++ b/package/mbuffer/mbuffer.hash @@ -1,8 +1,8 @@ # From http://www.maier-komor.de/mbuffer.html -md5 df39047654456f260665d66711cabcc5 mbuffer-20200505.tgz +md5 e2b4f3b0d0944c08d52c167841bde3c0 mbuffer-20200929.tgz # Locally computed after checking signature upstream -sha256 cc046183149e51814c23b9f83fd748cc1625a88ee128651ea500aa7bd5f01f0b mbuffer-20200505.tgz +sha256 53a6e3c14e9a049f18a09840653dd84f18e7ec7560f2dcf2b61c0ab5f0ead4e8 mbuffer-20200929.tgz # Hash for license file sha256 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903 LICENSE diff --git a/package/mbuffer/mbuffer.mk b/package/mbuffer/mbuffer.mk index 6aaf29c9ca..90a72ce657 100644 --- a/package/mbuffer/mbuffer.mk +++ b/package/mbuffer/mbuffer.mk @@ -4,7 +4,7 @@ # ################################################################################ -MBUFFER_VERSION = 20200505 +MBUFFER_VERSION = 20200929 MBUFFER_SOURCE = mbuffer-$(MBUFFER_VERSION).tgz MBUFFER_SITE = http://www.maier-komor.de/software/mbuffer MBUFFER_LICENSE = GPL-3.0+ From 548964cd99c1691f1eec029b26f5e5e3cb51f6b3 Mon Sep 17 00:00:00 2001 From: Michael Nosthoff Date: Tue, 17 Nov 2020 17:26:46 +0100 Subject: [PATCH 33/95] package/{protobuf, python-protobuf}: bump to version 3.14.0 python-protobuf: drop patch 0001 as it is applied upstream Signed-off-by: Michael Nosthoff Signed-off-by: Peter Korsgaard --- package/protobuf/protobuf.hash | 2 +- package/protobuf/protobuf.mk | 2 +- ....py-remove-unneeded-wheel-dependency.patch | 41 ------------------- package/python-protobuf/python-protobuf.hash | 2 +- 4 files changed, 3 insertions(+), 44 deletions(-) delete mode 100644 package/python-protobuf/0001-python-setup.py-remove-unneeded-wheel-dependency.patch diff --git a/package/protobuf/protobuf.hash b/package/protobuf/protobuf.hash index c11f54edc3..001b41be9a 100644 --- a/package/protobuf/protobuf.hash +++ b/package/protobuf/protobuf.hash @@ -1,3 +1,3 @@ # Locally calculated sha256 6e5e117324afd944dcf67f36cf329843bc1a92229a8cd9bb573d7a83130fea7d LICENSE -sha256 f8a547dfe143a9f61fadafba47fa6573713a33cb80909307c1502e26e1102298 protobuf-cpp-3.13.0.tar.gz +sha256 50ec5a07c0c55d4ec536dd49021f2e194a26bfdbc531d03d1e9d4d3e27175659 protobuf-cpp-3.14.0.tar.gz diff --git a/package/protobuf/protobuf.mk b/package/protobuf/protobuf.mk index 5f2690603d..401b351c0a 100644 --- a/package/protobuf/protobuf.mk +++ b/package/protobuf/protobuf.mk @@ -7,7 +7,7 @@ # When bumping this package, make sure to also verify if the # python-protobuf package still works and to update its hash, # as they share the same version/site variables. -PROTOBUF_VERSION = 3.13.0 +PROTOBUF_VERSION = 3.14.0 PROTOBUF_SOURCE = protobuf-cpp-$(PROTOBUF_VERSION).tar.gz PROTOBUF_SITE = https://github.com/google/protobuf/releases/download/v$(PROTOBUF_VERSION) PROTOBUF_LICENSE = BSD-3-Clause diff --git a/package/python-protobuf/0001-python-setup.py-remove-unneeded-wheel-dependency.patch b/package/python-protobuf/0001-python-setup.py-remove-unneeded-wheel-dependency.patch deleted file mode 100644 index 1646f0808c..0000000000 --- a/package/python-protobuf/0001-python-setup.py-remove-unneeded-wheel-dependency.patch +++ /dev/null @@ -1,41 +0,0 @@ -From 9f8a6ed7fda9abf474ce886dddf3ab5abc0ead0b Mon Sep 17 00:00:00 2001 -From: Fabrice Fontaine -Date: Sun, 20 Sep 2020 10:52:32 +0200 -Subject: [PATCH] python/setup.py: remove unneeded wheel dependency - -wheel is required since version 3.13.0 and -https://github.com/protocolbuffers/protobuf/commit/ff92cee10bcae7533b573368f448e782fbd43f39 - -This will result in the following build failure when cross-compiling: - -Download error on https://pypi.org/simple/wheel/: unknown url type: https -- Some packages may not be found! -Couldn't find index page for 'wheel' (maybe misspelled?) -Download error on https://pypi.org/simple/: unknown url type: https -- Some packages may not be found! -No local packages or working download links found for wheel - -Remove wheel requirement from setup.py as it is only needed by -release.sh, not by setup.py - -Fixes: - - http://autobuild.buildroot.org/results/371c686a10d6870933011b46d36b1879d29046b9 - -Signed-off-by: Fabrice Fontaine ---- - python/setup.py | 1 - - 1 file changed, 1 deletion(-) - -diff --git a/python/setup.py b/python/setup.py -index b44e88b2f..39eb18d4b 100755 ---- a/python/setup.py -+++ b/python/setup.py -@@ -293,7 +293,6 @@ if __name__ == '__main__': - 'build_py': build_py, - 'test_conformance': test_conformance, - }, -- setup_requires = ['wheel'], - install_requires=install_requires, - ext_modules=ext_module_list, - ) --- -2.28.0 - diff --git a/package/python-protobuf/python-protobuf.hash b/package/python-protobuf/python-protobuf.hash index 4098d087ac..c8762b5416 100644 --- a/package/python-protobuf/python-protobuf.hash +++ b/package/python-protobuf/python-protobuf.hash @@ -1,3 +1,3 @@ # Locally calculated -sha256 9c4d2ad449d27da5ac1db1ad5ecc4a642dedd6bbe59219d61d7b655b6b12be89 protobuf-python-3.13.0.tar.gz +sha256 969019c5fd9c1345f0b34afa06ab2664c1441d159d5ae87ded5fa01d79f028c1 protobuf-python-3.14.0.tar.gz sha256 6e5e117324afd944dcf67f36cf329843bc1a92229a8cd9bb573d7a83130fea7d LICENSE From 6e85ab44493624748398ffb2c6bf4bda409f2de7 Mon Sep 17 00:00:00 2001 From: Fabrice Fontaine Date: Fri, 13 Nov 2020 23:07:38 +0100 Subject: [PATCH 34/95] package/radvd: bump to version 2.19 Drop patch (already in version) and so autoreconf http://www.litech.org/radvd/CHANGES.txt:w Signed-off-by: Fabrice Fontaine Signed-off-by: Peter Korsgaard --- ...ck-protector-the-toolchain-might-lac.patch | 27 ------------------- package/radvd/radvd.hash | 6 ++--- package/radvd/radvd.mk | 4 +-- 3 files changed, 4 insertions(+), 33 deletions(-) delete mode 100644 package/radvd/0002-Don-t-force-fstack-protector-the-toolchain-might-lac.patch diff --git a/package/radvd/0002-Don-t-force-fstack-protector-the-toolchain-might-lac.patch b/package/radvd/0002-Don-t-force-fstack-protector-the-toolchain-might-lac.patch deleted file mode 100644 index 44768086cc..0000000000 --- a/package/radvd/0002-Don-t-force-fstack-protector-the-toolchain-might-lac.patch +++ /dev/null @@ -1,27 +0,0 @@ -From 324e1ebc7b86f68f49fb4f1c34a4de60d18dd3c1 Mon Sep 17 00:00:00 2001 -From: Gustavo Zacarias -Date: Sun, 23 Nov 2014 12:17:11 +0100 -Subject: [PATCH 2/3] Don't force -fstack-protector, the toolchain might lack - support for it - -Signed-off-by: Gustavo Zacarias -Signed-off-by: Thomas Petazzoni ---- - Makefile.am | 1 - - 1 file changed, 1 deletion(-) - -diff --git a/Makefile.am b/Makefile.am -index 80633e7..8b5a2e4 100644 ---- a/Makefile.am -+++ b/Makefile.am -@@ -43,7 +43,6 @@ DISABLE_WARNINGS = \ - - AM_CFLAGS = \ - -fno-strict-aliasing \ -- -fstack-protector \ - $(ENABLE_WARNINGS) \ - $(DISABLE_WARNINGS) - --- -2.1.0 - diff --git a/package/radvd/radvd.hash b/package/radvd/radvd.hash index 9ade027d27..a624db24ba 100644 --- a/package/radvd/radvd.hash +++ b/package/radvd/radvd.hash @@ -1,3 +1,3 @@ -# From http://www.litech.org/radvd/dist/radvd-2.18.tar.gz.sha256 -sha256 4f573e36b96ba92d03b5abbbd5f059b9c8994967812c77852f44049ac5a448fd radvd-2.18.tar.gz -sha256 40a6db00cf0b97f031eaa6c6e87157788f40ced1b88e3ea6d78779bd2a39dc80 COPYRIGHT +# From http://www.litech.org/radvd/dist/radvd-2.19.tar.gz.sha512 +sha512 caa621fd77e34ff6858d60a41b0ee02aff967ac14f2b84c402359744f4bece5c1563419860431c328adc0385e9893ed1f2421d652247a3aa0dfc0aaad1e01233 radvd-2.19.tar.gz +sha256 40a6db00cf0b97f031eaa6c6e87157788f40ced1b88e3ea6d78779bd2a39dc80 COPYRIGHT diff --git a/package/radvd/radvd.mk b/package/radvd/radvd.mk index ba0c78bd1e..7a650dc3c5 100644 --- a/package/radvd/radvd.mk +++ b/package/radvd/radvd.mk @@ -4,7 +4,7 @@ # ################################################################################ -RADVD_VERSION = 2.18 +RADVD_VERSION = 2.19 RADVD_SITE = http://www.litech.org/radvd/dist RADVD_DEPENDENCIES = host-bison host-flex host-pkgconf # We need to ignore , because radvd already includes @@ -12,8 +12,6 @@ RADVD_DEPENDENCIES = host-bison host-flex host-pkgconf RADVD_CONF_ENV = \ ac_cv_prog_cc_c99='-std=gnu99' \ ac_cv_header_linux_if_arp_h=no -# For 0002-Don-t-force-fstack-protector-the-toolchain-might-lac.patch -RADVD_AUTORECONF = YES RADVD_LICENSE = BSD-4-Clause-like RADVD_LICENSE_FILES = COPYRIGHT From c52fedf063fb3877f98afd4bb5ae112d72f4c874 Mon Sep 17 00:00:00 2001 From: Julien Olivain Date: Fri, 13 Nov 2020 14:09:41 +0100 Subject: [PATCH 35/95] package/linux-backports: bump version to 5.8 Attempting to compile this package with newer Kernel version (e.g. v5.4) fails with message: Generating local configuration database from kernel ...Kernel version parse failed! Upgrading the package to 5.8 fixes this issue. Anyways, v4.4 is now rather old and beat the very purpose of having newer drivers in older kernels. Since backports tag v4.14-rc4-1, the requirement on minimal kernel version changed from 3.0 to 3.10. See commit [1]. The minimal kernel version check is changed accordingly. License files are also updated: the linux backports package copies the license files from the kernel version used for its generation. v5.8 is now "GPL-2.0 WITH Linux-syscall-note". However, there is no such SPDX identifier (contrary to what is said in the COPYING file), so we keep it as GPL-2.0 (which also keeps it aligned to what we have in linux.mk). [1] https://git.kernel.org/pub/scm/linux/kernel/git/backports/backports.git/commit/?id=a0d05f9f9ca50ea8b1d60726fac6b54167257e76 Signed-off-by: Julien Olivain Reviewed-by: Petr Vorel Tested-by: Petr Vorel [yann.morin.1998@free.fr: keep license as GPL-2.0, like for linux] Signed-off-by: Yann E. MORIN --- package/linux-backports/Config.in | 2 +- package/linux-backports/linux-backports.hash | 8 +++++--- package/linux-backports/linux-backports.mk | 19 ++++++++++++------- 3 files changed, 18 insertions(+), 11 deletions(-) diff --git a/package/linux-backports/Config.in b/package/linux-backports/Config.in index 362e6e4bc7..251d202fd2 100644 --- a/package/linux-backports/Config.in +++ b/package/linux-backports/Config.in @@ -9,7 +9,7 @@ config BR2_PACKAGE_LINUX_BACKPORTS recent kernels, backported to older ones. This version of linux-backports supports kernels starting - from 3.0. + from 3.10. https://backports.wiki.kernel.org diff --git a/package/linux-backports/linux-backports.hash b/package/linux-backports/linux-backports.hash index f39bc2ed27..3e103424f5 100644 --- a/package/linux-backports/linux-backports.hash +++ b/package/linux-backports/linux-backports.hash @@ -1,4 +1,6 @@ -# From: https://www.kernel.org/pub/linux/kernel/projects/backports/stable/v4.4.2/sha256sums.asc -sha256 a979e194c2ed9fdfca092a448e626d85c5af0e4de5ad993c0967afd15af01285 backports-4.4.2-1.tar.xz +# From: https://www.kernel.org/pub/linux/kernel/projects/backports/stable/v5.8/sha256sums.asc +sha256 19b4174d89bf11ee221458e11f1e8dace26558498774b823051156f522d2036b backports-5.8-1.tar.xz # Locally computed -sha256 af8067302947c01fd9eee72befa54c7e3ef8a48fecde7fd71277f2290b2bf0f7 COPYING +sha256 fb5a425bd3b3cd6071a3a9aff9909a859e7c1158d54d32e07658398cd67eb6a0 COPYING +sha256 8e378ab93586eb55135d3bc119cce787f7324f48394777d00c34fa3d0be3303f LICENSES/exceptions/Linux-syscall-note +sha256 f6b78c087c3ebdf0f3c13415070dd480a3f35d8fc76f3d02180a407c1c812f79 LICENSES/preferred/GPL-2.0 diff --git a/package/linux-backports/linux-backports.mk b/package/linux-backports/linux-backports.mk index 1827ee18b7..068dcffcc8 100644 --- a/package/linux-backports/linux-backports.mk +++ b/package/linux-backports/linux-backports.mk @@ -4,12 +4,15 @@ # ################################################################################ -LINUX_BACKPORTS_VERSION_MAJOR = 4.4.2 +LINUX_BACKPORTS_VERSION_MAJOR = 5.8 LINUX_BACKPORTS_VERSION = $(LINUX_BACKPORTS_VERSION_MAJOR)-1 LINUX_BACKPORTS_SOURCE = backports-$(LINUX_BACKPORTS_VERSION).tar.xz LINUX_BACKPORTS_SITE = $(BR2_KERNEL_MIRROR)/linux/kernel/projects/backports/stable/v$(LINUX_BACKPORTS_VERSION_MAJOR) LINUX_BACKPORTS_LICENSE = GPL-2.0 -LINUX_BACKPORTS_LICENSE_FILES = COPYING +LINUX_BACKPORTS_LICENSE_FILES = \ + COPYING \ + LICENSES/exceptions/Linux-syscall-note \ + LICENSES/preferred/GPL-2.0 # flex and bison are needed to generate kconfig parser. We use the # same logic as the linux kernel (we add host dependencies only if @@ -91,7 +94,7 @@ $(eval $(kconfig-package)) # instead. # # Furthermore, we want to check the kernel version, since linux-backports -# only supports kernels >= 3.0. To avoid overriding linux-backports' +# only supports kernels >= 3.10. To avoid overriding linux-backports' # KCONFIG_STAMP_DOTCONFIG rule defined in the kconfig-package infra, we # use an intermediate stamp-file. # @@ -103,10 +106,12 @@ $(LINUX_BACKPORTS_DIR)/$(LINUX_BACKPORTS_KCONFIG_STAMP_DOTCONFIG): $(LINUX_BACKP .SECONDEXPANSION: $(LINUX_BACKPORTS_DIR)/.stamp_check_kernel_version: $$(LINUX_DIR)/$$(LINUX_KCONFIG_STAMP_DOTCONFIG) - $(Q)LINUX_VERSION_PROBED=$(LINUX_VERSION_PROBED); \ - if [ $${LINUX_VERSION_PROBED%%.*} -lt 3 ]; then \ - printf "Linux version '%s' is too old for linux-backports (needs 3.0 or later)\n" \ - "$${LINUX_VERSION_PROBED}"; \ + $(Q)KVER=$(LINUX_VERSION_PROBED); \ + KVER_MAJOR=`echo $${KVER} | sed 's/^\([0-9]*\)\..*/\1/'`; \ + KVER_MINOR=`echo $${KVER} | sed 's/^[0-9]*\.\([0-9]*\).*/\1/'`; \ + if [ $${KVER_MAJOR} -lt 3 -o \( $${KVER_MAJOR} -eq 3 -a $${KVER_MINOR} -lt 10 \) ]; then \ + printf "Linux version '%s' is too old for linux-backports (needs 3.10 or later)\n" \ + "$${KVER}"; \ exit 1; \ fi $(Q)touch $(@) From 31f915eaa9175b0aa07985c287037a01aba3bf3f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vincent=20Stehl=C3=A9?= Date: Fri, 13 Nov 2020 11:30:03 +0100 Subject: [PATCH 36/95] package/pixz: bump version to v1.0.7 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Update the hash accordingly. - Remove a patch, as its fix is in this new version of pixz. Signed-off-by: Vincent Stehlé Signed-off-by: Peter Korsgaard --- package/pixz/0001-fix-linkage.patch | 41 ----------------------------- package/pixz/pixz.hash | 2 +- package/pixz/pixz.mk | 2 +- 3 files changed, 2 insertions(+), 43 deletions(-) delete mode 100644 package/pixz/0001-fix-linkage.patch diff --git a/package/pixz/0001-fix-linkage.patch b/package/pixz/0001-fix-linkage.patch deleted file mode 100644 index 712c280ec2..0000000000 --- a/package/pixz/0001-fix-linkage.patch +++ /dev/null @@ -1,41 +0,0 @@ -From f385e7be8adb620ca7eb89f84abe4d1df94c1029 Mon Sep 17 00:00:00 2001 -From: Dave Vasilevsky -Date: Sat, 25 Apr 2020 19:16:05 -0400 -Subject: [PATCH] fix linkage - -[Retrieved from: -https://github.com/vasi/pixz/commit/f385e7be8adb620ca7eb89f84abe4d1df94c1029] -Signed-off-by: Fabrice Fontaine ---- - src/common.c | 2 +- - src/pixz.h | 4 ++-- - 2 files changed, 3 insertions(+), 3 deletions(-) - -diff --git a/src/common.c b/src/common.c -index 59d3273..5938633 100644 ---- a/src/common.c -+++ b/src/common.c -@@ -7,7 +7,7 @@ - - #pragma mark UTILS - --FILE *gInFile = NULL; -+FILE *gInFile = NULL, *gOutFile = NULL; - lzma_stream gStream = LZMA_STREAM_INIT; - - -diff --git a/src/pixz.h b/src/pixz.h -index 0fa60f2..0939a9a 100644 ---- a/src/pixz.h -+++ b/src/pixz.h -@@ -54,8 +54,8 @@ void pixz_read(bool verify, size_t nspecs, char **specs); - - #pragma mark UTILS - --FILE *gInFile, *gOutFile; --lzma_stream gStream; -+extern FILE *gInFile, *gOutFile; -+extern lzma_stream gStream; - - extern lzma_index *gIndex; - diff --git a/package/pixz/pixz.hash b/package/pixz/pixz.hash index 5491a016dc..9e2a211cdc 100644 --- a/package/pixz/pixz.hash +++ b/package/pixz/pixz.hash @@ -1,3 +1,3 @@ # Locally computed: -sha256 02c50746b134fa1b1aae41fcc314d7c6f1919b3d48bcdea01bf11769f83f72e8 pixz-1.0.6.tar.xz +sha256 e5e32c6eb0bf112b98e74a5da8fb63b9f2cae71800f599d97ce540e150c8ddc5 pixz-1.0.7.tar.xz sha256 d036806b4d1efee7c6d86276451c4d833e9798751417e25daae62dfbe348641b LICENSE diff --git a/package/pixz/pixz.mk b/package/pixz/pixz.mk index 8d80f78617..680c05c32c 100644 --- a/package/pixz/pixz.mk +++ b/package/pixz/pixz.mk @@ -4,7 +4,7 @@ # ################################################################################ -PIXZ_VERSION = 1.0.6 +PIXZ_VERSION = 1.0.7 PIXZ_SITE = https://github.com/vasi/pixz/releases/download/v$(PIXZ_VERSION) PIXZ_SOURCE = pixz-$(PIXZ_VERSION).tar.xz PIXZ_DEPENDENCIES = host-pkgconf libarchive xz From 32455cb7358aa717e2448c554e3604b5433329f2 Mon Sep 17 00:00:00 2001 From: Fabrice Fontaine Date: Fri, 13 Nov 2020 21:51:28 +0100 Subject: [PATCH 37/95] package/qdecoder: bump to version 12.0.8 Update indentation in hash file (two spaces) https://github.com/wolkykim/qdecoder/releases/tag/v12.0.8 Signed-off-by: Fabrice Fontaine Signed-off-by: Peter Korsgaard --- package/qdecoder/qdecoder.hash | 4 ++-- package/qdecoder/qdecoder.mk | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package/qdecoder/qdecoder.hash b/package/qdecoder/qdecoder.hash index 0c95d2c27b..e3fb837597 100644 --- a/package/qdecoder/qdecoder.hash +++ b/package/qdecoder/qdecoder.hash @@ -1,3 +1,3 @@ # Locally calculated -sha256 01d4852b9343757abe98bbdb9d4bf0dc142ccb602ec921906ddde32c16164376 qdecoder-12.0.7.tar.gz -sha256 17e647523e5c5c75fd02861dcf3ea91a146d918ab303460ee58135c9dd70904e COPYING +sha256 3911576ad8766697a9c8c767458edc953ae686eb53cd31d21e38edd7831ed9aa qdecoder-12.0.8.tar.gz +sha256 17e647523e5c5c75fd02861dcf3ea91a146d918ab303460ee58135c9dd70904e COPYING diff --git a/package/qdecoder/qdecoder.mk b/package/qdecoder/qdecoder.mk index ab95885c32..12784fc451 100644 --- a/package/qdecoder/qdecoder.mk +++ b/package/qdecoder/qdecoder.mk @@ -4,7 +4,7 @@ # ################################################################################ -QDECODER_VERSION = 12.0.7 +QDECODER_VERSION = 12.0.8 QDECODER_SITE = $(call github,wolkykim,qdecoder,v$(QDECODER_VERSION)) QDECODER_LICENSE = BSD-2 QDECODER_LICENSE_FILES = COPYING From a3f58a74e0094bbf960ca9f4161c492b00a849ef Mon Sep 17 00:00:00 2001 From: Fabrice Fontaine Date: Fri, 13 Nov 2020 23:44:08 +0100 Subject: [PATCH 38/95] package/ipsec-tools: drop package Extract from http://ipsec-tools.sourceforge.net: "The development of ipsec-tools has been ABANDONED. ipsec-tools has security issues, and you should not use it. Please switch to a secure alternative!" Signed-off-by: Fabrice Fontaine Signed-off-by: Peter Korsgaard --- Config.in.legacy | 9 + package/Config.in | 1 - package/ipsec-tools/0001-susv3-legacy.patch | 35 - .../ipsec-tools/0002-configure-automake.patch | 21 - .../0003-Don-t-link-against-libfl.patch | 92 -- package/ipsec-tools/0004-CVE-2015-4047.patch | 26 - package/ipsec-tools/0005-CVE-2016-10396.patch | 208 ---- package/ipsec-tools/0006-openssl-1.1.patch | 1104 ----------------- package/ipsec-tools/Config.in | 75 -- package/ipsec-tools/ipsec-tools.hash | 6 - package/ipsec-tools/ipsec-tools.mk | 85 -- 11 files changed, 9 insertions(+), 1653 deletions(-) delete mode 100644 package/ipsec-tools/0001-susv3-legacy.patch delete mode 100644 package/ipsec-tools/0002-configure-automake.patch delete mode 100644 package/ipsec-tools/0003-Don-t-link-against-libfl.patch delete mode 100644 package/ipsec-tools/0004-CVE-2015-4047.patch delete mode 100644 package/ipsec-tools/0005-CVE-2016-10396.patch delete mode 100644 package/ipsec-tools/0006-openssl-1.1.patch delete mode 100644 package/ipsec-tools/Config.in delete mode 100644 package/ipsec-tools/ipsec-tools.hash delete mode 100644 package/ipsec-tools/ipsec-tools.mk diff --git a/Config.in.legacy b/Config.in.legacy index 9eb18907dd..91689291c9 100644 --- a/Config.in.legacy +++ b/Config.in.legacy @@ -144,6 +144,15 @@ endif ############################################################################### +comment "Legacy options removed in 2021.02" + +config BR2_PACKAGE_IPSEC_TOOLS + bool "ipsec-tools package was removed" + select BR2_LEGACY + help + This package has been removed as it has security issues and + has been abandoned since 2014. + comment "Legacy options removed in 2020.11" config BR2_PACKAGE_OPENCV diff --git a/package/Config.in b/package/Config.in index 8fcea06433..d32a271113 100644 --- a/package/Config.in +++ b/package/Config.in @@ -2112,7 +2112,6 @@ menu "Networking applications" source "package/iperf/Config.in" source "package/iperf3/Config.in" source "package/iproute2/Config.in" - source "package/ipsec-tools/Config.in" source "package/ipset/Config.in" source "package/iptables/Config.in" source "package/iptraf-ng/Config.in" diff --git a/package/ipsec-tools/0001-susv3-legacy.patch b/package/ipsec-tools/0001-susv3-legacy.patch deleted file mode 100644 index ea98505622..0000000000 --- a/package/ipsec-tools/0001-susv3-legacy.patch +++ /dev/null @@ -1,35 +0,0 @@ -Replaces sysv3 legacy functions with modern equivalents. - -Signed-off-by: Julien Boibessot -Index: ipsec-tools-0.7.3/src/racoon/pfkey.c -=================================================================== ---- ipsec-tools-0.7.3.orig/src/racoon/pfkey.c 2010-07-12 14:46:52.000000000 +0200 -+++ ipsec-tools-0.7.3/src/racoon/pfkey.c 2010-07-12 15:01:39.000000000 +0200 -@@ -3008,12 +3008,12 @@ - struct sockaddr *paddr; - - paddr = (struct sockaddr *)(xisr + 1); -- bcopy(paddr, &(*p_isr)->saidx.src, -+ memmove(&(*p_isr)->saidx.src, paddr, - sysdep_sa_len(paddr)); - - paddr = (struct sockaddr *)((caddr_t)paddr - + sysdep_sa_len(paddr)); -- bcopy(paddr, &(*p_isr)->saidx.dst, -+ memmove(&(*p_isr)->saidx.dst, paddr, - sysdep_sa_len(paddr)); - } - -Index: ipsec-tools-0.7.3/src/racoon/racoonctl.c -=================================================================== ---- ipsec-tools-0.7.3.orig/src/racoon/racoonctl.c 2010-07-12 14:49:51.000000000 +0200 -+++ ipsec-tools-0.7.3/src/racoon/racoonctl.c 2010-07-12 15:00:52.000000000 +0200 -@@ -785,7 +785,7 @@ - errx(1, "cannot read source address"); - - /* We get "ip[port]" strip the port */ -- if ((idx = index(srcaddr, '[')) == NULL) -+ if ((idx = strchr(srcaddr, '[')) == NULL) - errx(1, "unexpected source address format"); - *idx = '\0'; - diff --git a/package/ipsec-tools/0002-configure-automake.patch b/package/ipsec-tools/0002-configure-automake.patch deleted file mode 100644 index a006516f20..0000000000 --- a/package/ipsec-tools/0002-configure-automake.patch +++ /dev/null @@ -1,21 +0,0 @@ -Needed to fix broken autoreconf - -Downloaded from -https://sources.debian.net/src/ipsec-tools/1:0.8.2%2B20140711-8/debian/patches/automake-options/ - -Signed-off-by: Bernd Kuhls - -Index: pkg-ipsec-tools/configure.ac -=================================================================== ---- pkg-ipsec-tools.orig/configure.ac 2014-06-28 17:25:22.000000000 +0200 -+++ pkg-ipsec-tools/configure.ac 2014-06-28 17:28:13.818373322 +0200 -@@ -6,7 +6,8 @@ AC_INIT(ipsec-tools, 0.8.2) - AC_CONFIG_SRCDIR([configure.ac]) - AC_CONFIG_HEADERS(config.h) - --AM_INIT_AUTOMAKE(dist-bzip2) -+AC_CONFIG_MACRO_DIR([.]) -+AM_INIT_AUTOMAKE([dist-bzip2 foreign serial-tests]) - - AC_ENABLE_SHARED(no) - diff --git a/package/ipsec-tools/0003-Don-t-link-against-libfl.patch b/package/ipsec-tools/0003-Don-t-link-against-libfl.patch deleted file mode 100644 index 4fa0a02d52..0000000000 --- a/package/ipsec-tools/0003-Don-t-link-against-libfl.patch +++ /dev/null @@ -1,92 +0,0 @@ -From e48b9097dce7bc2bfbb9e9c542124d3b5cebab39 Mon Sep 17 00:00:00 2001 -From: Paul Barker -Date: Wed, 5 Mar 2014 13:39:14 +0000 -Subject: [PATCH] Don't link against libfl - -We can remove all references to yywrap by adding "%option noyywrap" statements -to each flex source file that doesn't override yywrap. After this, we no longer -need to link against libfl and so no longer get errors about undefined -references to yylex. - -Signed-off-by: Paul Barker -Upstream-status: Submitted 2014-03-11 - see http://sourceforge.net/p/ipsec-tools/mailman/ipsec-tools-devel/thread/CANyK_8ewmxGA3vBVJW6s1APXPmxPR%2BDFWZ61EL8pCt288aKQ6w%40mail.gmail.com/#msg32088797 - -Downloaded from -http://cgit.openembedded.org/meta-openembedded/tree/meta-networking/recipes-support/ipsec-tools/ipsec-tools/0002-Don-t-link-against-libfl.patch - -Signed-off-by: Bernd Kuhls ---- - src/libipsec/Makefile.am | 1 - - src/racoon/Makefile.am | 2 +- - src/racoon/cftoken.l | 2 ++ - src/setkey/Makefile.am | 1 - - src/setkey/token.l | 2 ++ - 5 files changed, 5 insertions(+), 3 deletions(-) - -diff --git a/src/libipsec/Makefile.am b/src/libipsec/Makefile.am -index 6a4e3b3..df1e106 100644 ---- a/src/libipsec/Makefile.am -+++ b/src/libipsec/Makefile.am -@@ -26,7 +26,6 @@ libipsec_la_SOURCES = \ - # version is current:revision:age. - # See: http://www.gnu.org/manual/libtool-1.4.2/html_chapter/libtool_6.html#SEC32 - libipsec_la_LDFLAGS = -version-info 0:1:0 --libipsec_la_LIBADD = $(LEXLIB) - - noinst_HEADERS = ipsec_strerror.h - -diff --git a/src/racoon/Makefile.am b/src/racoon/Makefile.am -index dbaded9..0662957 100644 ---- a/src/racoon/Makefile.am -+++ b/src/racoon/Makefile.am -@@ -38,7 +38,7 @@ racoon_SOURCES = \ - cftoken.l cfparse.y prsa_tok.l prsa_par.y - EXTRA_racoon_SOURCES = isakmp_xauth.c isakmp_cfg.c isakmp_unity.c throttle.c \ - isakmp_frag.c nattraversal.c security.c $(MISSING_ALGOS) --racoon_LDADD = $(CRYPTOBJS) $(HYBRID_OBJS) $(NATT_OBJS) $(FRAG_OBJS) $(LEXLIB) \ -+racoon_LDADD = $(CRYPTOBJS) $(HYBRID_OBJS) $(NATT_OBJS) $(FRAG_OBJS) \ - $(SECCTX_OBJS) vmbuf.o sockmisc.o misc.o ../libipsec/libipsec.la - racoon_DEPENDENCIES = \ - $(CRYPTOBJS) $(HYBRID_OBJS) $(NATT_OBJS) $(FRAG_OBJS) $(SECCTX_OBJS) \ -diff --git a/src/racoon/cftoken.l b/src/racoon/cftoken.l -index 490242c..1701922 100644 ---- a/src/racoon/cftoken.l -+++ b/src/racoon/cftoken.l -@@ -106,6 +106,8 @@ static int incstackp = 0; - static int yy_first_time = 1; - %} - -+%option noyywrap -+ - /* common seciton */ - nl \n - ws [ \t]+ -diff --git a/src/setkey/Makefile.am b/src/setkey/Makefile.am -index 746c1f1..389e6cf 100644 ---- a/src/setkey/Makefile.am -+++ b/src/setkey/Makefile.am -@@ -13,7 +13,6 @@ setkey_SOURCES = \ - - setkey_LDFLAGS = ../libipsec/libipsec.la - setkey_DEPENDENCIES = ../libipsec/libipsec.la --setkey_LDADD = $(LEXLIB) - - noinst_HEADERS = vchar.h extern.h - man8_MANS = setkey.8 -diff --git a/src/setkey/token.l b/src/setkey/token.l -index ad3d843..eb23b76 100644 ---- a/src/setkey/token.l -+++ b/src/setkey/token.l -@@ -88,6 +88,8 @@ - #endif - %} - -+%option noyywrap -+ - /* common section */ - nl \n - ws [ \t]+ --- -1.9.0 - diff --git a/package/ipsec-tools/0004-CVE-2015-4047.patch b/package/ipsec-tools/0004-CVE-2015-4047.patch deleted file mode 100644 index f53fe5cc11..0000000000 --- a/package/ipsec-tools/0004-CVE-2015-4047.patch +++ /dev/null @@ -1,26 +0,0 @@ -ipsec-tools: CVE-2015-4047: null pointer dereference crash in racoon - -See: https://bugs.gentoo.org/show_bug.cgi?id=550118 - -Downloaded from -https://gitweb.gentoo.org/repo/gentoo.git/tree/net-vpn/ipsec-tools/files/ipsec-tools-CVE-2015-4047.patch - -See also -https://sources.debian.net/src/ipsec-tools/1:0.8.2%2B20140711-8/debian/patches/bug785778-null-pointer-deref.patch/ - -Signed-off-by: Bernd Kuhls - ---- ./src/racoon/gssapi.c 9 Sep 2006 16:22:09 -0000 1.4 -+++ ./src/racoon/gssapi.c 19 May 2015 15:16:00 -0000 1.6 -@@ -192,6 +192,11 @@ - gss_name_t princ, canon_princ; - OM_uint32 maj_stat, min_stat; - -+ if (iph1->rmconf == NULL) { -+ plog(LLV_ERROR, LOCATION, NULL, "no remote config\n"); -+ return -1; -+ } -+ - gps = racoon_calloc(1, sizeof (struct gssapi_ph1_state)); - if (gps == NULL) { - plog(LLV_ERROR, LOCATION, NULL, "racoon_calloc failed\n"); diff --git a/package/ipsec-tools/0005-CVE-2016-10396.patch b/package/ipsec-tools/0005-CVE-2016-10396.patch deleted file mode 100644 index 8ef3b03753..0000000000 --- a/package/ipsec-tools/0005-CVE-2016-10396.patch +++ /dev/null @@ -1,208 +0,0 @@ -Fix CVE-2016-10396 - -Description: Fix remotely exploitable DoS. http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-10396 -Source: vendor; https://gnats.netbsd.org/cgi-bin/query-pr-single.pl?number=51682 -Bug-debian: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=867986 - -Downloaded from -https://github.com/openwrt/packages/blob/master/net/ipsec-tools/patches/010-CVE-2016-10396.patch - -Signed-off-by: Bernd Kuhls - -Index: ipsec-tools-0.8.2/src/racoon/isakmp_frag.c -=================================================================== ---- ipsec-tools-0.8.2.orig/src/racoon/isakmp_frag.c -+++ ipsec-tools-0.8.2/src/racoon/isakmp_frag.c -@@ -1,4 +1,4 @@ --/* $NetBSD: isakmp_frag.c,v 1.5 2009/04/22 11:24:20 tteras Exp $ */ -+/* $NetBSD: isakmp_frag.c,v 1.5.36.1 2017/04/21 16:50:42 bouyer Exp $ */ - - /* Id: isakmp_frag.c,v 1.4 2004/11/13 17:31:36 manubsd Exp */ - -@@ -173,6 +173,43 @@ vendorid_frag_cap(gen) - return ntohl(hp[MD5_DIGEST_LENGTH / sizeof(*hp)]); - } - -+static int -+isakmp_frag_insert(struct ph1handle *iph1, struct isakmp_frag_item *item) -+{ -+ struct isakmp_frag_item *pitem = NULL; -+ struct isakmp_frag_item *citem = iph1->frag_chain; -+ -+ /* no frag yet, just insert at beginning of list */ -+ if (iph1->frag_chain == NULL) { -+ iph1->frag_chain = item; -+ return 0; -+ } -+ -+ do { -+ /* duplicate fragment number, abort (CVE-2016-10396) */ -+ if (citem->frag_num == item->frag_num) -+ return -1; -+ -+ /* need to insert before current item */ -+ if (citem->frag_num > item->frag_num) { -+ if (pitem != NULL) -+ pitem->frag_next = item; -+ else -+ /* insert at the beginning of the list */ -+ iph1->frag_chain = item; -+ item->frag_next = citem; -+ return 0; -+ } -+ -+ pitem = citem; -+ citem = citem->frag_next; -+ } while (citem != NULL); -+ -+ /* we reached the end of the list, insert */ -+ pitem->frag_next = item; -+ return 0; -+} -+ - int - isakmp_frag_extract(iph1, msg) - struct ph1handle *iph1; -@@ -224,39 +261,43 @@ isakmp_frag_extract(iph1, msg) - item->frag_next = NULL; - item->frag_packet = buf; - -- /* Look for the last frag while inserting the new item in the chain */ -- if (item->frag_last) -- last_frag = item->frag_num; -+ /* Check for the last frag before inserting the new item in the chain */ -+ if (item->frag_last) { -+ /* if we have the last fragment, indices must match */ -+ if (iph1->frag_last_index != 0 && -+ item->frag_last != iph1->frag_last_index) { -+ plog(LLV_ERROR, LOCATION, NULL, -+ "Repeated last fragment index mismatch\n"); -+ racoon_free(item); -+ vfree(buf); -+ return -1; -+ } - -- if (iph1->frag_chain == NULL) { -- iph1->frag_chain = item; -- } else { -- struct isakmp_frag_item *current; -+ last_frag = iph1->frag_last_index = item->frag_num; -+ } - -- current = iph1->frag_chain; -- while (current->frag_next) { -- if (current->frag_last) -- last_frag = item->frag_num; -- current = current->frag_next; -- } -- current->frag_next = item; -+ /* insert fragment into chain */ -+ if (isakmp_frag_insert(iph1, item) == -1) { -+ plog(LLV_ERROR, LOCATION, NULL, -+ "Repeated fragment index mismatch\n"); -+ racoon_free(item); -+ vfree(buf); -+ return -1; - } - -- /* If we saw the last frag, check if the chain is complete */ -+ /* If we saw the last frag, check if the chain is complete -+ * we have a sorted list now, so just walk through */ - if (last_frag != 0) { -+ item = iph1->frag_chain; - for (i = 1; i <= last_frag; i++) { -- item = iph1->frag_chain; -- do { -- if (item->frag_num == i) -- break; -- item = item->frag_next; -- } while (item != NULL); -- -+ if (item->frag_num != i) -+ break; -+ item = item->frag_next; - if (item == NULL) /* Not found */ - break; - } - -- if (item != NULL) /* It is complete */ -+ if (i > last_frag) /* It is complete */ - return 1; - } - -@@ -291,15 +332,9 @@ isakmp_frag_reassembly(iph1) - } - data = buf->v; - -+ item = iph1->frag_chain; - for (i = 1; i <= frag_count; i++) { -- item = iph1->frag_chain; -- do { -- if (item->frag_num == i) -- break; -- item = item->frag_next; -- } while (item != NULL); -- -- if (item == NULL) { -+ if (item->frag_num != i) { - plog(LLV_ERROR, LOCATION, NULL, - "Missing fragment #%d\n", i); - vfree(buf); -@@ -308,6 +343,7 @@ isakmp_frag_reassembly(iph1) - } - memcpy(data, item->frag_packet->v, item->frag_packet->l); - data += item->frag_packet->l; -+ item = item->frag_next; - } - - out: -Index: ipsec-tools-0.8.2/src/racoon/isakmp_inf.c -=================================================================== ---- ipsec-tools-0.8.2.orig/src/racoon/isakmp_inf.c -+++ ipsec-tools-0.8.2/src/racoon/isakmp_inf.c -@@ -720,6 +720,7 @@ isakmp_info_send_nx(isakmp, remote, loca - #endif - #ifdef ENABLE_FRAG - iph1->frag = 0; -+ iph1->frag_last_index = 0; - iph1->frag_chain = NULL; - #endif - -Index: ipsec-tools-0.8.2/src/racoon/isakmp.c -=================================================================== ---- ipsec-tools-0.8.2.orig/src/racoon/isakmp.c -+++ ipsec-tools-0.8.2/src/racoon/isakmp.c -@@ -1071,6 +1071,7 @@ isakmp_ph1begin_i(rmconf, remote, local) - iph1->frag = 1; - else - iph1->frag = 0; -+ iph1->frag_last_index = 0; - iph1->frag_chain = NULL; - #endif - iph1->approval = NULL; -@@ -1175,6 +1176,7 @@ isakmp_ph1begin_r(msg, remote, local, et - #endif - #ifdef ENABLE_FRAG - iph1->frag = 0; -+ iph1->frag_last_index = 0; - iph1->frag_chain = NULL; - #endif - iph1->approval = NULL; -Index: ipsec-tools-0.8.2/src/racoon/handler.h -=================================================================== ---- ipsec-tools-0.8.2.orig/src/racoon/handler.h -+++ ipsec-tools-0.8.2/src/racoon/handler.h -@@ -1,4 +1,4 @@ --/* $NetBSD: handler.h,v 1.25 2010/11/17 10:40:41 tteras Exp $ */ -+/* $NetBSD: handler.h,v 1.26 2017/01/24 19:23:56 christos Exp $ */ - - /* Id: handler.h,v 1.19 2006/02/25 08:25:12 manubsd Exp */ - -@@ -141,6 +141,7 @@ struct ph1handle { - #endif - #ifdef ENABLE_FRAG - int frag; /* IKE phase 1 fragmentation */ -+ int frag_last_index; - struct isakmp_frag_item *frag_chain; /* Received fragments */ - #endif - diff --git a/package/ipsec-tools/0006-openssl-1.1.patch b/package/ipsec-tools/0006-openssl-1.1.patch deleted file mode 100644 index 39a7da988d..0000000000 --- a/package/ipsec-tools/0006-openssl-1.1.patch +++ /dev/null @@ -1,1104 +0,0 @@ -From 071fec7181255b9234add44865a435dfdefee520 Mon Sep 17 00:00:00 2001 -In-Reply-To: <20180528120513.560-1-cote2004-github@yahoo.com> -References: <20180528120513.560-1-cote2004-github@yahoo.com> -From: Eneas U de Queiroz -Date: Wed, 30 May 2018 15:42:20 -0300 -Subject: [PATCH] ipsec-tools: add openssl 1.1 support -To: equeiroz@troianet.com.br - -This patch updates the calls to openssl 1.1 API, and adds a -compatibility layer so it compiles with (at least) openssl 1.0.2, I -haven't tested it with lower versions, but all that's needed is to edit -the openssl_compat.* files and add the missing functions there--they're -usually trivial. - -Signed-off-by: Eneas U de Queiroz - -Downloaded from -https://github.com/openwrt/packages/blob/master/net/ipsec-tools/patches/015-openssl-1.1.patch - -Patch was sent upstream: -https://sourceforge.net/p/ipsec-tools/mailman/ipsec-tools-devel/thread/20180528120513.560-1-cote2004-github%40yahoo.com/#msg36327963 - -Signed-off-by: Bernd Kuhls ---- - src/racoon/Makefile.am | 10 +-- - src/racoon/algorithm.c | 6 +- - src/racoon/cfparse.y | 2 +- - src/racoon/crypto_openssl.c | 197 +++++++++++++++++++++------------------- - src/racoon/crypto_openssl.h | 2 +- - src/racoon/eaytest.c | 7 +- - src/racoon/ipsec_doi.c | 2 +- - src/racoon/openssl_compat.c | 213 ++++++++++++++++++++++++++++++++++++++++++++ - src/racoon/openssl_compat.h | 45 ++++++++++ - src/racoon/plainrsa-gen.c | 41 +++++---- - src/racoon/prsa_par.y | 28 ++++-- - src/racoon/rsalist.c | 5 +- - 12 files changed, 431 insertions(+), 127 deletions(-) - create mode 100644 src/racoon/openssl_compat.c - create mode 100644 src/racoon/openssl_compat.h - -diff --git a/src/racoon/Makefile.am b/src/racoon/Makefile.am -index dbaded9..4c585f3 100644 ---- a/src/racoon/Makefile.am -+++ b/src/racoon/Makefile.am -@@ -4,7 +4,7 @@ sbin_PROGRAMS = racoon racoonctl plainrsa-gen - noinst_PROGRAMS = eaytest - include_racoon_HEADERS = racoonctl.h var.h vmbuf.h misc.h gcmalloc.h admin.h \ - schedule.h sockmisc.h isakmp_var.h isakmp.h isakmp_xauth.h \ -- isakmp_cfg.h isakmp_unity.h ipsec_doi.h evt.h -+ isakmp_cfg.h isakmp_unity.h ipsec_doi.h evt.h openssl_compat.h - lib_LTLIBRARIES = libracoon.la - - adminsockdir=${localstatedir}/racoon -@@ -32,7 +32,7 @@ racoon_SOURCES = \ - gssapi.c dnssec.c getcertsbyname.c privsep.c \ - pfkey.c admin.c evt.c ipsec_doi.c oakley.c grabmyaddr.c vendorid.c \ - policy.c localconf.c remoteconf.c crypto_openssl.c algorithm.c \ -- proposal.c sainfo.c strnames.c \ -+ openssl_compat.c proposal.c sainfo.c strnames.c \ - plog.c logger.c schedule.c str2val.c \ - safefile.c backupsa.c genlist.c rsalist.c \ - cftoken.l cfparse.y prsa_tok.l prsa_par.y -@@ -51,12 +51,12 @@ libracoon_la_SOURCES = kmpstat.c vmbuf.c sockmisc.c misc.c - libracoon_la_CFLAGS = -DNOUSE_PRIVSEP $(AM_CFLAGS) - - plainrsa_gen_SOURCES = plainrsa-gen.c plog.c \ -- crypto_openssl.c logger.c -+ crypto_openssl.c logger.c openssl_compat.c - EXTRA_plainrsa_gen_SOURCES = $(MISSING_ALGOS) - plainrsa_gen_LDADD = $(CRYPTOBJS) vmbuf.o misc.o - plainrsa_gen_DEPENDENCIES = $(CRYPTOBJS) vmbuf.o misc.o - --eaytest_SOURCES = eaytest.c plog.c logger.c -+eaytest_SOURCES = eaytest.c plog.c logger.c openssl_compat.c - EXTRA_eaytest_SOURCES = missing/crypto/sha2/sha2.c - eaytest_LDADD = crypto_openssl_test.o vmbuf.o str2val.o misc_noplog.o \ - $(CRYPTOBJS) -@@ -75,7 +75,7 @@ noinst_HEADERS = \ - debugrm.h isakmp.h misc.h sainfo.h \ - dhgroup.h isakmp_agg.h netdb_dnssec.h schedule.h \ - isakmp_cfg.h isakmp_xauth.h isakmp_unity.h isakmp_frag.h \ -- throttle.h privsep.h \ -+ throttle.h privsep.h openssl_compat.h \ - cfparse_proto.h cftoken_proto.h genlist.h rsalist.h \ - missing/crypto/sha2/sha2.h missing/crypto/rijndael/rijndael_local.h \ - missing/crypto/rijndael/rijndael-api-fst.h \ -diff --git a/src/racoon/algorithm.c b/src/racoon/algorithm.c -index 3fd50f6..66c874b 100644 ---- a/src/racoon/algorithm.c -+++ b/src/racoon/algorithm.c -@@ -128,7 +128,7 @@ static struct enc_algorithm oakley_encdef[] = { - { "aes", algtype_aes, OAKLEY_ATTR_ENC_ALG_AES, 16, - eay_aes_encrypt, eay_aes_decrypt, - eay_aes_weakkey, eay_aes_keylen, }, --#ifdef HAVE_OPENSSL_CAMELLIA_H -+#if defined(HAVE_OPENSSL_CAMELLIA_H) && ! defined(OPENSSL_NO_CAMELLIA) - { "camellia", algtype_camellia, OAKLEY_ATTR_ENC_ALG_CAMELLIA, 16, - eay_camellia_encrypt, eay_camellia_decrypt, - eay_camellia_weakkey, eay_camellia_keylen, }, -@@ -168,7 +168,7 @@ static struct enc_algorithm ipsec_encdef[] = { - { "twofish", algtype_twofish, IPSECDOI_ESP_TWOFISH, 16, - NULL, NULL, - NULL, eay_twofish_keylen, }, --#ifdef HAVE_OPENSSL_IDEA_H -+#if defined(HAVE_OPENSSL_IDEA_H) && ! defined(OPENSSL_NO_IDEA) - { "3idea", algtype_3idea, IPSECDOI_ESP_3IDEA, 8, - NULL, NULL, - NULL, NULL, }, -@@ -179,7 +179,7 @@ static struct enc_algorithm ipsec_encdef[] = { - { "rc4", algtype_rc4, IPSECDOI_ESP_RC4, 8, - NULL, NULL, - NULL, NULL, }, --#ifdef HAVE_OPENSSL_CAMELLIA_H -+#if defined(HAVE_OPENSSL_CAMELLIA_H) && ! defined(OPENSSL_NO_CAMELLIA) - { "camellia", algtype_camellia, IPSECDOI_ESP_CAMELLIA, 16, - NULL, NULL, - NULL, eay_camellia_keylen, }, -diff --git a/src/racoon/cfparse.y b/src/racoon/cfparse.y -index 0d9bd67..8415752 100644 ---- a/src/racoon/cfparse.y -+++ b/src/racoon/cfparse.y -@@ -2564,7 +2564,7 @@ set_isakmp_proposal(rmconf) - plog(LLV_DEBUG2, LOCATION, NULL, - "encklen=%d\n", s->encklen); - -- memset(types, 0, ARRAYLEN(types)); -+ memset(types, 0, sizeof types); - types[algclass_isakmp_enc] = s->algclass[algclass_isakmp_enc]; - types[algclass_isakmp_hash] = s->algclass[algclass_isakmp_hash]; - types[algclass_isakmp_dh] = s->algclass[algclass_isakmp_dh]; -diff --git a/src/racoon/crypto_openssl.c b/src/racoon/crypto_openssl.c -index 55b076a..8fb358f 100644 ---- a/src/racoon/crypto_openssl.c -+++ b/src/racoon/crypto_openssl.c -@@ -90,6 +90,7 @@ - #endif - #endif - #include "plog.h" -+#include "openssl_compat.h" - - #define USE_NEW_DES_API - -@@ -316,9 +317,12 @@ eay_cmp_asn1dn(n1, n2) - i = idx+1; - goto end; - } -- if ((ea->value->length == 1 && ea->value->data[0] == '*') || -- (eb->value->length == 1 && eb->value->data[0] == '*')) { -- if (OBJ_cmp(ea->object,eb->object)) { -+ ASN1_STRING *sa = X509_NAME_ENTRY_get_data(ea); -+ ASN1_STRING *sb = X509_NAME_ENTRY_get_data(eb); -+ if ((ASN1_STRING_length(sa) == 1 && ASN1_STRING_get0_data(sa)[0] == '*') || -+ (ASN1_STRING_length(sb) == 1 && ASN1_STRING_get0_data(sb)[0] == '*')) { -+ if (OBJ_cmp(X509_NAME_ENTRY_get_object(ea), -+ X509_NAME_ENTRY_get_object(eb))) { - i = idx+1; - goto end; - } -@@ -430,7 +434,7 @@ cb_check_cert_local(ok, ctx) - - if (!ok) { - X509_NAME_oneline( -- X509_get_subject_name(ctx->current_cert), -+ X509_get_subject_name(X509_STORE_CTX_get_current_cert(ctx)), - buf, - 256); - /* -@@ -438,7 +442,8 @@ cb_check_cert_local(ok, ctx) - * ok if they are self signed. But we should still warn - * the user. - */ -- switch (ctx->error) { -+ int ctx_error = X509_STORE_CTX_get_error(ctx); -+ switch (ctx_error) { - case X509_V_ERR_CERT_HAS_EXPIRED: - case X509_V_ERR_DEPTH_ZERO_SELF_SIGNED_CERT: - case X509_V_ERR_INVALID_CA: -@@ -453,9 +458,9 @@ cb_check_cert_local(ok, ctx) - } - plog(log_tag, LOCATION, NULL, - "%s(%d) at depth:%d SubjectName:%s\n", -- X509_verify_cert_error_string(ctx->error), -- ctx->error, -- ctx->error_depth, -+ X509_verify_cert_error_string(ctx_error), -+ ctx_error, -+ X509_STORE_CTX_get_error_depth(ctx), - buf); - } - ERR_clear_error(); -@@ -477,10 +482,11 @@ cb_check_cert_remote(ok, ctx) - - if (!ok) { - X509_NAME_oneline( -- X509_get_subject_name(ctx->current_cert), -+ X509_get_subject_name(X509_STORE_CTX_get_current_cert(ctx)), - buf, - 256); -- switch (ctx->error) { -+ int ctx_error=X509_STORE_CTX_get_error(ctx); -+ switch (ctx_error) { - case X509_V_ERR_UNABLE_TO_GET_CRL: - ok = 1; - log_tag = LLV_WARNING; -@@ -490,9 +496,9 @@ cb_check_cert_remote(ok, ctx) - } - plog(log_tag, LOCATION, NULL, - "%s(%d) at depth:%d SubjectName:%s\n", -- X509_verify_cert_error_string(ctx->error), -- ctx->error, -- ctx->error_depth, -+ X509_verify_cert_error_string(ctx_error), -+ ctx_error, -+ X509_STORE_CTX_get_error_depth(ctx), - buf); - } - ERR_clear_error(); -@@ -516,14 +522,15 @@ eay_get_x509asn1subjectname(cert) - if (x509 == NULL) - goto error; - -+ X509_NAME *subject_name = X509_get_subject_name(x509); - /* get the length of the name */ -- len = i2d_X509_NAME(x509->cert_info->subject, NULL); -+ len = i2d_X509_NAME(subject_name, NULL); - name = vmalloc(len); - if (!name) - goto error; - /* get the name */ - bp = (unsigned char *) name->v; -- len = i2d_X509_NAME(x509->cert_info->subject, &bp); -+ len = i2d_X509_NAME(subject_name, &bp); - - X509_free(x509); - -@@ -661,15 +668,16 @@ eay_get_x509asn1issuername(cert) - if (x509 == NULL) - goto error; - -+ X509_NAME *issuer_name = X509_get_issuer_name(x509); - /* get the length of the name */ -- len = i2d_X509_NAME(x509->cert_info->issuer, NULL); -+ len = i2d_X509_NAME(issuer_name, NULL); - name = vmalloc(len); - if (name == NULL) - goto error; - - /* get the name */ - bp = (unsigned char *) name->v; -- len = i2d_X509_NAME(x509->cert_info->issuer, &bp); -+ len = i2d_X509_NAME(issuer_name, &bp); - - X509_free(x509); - -@@ -850,7 +858,7 @@ eay_check_x509sign(source, sig, cert) - return -1; - } - -- res = eay_rsa_verify(source, sig, evp->pkey.rsa); -+ res = eay_rsa_verify(source, sig, EVP_PKEY_get0_RSA(evp)); - - EVP_PKEY_free(evp); - X509_free(x509); -@@ -992,7 +1000,7 @@ eay_get_x509sign(src, privkey) - if (evp == NULL) - return NULL; - -- sig = eay_rsa_sign(src, evp->pkey.rsa); -+ sig = eay_rsa_sign(src, EVP_PKEY_get0_RSA(evp)); - - EVP_PKEY_free(evp); - -@@ -1079,7 +1087,11 @@ eay_strerror() - int line, flags; - unsigned long es; - -+#if OPENSSL_VERSION_NUMBER >= 0x10100000L -+ es = 0; /* even when allowed by OPENSSL_API_COMPAT, it is defined as 0 */ -+#else - es = CRYPTO_thread_id(); -+#endif - - while ((l = ERR_get_error_line_data(&file, &line, &data, &flags)) != 0){ - n = snprintf(ebuf + len, sizeof(ebuf) - len, -@@ -1100,7 +1112,7 @@ vchar_t * - evp_crypt(vchar_t *data, vchar_t *key, vchar_t *iv, const EVP_CIPHER *e, int enc) - { - vchar_t *res; -- EVP_CIPHER_CTX ctx; -+ EVP_CIPHER_CTX *ctx; - - if (!e) - return NULL; -@@ -1111,7 +1123,7 @@ evp_crypt(vchar_t *data, vchar_t *key, vchar_t *iv, const EVP_CIPHER *e, int enc - if ((res = vmalloc(data->l)) == NULL) - return NULL; - -- EVP_CIPHER_CTX_init(&ctx); -+ ctx = EVP_CIPHER_CTX_new(); - - switch(EVP_CIPHER_nid(e)){ - case NID_bf_cbc: -@@ -1125,54 +1137,41 @@ evp_crypt(vchar_t *data, vchar_t *key, vchar_t *iv, const EVP_CIPHER *e, int enc - /* XXX: can we do that also for algos with a fixed key size ? - */ - /* init context without key/iv -- */ -- if (!EVP_CipherInit(&ctx, e, NULL, NULL, enc)) -- { -- OpenSSL_BUG(); -- vfree(res); -- return NULL; -- } -+ */ -+ if (!EVP_CipherInit(ctx, e, NULL, NULL, enc)) -+ goto out; - -- /* update key size -- */ -- if (!EVP_CIPHER_CTX_set_key_length(&ctx, key->l)) -- { -- OpenSSL_BUG(); -- vfree(res); -- return NULL; -- } -- -- /* finalize context init with desired key size -- */ -- if (!EVP_CipherInit(&ctx, NULL, (u_char *) key->v, -+ /* update key size -+ */ -+ if (!EVP_CIPHER_CTX_set_key_length(ctx, key->l)) -+ goto out; -+ -+ /* finalize context init with desired key size -+ */ -+ if (!EVP_CipherInit(ctx, NULL, (u_char *) key->v, - (u_char *) iv->v, enc)) -- { -- OpenSSL_BUG(); -- vfree(res); -- return NULL; -- } -+ goto out; - break; - default: -- if (!EVP_CipherInit(&ctx, e, (u_char *) key->v, -- (u_char *) iv->v, enc)) { -- OpenSSL_BUG(); -- vfree(res); -- return NULL; -- } -+ if (!EVP_CipherInit(ctx, e, (u_char *) key->v, -+ (u_char *) iv->v, enc)) -+ goto out; - } - - /* disable openssl padding */ -- EVP_CIPHER_CTX_set_padding(&ctx, 0); -+ EVP_CIPHER_CTX_set_padding(ctx, 0); - -- if (!EVP_Cipher(&ctx, (u_char *) res->v, (u_char *) data->v, data->l)) { -- OpenSSL_BUG(); -- vfree(res); -- return NULL; -- } -+ if (!EVP_Cipher(ctx, (u_char *) res->v, (u_char *) data->v, data->l)) -+ goto out; - -- EVP_CIPHER_CTX_cleanup(&ctx); -+ EVP_CIPHER_CTX_free(ctx); - - return res; -+out: -+ EVP_CIPHER_CTX_free(ctx); -+ OpenSSL_BUG(); -+ vfree(res); -+ return NULL; - } - - int -@@ -1230,7 +1229,7 @@ eay_des_keylen(len) - return evp_keylen(len, EVP_des_cbc()); - } - --#ifdef HAVE_OPENSSL_IDEA_H -+#if defined(HAVE_OPENSSL_IDEA_H) && ! defined(OPENSSL_NO_IDEA) - /* - * IDEA-CBC - */ -@@ -1587,7 +1586,7 @@ eay_aes_keylen(len) - return len; - } - --#if defined(HAVE_OPENSSL_CAMELLIA_H) -+#if defined(HAVE_OPENSSL_CAMELLIA_H) && ! defined(OPENSSL_NO_CAMELLIA) - /* - * CAMELLIA-CBC - */ -@@ -1680,9 +1679,9 @@ eay_hmac_init(key, md) - vchar_t *key; - const EVP_MD *md; - { -- HMAC_CTX *c = racoon_malloc(sizeof(*c)); -+ HMAC_CTX *c = HMAC_CTX_new(); - -- HMAC_Init(c, key->v, key->l, md); -+ HMAC_Init_ex(c, key->v, key->l, md, NULL); - - return (caddr_t)c; - } -@@ -1761,8 +1760,7 @@ eay_hmacsha2_512_final(c) - - HMAC_Final((HMAC_CTX *)c, (unsigned char *) res->v, &l); - res->l = l; -- HMAC_cleanup((HMAC_CTX *)c); -- (void)racoon_free(c); -+ HMAC_CTX_free((HMAC_CTX *)c); - - if (SHA512_DIGEST_LENGTH != res->l) { - plog(LLV_ERROR, LOCATION, NULL, -@@ -1811,8 +1809,7 @@ eay_hmacsha2_384_final(c) - - HMAC_Final((HMAC_CTX *)c, (unsigned char *) res->v, &l); - res->l = l; -- HMAC_cleanup((HMAC_CTX *)c); -- (void)racoon_free(c); -+ HMAC_CTX_free((HMAC_CTX *)c); - - if (SHA384_DIGEST_LENGTH != res->l) { - plog(LLV_ERROR, LOCATION, NULL, -@@ -1861,8 +1858,7 @@ eay_hmacsha2_256_final(c) - - HMAC_Final((HMAC_CTX *)c, (unsigned char *) res->v, &l); - res->l = l; -- HMAC_cleanup((HMAC_CTX *)c); -- (void)racoon_free(c); -+ HMAC_CTX_free((HMAC_CTX *)c); - - if (SHA256_DIGEST_LENGTH != res->l) { - plog(LLV_ERROR, LOCATION, NULL, -@@ -1912,8 +1908,7 @@ eay_hmacsha1_final(c) - - HMAC_Final((HMAC_CTX *)c, (unsigned char *) res->v, &l); - res->l = l; -- HMAC_cleanup((HMAC_CTX *)c); -- (void)racoon_free(c); -+ HMAC_CTX_free((HMAC_CTX *)c); - - if (SHA_DIGEST_LENGTH != res->l) { - plog(LLV_ERROR, LOCATION, NULL, -@@ -1962,8 +1957,7 @@ eay_hmacmd5_final(c) - - HMAC_Final((HMAC_CTX *)c, (unsigned char *) res->v, &l); - res->l = l; -- HMAC_cleanup((HMAC_CTX *)c); -- (void)racoon_free(c); -+ HMAC_CTX_free((HMAC_CTX *)c); - - if (MD5_DIGEST_LENGTH != res->l) { - plog(LLV_ERROR, LOCATION, NULL, -@@ -2266,6 +2260,7 @@ eay_dh_generate(prime, g, publen, pub, priv) - u_int32_t g; - { - BIGNUM *p = NULL; -+ BIGNUM *BNg = NULL; - DH *dh = NULL; - int error = -1; - -@@ -2276,25 +2271,28 @@ eay_dh_generate(prime, g, publen, pub, priv) - - if ((dh = DH_new()) == NULL) - goto end; -- dh->p = p; -- p = NULL; /* p is now part of dh structure */ -- dh->g = NULL; -- if ((dh->g = BN_new()) == NULL) -+ if ((BNg = BN_new()) == NULL) - goto end; -- if (!BN_set_word(dh->g, g)) -+ if (!BN_set_word(BNg, g)) - goto end; -+ if (! DH_set0_pqg(dh, p, NULL, BNg)) -+ goto end; -+ BNg = NULL; -+ p = NULL; /* p is now part of dh structure */ - - if (publen != 0) -- dh->length = publen; -+ DH_set_length(dh, publen); - - /* generate public and private number */ - if (!DH_generate_key(dh)) - goto end; - - /* copy results to buffers */ -- if (eay_bn2v(pub, dh->pub_key) < 0) -+ BIGNUM *pub_key, *priv_key; -+ DH_get0_key(dh, (const BIGNUM**) &pub_key, (const BIGNUM**) &priv_key); -+ if (eay_bn2v(pub, pub_key) < 0) - goto end; -- if (eay_bn2v(priv, dh->priv_key) < 0) { -+ if (eay_bn2v(priv, priv_key) < 0) { - vfree(*pub); - goto end; - } -@@ -2306,6 +2304,8 @@ end: - DH_free(dh); - if (p != 0) - BN_free(p); -+ if (BNg != 0) -+ BN_free(BNg); - return(error); - } - -@@ -2319,6 +2319,10 @@ eay_dh_compute(prime, g, pub, priv, pub2, key) - int l; - unsigned char *v = NULL; - int error = -1; -+ BIGNUM *p = BN_new(); -+ BIGNUM *BNg = BN_new(); -+ BIGNUM *pub_key = BN_new(); -+ BIGNUM *priv_key = BN_new(); - - /* make public number to compute */ - if (eay_v2bn(&dh_pub, pub2) < 0) -@@ -2327,19 +2331,21 @@ eay_dh_compute(prime, g, pub, priv, pub2, key) - /* make DH structure */ - if ((dh = DH_new()) == NULL) - goto end; -- if (eay_v2bn(&dh->p, prime) < 0) -+ if (p == NULL || BNg == NULL || pub_key == NULL || priv_key == NULL) - goto end; -- if (eay_v2bn(&dh->pub_key, pub) < 0) -+ -+ if (eay_v2bn(&p, prime) < 0) - goto end; -- if (eay_v2bn(&dh->priv_key, priv) < 0) -+ if (eay_v2bn(&pub_key, pub) < 0) - goto end; -- dh->length = pub2->l * 8; -- -- dh->g = NULL; -- if ((dh->g = BN_new()) == NULL) -+ if (eay_v2bn(&priv_key, priv) < 0) - goto end; -- if (!BN_set_word(dh->g, g)) -+ if (!BN_set_word(BNg, g)) - goto end; -+ DH_set0_key(dh, pub_key, priv_key); -+ DH_set_length(dh, pub2->l * 8); -+ DH_set0_pqg(dh, p, NULL, BNg); -+ pub_key = priv_key = p = BNg = NULL; - - if ((v = racoon_calloc(prime->l, sizeof(u_char))) == NULL) - goto end; -@@ -2350,6 +2356,14 @@ eay_dh_compute(prime, g, pub, priv, pub2, key) - error = 0; - - end: -+ if (p != NULL) -+ BN_free(p); -+ if (BNg != NULL) -+ BN_free(BNg); -+ if (pub_key != NULL) -+ BN_free(pub_key); -+ if (priv_key != NULL) -+ BN_free(priv_key); - if (dh_pub != NULL) - BN_free(dh_pub); - if (dh != NULL) -@@ -2400,12 +2414,14 @@ eay_bn2v(var, bn) - void - eay_init() - { -+#if OPENSSL_VERSION_NUMBER < 0x10100000L - OpenSSL_add_all_algorithms(); - ERR_load_crypto_strings(); - #ifdef HAVE_OPENSSL_ENGINE_H - ENGINE_load_builtin_engines(); - ENGINE_register_all_complete(); - #endif -+#endif - } - - vchar_t * -@@ -2504,8 +2520,7 @@ binbuf_pubkey2rsa(vchar_t *binbuf) - goto out; - } - -- rsa_pub->n = mod; -- rsa_pub->e = exp; -+ RSA_set0_key(rsa_pub, mod, exp, NULL); - - out: - return rsa_pub; -@@ -2582,5 +2597,5 @@ eay_random() - const char * - eay_version() - { -- return SSLeay_version(SSLEAY_VERSION); -+ return OpenSSL_version(OPENSSL_VERSION); - } -diff --git a/src/racoon/crypto_openssl.h b/src/racoon/crypto_openssl.h -index 66fac73..ee5b765 100644 ---- a/src/racoon/crypto_openssl.h -+++ b/src/racoon/crypto_openssl.h -@@ -124,7 +124,7 @@ extern vchar_t *eay_aes_decrypt __P((vchar_t *, vchar_t *, vchar_t *)); - extern int eay_aes_weakkey __P((vchar_t *)); - extern int eay_aes_keylen __P((int)); - --#if defined(HAVE_OPENSSL_CAMELLIA_H) -+#if defined(HAVE_OPENSSL_CAMELLIA_H) && ! defined(OPENSSL_NO_CAMELLIA) - /* Camellia */ - extern vchar_t *eay_camellia_encrypt __P((vchar_t *, vchar_t *, vchar_t *)); - extern vchar_t *eay_camellia_decrypt __P((vchar_t *, vchar_t *, vchar_t *)); -diff --git a/src/racoon/eaytest.c b/src/racoon/eaytest.c -index 1474bdc..ae09db3 100644 ---- a/src/racoon/eaytest.c -+++ b/src/racoon/eaytest.c -@@ -62,6 +62,7 @@ - #include "dhgroup.h" - #include "crypto_openssl.h" - #include "gnuc.h" -+#include "openssl_compat.h" - - #include "package_version.h" - -@@ -103,7 +104,7 @@ rsa_verify_with_pubkey(src, sig, pubkey_txt) - printf ("PEM_read_PUBKEY(): %s\n", eay_strerror()); - return -1; - } -- error = eay_check_rsasign(src, sig, evp->pkey.rsa); -+ error = eay_check_rsasign(src, sig, EVP_PKEY_get0_RSA(evp)); - - return error; - } -@@ -698,7 +699,7 @@ ciphertest(ac, av) - eay_cast_encrypt, eay_cast_decrypt) < 0) - return -1; - --#ifdef HAVE_OPENSSL_IDEA_H -+#if defined(HAVE_OPENSSL_IDEA_H) && ! defined(OPENSSL_NO_IDEA) - if (ciphertest_1 ("IDEA", - &data, 8, - &key, key.l, -@@ -715,7 +716,7 @@ ciphertest(ac, av) - eay_rc5_encrypt, eay_rc5_decrypt) < 0) - return -1; - #endif --#if defined(HAVE_OPENSSL_CAMELLIA_H) -+#if defined(HAVE_OPENSSL_CAMELLIA_H) && ! defined(OPENSSL_NO_CAMELLIA) - if (ciphertest_1 ("CAMELLIA", - &data, 16, - &key, key.l, -diff --git a/src/racoon/ipsec_doi.c b/src/racoon/ipsec_doi.c -index 84a4c71..b52469f 100644 ---- a/src/racoon/ipsec_doi.c -+++ b/src/racoon/ipsec_doi.c -@@ -715,7 +715,7 @@ out: - /* key length must not be specified on some algorithms */ - if (keylen) { - if (sa->enctype == OAKLEY_ATTR_ENC_ALG_DES --#ifdef HAVE_OPENSSL_IDEA_H -+#if defined(HAVE_OPENSSL_IDEA_H) && ! defined(OPENSSL_NO_IDEA) - || sa->enctype == OAKLEY_ATTR_ENC_ALG_IDEA - #endif - || sa->enctype == OAKLEY_ATTR_ENC_ALG_3DES) { -diff --git a/src/racoon/openssl_compat.c b/src/racoon/openssl_compat.c -new file mode 100644 -index 0000000..864b5fb ---- /dev/null -+++ b/src/racoon/openssl_compat.c -@@ -0,0 +1,213 @@ -+/* -+ * Copyright 2016 The OpenSSL Project Authors. All Rights Reserved. -+ * -+ * Licensed under the OpenSSL license (the "License"). You may not use -+ * this file except in compliance with the License. You can obtain a copy -+ * in the file LICENSE in the source distribution or at -+ * https://www.openssl.org/source/license.html -+ */ -+ -+#include "openssl_compat.h" -+ -+#if OPENSSL_VERSION_NUMBER < 0x10100000L -+ -+#include -+ -+static void *OPENSSL_zalloc(size_t num) -+{ -+ void *ret = OPENSSL_malloc(num); -+ -+ if (ret != NULL) -+ memset(ret, 0, num); -+ return ret; -+} -+ -+int RSA_set0_key(RSA *r, BIGNUM *n, BIGNUM *e, BIGNUM *d) -+{ -+ /* If the fields n and e in r are NULL, the corresponding input -+ * parameters MUST be non-NULL for n and e. d may be -+ * left NULL (in case only the public key is used). -+ */ -+ if ((r->n == NULL && n == NULL) -+ || (r->e == NULL && e == NULL)) -+ return 0; -+ -+ if (n != NULL) { -+ BN_free(r->n); -+ r->n = n; -+ } -+ if (e != NULL) { -+ BN_free(r->e); -+ r->e = e; -+ } -+ if (d != NULL) { -+ BN_free(r->d); -+ r->d = d; -+ } -+ -+ return 1; -+} -+ -+int RSA_set0_factors(RSA *r, BIGNUM *p, BIGNUM *q) -+{ -+ /* If the fields p and q in r are NULL, the corresponding input -+ * parameters MUST be non-NULL. -+ */ -+ if ((r->p == NULL && p == NULL) -+ || (r->q == NULL && q == NULL)) -+ return 0; -+ -+ if (p != NULL) { -+ BN_free(r->p); -+ r->p = p; -+ } -+ if (q != NULL) { -+ BN_free(r->q); -+ r->q = q; -+ } -+ -+ return 1; -+} -+ -+int RSA_set0_crt_params(RSA *r, BIGNUM *dmp1, BIGNUM *dmq1, BIGNUM *iqmp) -+{ -+ /* If the fields dmp1, dmq1 and iqmp in r are NULL, the corresponding input -+ * parameters MUST be non-NULL. -+ */ -+ if ((r->dmp1 == NULL && dmp1 == NULL) -+ || (r->dmq1 == NULL && dmq1 == NULL) -+ || (r->iqmp == NULL && iqmp == NULL)) -+ return 0; -+ -+ if (dmp1 != NULL) { -+ BN_free(r->dmp1); -+ r->dmp1 = dmp1; -+ } -+ if (dmq1 != NULL) { -+ BN_free(r->dmq1); -+ r->dmq1 = dmq1; -+ } -+ if (iqmp != NULL) { -+ BN_free(r->iqmp); -+ r->iqmp = iqmp; -+ } -+ -+ return 1; -+} -+ -+void RSA_get0_key(const RSA *r, -+ const BIGNUM **n, const BIGNUM **e, const BIGNUM **d) -+{ -+ if (n != NULL) -+ *n = r->n; -+ if (e != NULL) -+ *e = r->e; -+ if (d != NULL) -+ *d = r->d; -+} -+ -+void RSA_get0_factors(const RSA *r, const BIGNUM **p, const BIGNUM **q) -+{ -+ if (p != NULL) -+ *p = r->p; -+ if (q != NULL) -+ *q = r->q; -+} -+ -+void RSA_get0_crt_params(const RSA *r, -+ const BIGNUM **dmp1, const BIGNUM **dmq1, -+ const BIGNUM **iqmp) -+{ -+ if (dmp1 != NULL) -+ *dmp1 = r->dmp1; -+ if (dmq1 != NULL) -+ *dmq1 = r->dmq1; -+ if (iqmp != NULL) -+ *iqmp = r->iqmp; -+} -+ -+int DH_set0_pqg(DH *dh, BIGNUM *p, BIGNUM *q, BIGNUM *g) -+{ -+ /* If the fields p and g in d are NULL, the corresponding input -+ * parameters MUST be non-NULL. q may remain NULL. -+ */ -+ if ((dh->p == NULL && p == NULL) -+ || (dh->g == NULL && g == NULL)) -+ return 0; -+ -+ if (p != NULL) { -+ BN_free(dh->p); -+ dh->p = p; -+ } -+ if (q != NULL) { -+ BN_free(dh->q); -+ dh->q = q; -+ } -+ if (g != NULL) { -+ BN_free(dh->g); -+ dh->g = g; -+ } -+ -+ if (q != NULL) { -+ dh->length = BN_num_bits(q); -+ } -+ -+ return 1; -+} -+ -+void DH_get0_key(const DH *dh, const BIGNUM **pub_key, const BIGNUM **priv_key) -+{ -+ if (pub_key != NULL) -+ *pub_key = dh->pub_key; -+ if (priv_key != NULL) -+ *priv_key = dh->priv_key; -+} -+ -+int DH_set0_key(DH *dh, BIGNUM *pub_key, BIGNUM *priv_key) -+{ -+ /* If the field pub_key in dh is NULL, the corresponding input -+ * parameters MUST be non-NULL. The priv_key field may -+ * be left NULL. -+ */ -+ if (dh->pub_key == NULL && pub_key == NULL) -+ return 0; -+ -+ if (pub_key != NULL) { -+ BN_free(dh->pub_key); -+ dh->pub_key = pub_key; -+ } -+ if (priv_key != NULL) { -+ BN_free(dh->priv_key); -+ dh->priv_key = priv_key; -+ } -+ -+ return 1; -+} -+ -+int DH_set_length(DH *dh, long length) -+{ -+ dh->length = length; -+ return 1; -+} -+ -+HMAC_CTX *HMAC_CTX_new(void) -+{ -+ return OPENSSL_zalloc(sizeof(HMAC_CTX)); -+} -+ -+void HMAC_CTX_free(HMAC_CTX *ctx) -+{ -+ HMAC_CTX_cleanup(ctx); -+ OPENSSL_free(ctx); -+} -+ -+RSA *EVP_PKEY_get0_RSA(EVP_PKEY *pkey) -+{ -+ if (pkey->type != EVP_PKEY_RSA) { -+ return NULL; -+ } -+ return pkey->pkey.rsa; -+} -+ -+ -+#endif /* OPENSSL_VERSION_NUMBER */ -diff --git a/src/racoon/openssl_compat.h b/src/racoon/openssl_compat.h -new file mode 100644 -index 0000000..9e152c2 ---- /dev/null -+++ b/src/racoon/openssl_compat.h -@@ -0,0 +1,45 @@ -+#ifndef OPENSSL_COMPAT_H -+#define OPENSSL_COMPAT_H -+ -+#include -+#if OPENSSL_VERSION_NUMBER < 0x10100000L -+ -+#include -+#include -+#include -+#include -+ -+int RSA_set0_key(RSA *r, BIGNUM *n, BIGNUM *e, BIGNUM *d); -+int RSA_set0_factors(RSA *r, BIGNUM *p, BIGNUM *q); -+int RSA_set0_crt_params(RSA *r, BIGNUM *dmp1, BIGNUM *dmq1, BIGNUM *iqmp); -+void RSA_get0_key(const RSA *r, const BIGNUM **n, const BIGNUM **e, const BIGNUM **d); -+void RSA_get0_factors(const RSA *r, const BIGNUM **p, const BIGNUM **q); -+void RSA_get0_crt_params(const RSA *r, const BIGNUM **dmp1, const BIGNUM **dmq1, const BIGNUM **iqmp); -+ -+int DH_set0_pqg(DH *dh, BIGNUM *p, BIGNUM *q, BIGNUM *g); -+void DH_get0_key(const DH *dh, const BIGNUM **pub_key, const BIGNUM **priv_key); -+int DH_set0_key(DH *dh, BIGNUM *pub_key, BIGNUM *priv_key); -+int DH_set_length(DH *dh, long length); -+ -+HMAC_CTX *HMAC_CTX_new(void); -+void HMAC_CTX_free(HMAC_CTX* ctx); -+ -+RSA *EVP_PKEY_get0_RSA(EVP_PKEY *pkey); -+ -+#define ASN1_STRING_length(s) s->length -+#define ASN1_STRING_get0_data(s) s->data -+ -+#define X509_get_subject_name(x) x->cert_info->subject -+#define X509_get_issuer_name(x) x->cert_info->issuer -+#define X509_NAME_ENTRY_get_data(n) n->value -+#define X509_NAME_ENTRY_get_object(n) n->object -+#define X509_STORE_CTX_get_current_cert(ctx) ctx->current_cert -+#define X509_STORE_CTX_get_error(ctx) ctx->error -+#define X509_STORE_CTX_get_error_depth(ctx) ctx->error_depth -+ -+#define OPENSSL_VERSION SSLEAY_VERSION -+#define OpenSSL_version SSLeay_version -+ -+#endif /* OPENSSL_VERSION_NUMBER */ -+ -+#endif /* OPENSSL_COMPAT_H */ -diff --git a/src/racoon/plainrsa-gen.c b/src/racoon/plainrsa-gen.c -index cad1861..b949b08 100644 ---- a/src/racoon/plainrsa-gen.c -+++ b/src/racoon/plainrsa-gen.c -@@ -60,6 +60,7 @@ - #include "vmbuf.h" - #include "plog.h" - #include "crypto_openssl.h" -+#include "openssl_compat.h" - - #include "package_version.h" - -@@ -90,12 +91,14 @@ mix_b64_pubkey(const RSA *key) - char *binbuf; - long binlen, ret; - vchar_t *res; -- -- binlen = 1 + BN_num_bytes(key->e) + BN_num_bytes(key->n); -+ const BIGNUM *e, *n; -+ -+ RSA_get0_key(key, &n, &e, NULL); -+ binlen = 1 + BN_num_bytes(e) + BN_num_bytes(n); - binbuf = malloc(binlen); - memset(binbuf, 0, binlen); -- binbuf[0] = BN_bn2bin(key->e, (unsigned char *) &binbuf[1]); -- ret = BN_bn2bin(key->n, (unsigned char *) (&binbuf[binbuf[0] + 1])); -+ binbuf[0] = BN_bn2bin(e, (unsigned char *) &binbuf[1]); -+ ret = BN_bn2bin(n, (unsigned char *) (&binbuf[binbuf[0] + 1])); - if (1 + binbuf[0] + ret != binlen) { - plog(LLV_ERROR, LOCATION, NULL, - "Pubkey generation failed. This is really strange...\n"); -@@ -131,16 +134,20 @@ print_rsa_key(FILE *fp, const RSA *key) - - fprintf(fp, "# : PUB 0s%s\n", pubkey64->v); - fprintf(fp, ": RSA\t{\n"); -- fprintf(fp, "\t# RSA %d bits\n", BN_num_bits(key->n)); -+ const BIGNUM *n, *e, *d, *p, *q, *dmp1, *dmq1, *iqmp; -+ RSA_get0_key(key, &n, &e, &d); -+ RSA_get0_factors(key, &p, &q); -+ RSA_get0_crt_params(key, &dmp1, &dmq1, &iqmp); -+ fprintf(fp, "\t# RSA %d bits\n", BN_num_bits(n)); - fprintf(fp, "\t# pubkey=0s%s\n", pubkey64->v); -- fprintf(fp, "\tModulus: 0x%s\n", lowercase(BN_bn2hex(key->n))); -- fprintf(fp, "\tPublicExponent: 0x%s\n", lowercase(BN_bn2hex(key->e))); -- fprintf(fp, "\tPrivateExponent: 0x%s\n", lowercase(BN_bn2hex(key->d))); -- fprintf(fp, "\tPrime1: 0x%s\n", lowercase(BN_bn2hex(key->p))); -- fprintf(fp, "\tPrime2: 0x%s\n", lowercase(BN_bn2hex(key->q))); -- fprintf(fp, "\tExponent1: 0x%s\n", lowercase(BN_bn2hex(key->dmp1))); -- fprintf(fp, "\tExponent2: 0x%s\n", lowercase(BN_bn2hex(key->dmq1))); -- fprintf(fp, "\tCoefficient: 0x%s\n", lowercase(BN_bn2hex(key->iqmp))); -+ fprintf(fp, "\tModulus: 0x%s\n", lowercase(BN_bn2hex(n))); -+ fprintf(fp, "\tPublicExponent: 0x%s\n", lowercase(BN_bn2hex(e))); -+ fprintf(fp, "\tPrivateExponent: 0x%s\n", lowercase(BN_bn2hex(d))); -+ fprintf(fp, "\tPrime1: 0x%s\n", lowercase(BN_bn2hex(p))); -+ fprintf(fp, "\tPrime2: 0x%s\n", lowercase(BN_bn2hex(q))); -+ fprintf(fp, "\tExponent1: 0x%s\n", lowercase(BN_bn2hex(dmp1))); -+ fprintf(fp, "\tExponent2: 0x%s\n", lowercase(BN_bn2hex(dmq1))); -+ fprintf(fp, "\tCoefficient: 0x%s\n", lowercase(BN_bn2hex(iqmp))); - fprintf(fp, " }\n"); - - vfree(pubkey64); -@@ -203,11 +210,13 @@ int - gen_rsa_key(FILE *fp, size_t bits, unsigned long exp) - { - int ret; -- RSA *key; -+ RSA *key = RSA_new(); -+ BIGNUM *e = BN_new(); - -- key = RSA_generate_key(bits, exp, NULL, NULL); -- if (!key) { -+ BN_set_word(e, exp); -+ if (! RSA_generate_key_ex(key, bits, e, NULL)) { - fprintf(stderr, "RSA_generate_key(): %s\n", eay_strerror()); -+ RSA_free(key); - return -1; - } - -diff --git a/src/racoon/prsa_par.y b/src/racoon/prsa_par.y -index 1987e4d..27ce4c6 100644 ---- a/src/racoon/prsa_par.y -+++ b/src/racoon/prsa_par.y -@@ -68,6 +68,7 @@ - #include "isakmp_var.h" - #include "handler.h" - #include "crypto_openssl.h" -+#include "openssl_compat.h" - #include "sockmisc.h" - #include "rsalist.h" - -@@ -85,7 +86,18 @@ char *prsa_cur_fname = NULL; - struct genlist *prsa_cur_list = NULL; - enum rsa_key_type prsa_cur_type = RSA_TYPE_ANY; - --static RSA *rsa_cur; -+struct my_rsa_st { -+ BIGNUM *n; -+ BIGNUM *e; -+ BIGNUM *d; -+ BIGNUM *p; -+ BIGNUM *q; -+ BIGNUM *dmp1; -+ BIGNUM *dmq1; -+ BIGNUM *iqmp; -+}; -+ -+static struct my_rsa_st *rsa_cur; - - void - prsaerror(const char *s, ...) -@@ -201,8 +213,12 @@ rsa_statement: - rsa_cur->iqmp = NULL; - } - } -- $$ = rsa_cur; -- rsa_cur = RSA_new(); -+ RSA * rsa_tmp = RSA_new(); -+ RSA_set0_key(rsa_tmp, rsa_cur->n, rsa_cur->e, rsa_cur->d); -+ RSA_set0_factors(rsa_tmp, rsa_cur->p, rsa_cur->q); -+ RSA_set0_crt_params(rsa_tmp, rsa_cur->dmp1, rsa_cur->dmq1, rsa_cur->iqmp); -+ $$ = rsa_tmp; -+ memset(rsa_cur, 0, sizeof(struct my_rsa_st)); - } - | TAG_PUB BASE64 - { -@@ -351,10 +367,12 @@ prsa_parse_file(struct genlist *list, char *fname, enum rsa_key_type type) - prsa_cur_fname = fname; - prsa_cur_list = list; - prsa_cur_type = type; -- rsa_cur = RSA_new(); -+ rsa_cur = malloc(sizeof(struct my_rsa_st)); -+ memset(rsa_cur, 0, sizeof(struct my_rsa_st)); - ret = prsaparse(); - if (rsa_cur) { -- RSA_free(rsa_cur); -+ memset(rsa_cur, 0, sizeof(struct my_rsa_st)); -+ free(rsa_cur); - rsa_cur = NULL; - } - fclose (fp); -diff --git a/src/racoon/rsalist.c b/src/racoon/rsalist.c -index f152c82..96e8363 100644 ---- a/src/racoon/rsalist.c -+++ b/src/racoon/rsalist.c -@@ -52,6 +52,7 @@ - #include "genlist.h" - #include "remoteconf.h" - #include "crypto_openssl.h" -+#include "openssl_compat.h" - - #ifndef LIST_FIRST - #define LIST_FIRST(head) ((head)->lh_first) -@@ -98,7 +99,9 @@ rsa_key_dup(struct rsa_key *key) - return NULL; - - if (key->rsa) { -- new->rsa = key->rsa->d != NULL ? RSAPrivateKey_dup(key->rsa) : RSAPublicKey_dup(key->rsa); -+ const BIGNUM *d; -+ RSA_get0_key(key->rsa, NULL, NULL, &d); -+ new->rsa = (d != NULL ? RSAPrivateKey_dup(key->rsa) : RSAPublicKey_dup(key->rsa)); - if (new->rsa == NULL) - goto dup_error; - } --- -2.16.1 - diff --git a/package/ipsec-tools/Config.in b/package/ipsec-tools/Config.in deleted file mode 100644 index 59154123e6..0000000000 --- a/package/ipsec-tools/Config.in +++ /dev/null @@ -1,75 +0,0 @@ -config BR2_PACKAGE_IPSEC_TOOLS - bool "ipsec-tools" - depends on BR2_USE_MMU # fork() - depends on !BR2_TOOLCHAIN_USES_MUSL # Use __P() macro all over the tree - select BR2_PACKAGE_OPENSSL - select BR2_PACKAGE_FLEX - help - This package is required to support IPSec for Linux 2.6+ - - http://ipsec-tools.sourceforge.net/ - -if BR2_PACKAGE_IPSEC_TOOLS - -config BR2_PACKAGE_IPSEC_TOOLS_ADMINPORT - bool "Enable racoonctl(8)" - default y - help - Lets racoon to listen to racoon admin port, which is to - be contacted by racoonctl(8). - -config BR2_PACKAGE_IPSEC_TOOLS_NATT - bool "Enable NAT-Traversal" - help - This needs kernel support, which is available on Linux. On - NetBSD, NAT-Traversal kernel support has not been integrated - yet, you can get it from here: - - http://ipsec-tools.sourceforge.net/netbsd_nat-t.diff If you - - live in a country where software patents are legal, using - NAT-Traversal might infringe a patent. - -config BR2_PACKAGE_IPSEC_TOOLS_FRAG - bool "Enable IKE fragmentation" - help - Enable IKE fragmentation, which is a workaround for - broken routers that drop fragmented packets - -config BR2_PACKAGE_IPSEC_TOOLS_DPD - bool "Enable DPD (Dead Peer Detection)" - help - Enable dead peer detection support - -config BR2_PACKAGE_IPSEC_TOOLS_STATS - bool "Enable statistics logging function" - default y - -config BR2_PACKAGE_IPSEC_TOOLS_READLINE - bool "Enable readline input support" - select BR2_PACKAGE_READLINE - -config BR2_PACKAGE_IPSEC_TOOLS_HYBRID - bool "Enable hybrid, both mode-cfg and xauth support" - help - Hybrid mode is required for successful interoperability - (e.g. Cisco VPN Client). - -choice - prompt "Security context" - default BR2_PACKAGE_IPSEC_TOOLS_SECCTX_DISABLE - help - Selects whether or not to enable security context support. - -config BR2_PACKAGE_IPSEC_TOOLS_SECCTX_DISABLE - bool "Disable security context support" - -config BR2_PACKAGE_IPSEC_TOOLS_SECCTX_ENABLE - bool "Enable SELinux security context support" - -config BR2_PACKAGE_IPSEC_TOOLS_SECCTX_KERNEL - bool "Enable kernel security context" - -endchoice - -endif diff --git a/package/ipsec-tools/ipsec-tools.hash b/package/ipsec-tools/ipsec-tools.hash deleted file mode 100644 index 7a944eb8ee..0000000000 --- a/package/ipsec-tools/ipsec-tools.hash +++ /dev/null @@ -1,6 +0,0 @@ -# From http://sourceforge.net/projects/ipsec-tools/files/ipsec-tools/0.8.2/ -md5 d53ec14a0a3ece64e09e5e34b3350b41 ipsec-tools-0.8.2.tar.bz2 -sha1 7d92cae9fde59fb4f125636698c43b0a3df3d0f0 ipsec-tools-0.8.2.tar.bz2 - -# Locally calculated -sha256 3f4af4aef0b2599928bee9875935b8fad8449ddbb98ea7da74c20c3dff5cdef7 src/setkey/setkey.c diff --git a/package/ipsec-tools/ipsec-tools.mk b/package/ipsec-tools/ipsec-tools.mk deleted file mode 100644 index 72bd8c196c..0000000000 --- a/package/ipsec-tools/ipsec-tools.mk +++ /dev/null @@ -1,85 +0,0 @@ -################################################################################ -# -# ipsec-tools -# -################################################################################ - -IPSEC_TOOLS_VERSION = 0.8.2 -IPSEC_TOOLS_SOURCE = ipsec-tools-$(IPSEC_TOOLS_VERSION).tar.bz2 -IPSEC_TOOLS_SITE = http://sourceforge.net/projects/ipsec-tools/files/ipsec-tools/$(IPSEC_TOOLS_VERSION) -IPSEC_TOOLS_LICENSE = BSD-3-Clause -IPSEC_TOOLS_LICENSE_FILES = src/setkey/setkey.c -IPSEC_TOOLS_INSTALL_STAGING = YES -IPSEC_TOOLS_MAKE = $(MAKE1) -IPSEC_TOOLS_DEPENDENCIES = openssl flex host-pkgconf host-flex host-bison -# we patch configure.ac -IPSEC_TOOLS_AUTORECONF = YES - -# 0004-CVE-2015-4047.patch -IPSEC_TOOLS_IGNORE_CVES += CVE-2015-4047 -# 0005-CVE-2016-10396.patch -IPSEC_TOOLS_IGNORE_CVES += CVE-2016-10396 - -# configure hardcodes -Werror, so override CFLAGS on make invocation -IPSEC_TOOLS_MAKE_OPTS = CFLAGS='$(TARGET_CFLAGS)' - -IPSEC_TOOLS_CONF_ENV = LIBS=`$(PKG_CONFIG_HOST_BINARY) --libs openssl` - -IPSEC_TOOLS_CONF_OPTS = \ - --without-libpam \ - --disable-gssapi \ - --with-kernel-headers=$(STAGING_DIR)/usr/include - -ifeq ($(BR2_PACKAGE_IPSEC_TOOLS_ADMINPORT),y) -IPSEC_TOOLS_CONF_OPTS += --enable-adminport -else -IPSEC_TOOLS_CONF_OPTS += --disable-adminport -endif - -ifeq ($(BR2_PACKAGE_IPSEC_TOOLS_NATT),y) -IPSEC_TOOLS_CONF_OPTS += --enable-natt -else -IPSEC_TOOLS_CONF_OPTS += --disable-natt -endif - -ifeq ($(BR2_PACKAGE_IPSEC_TOOLS_FRAG),y) -IPSEC_TOOLS_CONF_OPTS += --enable-frag -else -IPSEC_TOOLS_CONF_OPTS += --disable-frag -endif - -ifeq ($(BR2_PACKAGE_IPSEC_TOOLS_DPD),y) -IPSEC_TOOLS_CONF_OPTS += --enable-dpd -else -IPSEC_TOOLS_CONF_OPTS += --disable-dpd -endif - -ifeq ($(BR2_PACKAGE_IPSEC_TOOLS_STATS),y) -IPSEC_TOOLS_CONF_OPTS += --enable-stats -else -IPSEC_TOOLS_CONF_OPTS += --disable-stats -endif - -ifneq ($(BR2_PACKAGE_IPSEC_TOOLS_READLINE),y) -IPSEC_TOOLS_CONF_OPTS += --without-readline -else -IPSEC_TOOLS_DEPENDENCIES += readline -endif - -ifeq ($(BR2_PACKAGE_IPSEC_TOOLS_HYBRID),y) -IPSEC_TOOLS_CONF_OPTS += --enable-hybrid -else -IPSEC_TOOLS_CONF_OPTS += --disable-hybrid -endif - -ifeq ($(BR2_PACKAGE_IPSEC_TOOLS_SECCTX_DISABLE),y) -IPSEC_TOOLS_CONF_OPTS += --enable-security-context=no -endif -ifeq ($(BR2_PACKAGE_IPSEC_TOOLS_SECCTX_ENABLE),y) -IPSEC_TOOLS_CONF_OPTS += --enable-security-context=yes -endif -ifeq ($(BR2_PACKAGE_IPSEC_TOOLS_SECCTX_KERNEL),y) -IPSEC_TOOLS_CONF_OPTS += --enable-security-context=kernel -endif - -$(eval $(autotools-package)) From 90b9f1f881b0eb0225da15177e486a5dbd986b8d Mon Sep 17 00:00:00 2001 From: Jeff Zignego Date: Thu, 19 Nov 2020 15:25:45 -0600 Subject: [PATCH 39/95] package/qt5/qt5base: fix typo for syslog support Fix typo from 109df4deba86839704d902204d130714e32df0fa that added this option. Signed-off-by: Jeff Zignego Reviewed-by: Peter Seiderer Signed-off-by: Thomas Petazzoni --- package/qt5/qt5base/qt5base.mk | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package/qt5/qt5base/qt5base.mk b/package/qt5/qt5base/qt5base.mk index fa92625738..4cd5980f0b 100644 --- a/package/qt5/qt5base/qt5base.mk +++ b/package/qt5/qt5base/qt5base.mk @@ -255,7 +255,7 @@ QT5BASE_CONFIGURE_OPTS += -no-journald endif ifeq ($(BR2_PACKAGE_QT5BASE_SYSLOG),y) -QT5BASE_CONIGURE_OPTS += -syslog +QT5BASE_CONFIGURE_OPTS += -syslog else QT5BASE_CONFIGURE_OPTS += -no-syslog endif From 3ff1a64497a55ce25b7577844b85fba6aa4dcc32 Mon Sep 17 00:00:00 2001 From: Fabrice Fontaine Date: Thu, 19 Nov 2020 13:03:47 +0100 Subject: [PATCH 40/95] package/radvd: fix build without stack-protector Commit 6e85ab44493624748398ffb2c6bf4bda409f2de7 forgot to manage the new --{with,without}-stack-protector option which has been added with https://github.com/reubenhwk/radvd/commit/f2cb35449f35b5815f3804161c968fde5ef2982b and is enabled by default Fixes: - http://autobuild.buildroot.org/results/e778df96f0a382a5b119724ee69f956ad455c452 Signed-off-by: Fabrice Fontaine Signed-off-by: Thomas Petazzoni --- package/radvd/radvd.mk | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/package/radvd/radvd.mk b/package/radvd/radvd.mk index 7a650dc3c5..bed6367841 100644 --- a/package/radvd/radvd.mk +++ b/package/radvd/radvd.mk @@ -15,6 +15,12 @@ RADVD_CONF_ENV = \ RADVD_LICENSE = BSD-4-Clause-like RADVD_LICENSE_FILES = COPYRIGHT +ifeq ($(BR2_TOOLCHAIN_HAS_SSP),y) +RADVD_CONF_OPTS += --with-stack-protector +else +RADVD_CONF_OPTS += --without-stack-protector +endif + # We don't provide /etc/radvd.conf, so disable the service by default. define RADVD_INSTALL_INIT_SYSTEMD $(INSTALL) -D -m 0644 package/radvd/50-radvd.preset \ From 7c51fc3897ab98630f9a9896f41afe32092b36fc Mon Sep 17 00:00:00 2001 From: Mike Frampton Date: Thu, 19 Nov 2020 22:08:52 +1300 Subject: [PATCH 41/95] package/qcom-db410c-firmware: new package Installs the required Wifi/BT firmware blobs for the Qualcomm Dragonboard 410c SBC. Signed-off-by: Mike Frampton Signed-off-by: Thomas Petazzoni --- DEVELOPERS | 3 ++ package/Config.in | 1 + package/qcom-db410c-firmware/Config.in | 7 ++++ .../qcom-db410c-firmware.hash | 3 ++ .../qcom-db410c-firmware.mk | 41 +++++++++++++++++++ 5 files changed, 55 insertions(+) create mode 100644 package/qcom-db410c-firmware/Config.in create mode 100644 package/qcom-db410c-firmware/qcom-db410c-firmware.hash create mode 100644 package/qcom-db410c-firmware/qcom-db410c-firmware.mk diff --git a/DEVELOPERS b/DEVELOPERS index d0c9c16423..a76b539285 100644 --- a/DEVELOPERS +++ b/DEVELOPERS @@ -1864,6 +1864,9 @@ N: Michel Stempin F: board/licheepi/ F: configs/licheepi_zero_defconfig +N: Mike Frampton +F: package/qcom-db410c-firmware/ + N: Mike Harmony F: board/sinovoip/m2-plus/ F: configs/bananapi_m2_plus_defconfig diff --git a/package/Config.in b/package/Config.in index d32a271113..3c5664f723 100644 --- a/package/Config.in +++ b/package/Config.in @@ -402,6 +402,7 @@ menu "Firmware" source "package/linux-firmware/Config.in" source "package/murata-cyw-fw/Config.in" source "package/odroidc2-firmware/Config.in" + source "package/qcom-db410c-firmware/Config.in" source "package/rpi-bt-firmware/Config.in" source "package/rpi-firmware/Config.in" source "package/rpi-wifi-firmware/Config.in" diff --git a/package/qcom-db410c-firmware/Config.in b/package/qcom-db410c-firmware/Config.in new file mode 100644 index 0000000000..9f68857490 --- /dev/null +++ b/package/qcom-db410c-firmware/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_QCOM_DB410C_FIRMWARE + bool "qcom-db410c-firmware" + select BR2_PACKAGE_HOST_MTOOLS + help + Wifi/BT firmware for Qualcomm Dragonboard 410c SBC. + + https://releases.linaro.org/96boards/dragonboard410c/qualcomm/firmware/ diff --git a/package/qcom-db410c-firmware/qcom-db410c-firmware.hash b/package/qcom-db410c-firmware/qcom-db410c-firmware.hash new file mode 100644 index 0000000000..e8ac31eb39 --- /dev/null +++ b/package/qcom-db410c-firmware/qcom-db410c-firmware.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 46953b974c5c58c7ca66db414437c0268b033ac9d28127e98d9c4e1a49359da5 linux-board-support-package-r1034.2.1.zip +sha256 11e60ad6f83c2a86e40dca374c24230b53650dd3e0adf2e72c15f8cafedc2e5a LICENSE diff --git a/package/qcom-db410c-firmware/qcom-db410c-firmware.mk b/package/qcom-db410c-firmware/qcom-db410c-firmware.mk new file mode 100644 index 0000000000..9ef32cc9d4 --- /dev/null +++ b/package/qcom-db410c-firmware/qcom-db410c-firmware.mk @@ -0,0 +1,41 @@ +################################################################################ +# +# qcom-db410c-firmware +# +################################################################################ + +QCOM_DB410C_FIRMWARE_VERSION = 1034.2.1 +QCOM_DB410C_FIRMWARE_BASE = linux-board-support-package-r$(QCOM_DB410C_FIRMWARE_VERSION) +QCOM_DB410C_FIRMWARE_SOURCE = $(QCOM_DB410C_FIRMWARE_BASE).zip +QCOM_DB410C_FIRMWARE_SITE = https://releases.linaro.org/96boards/dragonboard410c/qualcomm/firmware +QCOM_DB410C_FIRMWARE_LICENCE = Qualcomm firmware license +QCOM_DB410C_FIRMWARE_LICENSE_FILES = LICENSE +QCOM_DB410C_FIRMWARE_DEPENDENCIES = host-mtools + +define QCOM_DB410C_FIRMWARE_EXTRACT_CMDS + $(UNZIP) -d $(@D) \ + $(QCOM_DB410C_FIRMWARE_DL_DIR)/$(QCOM_DB410C_FIRMWARE_SOURCE) + mv $(@D)/$(QCOM_DB410C_FIRMWARE_BASE)/* $(@D) + rmdir $(@D)/$(QCOM_DB410C_FIRMWARE_BASE) +endef + +# Install the Wifi/Bt firmware blobs to target. These commands are +# based on firmware-qcom-dragonboard410c_*.bb in the OpenEmbedded +# meta-qcom layer, see https://github.com/ndechesne/meta-qcom +define QCOM_DB410C_FIRMWARE_INSTALL_TARGET_CMDS + $(INSTALL) -D -m 0644 \ + $(@D)/efs-seed/fs_image_linux.tar.gz.mbn.img \ + $(TARGET_DIR)/boot/modem_fsg + + $(INSTALL) -d $(TARGET_DIR)/lib/firmware + cp -r $(@D)/proprietary-linux/wlan \ + $(TARGET_DIR)/lib/firmware/ + + $(INSTALL) -d $(TARGET_DIR)/lib/firmware/qcom/msm8916 + MTOOLS_SKIP_CHECK=1 $(HOST_DIR)/bin/mcopy -n -i \ + $(@D)/bootloaders-linux/NON-HLOS.bin \ + ::image/modem.* ::image/mba.mbn ::image/wcnss.* \ + $(TARGET_DIR)/lib/firmware/qcom/msm8916 +endef + +$(eval $(generic-package)) From 05b11e24c3d4013d3caa0453d9bada9905795e35 Mon Sep 17 00:00:00 2001 From: Mike Frampton Date: Thu, 19 Nov 2020 22:08:53 +1300 Subject: [PATCH 42/95] package/abootimg: add host build Enabling package host build for abootimg so that boot images can be created for boards which boot from this format. Signed-off-by: Mike Frampton Signed-off-by: Thomas Petazzoni --- package/Config.in.host | 1 + package/abootimg/Config.in.host | 8 ++++++++ package/abootimg/abootimg.mk | 10 ++++++++++ 3 files changed, 19 insertions(+) create mode 100644 package/abootimg/Config.in.host diff --git a/package/Config.in.host b/package/Config.in.host index c69c756f3a..4f69785810 100644 --- a/package/Config.in.host +++ b/package/Config.in.host @@ -1,5 +1,6 @@ menu "Host utilities" + source "package/abootimg/Config.in.host" source "package/aespipe/Config.in.host" source "package/android-tools/Config.in.host" source "package/asn1c/Config.in.host" diff --git a/package/abootimg/Config.in.host b/package/abootimg/Config.in.host new file mode 100644 index 0000000000..65dc479870 --- /dev/null +++ b/package/abootimg/Config.in.host @@ -0,0 +1,8 @@ +config BR2_PACKAGE_HOST_ABOOTIMG + bool "host abootimg" + select BR2_PACKAGE_HOST_UTIL_LINUX + help + Tool to manipulate Android Boot Images, either on files + or directly on /dev block devices. + + https://github.com/ggrandou/abootimg diff --git a/package/abootimg/abootimg.mk b/package/abootimg/abootimg.mk index e906546948..64cee13c32 100644 --- a/package/abootimg/abootimg.mk +++ b/package/abootimg/abootimg.mk @@ -11,6 +11,7 @@ ABOOTIMG_LICENSE_FILES = LICENSE # depends on libblkid from util-linux ABOOTIMG_DEPENDENCIES = util-linux +ABOOTIMG_HOST_DEPENDENCIES = host-util-linux define ABOOTIMG_BUILD_CMDS $(TARGET_MAKE_ENV) $(MAKE) $(TARGET_CONFIGURE_OPTS) -C $(@D) @@ -20,4 +21,13 @@ define ABOOTIMG_INSTALL_TARGET_CMDS $(INSTALL) -m 0755 $(@D)/abootimg $(TARGET_DIR)/usr/bin/abootimg endef +define HOST_ABOOTIMG_BUILD_CMDS + $(MAKE) $(HOST_CONFIGURE_OPTS) -C $(@D) +endef + +define HOST_ABOOTIMG_INSTALL_CMDS + $(INSTALL) -m 0755 $(@D)/abootimg $(HOST_DIR)/usr/bin/abootimg +endef + $(eval $(generic-package)) +$(eval $(host-generic-package)) From 189880db3a41098596942ebf328a1dca704a729a Mon Sep 17 00:00:00 2001 From: Fabrice Fontaine Date: Fri, 20 Nov 2020 23:09:49 +0100 Subject: [PATCH 43/95] package/abootimg: fix host build Commit 05b11e24c3d4013d3caa0453d9bada9905795e35 wrongly added ABOOTIMG_HOST_DEPENDENCIES instead of HOST_ABOOTIMG_DEPENDENCIES Fixes: - http://autobuild.buildroot.org/results/c13b5424cec151cd3ad71b1cb38d6ad8ff68afa0 Signed-off-by: Fabrice Fontaine Signed-off-by: Peter Korsgaard --- package/abootimg/abootimg.mk | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package/abootimg/abootimg.mk b/package/abootimg/abootimg.mk index 64cee13c32..ab6c709318 100644 --- a/package/abootimg/abootimg.mk +++ b/package/abootimg/abootimg.mk @@ -11,7 +11,7 @@ ABOOTIMG_LICENSE_FILES = LICENSE # depends on libblkid from util-linux ABOOTIMG_DEPENDENCIES = util-linux -ABOOTIMG_HOST_DEPENDENCIES = host-util-linux +HOST_ABOOTIMG_DEPENDENCIES = host-util-linux define ABOOTIMG_BUILD_CMDS $(TARGET_MAKE_ENV) $(MAKE) $(TARGET_CONFIGURE_OPTS) -C $(@D) From 0279850fef955f03690d0df106e42ca2dab2ef4a Mon Sep 17 00:00:00 2001 From: Fabrice Fontaine Date: Wed, 18 Nov 2020 08:00:06 +0100 Subject: [PATCH 44/95] package/jpeg-turbo: fix license hash Commit 105d61c85062b18bc9555011f909c8c8a5a33277 forgot to update hash of LICENSE.md (update in year: https://github.com/libjpeg-turbo/libjpeg-turbo/commit/00607ec260efa4cfe10f9b36d6e3d3590ae92d79) While at it, also update indentation in hash file (two spaces) Fixes: - http://autobuild.buildroot.org/results/66fb5c0171af73d4c1c93241b285fac8f8f494f7 Signed-off-by: Fabrice Fontaine Signed-off-by: Peter Korsgaard --- package/jpeg-turbo/jpeg-turbo.hash | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/package/jpeg-turbo/jpeg-turbo.hash b/package/jpeg-turbo/jpeg-turbo.hash index abf129bd93..c4d4a0274f 100644 --- a/package/jpeg-turbo/jpeg-turbo.hash +++ b/package/jpeg-turbo/jpeg-turbo.hash @@ -1,7 +1,7 @@ # From https://sourceforge.net/projects/libjpeg-turbo/files/2.0.5/ -sha1 9d4c565d402b2f5661be78d76098073ec7e30f10 libjpeg-turbo-2.0.5.tar.gz -md5 3a7dc293918775fc933f81e2bce36464 libjpeg-turbo-2.0.5.tar.gz +sha1 9d4c565d402b2f5661be78d76098073ec7e30f10 libjpeg-turbo-2.0.5.tar.gz +md5 3a7dc293918775fc933f81e2bce36464 libjpeg-turbo-2.0.5.tar.gz # Locally computed -sha256 16f8f6f2715b3a38ab562a84357c793dd56ae9899ce130563c72cd93d8357b5d libjpeg-turbo-2.0.5.tar.gz -sha256 69e570a251515ced17d4492256d57c89db77ed949652f88a44c80c1ca9607920 LICENSE.md -sha256 82fece2bff2669c476495f0fe70096b154e8bc5b40916a64e99836d9a01c3110 README.ijg +sha256 16f8f6f2715b3a38ab562a84357c793dd56ae9899ce130563c72cd93d8357b5d libjpeg-turbo-2.0.5.tar.gz +sha256 0b7a24c3906d26dfbe24e96e9415549b387c3227140dc6b7ab2fb924254e37a1 LICENSE.md +sha256 82fece2bff2669c476495f0fe70096b154e8bc5b40916a64e99836d9a01c3110 README.ijg From 3f2ccb46823469eca2cf2361ee79aaaf0dd4b39a Mon Sep 17 00:00:00 2001 From: Ismael Luceno Date: Sun, 22 Nov 2020 21:51:53 +0100 Subject: [PATCH 45/95] package/axel: bump version to 2.17.10 Signed-off-by: Ismael Luceno Signed-off-by: Peter Korsgaard --- package/axel/axel.hash | 2 +- package/axel/axel.mk | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package/axel/axel.hash b/package/axel/axel.hash index 66d56b6581..552f940652 100644 --- a/package/axel/axel.hash +++ b/package/axel/axel.hash @@ -1,2 +1,2 @@ -sha256 f1364d9b55d435efc6d32218097a50a63be7b1300138e698133cf19ad3aa3a54 axel-2.17.9.tar.xz +sha256 46eb4f10a11c4e50320ae6a034ef03ffe59dc11c3c6542a9867a3e4dc0c4b44e axel-2.17.10.tar.xz sha256 ab15fd526bd8dd18a9e77ebc139656bf4d33e97fc7238cd11bf60e2b9b8666c6 COPYING diff --git a/package/axel/axel.mk b/package/axel/axel.mk index 0d5fc2a3c6..2118a3438e 100644 --- a/package/axel/axel.mk +++ b/package/axel/axel.mk @@ -4,7 +4,7 @@ # ################################################################################ -AXEL_VERSION = 2.17.9 +AXEL_VERSION = 2.17.10 AXEL_SITE = https://github.com/axel-download-accelerator/axel/releases/download/v$(AXEL_VERSION) AXEL_SOURCE = axel-$(AXEL_VERSION).tar.xz AXEL_LICENSE = GPL-2.0+ From 1ff7f003e1cfc02241aef8f35429462edd60ed09 Mon Sep 17 00:00:00 2001 From: Thomas Petazzoni Date: Wed, 4 Nov 2020 15:51:35 +0100 Subject: [PATCH 46/95] support/scripts/cve.py: properly match CPEs with version '*' Currently, when the version encoded in a CPE is '-', we assume all versions are affected, but when it's '*' with no further range information, we assume no version is affected. This doesn't make sense, so instead, we handle '*' and '-' in the same way. If there's no version information available in the CVE CPE ID, we assume all versions are affected. This increases quite a bit the number of CVEs and package affected: - "total-cves": 302, - "pkg-cves": 100, + "total-cves": 597, + "pkg-cves": 135, For example, CVE-2007-4476 has a CPE ID of: cpe:2.3:a:gnu:tar:*:*:*:*:*:*:*:* So it should be taken into account. In this specific case, it is combined with an AND with CPE ID cpe:2.3:o:suse:suse_linux:10:*:enterprise_server:*:*:*:*:* but since we don't support this kind of matching, we'd better be on the safe side, and report this CVE as affecting tar, do an analysis of the CVE impact, and document it in TAR_IGNORE_CVES. Signed-off-by: Thomas Petazzoni Reviewed-by: Matt Weber Signed-off-by: Thomas Petazzoni --- support/scripts/cve.py | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/support/scripts/cve.py b/support/scripts/cve.py index 6396019e0e..e7472cd470 100755 --- a/support/scripts/cve.py +++ b/support/scripts/cve.py @@ -144,10 +144,6 @@ class CVE: # Version is defined, this is a '=' match op_start = '=' v_start = version - elif version == '-': - # no version information is available - op_start = '=' - v_start = version else: # Parse start version, end version and operators if 'versionStartIncluding' in cpe: @@ -206,11 +202,8 @@ class CVE: for cpe in self.each_cpe(): if cpe['product'] != name: continue - if cpe['v_start'] == '-': - return self.CVE_AFFECTS if not cpe['v_start'] and not cpe['v_end']: - print("No CVE affected version") - continue + return self.CVE_AFFECTS if not pkg_version: continue From 97a54c33c917d530933fc8f30e17baf4a72b3d50 Mon Sep 17 00:00:00 2001 From: Matt Weber Date: Wed, 4 Nov 2020 15:51:37 +0100 Subject: [PATCH 47/95] package/pkg-generic.mk: add CPE ID related package variables Currently, the match between Buildroot packages and CVEs is solely based on the package names. Unfortunately, as one can imagine, there isn't necessarily a strict mapping between Buildroot package names, and how software projects are referenced in the National Vulnerability Database (NVD) which we use. The NVD has defined the concept of CPE (Common Platform Enumeration) identifiers, which uniquely identifies software components based on string looking like this: cpe:2.3:a:netsurf-browser:libnsbmp:0.1.2:*:*:*:*:*:*:* In particular, this CPE identifier contains a vendor name (here "netsurf-browser"), a product name (here "libnsbmp") and a version (here "0.1.2"). This patch series introduces the concept of CPE ID in Buildroot, where each package can be associated to a CPE ID. A package can define one or several of: - _CPE_ID_VENDOR - _CPE_ID_PRODUCT - _CPE_ID_VERSION - _CPE_ID_VERSION_MINOR - _CPE_ID_PREFIX If one or several of those variables are defined, then the _CPE_ID will be defined by the generic package infrastructure as follows: $(2)_CPE_ID = $$($(2)_CPE_ID_PREFIX):$$($(2)_CPE_ID_VENDOR):$$($(2)_CPE_ID_NAME):$$($(2)_CPE_ID_VERSION):$$($(2)_CPE_ID_VERSION_MINOR):*:*:*:*:*:* _CPE_ID_* variables that are not explicitly specified by the package will carry a default value defined by the generic package infrastructure. If a package is happy with the default _CPE_ID, and therefore does not need to define any of _CPE_ID_{VENDOR,PRODUCT,...}, it can set _CPE_ID_VALID = YES. If any of the _CPE_ID_{VENDOR,PRODUCT,...} variables are defined by the package, then _CPE_ID_VALID = YES will be set by the generic package infrastructure. Then, it's only if _CPE_ID_VALID = YES that a _CPE_ID will be defined. Indeed, we want to be able to distinguish packages for which the CPE ID information has been checked and is considered valid, from packages for which the CPE ID information has never been verified. For this reason, we cannot simply define a default value for _CPE_ID. The _CPE_ID_* values for the host package are inherited from the same variables of the corresponding target package, as we normally do for most package variables. Signed-off-by: Matt Weber Signed-off-by: Thomas Petazzoni Reviewed-by: Matt Weber Reviewed-by: Heiko Thiery Signed-off-by: Thomas Petazzoni --- package/pkg-generic.mk | 70 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 70 insertions(+) diff --git a/package/pkg-generic.mk b/package/pkg-generic.mk index 54de03da03..621fb91424 100644 --- a/package/pkg-generic.mk +++ b/package/pkg-generic.mk @@ -608,6 +608,76 @@ $(2)_REDISTRIBUTE ?= YES $(2)_REDIST_SOURCES_DIR = $$(REDIST_SOURCES_DIR_$$(call UPPERCASE,$(4)))/$$($(2)_BASENAME_RAW) +# If any of the _CPE_ID_* variables are set, we assume the CPE ID +# information is valid for this package. +ifneq ($$($(2)_CPE_ID_VENDOR)$$($(2)_CPE_ID_NAME)$$($(2)_CPE_ID_VERSION)$$($(2)_CPE_ID_VERSION_MINOR)$$($(2)_CPE_ID_PREFIX),) +$(2)_CPE_ID_VALID = YES +endif + +# When we're a host package, make sure to use the variables of the +# corresponding target package, if any. +ifneq ($$($(3)_CPE_ID_VENDOR)$$($(3)_CPE_ID_NAME)$$($(3)_CPE_ID_VERSION)$$($(3)_CPE_ID_VERSION_MINOR)$$($(3)_CPE_ID_PREFIX),) +$(2)_CPE_ID_VALID = YES +endif + +# If the CPE ID is valid for the target package so it is for the host +# package +ifndef $(2)_CPE_ID_VALID + ifdef $(3)_CPE_ID_VALID + $(2)_CPE_ID_VALID = $$($(3)_CPE_ID_VALID) + endif +endif + +ifeq ($$($(2)_CPE_ID_VALID),YES) + # CPE_ID_VENDOR + ifndef $(2)_CPE_ID_VENDOR + ifdef $(3)_CPE_ID_VENDOR + $(2)_CPE_ID_VENDOR = $$($(3)_CPE_ID_VENDOR) + else + $(2)_CPE_ID_VENDOR = $$($(2)_RAWNAME)_project + endif + endif + + # CPE_ID_NAME + ifndef $(2)_CPE_ID_NAME + ifdef $(3)_CPE_ID_NAME + $(2)_CPE_ID_NAME = $$($(3)_CPE_ID_NAME) + else + $(2)_CPE_ID_NAME = $$($(2)_RAWNAME) + endif + endif + + # CPE_ID_VERSION + ifndef $(2)_CPE_ID_VERSION + ifdef $(3)_CPE_ID_VERSION + $(2)_CPE_ID_VERSION = $$($(3)_CPE_ID_VERSION) + else + $(2)_CPE_ID_VERSION = $$($(2)_VERSION) + endif + endif + + # CPE_ID_VERSION_MINOR + ifndef $(2)_CPE_ID_VERSION_MINOR + ifdef $(3)_CPE_ID_VERSION_MINOR + $(2)_CPE_ID_VERSION_MINOR = $$($(3)_CPE_ID_VERSION_MINOR) + else + $(2)_CPE_ID_VERSION_MINOR = * + endif + endif + + # CPE_ID_PREFIX + ifndef $(2)_CPE_ID_PREFIX + ifdef $(3)_CPE_ID_PREFIX + $(2)_CPE_ID_PREFIX = $$($(3)_CPE_ID_PREFIX) + else + $(2)_CPE_ID_PREFIX = cpe:2.3:a + endif + endif + + # Calculate complete CPE ID + $(2)_CPE_ID = $$($(2)_CPE_ID_PREFIX):$$($(2)_CPE_ID_VENDOR):$$($(2)_CPE_ID_NAME):$$($(2)_CPE_ID_VERSION):$$($(2)_CPE_ID_VERSION_MINOR):*:*:*:*:*:* +endif # ifeq ($$($(2)_CPE_ID_VALID),YES) + # When a target package is a toolchain dependency set this variable to # 'NO' so the 'toolchain' dependency is not added to prevent a circular # dependency. From db24c08bea4a2e7f16ab8f2ff394b9b6dae119f1 Mon Sep 17 00:00:00 2001 From: Thomas Petazzoni Date: Wed, 4 Nov 2020 15:51:38 +0100 Subject: [PATCH 48/95] docs/manual: document _CPE_ID variables Signed-off-by: Thomas Petazzoni Reviewed-by: Matt Weber Reviewed-by: Heiko Thiery Signed-off-by: Thomas Petazzoni --- docs/manual/adding-packages-generic.txt | 39 +++++++++++++++++++++++++ 1 file changed, 39 insertions(+) diff --git a/docs/manual/adding-packages-generic.txt b/docs/manual/adding-packages-generic.txt index b8bfcb4aff..21fedd8b6b 100644 --- a/docs/manual/adding-packages-generic.txt +++ b/docs/manual/adding-packages-generic.txt @@ -502,6 +502,45 @@ LIBFOO_IGNORE_CVES += CVE-2020-12345 LIBFOO_IGNORE_CVES += CVE-2020-54321 ---------------------- +* +LIBFOO_CPE_ID_*+ variables is a set of variables that allows the + package to define its https://nvd.nist.gov/products/cpe[CPE + identifier]. The available variables are: ++ +-- +** +LIBFOO_CPE_ID_PREFIX+, specifies the prefix of the CPE identifier, + i.e the first three fields. When not defined, the default value is + +cpe:2.3:a+. + +** +LIBFOO_CPE_ID_VENDOR+, specifies the vendor part of the CPE + identifier. When not defined, the default value is + +_project+. + +** +LIBFOO_CPE_ID_PRODUCT+, specifies the product part of the CPE + identifier. When not defined, the default value is ++. + +** +LIBFOO_CPE_ID_VERSION+, specifies the version part of the CPE + identifier. When not defined the default value is + +$(LIBFOO_VERSION)+. + +** +LIBFOO_CPE_ID_VERSION_MINOR+ specifies the _update_ part of the + CPE identifier. When not defined the default value is +*+. +-- ++ +If any of those variables is defined, then the generic package +infrastructure assumes the package provides valid CPE information. In +this case, +LIBFOO_CPE_ID_VALID = YES+ will be set, and the generic +package infrastructure will define +LIBFOO_CPE_ID+. ++ +Alternatively, a package can also explicitly set +LIBFOO_CPE_ID_VALID += YES+ if the default values for +LIBFOO_CPE_ID_PREFIX+, ++LIBFOO_CPE_ID_VENDOR+, +LIBFOO_CPE_ID_PRODUCT+, ++LIBFOO_CPE_ID_VERSION+, +LIBFOO_CPE_ID_VERSION_MINOR+ are all correct +for this package and don't need to be explicitly overridden. ++ +For a host package, if its +LIBFOO_CPE_ID_*+ variables are not +defined, it inherits the value of those variables from the +corresponding target package. + The recommended way to define these variables is to use the following syntax: From c02d4652747aa3d86197ac6879b94955c95a5286 Mon Sep 17 00:00:00 2001 From: Thomas Petazzoni Date: Wed, 4 Nov 2020 15:51:39 +0100 Subject: [PATCH 49/95] package/pkg-utils.mk: expose CPE ID in show-info when available This commit exposes a new per-package property in the "make show-info" JSON output: "cpe-id", which exists when a valid CPE ID is available for the package. Signed-off-by: Thomas Petazzoni Reviewed-by: Matt Weber Tested-by: Heiko Thiery Signed-off-by: Thomas Petazzoni --- package/pkg-utils.mk | 3 +++ 1 file changed, 3 insertions(+) diff --git a/package/pkg-utils.mk b/package/pkg-utils.mk index 4fcb076e21..a2cc160d0b 100644 --- a/package/pkg-utils.mk +++ b/package/pkg-utils.mk @@ -119,6 +119,9 @@ define _json-info-pkg "reverse_dependencies": [ $(call make-comma-list,$(sort $($(1)_RDEPENDENCIES))) ] + $(if $($(1)_CPE_ID_VALID), \ + $(comma) "cpe-id": "$($(1)_CPE_ID)" \ + ) $(if $($(1)_IGNORE_CVES), $(comma) "ignore_cves": [ $(call make-comma-list,$(sort $($(1)_IGNORE_CVES))) From 3950c53cd0d062c1bb446d0837fee2c005cae009 Mon Sep 17 00:00:00 2001 From: Thomas Petazzoni Date: Wed, 4 Nov 2020 15:51:40 +0100 Subject: [PATCH 50/95] support/testing/tests/core/test_cpeid: new test This commit adds a number of test cases to verify that the CPE_ID_* variables are properly handled by the generic package infrastructure and that the "make show-info" JSON output matches what we expect. A total of 5 different example packages are used to exercise different scenarios of CPE_ID_* variables usage. Signed-off-by: Thomas Petazzoni Reviewed-by: Matt Weber Signed-off-by: Thomas Petazzoni --- .../tests/core/cpeid-br2-external/Config.in | 0 .../core/cpeid-br2-external/external.desc | 1 + .../tests/core/cpeid-br2-external/external.mk | 1 + .../package/cpe-id-pkg1/cpe-id-pkg1.mk | 4 + .../package/cpe-id-pkg2/cpe-id-pkg2.mk | 3 + .../package/cpe-id-pkg3/cpe-id-pkg3.mk | 5 + .../package/cpe-id-pkg4/cpe-id-pkg4.mk | 9 ++ .../package/cpe-id-pkg5/cpe-id-pkg5.mk | 16 +++ support/testing/tests/core/test_cpeid.py | 109 ++++++++++++++++++ 9 files changed, 148 insertions(+) create mode 100644 support/testing/tests/core/cpeid-br2-external/Config.in create mode 100644 support/testing/tests/core/cpeid-br2-external/external.desc create mode 100644 support/testing/tests/core/cpeid-br2-external/external.mk create mode 100644 support/testing/tests/core/cpeid-br2-external/package/cpe-id-pkg1/cpe-id-pkg1.mk create mode 100644 support/testing/tests/core/cpeid-br2-external/package/cpe-id-pkg2/cpe-id-pkg2.mk create mode 100644 support/testing/tests/core/cpeid-br2-external/package/cpe-id-pkg3/cpe-id-pkg3.mk create mode 100644 support/testing/tests/core/cpeid-br2-external/package/cpe-id-pkg4/cpe-id-pkg4.mk create mode 100644 support/testing/tests/core/cpeid-br2-external/package/cpe-id-pkg5/cpe-id-pkg5.mk create mode 100644 support/testing/tests/core/test_cpeid.py diff --git a/support/testing/tests/core/cpeid-br2-external/Config.in b/support/testing/tests/core/cpeid-br2-external/Config.in new file mode 100644 index 0000000000..e69de29bb2 diff --git a/support/testing/tests/core/cpeid-br2-external/external.desc b/support/testing/tests/core/cpeid-br2-external/external.desc new file mode 100644 index 0000000000..d19ae79e7a --- /dev/null +++ b/support/testing/tests/core/cpeid-br2-external/external.desc @@ -0,0 +1 @@ +name: CPE_ID diff --git a/support/testing/tests/core/cpeid-br2-external/external.mk b/support/testing/tests/core/cpeid-br2-external/external.mk new file mode 100644 index 0000000000..47492d7f82 --- /dev/null +++ b/support/testing/tests/core/cpeid-br2-external/external.mk @@ -0,0 +1 @@ +include $(sort $(wildcard $(BR2_EXTERNAL_CPE_ID_PATH)/package/*/*.mk)) diff --git a/support/testing/tests/core/cpeid-br2-external/package/cpe-id-pkg1/cpe-id-pkg1.mk b/support/testing/tests/core/cpeid-br2-external/package/cpe-id-pkg1/cpe-id-pkg1.mk new file mode 100644 index 0000000000..5e7460286b --- /dev/null +++ b/support/testing/tests/core/cpeid-br2-external/package/cpe-id-pkg1/cpe-id-pkg1.mk @@ -0,0 +1,4 @@ +CPE_ID_PKG1_VERSION = 42 + +$(eval $(generic-package)) +$(eval $(host-generic-package)) diff --git a/support/testing/tests/core/cpeid-br2-external/package/cpe-id-pkg2/cpe-id-pkg2.mk b/support/testing/tests/core/cpeid-br2-external/package/cpe-id-pkg2/cpe-id-pkg2.mk new file mode 100644 index 0000000000..12b3f3223f --- /dev/null +++ b/support/testing/tests/core/cpeid-br2-external/package/cpe-id-pkg2/cpe-id-pkg2.mk @@ -0,0 +1,3 @@ +CPE_ID_PKG2_VERSION = 67 + +$(eval $(host-generic-package)) diff --git a/support/testing/tests/core/cpeid-br2-external/package/cpe-id-pkg3/cpe-id-pkg3.mk b/support/testing/tests/core/cpeid-br2-external/package/cpe-id-pkg3/cpe-id-pkg3.mk new file mode 100644 index 0000000000..5added78df --- /dev/null +++ b/support/testing/tests/core/cpeid-br2-external/package/cpe-id-pkg3/cpe-id-pkg3.mk @@ -0,0 +1,5 @@ +CPE_ID_PKG3_VERSION = 67 +CPE_ID_PKG3_CPE_ID_VALID = YES + +$(eval $(generic-package)) +$(eval $(host-generic-package)) diff --git a/support/testing/tests/core/cpeid-br2-external/package/cpe-id-pkg4/cpe-id-pkg4.mk b/support/testing/tests/core/cpeid-br2-external/package/cpe-id-pkg4/cpe-id-pkg4.mk new file mode 100644 index 0000000000..c37f73fa82 --- /dev/null +++ b/support/testing/tests/core/cpeid-br2-external/package/cpe-id-pkg4/cpe-id-pkg4.mk @@ -0,0 +1,9 @@ +CPE_ID_PKG4_VERSION = 67 +CPE_ID_PKG4_CPE_ID_VENDOR = foo +CPE_ID_PKG4_CPE_ID_NAME = bar +CPE_ID_PKG4_CPE_ID_VERSION = 42 +CPE_ID_PKG4_CPE_ID_VERSION_MINOR = b2 +CPE_ID_PKG4_CPE_ID_PREFIX = cpe:2.4:a + +$(eval $(generic-package)) +$(eval $(host-generic-package)) diff --git a/support/testing/tests/core/cpeid-br2-external/package/cpe-id-pkg5/cpe-id-pkg5.mk b/support/testing/tests/core/cpeid-br2-external/package/cpe-id-pkg5/cpe-id-pkg5.mk new file mode 100644 index 0000000000..18e98c4ca4 --- /dev/null +++ b/support/testing/tests/core/cpeid-br2-external/package/cpe-id-pkg5/cpe-id-pkg5.mk @@ -0,0 +1,16 @@ +CPE_ID_PKG5_VERSION = 57 + +CPE_ID_PKG5_CPE_ID_VENDOR = foo +CPE_ID_PKG5_CPE_ID_NAME = bar +CPE_ID_PKG5_CPE_ID_VERSION = 42 +CPE_ID_PKG5_CPE_ID_VERSION_MINOR = b2 +CPE_ID_PKG5_CPE_ID_PREFIX = cpe:2.4:a + +HOST_CPE_ID_PKG5_CPE_ID_VENDOR = baz +HOST_CPE_ID_PKG5_CPE_ID_NAME = fuz +HOST_CPE_ID_PKG5_CPE_ID_VERSION = 43 +HOST_CPE_ID_PKG5_CPE_ID_VERSION_MINOR = b3 +HOST_CPE_ID_PKG5_CPE_ID_PREFIX = cpe:2.5:a + +$(eval $(generic-package)) +$(eval $(host-generic-package)) diff --git a/support/testing/tests/core/test_cpeid.py b/support/testing/tests/core/test_cpeid.py new file mode 100644 index 0000000000..23471e4444 --- /dev/null +++ b/support/testing/tests/core/test_cpeid.py @@ -0,0 +1,109 @@ +import infra +import subprocess +import json + +class CpeIdTest(infra.basetest.BRConfigTest): + config = "" + br2_external = [infra.filepath("tests/core/cpeid-br2-external")] + + def get_vars(self, var): + cmd = ["make", "--no-print-directory", "-C", self.b.builddir, + "VARS=%s%%" % var, "printvars"] + lines = subprocess.check_output(cmd).splitlines() + return dict([str(x, "utf-8").split("=") for x in lines]) + + def get_json(self, pkg): + cmd = ["make", "--no-print-directory", "-C", self.b.builddir, + "%s-show-info" % pkg] + return json.loads(subprocess.check_output(cmd)) + + def test_pkg1(self): + # this package has no CPE ID information, it should not have + # any CPE_ID variable defined. + pkg_vars = self.get_vars("CPE_ID_PKG1_CPE_ID") + cpe_vars = ["CPE_ID_VALID", "CPE_ID_NAME", "CPE_ID_VERSION", "CPE_ID_VERSION_MINOR", + "CPE_ID_PREFIX", "CPE_ID"] + for v in cpe_vars: + self.assertNotIn("CPE_ID_PKG1_%s" % v, pkg_vars) + pkg_json = self.get_json("cpe-id-pkg1") + self.assertNotIn("cpe-id", pkg_json['cpe-id-pkg1']) + + pkg_vars = self.get_vars("HOST_CPE_ID_PKG1_CPE_ID") + for v in cpe_vars: + self.assertNotIn("HOST_CPE_ID_PKG1_%s" % v, pkg_vars) + pkg_json = self.get_json("host-cpe-id-pkg1") + self.assertNotIn("cpe-id", pkg_json['host-cpe-id-pkg1']) + + def test_pkg2(self): + # this package has no CPE ID information, it should not have + # any CPE_ID variable defined. + pkg_vars = self.get_vars("HOST_CPE_ID_PKG2_CPE_ID") + cpe_vars = ["CPE_ID_VALID", "CPE_ID_NAME", "CPE_ID_VERSION", "CPE_ID_VERSION_MINOR", + "CPE_ID_PREFIX", "CPE_ID"] + for v in cpe_vars: + self.assertNotIn("HOST_CPE_ID_PKG2_%s" % v, pkg_vars) + pkg_json = self.get_json("host-cpe-id-pkg2") + self.assertNotIn("cpe-id", pkg_json['host-cpe-id-pkg2']) + + def test_pkg3(self): + # this package has just _CPE_ID_VALID defined, so verify + # it has the default CPE_ID value, and that inheritance of the + # values for the host package is working + pkg_vars = self.get_vars("CPE_ID_PKG3_CPE_ID") + self.assertEqual(pkg_vars["CPE_ID_PKG3_CPE_ID"], + "cpe:2.3:a:cpe-id-pkg3_project:cpe-id-pkg3:67:*:*:*:*:*:*:*") + self.assertEqual(pkg_vars["CPE_ID_PKG3_CPE_ID_VALID"], "YES") + pkg_json = self.get_json("cpe-id-pkg3") + self.assertEqual(pkg_json['cpe-id-pkg3']['cpe-id'], + "cpe:2.3:a:cpe-id-pkg3_project:cpe-id-pkg3:67:*:*:*:*:*:*:*") + + pkg_vars = self.get_vars("HOST_CPE_ID_PKG3_CPE_ID") + self.assertEqual(pkg_vars["HOST_CPE_ID_PKG3_CPE_ID"], + "cpe:2.3:a:cpe-id-pkg3_project:cpe-id-pkg3:67:*:*:*:*:*:*:*") + self.assertEqual(pkg_vars["HOST_CPE_ID_PKG3_CPE_ID_VALID"], "YES") + pkg_json = self.get_json("host-cpe-id-pkg3") + self.assertEqual(pkg_json['host-cpe-id-pkg3']['cpe-id'], + "cpe:2.3:a:cpe-id-pkg3_project:cpe-id-pkg3:67:*:*:*:*:*:*:*") + + def test_pkg4(self): + # this package defines + # _CPE_ID_{VENDOR,NAME,VERSION,VERSION_MINOR,PREFIX}, + # make sure we get the computed _CPE_ID, and that it is + # inherited by the host variant + pkg_vars = self.get_vars("CPE_ID_PKG4_CPE_ID") + self.assertEqual(pkg_vars["CPE_ID_PKG4_CPE_ID"], + "cpe:2.4:a:foo:bar:42:b2:*:*:*:*:*:*") + self.assertEqual(pkg_vars["CPE_ID_PKG4_CPE_ID_VALID"], "YES") + pkg_json = self.get_json("cpe-id-pkg4") + self.assertEqual(pkg_json['cpe-id-pkg4']['cpe-id'], + "cpe:2.4:a:foo:bar:42:b2:*:*:*:*:*:*") + + pkg_vars = self.get_vars("HOST_CPE_ID_PKG4_CPE_ID") + self.assertEqual(pkg_vars["HOST_CPE_ID_PKG4_CPE_ID"], + "cpe:2.4:a:foo:bar:42:b2:*:*:*:*:*:*") + self.assertEqual(pkg_vars["HOST_CPE_ID_PKG4_CPE_ID_VALID"], "YES") + pkg_json = self.get_json("host-cpe-id-pkg4") + self.assertEqual(pkg_json['host-cpe-id-pkg4']['cpe-id'], + "cpe:2.4:a:foo:bar:42:b2:*:*:*:*:*:*") + + def test_pkg5(self): + # this package defines + # _CPE_ID_{VENDOR,NAME,VERSION,VERSION_MINOR,PREFIX} and + # HOST__CPE_ID_{VENDOR,NAME,VERSION,VERSION_MINOR,PREFIX} + # separately, with different values. Make sure we get the + # right _CPE_ID and HOST__CPE_ID values. + pkg_vars = self.get_vars("CPE_ID_PKG5_CPE_ID") + self.assertEqual(pkg_vars["CPE_ID_PKG5_CPE_ID"], + "cpe:2.4:a:foo:bar:42:b2:*:*:*:*:*:*") + self.assertEqual(pkg_vars["CPE_ID_PKG5_CPE_ID_VALID"], "YES") + pkg_json = self.get_json("cpe-id-pkg5") + self.assertEqual(pkg_json['cpe-id-pkg5']['cpe-id'], + "cpe:2.4:a:foo:bar:42:b2:*:*:*:*:*:*") + + pkg_vars = self.get_vars("HOST_CPE_ID_PKG5_CPE_ID") + self.assertEqual(pkg_vars["HOST_CPE_ID_PKG5_CPE_ID"], + "cpe:2.5:a:baz:fuz:43:b3:*:*:*:*:*:*") + self.assertEqual(pkg_vars["HOST_CPE_ID_PKG5_CPE_ID_VALID"], "YES") + pkg_json = self.get_json("host-cpe-id-pkg5") + self.assertEqual(pkg_json['host-cpe-id-pkg5']['cpe-id'], + "cpe:2.5:a:baz:fuz:43:b3:*:*:*:*:*:*") From 276f1e0a896698abec85500a86686bf72c79eb91 Mon Sep 17 00:00:00 2001 From: Fabrice Fontaine Date: Fri, 27 Nov 2020 18:13:36 +0100 Subject: [PATCH 51/95] package/linux-pam: bump to version 1.5.1 - Drop patches (already in version) and so autoreconf - cracklib is not a dependency since https://github.com/linux-pam/linux-pam/commit/d702ff714c309069111899fd07c09e31c414c166 https://github.com/linux-pam/linux-pam/releases/tag/v1.5.0 Signed-off-by: Fabrice Fontaine Signed-off-by: Peter Korsgaard --- ...when-crypt-does-not-require-libcrypt.patch | 37 -- .../linux-pam/0002-fix-build-on-musl.patch | 320 ------------------ package/linux-pam/linux-pam.hash | 4 +- package/linux-pam/linux-pam.mk | 11 +- 4 files changed, 3 insertions(+), 369 deletions(-) delete mode 100644 package/linux-pam/0001-configure-ac-fix-build-failure-when-crypt-does-not-require-libcrypt.patch delete mode 100644 package/linux-pam/0002-fix-build-on-musl.patch diff --git a/package/linux-pam/0001-configure-ac-fix-build-failure-when-crypt-does-not-require-libcrypt.patch b/package/linux-pam/0001-configure-ac-fix-build-failure-when-crypt-does-not-require-libcrypt.patch deleted file mode 100644 index ebcb81aa91..0000000000 --- a/package/linux-pam/0001-configure-ac-fix-build-failure-when-crypt-does-not-require-libcrypt.patch +++ /dev/null @@ -1,37 +0,0 @@ -From aef363c7e8e942224e6cffc4398366c6e5d31749 Mon Sep 17 00:00:00 2001 -From: Fabrice Fontaine -Date: Thu, 11 Jun 2020 00:04:32 +0200 -Subject: [PATCH] configure.ac: fix build failure when crypt() does not require - libcrypt - -Since commit 522246d20e4cd92fadc2d760228cb7e78cbeb4c5, the build fails -if "none required" is returned by AC_SEARCH_LIBS for libcrypt. - -Resolves: https://github.com/linux-pam/linux-pam/pull/235 -Fixes: http://autobuild.buildroot.org/results/92b3dd7c984d2b843ac9aacacd69eec99f28743e -Fixes: v1.4.0~228 ("Use cached 'crypt' library result correctly") - -Signed-off-by: Fabrice Fontaine -[Retrieved from: -https://github.com/linux-pam/linux-pam/commit/aef363c7e8e942224e6cffc4398366c6e5d31749] ---- - configure.ac | 6 +++++- - 1 file changed, 5 insertions(+), 1 deletion(-) - -diff --git a/configure.ac b/configure.ac -index ea08a7a3..c1862ea7 100644 ---- a/configure.ac -+++ b/configure.ac -@@ -428,7 +428,11 @@ AS_IF([test "x$ac_cv_header_xcrypt_h" = "xyes"], - [crypt_libs="crypt"]) - - BACKUP_LIBS=$LIBS --AC_SEARCH_LIBS([crypt],[$crypt_libs], LIBCRYPT="${ac_cv_search_crypt}", LIBCRYPT="") -+AC_SEARCH_LIBS([crypt],[$crypt_libs]) -+case "$ac_cv_search_crypt" in -+ -l*) LIBCRYPT="$ac_cv_search_crypt" ;; -+ *) LIBCRYPT="" ;; -+esac - AC_CHECK_FUNCS(crypt_r crypt_gensalt_r) - LIBS=$BACKUP_LIBS - AC_SUBST(LIBCRYPT) diff --git a/package/linux-pam/0002-fix-build-on-musl.patch b/package/linux-pam/0002-fix-build-on-musl.patch deleted file mode 100644 index 44fceccc88..0000000000 --- a/package/linux-pam/0002-fix-build-on-musl.patch +++ /dev/null @@ -1,320 +0,0 @@ -From 295bf7403364b23ab03287ecdd95ea266d6f4d89 Mon Sep 17 00:00:00 2001 -From: Fabrice Fontaine -Date: Thu, 11 Jun 2020 17:39:03 +0200 -Subject: [PATCH] fix build on musl - -Rename check_user_in_passwd from pam_localuser.c to -pam_modutil_check_user_in_passwd and use it in pam_faillock.c instead of -fgetpwent_r which is not available on musl - -Fix #236 - -Fixes: - - http://autobuild.buildroot.org/results/0432736ffee376dd84757469434a4bbcfdcdaf4b - -Signed-off-by: Fabrice Fontaine -[Upstream status: https://github.com/linux-pam/linux-pam/pull/237] ---- - libpam/Makefile.am | 1 + - libpam/include/security/pam_modutil.h | 5 ++ - libpam/libpam.map | 5 ++ - libpam/pam_modutil_check_user_in_passwd.c | 89 +++++++++++++++++++++++ - modules/pam_faillock/pam_faillock.c | 37 +--------- - modules/pam_localuser/pam_localuser.c | 86 +--------------------- - 6 files changed, 103 insertions(+), 120 deletions(-) - create mode 100644 libpam/pam_modutil_check_user_in_passwd.c - -diff --git a/libpam/Makefile.am b/libpam/Makefile.am -index 9252a837..a8fc428d 100644 ---- a/libpam/Makefile.am -+++ b/libpam/Makefile.am -@@ -35,6 +35,7 @@ libpam_la_SOURCES = pam_account.c pam_auth.c pam_data.c pam_delay.c \ - pam_misc.c pam_password.c pam_prelude.c \ - pam_session.c pam_start.c pam_strerror.c \ - pam_vprompt.c pam_syslog.c pam_dynamic.c pam_audit.c \ -+ pam_modutil_check_user_in_passwd.c \ - pam_modutil_cleanup.c pam_modutil_getpwnam.c pam_modutil_ioloop.c \ - pam_modutil_getgrgid.c pam_modutil_getpwuid.c pam_modutil_getgrnam.c \ - pam_modutil_getspnam.c pam_modutil_getlogin.c pam_modutil_ingroup.c \ -diff --git a/libpam/include/security/pam_modutil.h b/libpam/include/security/pam_modutil.h -index 3a6aec6a..33f87b90 100644 ---- a/libpam/include/security/pam_modutil.h -+++ b/libpam/include/security/pam_modutil.h -@@ -58,6 +58,11 @@ extern "C" { - - #include - -+extern int PAM_NONNULL((1,2)) -+pam_modutil_check_user_in_passwd(pam_handle_t *pamh, -+ const char *user_name, -+ const char *file_name); -+ - extern struct passwd * PAM_NONNULL((1,2)) - pam_modutil_getpwnam(pam_handle_t *pamh, const char *user); - -diff --git a/libpam/libpam.map b/libpam/libpam.map -index c9690a91..3cc7ef35 100644 ---- a/libpam/libpam.map -+++ b/libpam/libpam.map -@@ -82,3 +82,8 @@ LIBPAM_1.4 { - global: - pam_start_confdir; - } LIBPAM_1.0; -+ -+LIBPAM_MODUTIL_1.4.1 { -+ global: -+ pam_modutil_check_user_in_passwd; -+} LIBPAM_MODUTIL_1.3.2; -diff --git a/libpam/pam_modutil_check_user_in_passwd.c b/libpam/pam_modutil_check_user_in_passwd.c -new file mode 100644 -index 00000000..b998aa25 ---- /dev/null -+++ b/libpam/pam_modutil_check_user_in_passwd.c -@@ -0,0 +1,89 @@ -+#include "pam_modutil_private.h" -+#include -+ -+#include -+#include -+ -+int -+pam_modutil_check_user_in_passwd(pam_handle_t *pamh, -+ const char *user_name, -+ const char *file_name) -+{ -+ int rc; -+ size_t user_len; -+ FILE *fp; -+ char line[BUFSIZ]; -+ -+ /* Validate the user name. */ -+ if ((user_len = strlen(user_name)) == 0) { -+ pam_syslog(pamh, LOG_NOTICE, "user name is not valid"); -+ return PAM_SERVICE_ERR; -+ } -+ -+ if (user_len > sizeof(line) - sizeof(":")) { -+ pam_syslog(pamh, LOG_NOTICE, "user name is too long"); -+ return PAM_SERVICE_ERR; -+ } -+ -+ if (strchr(user_name, ':') != NULL) { -+ /* -+ * "root:x" is not a local user name even if the passwd file -+ * contains a line starting with "root:x:". -+ */ -+ return PAM_PERM_DENIED; -+ } -+ -+ /* Open the passwd file. */ -+ if (file_name == NULL) { -+ file_name = "/etc/passwd"; -+ } -+ if ((fp = fopen(file_name, "r")) == NULL) { -+ pam_syslog(pamh, LOG_ERR, "error opening %s: %m", file_name); -+ return PAM_SERVICE_ERR; -+ } -+ -+ /* -+ * Scan the file using fgets() instead of fgetpwent_r() because -+ * the latter is not flexible enough in handling long lines -+ * in passwd files. -+ */ -+ rc = PAM_PERM_DENIED; -+ while (fgets(line, sizeof(line), fp) != NULL) { -+ size_t line_len; -+ const char *str; -+ -+ /* -+ * Does this line start with the user name -+ * followed by a colon? -+ */ -+ if (strncmp(user_name, line, user_len) == 0 && -+ line[user_len] == ':') { -+ rc = PAM_SUCCESS; -+ break; -+ } -+ /* Has a newline been read? */ -+ line_len = strlen(line); -+ if (line_len < sizeof(line) - 1 || -+ line[line_len - 1] == '\n') { -+ /* Yes, continue with the next line. */ -+ continue; -+ } -+ -+ /* No, read till the end of this line first. */ -+ while ((str = fgets(line, sizeof(line), fp)) != NULL) { -+ line_len = strlen(line); -+ if (line_len == 0 || -+ line[line_len - 1] == '\n') { -+ break; -+ } -+ } -+ if (str == NULL) { -+ /* fgets returned NULL, we are done. */ -+ break; -+ } -+ /* Continue with the next line. */ -+ } -+ -+ fclose(fp); -+ return rc; -+} -diff --git a/modules/pam_faillock/pam_faillock.c b/modules/pam_faillock/pam_faillock.c -index f592d0a2..8bca46ca 100644 ---- a/modules/pam_faillock/pam_faillock.c -+++ b/modules/pam_faillock/pam_faillock.c -@@ -348,42 +348,7 @@ set_conf_opt(pam_handle_t *pamh, struct options *opts, const char *name, const c - static int - check_local_user (pam_handle_t *pamh, const char *user) - { -- struct passwd pw, *pwp; -- char buf[16384]; -- int found = 0; -- FILE *fp; -- int errn; -- -- fp = fopen(PATH_PASSWD, "r"); -- if (fp == NULL) { -- pam_syslog(pamh, LOG_ERR, "unable to open %s: %m", -- PATH_PASSWD); -- return -1; -- } -- -- for (;;) { -- errn = fgetpwent_r(fp, &pw, buf, sizeof (buf), &pwp); -- if (errn == ERANGE) { -- pam_syslog(pamh, LOG_WARNING, "%s contains very long lines; corrupted?", -- PATH_PASSWD); -- break; -- } -- if (errn != 0) -- break; -- if (strcmp(pwp->pw_name, user) == 0) { -- found = 1; -- break; -- } -- } -- -- fclose (fp); -- -- if (errn != 0 && errn != ENOENT) { -- pam_syslog(pamh, LOG_ERR, "unable to enumerate local accounts: %m"); -- return -1; -- } else { -- return found; -- } -+ return pam_modutil_check_user_in_passwd(pamh, user, NULL); - } - - static int -diff --git a/modules/pam_localuser/pam_localuser.c b/modules/pam_localuser/pam_localuser.c -index cb507524..a9f2233c 100644 ---- a/modules/pam_localuser/pam_localuser.c -+++ b/modules/pam_localuser/pam_localuser.c -@@ -45,92 +45,10 @@ - #include - - #include -+#include - #include - #include "pam_inline.h" - --static int --check_user_in_passwd(pam_handle_t *pamh, const char *user_name, -- const char *file_name) --{ -- int rc; -- size_t user_len; -- FILE *fp; -- char line[BUFSIZ]; -- -- /* Validate the user name. */ -- if ((user_len = strlen(user_name)) == 0) { -- pam_syslog(pamh, LOG_NOTICE, "user name is not valid"); -- return PAM_SERVICE_ERR; -- } -- -- if (user_len > sizeof(line) - sizeof(":")) { -- pam_syslog(pamh, LOG_NOTICE, "user name is too long"); -- return PAM_SERVICE_ERR; -- } -- -- if (strchr(user_name, ':') != NULL) { -- /* -- * "root:x" is not a local user name even if the passwd file -- * contains a line starting with "root:x:". -- */ -- return PAM_PERM_DENIED; -- } -- -- /* Open the passwd file. */ -- if (file_name == NULL) { -- file_name = "/etc/passwd"; -- } -- if ((fp = fopen(file_name, "r")) == NULL) { -- pam_syslog(pamh, LOG_ERR, "error opening %s: %m", file_name); -- return PAM_SERVICE_ERR; -- } -- -- /* -- * Scan the file using fgets() instead of fgetpwent_r() because -- * the latter is not flexible enough in handling long lines -- * in passwd files. -- */ -- rc = PAM_PERM_DENIED; -- while (fgets(line, sizeof(line), fp) != NULL) { -- size_t line_len; -- const char *str; -- -- /* -- * Does this line start with the user name -- * followed by a colon? -- */ -- if (strncmp(user_name, line, user_len) == 0 && -- line[user_len] == ':') { -- rc = PAM_SUCCESS; -- break; -- } -- /* Has a newline been read? */ -- line_len = strlen(line); -- if (line_len < sizeof(line) - 1 || -- line[line_len - 1] == '\n') { -- /* Yes, continue with the next line. */ -- continue; -- } -- -- /* No, read till the end of this line first. */ -- while ((str = fgets(line, sizeof(line), fp)) != NULL) { -- line_len = strlen(line); -- if (line_len == 0 || -- line[line_len - 1] == '\n') { -- break; -- } -- } -- if (str == NULL) { -- /* fgets returned NULL, we are done. */ -- break; -- } -- /* Continue with the next line. */ -- } -- -- fclose(fp); -- return rc; --} -- - int - pam_sm_authenticate(pam_handle_t *pamh, int flags UNUSED, - int argc, const char **argv) -@@ -173,7 +91,7 @@ pam_sm_authenticate(pam_handle_t *pamh, int flags UNUSED, - return rc == PAM_CONV_AGAIN ? PAM_INCOMPLETE : rc; - } - -- return check_user_in_passwd(pamh, user_name, file_name); -+ return pam_modutil_check_user_in_passwd(pamh, user_name, file_name); - } - - int --- -2.26.2 - diff --git a/package/linux-pam/linux-pam.hash b/package/linux-pam/linux-pam.hash index 608908cb00..be7cabf6dc 100644 --- a/package/linux-pam/linux-pam.hash +++ b/package/linux-pam/linux-pam.hash @@ -1,6 +1,6 @@ # Locally computed hashes after checking signature at -# https://github.com/linux-pam/linux-pam/releases/download/v1.4.0/Linux-PAM-1.4.0.tar.xz.asc +# https://github.com/linux-pam/linux-pam/releases/download/v1.5.0/Linux-PAM-1.5.1.tar.xz.asc # signed with the key 8C6BFD92EE0F42EDF91A6A736D1A7F052E5924BB -sha256 cd6d928c51e64139be3bdb38692c68183a509b83d4f2c221024ccd4bcddfd034 Linux-PAM-1.4.0.tar.xz +sha256 201d40730b1135b1b3cdea09f2c28ac634d73181ccd0172ceddee3649c5792fc Linux-PAM-1.5.1.tar.xz # Locally computed sha256 133d98e7a2ab3ffd330b4debb0bfc10fea21e4b2b5a5b09de2e924293be5ff08 Copyright diff --git a/package/linux-pam/linux-pam.mk b/package/linux-pam/linux-pam.mk index 57fb2c9cfd..61d9542c02 100644 --- a/package/linux-pam/linux-pam.mk +++ b/package/linux-pam/linux-pam.mk @@ -4,7 +4,7 @@ # ################################################################################ -LINUX_PAM_VERSION = 1.4.0 +LINUX_PAM_VERSION = 1.5.1 LINUX_PAM_SOURCE = Linux-PAM-$(LINUX_PAM_VERSION).tar.xz LINUX_PAM_SITE = https://github.com/linux-pam/linux-pam/releases/download/v$(LINUX_PAM_VERSION) LINUX_PAM_INSTALL_STAGING = YES @@ -20,8 +20,6 @@ LINUX_PAM_DEPENDENCIES = flex host-flex host-pkgconf \ $(TARGET_NLS_DEPENDENCIES) LINUX_PAM_LICENSE = BSD-3-Clause LINUX_PAM_LICENSE_FILES = Copyright -# We're patching configure.ac -LINUX_PAM_AUTORECONF = YES LINUX_PAM_MAKE_OPTS += LIBS=$(TARGET_NLS_LIBS) ifeq ($(BR2_PACKAGE_LIBSELINUX),y) @@ -42,13 +40,6 @@ else LINUX_PAM_CONF_OPTS += --disable-audit endif -ifeq ($(BR2_PACKAGE_CRACKLIB),y) -LINUX_PAM_CONF_OPTS += --enable-cracklib -LINUX_PAM_DEPENDENCIES += cracklib -else -LINUX_PAM_CONF_OPTS += --disable-cracklib -endif - # Install default pam config (deny everything except login) define LINUX_PAM_INSTALL_CONFIG $(INSTALL) -m 0644 -D package/linux-pam/login.pam \ From f749946aa802ddc1fa809df98fe9b44279d974ca Mon Sep 17 00:00:00 2001 From: Norbert Lange Date: Fri, 27 Nov 2020 11:29:47 +0100 Subject: [PATCH 52/95] package/lz4: bump version to 1.9.3 Signed-off-by: Norbert Lange Signed-off-by: Peter Korsgaard --- package/lz4/lz4.hash | 2 +- package/lz4/lz4.mk | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package/lz4/lz4.hash b/package/lz4/lz4.hash index 01d0107b3f..0b03089ecd 100644 --- a/package/lz4/lz4.hash +++ b/package/lz4/lz4.hash @@ -1,4 +1,4 @@ # sha256 locally computed -sha256 658ba6191fa44c92280d4aa2c271b0f4fbc0e34d249578dd05e50e76d0e5efcc lz4-1.9.2.tar.gz +sha256 030644df4611007ff7dc962d981f390361e6c97a34e5cbc393ddfbe019ffe2c1 lz4-1.9.3.tar.gz sha256 d15d99c8dc6b0ec22174c0e563a95bc40f9363ca7f9d9d793bb5c5a8e8d0af71 lib/LICENSE sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 programs/COPYING diff --git a/package/lz4/lz4.mk b/package/lz4/lz4.mk index fa309e8dbb..b0510d460b 100644 --- a/package/lz4/lz4.mk +++ b/package/lz4/lz4.mk @@ -4,7 +4,7 @@ # ################################################################################ -LZ4_VERSION = 1.9.2 +LZ4_VERSION = 1.9.3 LZ4_SITE = $(call github,lz4,lz4,v$(LZ4_VERSION)) LZ4_INSTALL_STAGING = YES LZ4_LICENSE = BSD-2-Clause (library), GPL-2.0+ (programs) From 79ca48c48b5e36404892594fb1032e788fdc16f3 Mon Sep 17 00:00:00 2001 From: Fabrice Fontaine Date: Thu, 26 Nov 2020 20:08:42 +0100 Subject: [PATCH 53/95] package/x11r7/xserver_xorg-xserver: drop obsolete patch Drop second patch following upstream review: https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/555 Indeed, this patch has been dropped from openembedded since 2018 because "it is forcing input to use SIGIO, despite the fact that since 2015 xserver has used an input thread.": https://github.com/openembedded/openembedded-core/commit/cde11398e6d74ad8f27334199b4bd99cdf1f0ff7 Signed-off-by: Fabrice Fontaine Signed-off-by: Peter Korsgaard --- ...002-Remove-check-for-useSIGIO-option.patch | 53 ------------------- ...002-include-misc.h-fix-uClibc-build.patch} | 0 ...d-Makefile.am-fix-build-without-glx.patch} | 0 ...on-xf86Init.c-fix-build-without-glx.patch} | 0 ...robing-a-non-PCI-platform-device-on.patch} | 0 5 files changed, 53 deletions(-) delete mode 100644 package/x11r7/xserver_xorg-server/0002-Remove-check-for-useSIGIO-option.patch rename package/x11r7/xserver_xorg-server/{0003-include-misc.h-fix-uClibc-build.patch => 0002-include-misc.h-fix-uClibc-build.patch} (100%) rename package/x11r7/xserver_xorg-server/{0004-hw-xwayland-Makefile.am-fix-build-without-glx.patch => 0003-hw-xwayland-Makefile.am-fix-build-without-glx.patch} (100%) rename package/x11r7/xserver_xorg-server/{0005-hw-xfree86-common-xf86Init.c-fix-build-without-glx.patch => 0004-hw-xfree86-common-xf86Init.c-fix-build-without-glx.patch} (100%) rename package/x11r7/xserver_xorg-server/{0006-Fix-segfault-on-probing-a-non-PCI-platform-device-on.patch => 0005-Fix-segfault-on-probing-a-non-PCI-platform-device-on.patch} (100%) diff --git a/package/x11r7/xserver_xorg-server/0002-Remove-check-for-useSIGIO-option.patch b/package/x11r7/xserver_xorg-server/0002-Remove-check-for-useSIGIO-option.patch deleted file mode 100644 index 68a9d7fc75..0000000000 --- a/package/x11r7/xserver_xorg-server/0002-Remove-check-for-useSIGIO-option.patch +++ /dev/null @@ -1,53 +0,0 @@ -From cf407b16cd65ad6e26a9c8e5984e163409a5c0f7 Mon Sep 17 00:00:00 2001 -From: Prabhu Sundararaj -Date: Mon, 30 Jan 2017 16:32:06 -0600 -Subject: [PATCH] Remove check for useSIGIO option - -Original patch follows: -Commit 6a5a4e60373c1386b311b2a8bb666c32d68a9d99 removes the configure of useSIGIO -option. - -As the xfree86 SIGIO support is reworked to use internal versions of OsBlockSIGIO -and OsReleaseSIGIO. - -No longer the check for useSIGIO is needed - -Upstream-Status: Pending - -Signed-off-by: Prabhu Sundararaj - -Downloaded from -https://github.com/openembedded/openembedded-core/blob/master/meta/recipes-graphics/xorg-xserver/xserver-xorg/0003-Remove-check-for-useSIGIO-option.patch - -Signed-off-by: Mylène Josserand ---- - hw/xfree86/os-support/shared/sigio.c | 6 ------ - 1 file changed, 6 deletions(-) - -diff --git a/hw/xfree86/os-support/shared/sigio.c b/hw/xfree86/os-support/shared/sigio.c -index 884a71c..be76498 100644 ---- a/hw/xfree86/os-support/shared/sigio.c -+++ b/hw/xfree86/os-support/shared/sigio.c -@@ -185,9 +185,6 @@ xf86InstallSIGIOHandler(int fd, void (*f) (int, void *), void *closure) - int i; - int installed = FALSE; - -- if (!xf86Info.useSIGIO) -- return 0; -- - for (i = 0; i < MAX_FUNCS; i++) { - if (!xf86SigIOFuncs[i].f) { - if (xf86IsPipe(fd)) -@@ -257,9 +256,6 @@ xf86RemoveSIGIOHandler(int fd) - int max; - int ret; - -- if (!xf86Info.useSIGIO) -- return 0; -- - max = 0; - ret = 0; - for (i = 0; i < MAX_FUNCS; i++) { --- -2.7.4 - diff --git a/package/x11r7/xserver_xorg-server/0003-include-misc.h-fix-uClibc-build.patch b/package/x11r7/xserver_xorg-server/0002-include-misc.h-fix-uClibc-build.patch similarity index 100% rename from package/x11r7/xserver_xorg-server/0003-include-misc.h-fix-uClibc-build.patch rename to package/x11r7/xserver_xorg-server/0002-include-misc.h-fix-uClibc-build.patch diff --git a/package/x11r7/xserver_xorg-server/0004-hw-xwayland-Makefile.am-fix-build-without-glx.patch b/package/x11r7/xserver_xorg-server/0003-hw-xwayland-Makefile.am-fix-build-without-glx.patch similarity index 100% rename from package/x11r7/xserver_xorg-server/0004-hw-xwayland-Makefile.am-fix-build-without-glx.patch rename to package/x11r7/xserver_xorg-server/0003-hw-xwayland-Makefile.am-fix-build-without-glx.patch diff --git a/package/x11r7/xserver_xorg-server/0005-hw-xfree86-common-xf86Init.c-fix-build-without-glx.patch b/package/x11r7/xserver_xorg-server/0004-hw-xfree86-common-xf86Init.c-fix-build-without-glx.patch similarity index 100% rename from package/x11r7/xserver_xorg-server/0005-hw-xfree86-common-xf86Init.c-fix-build-without-glx.patch rename to package/x11r7/xserver_xorg-server/0004-hw-xfree86-common-xf86Init.c-fix-build-without-glx.patch diff --git a/package/x11r7/xserver_xorg-server/0006-Fix-segfault-on-probing-a-non-PCI-platform-device-on.patch b/package/x11r7/xserver_xorg-server/0005-Fix-segfault-on-probing-a-non-PCI-platform-device-on.patch similarity index 100% rename from package/x11r7/xserver_xorg-server/0006-Fix-segfault-on-probing-a-non-PCI-platform-device-on.patch rename to package/x11r7/xserver_xorg-server/0005-Fix-segfault-on-probing-a-non-PCI-platform-device-on.patch From 840f5065b3b1ff6e16b229fc62385b6c971f28de Mon Sep 17 00:00:00 2001 From: Peter Seiderer Date: Sat, 28 Nov 2020 00:22:25 +0100 Subject: [PATCH 54/95] package/libinput: bump version to 1.16.4 For details see [1]. [1] https://lists.freedesktop.org/archives/wayland-devel/2020-November/041664.html Signed-off-by: Peter Seiderer Signed-off-by: Peter Korsgaard --- package/libinput/libinput.hash | 8 +++----- package/libinput/libinput.mk | 2 +- 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/package/libinput/libinput.hash b/package/libinput/libinput.hash index 79bfc5d98b..f2cea28ee3 100644 --- a/package/libinput/libinput.hash +++ b/package/libinput/libinput.hash @@ -1,8 +1,6 @@ -# From https://lists.freedesktop.org/archives/wayland-devel/2020-November/041644.html -md5 562614e91c10c75ab1c2b71e5d27f076 libinput-1.16.3.tar.xz -sha1 ee1e93ee647bdd4598a5910eb654592563657d66 libinput-1.16.3.tar.xz -sha256 dc5e1ae51ec1cc635ca96f61118b0f07dfea783cab0747a60f3555068bb077e4 libinput-1.16.3.tar.xz -sha512 cdf87988b24dc0a44b7b6ed3e15e70c7702bf65f1cfe257924967677c7a1f1485011a9e30254ba8962c83885de78f824e7955cedb07322676332d42532ec4a39 libinput-1.16.3.tar.xz +# From https://lists.freedesktop.org/archives/wayland-devel/2020-November/041664.html +sha256 65923a06d5a8970e4a999c4668797b9b689614b62b1d44432ab1c87b65e39e29 libinput-1.16.4.tar.xz +sha512 a95a3bcf58a9298946d15f4f2fd93dc5807d3042f8797950a1ffd96d3c979b55a764f035a9f7680d0ea400b033698c322eb61a4387dbc280db6110ffd3e137ee libinput-1.16.4.tar.xz # License files sha256 70d5b1dfe5a9c50a1f2ea91b1c2b1c85d876c5c92339585edbb85cf69e945e14 COPYING diff --git a/package/libinput/libinput.mk b/package/libinput/libinput.mk index e5578a3921..3b459d6fb5 100644 --- a/package/libinput/libinput.mk +++ b/package/libinput/libinput.mk @@ -4,7 +4,7 @@ # ################################################################################ -LIBINPUT_VERSION = 1.16.3 +LIBINPUT_VERSION = 1.16.4 LIBINPUT_SOURCE = libinput-$(LIBINPUT_VERSION).tar.xz LIBINPUT_SITE = http://www.freedesktop.org/software/libinput LIBINPUT_DEPENDENCIES = host-pkgconf libevdev mtdev udev From 92abbd708eeedfd4ab4846a47965513ed79dd550 Mon Sep 17 00:00:00 2001 From: Francois Perrad Date: Sat, 28 Nov 2020 08:45:55 +0100 Subject: [PATCH 55/95] package/lua-lyaml: bump to version 6.2.7 Signed-off-by: Francois Perrad Signed-off-by: Peter Korsgaard --- package/lua-lyaml/lua-lyaml.hash | 4 ++-- package/lua-lyaml/lua-lyaml.mk | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package/lua-lyaml/lua-lyaml.hash b/package/lua-lyaml/lua-lyaml.hash index 07184e9e45..af3d0ae6da 100644 --- a/package/lua-lyaml/lua-lyaml.hash +++ b/package/lua-lyaml/lua-lyaml.hash @@ -1,3 +1,3 @@ # locally computed -sha256 2c52104e75331e4729e5895168fb8f24769db0b84c68696159e6b6a8908b62d2 lua-lyaml-6.2.6.tar.gz -sha256 81e4ea1d897e259b31111adc2d3c185fe23e435942ff3e9de8c8c9c5d01247d0 LICENSE +sha256 9bb489cefae48b150d66f6bab4141d8d5831fcb7465bfc52a9845fa01efc63b0 lua-lyaml-6.2.7.tar.gz +sha256 81e4ea1d897e259b31111adc2d3c185fe23e435942ff3e9de8c8c9c5d01247d0 LICENSE diff --git a/package/lua-lyaml/lua-lyaml.mk b/package/lua-lyaml/lua-lyaml.mk index a818ce716c..77980f5312 100644 --- a/package/lua-lyaml/lua-lyaml.mk +++ b/package/lua-lyaml/lua-lyaml.mk @@ -4,7 +4,7 @@ # ################################################################################ -LUA_LYAML_VERSION = 6.2.6 +LUA_LYAML_VERSION = 6.2.7 LUA_LYAML_NAME_UPSTREAM = lyaml LUA_LYAML_SITE = $(call github,gvvaughan,$(LUA_LYAML_NAME_UPSTREAM),v$(LUA_LYAML_VERSION)) LUA_LYAML_LICENSE = MIT From aa900caf19abab8614f1232df59170552d0b3673 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vincent=20Stehl=C3=A9?= Date: Fri, 27 Nov 2020 14:12:12 +0100 Subject: [PATCH 56/95] configs/aarch64_efi: bump kernel version MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Bump Linux kernel version to 5.9.11. Signed-off-by: Vincent Stehlé Cc: Erico Nunes Signed-off-by: Peter Korsgaard --- configs/aarch64_efi_defconfig | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/configs/aarch64_efi_defconfig b/configs/aarch64_efi_defconfig index 2aab6e9699..99600575ed 100644 --- a/configs/aarch64_efi_defconfig +++ b/configs/aarch64_efi_defconfig @@ -23,13 +23,13 @@ BR2_TARGET_ROOTFS_EXT2_SIZE="200M" BR2_ROOTFS_POST_IMAGE_SCRIPT="board/aarch64-efi/post-image.sh support/scripts/genimage.sh" BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/aarch64-efi/genimage-efi.cfg" -# Linux headers same as kernel, a 4.18 series -BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_18=y +# Linux headers same as kernel, a 5.9 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_5_9=y # Kernel BR2_LINUX_KERNEL=y BR2_LINUX_KERNEL_CUSTOM_VERSION=y -BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.18.10" +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="5.9.11" BR2_LINUX_KERNEL_USE_ARCH_DEFAULT_CONFIG=y BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y From d9144f098edb9584bb86cd06c7da243ecb5a27a7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vincent=20Stehl=C3=A9?= Date: Thu, 26 Nov 2020 22:59:24 +0100 Subject: [PATCH 57/95] configs/bananapi_m2_zero: bump Linux and U-Boot versions MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Bump Linux kernel to 5.9.11 and U-Boot to 2020.10. Signed-off-by: Vincent Stehlé Signed-off-by: Peter Korsgaard --- configs/bananapi_m2_zero_defconfig | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/configs/bananapi_m2_zero_defconfig b/configs/bananapi_m2_zero_defconfig index e82814e336..e5c89fce40 100644 --- a/configs/bananapi_m2_zero_defconfig +++ b/configs/bananapi_m2_zero_defconfig @@ -1,13 +1,13 @@ BR2_arm=y BR2_cortex_a7=y BR2_ARM_FPU_NEON_VFPV4=y -BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_5_6=y +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_5_9=y BR2_TARGET_GENERIC_ISSUE="Welcome to Buildroot for the Bananapi M2 Zero" BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh" BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/bananapi/bananapi-m2-zero/genimage.cfg" BR2_LINUX_KERNEL=y BR2_LINUX_KERNEL_CUSTOM_VERSION=y -BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="5.6.7" +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="5.9.11" BR2_LINUX_KERNEL_DEFCONFIG="sunxi" BR2_LINUX_KERNEL_DTS_SUPPORT=y BR2_LINUX_KERNEL_INTREE_DTS_NAME="sun8i-h2-plus-bananapi-m2-zero" @@ -17,7 +17,7 @@ BR2_TARGET_ROOTFS_EXT2_4=y BR2_TARGET_UBOOT=y BR2_TARGET_UBOOT_BOARDNAME="bananapi_m2_zero" BR2_TARGET_UBOOT_CUSTOM_VERSION=y -BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2020.04" +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2020.10" BR2_TARGET_UBOOT_NEEDS_DTC=y BR2_TARGET_UBOOT_NEEDS_PYTHON3=y BR2_TARGET_UBOOT_NEEDS_PYLIBFDT=y From 85d36b4cf995ca725e6765a336b01054439732aa Mon Sep 17 00:00:00 2001 From: Angelo Compagnucci Date: Sun, 8 Nov 2020 17:57:55 +0100 Subject: [PATCH 58/95] package/python-can: bump to verison 3.3.4 Signed-off-by: Angelo Compagnucci Signed-off-by: Arnout Vandecappelle (Essensium/Mind) --- package/python-can/python-can.hash | 4 ++-- package/python-can/python-can.mk | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/package/python-can/python-can.hash b/package/python-can/python-can.hash index ced51d8b75..5330e5899c 100644 --- a/package/python-can/python-can.hash +++ b/package/python-can/python-can.hash @@ -1,4 +1,4 @@ -# sha256 from https://pypi.org/pypi/python-can/json -sha256 ecd69cf6b2f0235345ebe607a15325cf1384c85b24ffbe1d68c3754357f87488 python-can-3.3.3.tar.gz +# sha256 from https://pypi.org/pypi/python-can +sha256 2d3c223b7adc4dd46ce258d4a33b7e0dbb6c339e002faa40ee4a69d5fdce9449 python-can-3.3.4.tar.gz # Locally computed sha256 checksums sha256 da7eabb7bafdf7d3ae5e9f223aa5bdc1eece45ac569dc21b3b037520b4464768 LICENSE.txt diff --git a/package/python-can/python-can.mk b/package/python-can/python-can.mk index 158e89f204..1ab813e2c9 100644 --- a/package/python-can/python-can.mk +++ b/package/python-can/python-can.mk @@ -4,8 +4,8 @@ # ################################################################################ -PYTHON_CAN_VERSION = 3.3.3 -PYTHON_CAN_SITE = https://files.pythonhosted.org/packages/b0/fa/8c6eb8988130f256db4c3cf84537c44684dbb3d528d2e1a1d2209eac4d90 +PYTHON_CAN_VERSION = 3.3.4 +PYTHON_CAN_SITE = https://files.pythonhosted.org/packages/97/dd/5e5ae96db41ba57dde127e0600c3d324239ed692e167296c5fdb992cbf41 PYTHON_CAN_SETUP_TYPE = setuptools PYTHON_CAN_LICENSE = LGPL-3.0 PYTHON_CAN_LICENSE_FILES = LICENSE.txt From c7f98d08fc265435d9bf30a6e31b6fb0f2c96082 Mon Sep 17 00:00:00 2001 From: Angelo Compagnucci Date: Sun, 8 Nov 2020 18:07:18 +0100 Subject: [PATCH 59/95] package/python-pydal: bump to version 20200910.1 While bumping updating the sha256 computation method. Signed-off-by: Angelo Compagnucci Signed-off-by: Arnout Vandecappelle (Essensium/Mind) --- package/python-pydal/python-pydal.hash | 4 ++-- package/python-pydal/python-pydal.mk | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package/python-pydal/python-pydal.hash b/package/python-pydal/python-pydal.hash index 161395ac52..224f32856f 100644 --- a/package/python-pydal/python-pydal.hash +++ b/package/python-pydal/python-pydal.hash @@ -1,3 +1,3 @@ -# sha256 from https://pypi.org/project/pyDAL/#files -sha256 65bc77933eb9ac84874702629fcb167c18dc242a00cf7cc191899796761349e4 python-pydal-20200714.1.tar.gz +# sha256 locally computed +sha256 df54be164bcdab8ffc8db88cb72333cc4b27997ce58c302dd8ade36462d799ea python-pydal-20200910.1.tar.gz sha256 1f711e93f1e0c2eec576e2e60597dc2ed6f0a661e4749c6b8a39f0d4a72be468 LICENSE.txt diff --git a/package/python-pydal/python-pydal.mk b/package/python-pydal/python-pydal.mk index 2ea3790a3d..2cac839a9e 100644 --- a/package/python-pydal/python-pydal.mk +++ b/package/python-pydal/python-pydal.mk @@ -4,7 +4,7 @@ # ################################################################################ -PYTHON_PYDAL_VERSION = 20200714.1 +PYTHON_PYDAL_VERSION = 20200910.1 PYTHON_PYDAL_SITE = $(call github,web2py,pydal,v$(PYTHON_PYDAL_VERSION)) PYTHON_PYDAL_LICENSE = BSD-3-Clause PYTHON_PYDAL_LICENSE_FILES = LICENSE.txt From 4e060bf6bc6a7bc381904ce995b9f18372aa2c6d Mon Sep 17 00:00:00 2001 From: Marcus Folkesson Date: Tue, 1 Dec 2020 08:00:05 +0100 Subject: [PATCH 60/95] package/libostree: bump to version 2020.8 Signed-off-by: Marcus Folkesson Signed-off-by: Thomas Petazzoni --- package/libostree/libostree.hash | 2 +- package/libostree/libostree.mk | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package/libostree/libostree.hash b/package/libostree/libostree.hash index e5483a539c..751feb6b2e 100644 --- a/package/libostree/libostree.hash +++ b/package/libostree/libostree.hash @@ -1,3 +1,3 @@ # Locally calculated -sha256 865d4818820d128a2e505380358275bb964984348b3d0685b6455099e4736972 libostree-2020.6.tar.xz +sha256 fdaa5992d0a6f62157152355449ac8476c50df6602be398e9ad10438cc1e679b libostree-2020.8.tar.xz sha256 b7993225104d90ddd8024fd838faf300bea5e83d91203eab98e29512acebd69c COPYING diff --git a/package/libostree/libostree.mk b/package/libostree/libostree.mk index e387f99856..9406e023bd 100644 --- a/package/libostree/libostree.mk +++ b/package/libostree/libostree.mk @@ -4,7 +4,7 @@ # ################################################################################ -LIBOSTREE_VERSION = 2020.6 +LIBOSTREE_VERSION = 2020.8 LIBOSTREE_SOURCE = libostree-$(LIBOSTREE_VERSION).tar.xz LIBOSTREE_SITE = https://github.com/ostreedev/ostree/releases/download/v$(LIBOSTREE_VERSION) From 1e66d996100bc8bff94cbe6651b74a04083b8b35 Mon Sep 17 00:00:00 2001 From: Bernd Kuhls Date: Mon, 30 Nov 2020 18:40:06 +0100 Subject: [PATCH 61/95] package/{mesa3d, mesa3d-headers}: bump version to 20.2.3 Release notes of this bugfix release: https://lists.freedesktop.org/archives/mesa-announce/2020-November/000607.html Signed-off-by: Bernd Kuhls Signed-off-by: Thomas Petazzoni --- package/mesa3d-headers/mesa3d-headers.mk | 2 +- package/mesa3d/mesa3d.hash | 6 +++--- package/mesa3d/mesa3d.mk | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package/mesa3d-headers/mesa3d-headers.mk b/package/mesa3d-headers/mesa3d-headers.mk index 12020e6551..8e8170a7a5 100644 --- a/package/mesa3d-headers/mesa3d-headers.mk +++ b/package/mesa3d-headers/mesa3d-headers.mk @@ -12,7 +12,7 @@ endif # Not possible to directly refer to mesa3d variables, because of # first/second expansion trickery... -MESA3D_HEADERS_VERSION = 20.2.2 +MESA3D_HEADERS_VERSION = 20.2.3 MESA3D_HEADERS_SOURCE = mesa-$(MESA3D_HEADERS_VERSION).tar.xz MESA3D_HEADERS_SITE = https://mesa.freedesktop.org/archive MESA3D_HEADERS_DL_SUBDIR = mesa3d diff --git a/package/mesa3d/mesa3d.hash b/package/mesa3d/mesa3d.hash index 7d3a928822..b59d1f866e 100644 --- a/package/mesa3d/mesa3d.hash +++ b/package/mesa3d/mesa3d.hash @@ -1,6 +1,6 @@ -# From https://lists.freedesktop.org/archives/mesa-announce/2020-November/000604.html -sha256 1f93eb1090cf71490cd0e204e04f8427a82b6ed534b7f49ca50cea7dcc89b861 mesa-20.2.2.tar.xz -sha512 36673a44fad8c6db3516b23b75825a52df520b9fe1387160301dd5051f420ebf0d1c7b4f8ff96a5547b79c2ba42fd782305ae23ac956f688b695c07b8fe73192 mesa-20.2.2.tar.xz +# From https://lists.freedesktop.org/archives/mesa-announce/2020-November/000607.html +sha256 ae1b240e11531df528d14dc214d2dc4d2b4f2e835c6230ba0b492b171eceb82b mesa-20.2.3.tar.xz +sha512 e55b57523f6fdb1199586538c119c3e7c81d1a7af86be14c90d140c514f65e54ac0c56bd341686d04b770b80d3ddd92188ee17b3bc23f243aed10c25de7e19a6 mesa-20.2.3.tar.xz # License sha256 1361129baa4519b6ed27a1bf4aeee33a58b060bf7bb9b6ea415ecede04e35e46 docs/license.rst diff --git a/package/mesa3d/mesa3d.mk b/package/mesa3d/mesa3d.mk index a44d599b03..5af3cbb3f4 100644 --- a/package/mesa3d/mesa3d.mk +++ b/package/mesa3d/mesa3d.mk @@ -5,7 +5,7 @@ ################################################################################ # When updating the version, please also update mesa3d-headers -MESA3D_VERSION = 20.2.2 +MESA3D_VERSION = 20.2.3 MESA3D_SOURCE = mesa-$(MESA3D_VERSION).tar.xz MESA3D_SITE = https://mesa.freedesktop.org/archive MESA3D_LICENSE = MIT, SGI, Khronos From 8a8a87345589adc1477e552c5b26c03988826ac0 Mon Sep 17 00:00:00 2001 From: Angelo Compagnucci Date: Mon, 9 Nov 2020 17:58:03 +0100 Subject: [PATCH 62/95] package/environment-setup: add better kernel handling Exporting ARCH and KERNELDIR makes easier to compile an external kernel or out of tree kernel modules. Signed-off-by: Angelo Compagnucci Reviewed-by: Matt Weber Signed-off-by: Arnout Vandecappelle (Essensium/Mind) --- package/environment-setup/environment-setup | 1 + package/environment-setup/environment-setup.mk | 5 +++++ 2 files changed, 6 insertions(+) diff --git a/package/environment-setup/environment-setup b/package/environment-setup/environment-setup index 813aa01c7a..e9bc36fdd0 100644 --- a/package/environment-setup/environment-setup +++ b/package/environment-setup/environment-setup @@ -10,6 +10,7 @@ cat <<'EOF' Some tips: * PATH now contains the SDK utilities * Standard autotools variables (CC, LD, CFLAGS) are exported +* Kernel compilation variables (ARCH, CROSS_COMPILE, KERNELDIR) are exported * To configure do "./configure $CONFIGURE_FLAGS" or use the "configure" alias * To build CMake-based projects, use the "cmake" alias diff --git a/package/environment-setup/environment-setup.mk b/package/environment-setup/environment-setup.mk index fb87c6f0b7..fcad013f0d 100644 --- a/package/environment-setup/environment-setup.mk +++ b/package/environment-setup/environment-setup.mk @@ -11,6 +11,7 @@ define HOST_ENVIRONMENT_SETUP_INSTALL_CMDS for var in $(TARGET_CONFIGURE_OPTS); do \ printf "export \"$$var\"\n" >> $(ENVIRONMENT_SETUP_FILE); \ done + printf "export \"ARCH=$(KERNEL_ARCH)\"\n" >> $(ENVIRONMENT_SETUP_FILE) printf "export \"CROSS_COMPILE=$(TARGET_CROSS)\"\n" >> $(ENVIRONMENT_SETUP_FILE) printf "export \"CONFIGURE_FLAGS=--target=$(GNU_TARGET_NAME) \ --host=$(GNU_TARGET_NAME) \ @@ -31,6 +32,10 @@ define HOST_ENVIRONMENT_SETUP_INSTALL_CMDS $(ENVIRONMENT_SETUP_FILE) printf "export \"PATH=\$$SDK_PATH/bin:\$$SDK_PATH/sbin:\$$PATH\"\n" \ >> $(ENVIRONMENT_SETUP_FILE) + + $(if $(BR2_LINUX_KERNEL),\ + printf "export \"KERNELDIR=$(LINUX_BUILDDIR)\"\n" \ + >> $(ENVIRONMENT_SETUP_FILE),) endef $(eval $(host-generic-package)) From ac6dbae320231a02e1b9b69c8c9250e6854aaaa9 Mon Sep 17 00:00:00 2001 From: Fabrice Fontaine Date: Thu, 19 Nov 2020 23:11:40 +0100 Subject: [PATCH 63/95] package/bind: fix license hash Commit 9679d3f0218519ea7a01f3b5fefb7f6dd23b138e forgot to update hash of COPYRIGHT which was updated to replace http by https: https://gitlab.isc.org/isc-projects/bind9/-/commit/400171aee8db87c3973987980327051a58a20a80 Fixes: - http://autobuild.buildroot.org/results/db614a6fa1e17af2fa5c1d4a0d51cdf770893ca9 Signed-off-by: Fabrice Fontaine Signed-off-by: Peter Korsgaard --- package/bind/bind.hash | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package/bind/bind.hash b/package/bind/bind.hash index e02c06ff3e..cbd9562b56 100644 --- a/package/bind/bind.hash +++ b/package/bind/bind.hash @@ -1,4 +1,4 @@ # Verified from https://ftp.isc.org/isc/bind9/9.11.24/bind-9.11.24.tar.gz.asc # with key 95CEDA256B1CA0A15F302FB59521A7ED5DACE918 sha256 f261587c5d37c7f14e8393547c4556faefa701a646930f1b6408d71519a30428 bind-9.11.24.tar.gz -sha256 da2aec2b7f6f0feb16bcb080e2c587375fd3195145f047e4d92d112f5b9db501 COPYRIGHT +sha256 e316d9d12b3cc3600985d71011d7856f5ff93d28e748155a3a18171b32d98d8b COPYRIGHT From e68c25b22720f351841cc5d9d14bd62eb1823630 Mon Sep 17 00:00:00 2001 From: Julien Olivain Date: Tue, 17 Nov 2020 22:21:43 +0100 Subject: [PATCH 64/95] package/linux-firmware: reformat hash file using the 2 spaces convention For readability, this reformatting is done in a separate commit, as this package contains many license files. Signed-off-by: Julien Olivain Signed-off-by: Arnout Vandecappelle (Essensium/Mind) --- package/linux-firmware/linux-firmware.hash | 68 +++++++++++----------- 1 file changed, 34 insertions(+), 34 deletions(-) diff --git a/package/linux-firmware/linux-firmware.hash b/package/linux-firmware/linux-firmware.hash index 2ebd11365f..3f56e3b540 100644 --- a/package/linux-firmware/linux-firmware.hash +++ b/package/linux-firmware/linux-firmware.hash @@ -1,35 +1,35 @@ # Locally calculated -sha256 83646c58fc4e3ee9a73f4fa74213c849109f48c719322346393f3e5b0fa55044 linux-firmware-20200122.tar.gz -sha256 8116433f4004fc0c24d72b3d9e497808b724aa0e5e1cd63fc1bf66b715b1e2e9 LICENCE.Abilis -sha256 8d5847d2971241d4d6a51c16e206379de53a6d4e203fa6f8e1c1e9279c7c4ad0 LICENSE.amdgpu -sha256 2d6062d63b91eb750bf741498691604f75184b9fee97608ec537cd09bd6a42b4 LICENCE.Marvell -sha256 802b7014b26c606cf6248ae8b0ab1ce6d2d1b0db236d38dd269e676cd70710f2 LICENCE.atheros_firmware -sha256 3b5eb392b2d9d8c46d6aae26d06c187e5ea3029b12d13bc2b8deb8b3ce6bfa53 ath10k/QCA6174/hw3.0/notice_ath10k_firmware-4.txt -sha256 631065703055d11b099477c508508f20a80b202aad548a7726564bfa59a96c91 ath10k/QCA6174/hw2.1/notice_ath10k_firmware-5.txt -sha256 8ce5c6ea0542bf4aac31fc3ae16a39792ad22d0eae4543063fac56fb3380f021 ath10k/QCA6174/hw3.0/notice_ath10k_firmware-6.txt -sha256 b16056fc91b82a0e3e8de8f86c2dac98201aa9dc3cbd33e8d38f1b087fcec30d LICENCE.broadcom_bcm43xx -sha256 a5777f9e80aca0603b0648454de996168b1c530322550ccda94d6d78bcf6c061 LICENCE.chelsio_firmware -sha256 60fbc9cccb455e1a3306c97db942d6f24fa93664be61d54c497637e6d0e2ae83 LICENCE.fw_sst_0f28 -sha256 5181b0b51efc79d5acb2c9bb92042878fdbad97a92114d4ab5e32e2b5b52fce4 LICENCE.ibt_firmware -sha256 0e0c11073ba3c832097da38e0905da36b8a3526f219407977b13b71c6675be7d LICENCE.it913x -sha256 e295020afd7597dc1b3bbe50a84a7e432d9cb92bc053c1c5e657b50d2517627b LICENCE.iwlwifi_firmware -sha256 0fc67bd715b3395f3f2af464781910e9e69c4ba23da304352229b42dc9e986c3 LICENCE.microchip -sha256 2051d5bf0755a0668f8c3d9a0d1c41d4b8cc411aba70f720fda71ae9e3b4d25c LICENCE.qat_firmware -sha256 4071a11d878dbc0ac6d9e71203d03b151638f9d7a8bc47a54c3cb964100d5822 LICENCE.qla2xxx -sha256 d7bec70668ddd4aae8fb4aa32870e54b49fcdb0b9b007aa9f54b53a1ac7461bd LICENCE.ralink-firmware.txt -sha256 8568352b57f3574f9d5b2753cdb7c6e5eb2b79e82fbb9c9ba6566947467ef508 LICENCE.ralink_a_mediatek_company_firmware -sha256 a61351665b4f264f6c631364f85b907d8f8f41f8b369533ef4021765f9f3b62e LICENCE.rtlwifi_firmware.txt -sha256 106bef96470001e877fcf7ba0337fa6766a317650eb47fcaeb743eeebd62c4ff LICENCE.ti-connectivity -sha256 8ea9f4aee5f53ad877041ff089e8c95d34d615ce19a3111e5e1ea70d990ed7ff LICENCE.xc4000 -sha256 30ec8a66503dc73f83937564ae70ca23aa03259e64727ff4195b5b6f695e782f LICENCE.xc5000 -sha256 f8822049f32fef2e90a197bd8cf259f476db75d549456bdca8567616a9c07ace LICENCE.xc5000c -sha256 a064cbf83e10d72579d236a1e36032681adb8e442943ff75b57020a82992a5ed LICENSE.QualcommAtheros_ar3k -sha256 337a55102138d7baa143ee4a4c6c91693e0113fece35d380b2a12109e8c23b3f LICENSE.QualcommAtheros_ath10k -sha256 630fd46c95d3ac6544590c2265ba7348fbc930fb386261a1c04dcd9f403645b8 LICENSE.dib0700 -sha256 8542aeabf2761935122d693561e16766ce1bcc2b0d003204f9040b7d6d929f2e LICENSE.i915 -sha256 be904cd28cb292b80cdb6cf412ab0d9159d431671e987ad433c1f62e0988a9bc LICENSE.qcom -sha256 fc6223d4bfe9f2f9e2eddc44b9fe5721d0caf49f01cb08d602906add686d8c6f LICENSE.radeon -sha256 2bdd2e716f05d9737d3f9a20f9a3a3c0caee0e866100ddb0673f1178e42f92b9 LICENSE.sdma_firmware -sha256 74d203d2fd433b73b63e8e31d8928e3817f6eaf3407c9e607802c20a5c02e6c4 WHENCE -sha256 fa43e1b9a13b341a07adca9dbe73d0f9072d7966fdfe811c01f0dd2872d7309a qcom/NOTICE.txt -sha256 bef9c828e84f21e7835b4de7daf954a327e1ff777871b58e116039b684c0d604 LICENCE.e100 +sha256 83646c58fc4e3ee9a73f4fa74213c849109f48c719322346393f3e5b0fa55044 linux-firmware-20200122.tar.gz +sha256 8116433f4004fc0c24d72b3d9e497808b724aa0e5e1cd63fc1bf66b715b1e2e9 LICENCE.Abilis +sha256 8d5847d2971241d4d6a51c16e206379de53a6d4e203fa6f8e1c1e9279c7c4ad0 LICENSE.amdgpu +sha256 2d6062d63b91eb750bf741498691604f75184b9fee97608ec537cd09bd6a42b4 LICENCE.Marvell +sha256 802b7014b26c606cf6248ae8b0ab1ce6d2d1b0db236d38dd269e676cd70710f2 LICENCE.atheros_firmware +sha256 3b5eb392b2d9d8c46d6aae26d06c187e5ea3029b12d13bc2b8deb8b3ce6bfa53 ath10k/QCA6174/hw3.0/notice_ath10k_firmware-4.txt +sha256 631065703055d11b099477c508508f20a80b202aad548a7726564bfa59a96c91 ath10k/QCA6174/hw2.1/notice_ath10k_firmware-5.txt +sha256 8ce5c6ea0542bf4aac31fc3ae16a39792ad22d0eae4543063fac56fb3380f021 ath10k/QCA6174/hw3.0/notice_ath10k_firmware-6.txt +sha256 b16056fc91b82a0e3e8de8f86c2dac98201aa9dc3cbd33e8d38f1b087fcec30d LICENCE.broadcom_bcm43xx +sha256 a5777f9e80aca0603b0648454de996168b1c530322550ccda94d6d78bcf6c061 LICENCE.chelsio_firmware +sha256 60fbc9cccb455e1a3306c97db942d6f24fa93664be61d54c497637e6d0e2ae83 LICENCE.fw_sst_0f28 +sha256 5181b0b51efc79d5acb2c9bb92042878fdbad97a92114d4ab5e32e2b5b52fce4 LICENCE.ibt_firmware +sha256 0e0c11073ba3c832097da38e0905da36b8a3526f219407977b13b71c6675be7d LICENCE.it913x +sha256 e295020afd7597dc1b3bbe50a84a7e432d9cb92bc053c1c5e657b50d2517627b LICENCE.iwlwifi_firmware +sha256 0fc67bd715b3395f3f2af464781910e9e69c4ba23da304352229b42dc9e986c3 LICENCE.microchip +sha256 2051d5bf0755a0668f8c3d9a0d1c41d4b8cc411aba70f720fda71ae9e3b4d25c LICENCE.qat_firmware +sha256 4071a11d878dbc0ac6d9e71203d03b151638f9d7a8bc47a54c3cb964100d5822 LICENCE.qla2xxx +sha256 d7bec70668ddd4aae8fb4aa32870e54b49fcdb0b9b007aa9f54b53a1ac7461bd LICENCE.ralink-firmware.txt +sha256 8568352b57f3574f9d5b2753cdb7c6e5eb2b79e82fbb9c9ba6566947467ef508 LICENCE.ralink_a_mediatek_company_firmware +sha256 a61351665b4f264f6c631364f85b907d8f8f41f8b369533ef4021765f9f3b62e LICENCE.rtlwifi_firmware.txt +sha256 106bef96470001e877fcf7ba0337fa6766a317650eb47fcaeb743eeebd62c4ff LICENCE.ti-connectivity +sha256 8ea9f4aee5f53ad877041ff089e8c95d34d615ce19a3111e5e1ea70d990ed7ff LICENCE.xc4000 +sha256 30ec8a66503dc73f83937564ae70ca23aa03259e64727ff4195b5b6f695e782f LICENCE.xc5000 +sha256 f8822049f32fef2e90a197bd8cf259f476db75d549456bdca8567616a9c07ace LICENCE.xc5000c +sha256 a064cbf83e10d72579d236a1e36032681adb8e442943ff75b57020a82992a5ed LICENSE.QualcommAtheros_ar3k +sha256 337a55102138d7baa143ee4a4c6c91693e0113fece35d380b2a12109e8c23b3f LICENSE.QualcommAtheros_ath10k +sha256 630fd46c95d3ac6544590c2265ba7348fbc930fb386261a1c04dcd9f403645b8 LICENSE.dib0700 +sha256 8542aeabf2761935122d693561e16766ce1bcc2b0d003204f9040b7d6d929f2e LICENSE.i915 +sha256 be904cd28cb292b80cdb6cf412ab0d9159d431671e987ad433c1f62e0988a9bc LICENSE.qcom +sha256 fc6223d4bfe9f2f9e2eddc44b9fe5721d0caf49f01cb08d602906add686d8c6f LICENSE.radeon +sha256 2bdd2e716f05d9737d3f9a20f9a3a3c0caee0e866100ddb0673f1178e42f92b9 LICENSE.sdma_firmware +sha256 74d203d2fd433b73b63e8e31d8928e3817f6eaf3407c9e607802c20a5c02e6c4 WHENCE +sha256 fa43e1b9a13b341a07adca9dbe73d0f9072d7966fdfe811c01f0dd2872d7309a qcom/NOTICE.txt +sha256 bef9c828e84f21e7835b4de7daf954a327e1ff777871b58e116039b684c0d604 LICENCE.e100 From b2a0b879d59d93c1c10bffed2c924e4833e102d4 Mon Sep 17 00:00:00 2001 From: Julien Olivain Date: Tue, 17 Nov 2020 22:21:44 +0100 Subject: [PATCH 65/95] package/linux-firmware: bump version to 20201022 This update is motivated by the inclusion SDIO firmware for QCA9377 WiFi cards in this new version. See [1]. The license file "WHENCE" content/checksum has changed, since it's an index of firmware provenance and their licenses, and many new firmware files were added. For the full linux-firmware change log, see tag 20201022 log [2]. [1] https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git/commit/?id=d7904d5b07a9e2c4cdd9f8b2c5a5faa9c6e665cf [2] https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git/log/?h=20201022 Signed-off-by: Julien Olivain Signed-off-by: Arnout Vandecappelle (Essensium/Mind) --- package/linux-firmware/linux-firmware.hash | 4 ++-- package/linux-firmware/linux-firmware.mk | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package/linux-firmware/linux-firmware.hash b/package/linux-firmware/linux-firmware.hash index 3f56e3b540..1c1f3bd116 100644 --- a/package/linux-firmware/linux-firmware.hash +++ b/package/linux-firmware/linux-firmware.hash @@ -1,5 +1,5 @@ # Locally calculated -sha256 83646c58fc4e3ee9a73f4fa74213c849109f48c719322346393f3e5b0fa55044 linux-firmware-20200122.tar.gz +sha256 ba045512bb782ba8efc82651a85679684fb0fec7a7a094971031be665d6c82d6 linux-firmware-20201022.tar.gz sha256 8116433f4004fc0c24d72b3d9e497808b724aa0e5e1cd63fc1bf66b715b1e2e9 LICENCE.Abilis sha256 8d5847d2971241d4d6a51c16e206379de53a6d4e203fa6f8e1c1e9279c7c4ad0 LICENSE.amdgpu sha256 2d6062d63b91eb750bf741498691604f75184b9fee97608ec537cd09bd6a42b4 LICENCE.Marvell @@ -30,6 +30,6 @@ sha256 8542aeabf2761935122d693561e16766ce1bcc2b0d003204f9040b7d6d929f2e LICENS sha256 be904cd28cb292b80cdb6cf412ab0d9159d431671e987ad433c1f62e0988a9bc LICENSE.qcom sha256 fc6223d4bfe9f2f9e2eddc44b9fe5721d0caf49f01cb08d602906add686d8c6f LICENSE.radeon sha256 2bdd2e716f05d9737d3f9a20f9a3a3c0caee0e866100ddb0673f1178e42f92b9 LICENSE.sdma_firmware -sha256 74d203d2fd433b73b63e8e31d8928e3817f6eaf3407c9e607802c20a5c02e6c4 WHENCE +sha256 18313654864adbb76514e21566528ce57eff42a2a7a66d5823f1f91e895816ea WHENCE sha256 fa43e1b9a13b341a07adca9dbe73d0f9072d7966fdfe811c01f0dd2872d7309a qcom/NOTICE.txt sha256 bef9c828e84f21e7835b4de7daf954a327e1ff777871b58e116039b684c0d604 LICENCE.e100 diff --git a/package/linux-firmware/linux-firmware.mk b/package/linux-firmware/linux-firmware.mk index 8808b5284c..dc7f392800 100644 --- a/package/linux-firmware/linux-firmware.mk +++ b/package/linux-firmware/linux-firmware.mk @@ -4,7 +4,7 @@ # ################################################################################ -LINUX_FIRMWARE_VERSION = 20200122 +LINUX_FIRMWARE_VERSION = 20201022 LINUX_FIRMWARE_SITE = http://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git LINUX_FIRMWARE_SITE_METHOD = git From fe0f3f08dacf0981e15f6a6f86855164e2f1aff4 Mon Sep 17 00:00:00 2001 From: Julien Olivain Date: Tue, 17 Nov 2020 22:21:45 +0100 Subject: [PATCH 66/95] package/linux-firmware: install Ath10k QCA9377 sdio firmware linux-firmware version 20201022 introduced a new sdio firmware for QCA9377 sdio devices. Install it when support is selected. Signed-off-by: Julien Olivain Signed-off-by: Arnout Vandecappelle (Essensium/Mind) --- package/linux-firmware/linux-firmware.mk | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/package/linux-firmware/linux-firmware.mk b/package/linux-firmware/linux-firmware.mk index dc7f392800..c0ca98c45c 100644 --- a/package/linux-firmware/linux-firmware.mk +++ b/package/linux-firmware/linux-firmware.mk @@ -193,7 +193,8 @@ ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_ATHEROS_10K_QCA9377),y) LINUX_FIRMWARE_FILES += ath10k/QCA9377/hw1.0/board-2.bin \ ath10k/QCA9377/hw1.0/board.bin \ ath10k/QCA9377/hw1.0/firmware-5.bin \ - ath10k/QCA9377/hw1.0/firmware-6.bin + ath10k/QCA9377/hw1.0/firmware-6.bin \ + ath10k/QCA9377/hw1.0/firmware-sdio-5.bin LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.atheros_firmware endif From ed3062319f93b9539ee4bb5982653fd6246b05ad Mon Sep 17 00:00:00 2001 From: Angelo Compagnucci Date: Tue, 1 Dec 2020 22:30:53 +0100 Subject: [PATCH 67/95] package/cups-filters: bump to version 1.28.4 While bumping, removing upstreamed patches. Removing also autoreconf step cause we are not patching it anymore. License hash is changed due to remove of notice for file filter/sys5ippprinter.c. Signed-off-by: Angelo Compagnucci Signed-off-by: Arnout Vandecappelle (Essensium/Mind) --- ...fix-cross-compilation-without-dejavu.patch | 41 ------------------- package/cups-filters/cups-filters.hash | 4 +- package/cups-filters/cups-filters.mk | 4 +- 3 files changed, 3 insertions(+), 46 deletions(-) delete mode 100644 package/cups-filters/0001-configure.ac-fix-cross-compilation-without-dejavu.patch diff --git a/package/cups-filters/0001-configure.ac-fix-cross-compilation-without-dejavu.patch b/package/cups-filters/0001-configure.ac-fix-cross-compilation-without-dejavu.patch deleted file mode 100644 index 650b90a89b..0000000000 --- a/package/cups-filters/0001-configure.ac-fix-cross-compilation-without-dejavu.patch +++ /dev/null @@ -1,41 +0,0 @@ -From 6ad1ed8b7939bf75079b0a770e234bfee7d33dbb Mon Sep 17 00:00:00 2001 -From: Fabrice Fontaine -Date: Mon, 13 Jul 2020 23:02:50 +0200 -Subject: [PATCH] configure.ac: fix cross-compilation without dejavu - -Cross-compilation is broken since commit 1d66106. Indeed, when -cross-compiling, dejavu font won't be installed in /usr/share/fonts. The -path (e.g. $(TARGET_DIR)/usr/share/fonts/dejavu/DejaVuSans.ttf) could be -provided through --with-test-font-path which will fix the build failure -but will result in broken test programs. - -So when cross-compiling don't try to check if the test-font-path is -valid or not and just use the one provided by the user or the default -one (e.g. /usr/share/fonts/dejavu/DejaVuSans.ttf) - -Fix #262 - -Signed-off-by: Fabrice Fontaine -[Retrieved from: -https://github.com/OpenPrinting/cups-filters/commit/6ad1ed8b7939bf75079b0a770e234bfee7d33dbb] ---- - configure.ac | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/configure.ac b/configure.ac -index aa905cf5d..4cc4fd6e5 100644 ---- a/configure.ac -+++ b/configure.ac -@@ -796,10 +796,10 @@ AC_ARG_WITH([test-font-path], - [with_test_font_path=`find /usr/share/fonts -name DejaVuSans.ttf || echo /usr/share/fonts/dejavu/DejaVuSans.ttf`] - ) - --AS_IF([test -f "$with_test_font_path"], -- [AC_DEFINE_UNQUOTED([TESTFONT], ["$with_test_font_path"], [Path to font used in tests])], -+AS_IF([test "x$cross_compiling" != "xyes" && ! test -f "$with_test_font_path"], - [AC_MSG_ERROR(DejaVuSans.ttf font file is missing. Please install a package providing it.)] - ) -+AC_DEFINE_UNQUOTED([TESTFONT], ["$with_test_font_path"], [Path to font used in tests]) - - # ================ - # Check for cflags diff --git a/package/cups-filters/cups-filters.hash b/package/cups-filters/cups-filters.hash index 61cb42a438..8c2526ae9d 100644 --- a/package/cups-filters/cups-filters.hash +++ b/package/cups-filters/cups-filters.hash @@ -1,3 +1,3 @@ # Locally computed: -sha256 08e4081ce50ce2e620af6e950bdcf64cea2ab4c81ab3c5ea05da25d82ad62db6 cups-filters-1.27.5.tar.gz -sha256 527463af65312372111804589a9624f4c52813e253062ae351e75af5003f317f COPYING +sha256 cf90b96b5c7a906a05070e757ee5566d9680db98a279e60567ea5421c38f11de cups-filters-1.28.4.tar.gz +sha256 38192ffdaca98b718f78b2d4abc38bb087f0bbcc9a16d212c98b903b985f900f COPYING diff --git a/package/cups-filters/cups-filters.mk b/package/cups-filters/cups-filters.mk index 237d8afe62..3ba031d5a1 100644 --- a/package/cups-filters/cups-filters.mk +++ b/package/cups-filters/cups-filters.mk @@ -4,12 +4,10 @@ # ################################################################################ -CUPS_FILTERS_VERSION = 1.27.5 +CUPS_FILTERS_VERSION = 1.28.4 CUPS_FILTERS_SITE = http://openprinting.org/download/cups-filters CUPS_FILTERS_LICENSE = GPL-2.0, GPL-2.0+, GPL-3.0, GPL-3.0+, LGPL-2, LGPL-2.1+, MIT, BSD-4-Clause CUPS_FILTERS_LICENSE_FILES = COPYING -# We're patching configure.ac -CUPS_FILTERS_AUTORECONF = YES CUPS_FILTERS_DEPENDENCIES = cups libglib2 lcms2 qpdf fontconfig freetype jpeg From a110a5cf4b3d915dfc8bdb7e0a12a84cb9798fbb Mon Sep 17 00:00:00 2001 From: Peter Seiderer Date: Sun, 29 Nov 2020 21:58:42 +0100 Subject: [PATCH 68/95] package/fmt: bump version to 7.1.3 For details see [1], [2], [3] and [4]. [1] https://github.com/fmtlib/fmt/releases/tag/7.1.0 [2] https://github.com/fmtlib/fmt/releases/tag/7.1.1 [3] https://github.com/fmtlib/fmt/releases/tag/7.1.2 [4] https://github.com/fmtlib/fmt/releases/tag/7.1.3 Signed-off-by: Peter Seiderer Signed-off-by: Thomas Petazzoni --- package/fmt/fmt.hash | 2 +- package/fmt/fmt.mk | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package/fmt/fmt.hash b/package/fmt/fmt.hash index 1f45c212f3..7947a17456 100644 --- a/package/fmt/fmt.hash +++ b/package/fmt/fmt.hash @@ -1,3 +1,3 @@ # Locally calculated -sha256 decfdf9ad274070fa85f26407b816f5a4d82205ae86bac1990be658d0795ea4d fmt-7.0.3.zip +sha256 5d98c504d0205f912e22449ecdea776b78ce0bb096927334f80781e720084c9f fmt-7.1.3.zip sha256 825c9324e70f8c839c8ba910543dd4a7daee243b86ef960594c11381a19980b8 LICENSE.rst diff --git a/package/fmt/fmt.mk b/package/fmt/fmt.mk index 0539dcc024..000bacfd7b 100644 --- a/package/fmt/fmt.mk +++ b/package/fmt/fmt.mk @@ -4,7 +4,7 @@ # ################################################################################ -FMT_VERSION = 7.0.3 +FMT_VERSION = 7.1.3 FMT_SITE = https://github.com/fmtlib/fmt/releases/download/$(FMT_VERSION) FMT_SOURCE = fmt-$(FMT_VERSION).zip FMT_LICENSE = MIT with exception From eefebfe5dfd6dd34f3142c633a44ea1fe21c1ec7 Mon Sep 17 00:00:00 2001 From: Fabrice Fontaine Date: Wed, 18 Nov 2020 18:18:27 +0100 Subject: [PATCH 69/95] package/kmsxx: fix build with gcc 10 Fixes: - http://autobuild.buildroot.org/results/59f70fb725c2f07e27dc818839e02f2788ee490c Signed-off-by: Fabrice Fontaine Signed-off-by: Thomas Petazzoni --- ...card.h-to-follow-gcc10-porting-guide.patch | 25 +++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 package/kmsxx/0002-added-include-string-to-card.h-to-follow-gcc10-porting-guide.patch diff --git a/package/kmsxx/0002-added-include-string-to-card.h-to-follow-gcc10-porting-guide.patch b/package/kmsxx/0002-added-include-string-to-card.h-to-follow-gcc10-porting-guide.patch new file mode 100644 index 0000000000..a326577b04 --- /dev/null +++ b/package/kmsxx/0002-added-include-string-to-card.h-to-follow-gcc10-porting-guide.patch @@ -0,0 +1,25 @@ +From b53f9d383c9189a897c44cd88a8fc1b871fdc8a2 Mon Sep 17 00:00:00 2001 +From: Tobias Off +Date: Thu, 8 Oct 2020 22:37:55 +0200 +Subject: [PATCH] added #include to card.h to follow gcc10 porting + guide + +[Retrieved (and backported) from: +https://github.com/tomba/kmsxx/commit/b53f9d383c9189a897c44cd88a8fc1b871fdc8a2] +Signed-off-by: Fabrice Fontaine +--- + kms++/inc/kms++/card.h | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/kms++/inc/kms++/card.h b/kms++/inc/kms++/card.h +index 0a7eaaf..f60b184 100644 +--- a/kms++/inc/kms++/card.h ++++ b/kms++/inc/kms++/card.h +@@ -4,6 +4,7 @@ + #include + #include + #include ++#include + + #include "decls.h" + #include "pipeline.h" From 4146241624045c8b3dd785aaefd3e0795ff1281d Mon Sep 17 00:00:00 2001 From: Peter Seiderer Date: Sun, 29 Nov 2020 18:56:33 +0100 Subject: [PATCH 70/95] package/kmsxx: bump version to 5489056 and convert to meson build - remove 0001-fix-compiler-errors-with-gcc-10.patch (upstream) - remove 0002-added-include-string-to-card.h-to-follow-gcc10-porti.patch (upstream) - convert to meson - add patch to use system fmt instead of git submodule (fixes configure 'ERROR: Include dir ext/fmt/include does not exist.') - add patch to use system pybind11 instead of git submodule (fixes configure 'ERROR: Include dir ext/pybind11/include does not exist.') - add patch to use python only if pykms is enabled (fixes configure 'ERROR: Dependency "pybind11" not found, tried pkgconfig') - add optional libevdev dependency (needed for utils/kmstouch) - update LICENSE file hash (replaced short copyright notice and link to http://mozilla.org/MPL/2.0/ with complete license text) - lift toolchain headers requirement to at least 4.11 (include linux/dma-buf.h) Signed-off-by: Peter Seiderer Signed-off-by: Thomas Petazzoni --- ...0001-fix-compiler-errors-with-gcc-10.patch | 35 --------- ...0001-meson-add-use-system-fmt-option.patch | 46 ++++++++++++ ...card.h-to-follow-gcc10-porting-guide.patch | 25 ------- ...meson-add-use-system-pybind11-option.patch | 43 +++++++++++ ...ly-build-py-in-case-pykms-is-enabled.patch | 48 ++++++++++++ package/kmsxx/Config.in | 7 +- package/kmsxx/kmsxx.hash | 4 +- package/kmsxx/kmsxx.mk | 74 ++++++++----------- 8 files changed, 172 insertions(+), 110 deletions(-) delete mode 100644 package/kmsxx/0001-fix-compiler-errors-with-gcc-10.patch create mode 100644 package/kmsxx/0001-meson-add-use-system-fmt-option.patch delete mode 100644 package/kmsxx/0002-added-include-string-to-card.h-to-follow-gcc10-porting-guide.patch create mode 100644 package/kmsxx/0002-meson-add-use-system-pybind11-option.patch create mode 100644 package/kmsxx/0003-meson-only-build-py-in-case-pykms-is-enabled.patch diff --git a/package/kmsxx/0001-fix-compiler-errors-with-gcc-10.patch b/package/kmsxx/0001-fix-compiler-errors-with-gcc-10.patch deleted file mode 100644 index 6ec080af97..0000000000 --- a/package/kmsxx/0001-fix-compiler-errors-with-gcc-10.patch +++ /dev/null @@ -1,35 +0,0 @@ -From aa54634ce7cbbfc844de945e73a9f34cdcb9bb12 Mon Sep 17 00:00:00 2001 -From: Peter Trompeter -Date: Fri, 15 May 2020 15:20:47 +0200 -Subject: [PATCH] fix compiler errors with gcc 10 - -[Retrieved from: -https://github.com/tomba/kmsxx/commit/aa54634ce7cbbfc844de945e73a9f34cdcb9bb12] -Signed-off-by: Fabrice Fontaine ---- - kms++/inc/kms++/pixelformats.h | 1 + - kms++util/src/opts.cpp | 1 + - 2 files changed, 2 insertions(+) - -diff --git a/kms++/inc/kms++/pixelformats.h b/kms++/inc/kms++/pixelformats.h -index 784717d..4e73d5d 100644 ---- a/kms++/inc/kms++/pixelformats.h -+++ b/kms++/inc/kms++/pixelformats.h -@@ -2,6 +2,7 @@ - - #include - #include -+#include - - namespace kms - { -diff --git a/kms++util/src/opts.cpp b/kms++util/src/opts.cpp -index afef452..5a14b84 100644 ---- a/kms++util/src/opts.cpp -+++ b/kms++util/src/opts.cpp -@@ -1,4 +1,5 @@ - #include -+#include - - #include - #include diff --git a/package/kmsxx/0001-meson-add-use-system-fmt-option.patch b/package/kmsxx/0001-meson-add-use-system-fmt-option.patch new file mode 100644 index 0000000000..e9d67b1202 --- /dev/null +++ b/package/kmsxx/0001-meson-add-use-system-fmt-option.patch @@ -0,0 +1,46 @@ +From 61db7d5520f50564da8f2c9ac952eadb31f70727 Mon Sep 17 00:00:00 2001 +From: Peter Seiderer +Date: Sun, 29 Nov 2020 11:13:41 +0100 +Subject: [PATCH] meson: add use-system-fmt option + +[Upstream: https://github.com/tomba/kmsxx/pull/60] +Signed-off-by: Peter Seiderer +--- + meson.build | 10 +++++++--- + meson_options.txt | 2 ++ + 2 files changed, 9 insertions(+), 3 deletions(-) + +diff --git a/meson.build b/meson.build +index 9652009..29080f4 100644 +--- a/meson.build ++++ b/meson.build +@@ -31,9 +31,13 @@ endif + + add_global_link_arguments(link_arguments, language : 'cpp') + +-libfmt_includes = include_directories('ext/fmt/include') +-libfmt_dep = declare_dependency(include_directories : libfmt_includes, +- compile_args : '-DFMT_HEADER_ONLY') ++if get_option('use-system-fmt') ++ libfmt_dep = dependency('fmt') ++else ++ libfmt_includes = include_directories('ext/fmt/include') ++ libfmt_dep = declare_dependency(include_directories : libfmt_includes, ++ compile_args : '-DFMT_HEADER_ONLY') ++endif + + pybind11_includes = include_directories('ext/pybind11/include') + pybind11_dep = declare_dependency(include_directories : pybind11_includes) +diff --git a/meson_options.txt b/meson_options.txt +index cd854ab..48176a8 100644 +--- a/meson_options.txt ++++ b/meson_options.txt +@@ -3,3 +3,5 @@ option('pykms', type : 'feature', value : 'auto') + option('omap', type : 'feature', value : 'auto') + option('static-libc', type : 'boolean', value : false) + option('utils', type : 'boolean', value : true) ++ ++option('use-system-fmt', type : 'boolean', value : false) +-- +2.29.2 + diff --git a/package/kmsxx/0002-added-include-string-to-card.h-to-follow-gcc10-porting-guide.patch b/package/kmsxx/0002-added-include-string-to-card.h-to-follow-gcc10-porting-guide.patch deleted file mode 100644 index a326577b04..0000000000 --- a/package/kmsxx/0002-added-include-string-to-card.h-to-follow-gcc10-porting-guide.patch +++ /dev/null @@ -1,25 +0,0 @@ -From b53f9d383c9189a897c44cd88a8fc1b871fdc8a2 Mon Sep 17 00:00:00 2001 -From: Tobias Off -Date: Thu, 8 Oct 2020 22:37:55 +0200 -Subject: [PATCH] added #include to card.h to follow gcc10 porting - guide - -[Retrieved (and backported) from: -https://github.com/tomba/kmsxx/commit/b53f9d383c9189a897c44cd88a8fc1b871fdc8a2] -Signed-off-by: Fabrice Fontaine ---- - kms++/inc/kms++/card.h | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/kms++/inc/kms++/card.h b/kms++/inc/kms++/card.h -index 0a7eaaf..f60b184 100644 ---- a/kms++/inc/kms++/card.h -+++ b/kms++/inc/kms++/card.h -@@ -4,6 +4,7 @@ - #include - #include - #include -+#include - - #include "decls.h" - #include "pipeline.h" diff --git a/package/kmsxx/0002-meson-add-use-system-pybind11-option.patch b/package/kmsxx/0002-meson-add-use-system-pybind11-option.patch new file mode 100644 index 0000000000..be58b65b42 --- /dev/null +++ b/package/kmsxx/0002-meson-add-use-system-pybind11-option.patch @@ -0,0 +1,43 @@ +From 27f15549ce67194e4152c57db2b762b7a443b4c7 Mon Sep 17 00:00:00 2001 +From: Peter Seiderer +Date: Sun, 29 Nov 2020 11:14:41 +0100 +Subject: [PATCH] meson: add use-system-pybind11 option + +[Upstream: https://github.com/tomba/kmsxx/pull/60] +Signed-off-by: Peter Seiderer +--- + meson.build | 8 ++++++-- + meson_options.txt | 1 + + 2 files changed, 7 insertions(+), 2 deletions(-) + +diff --git a/meson.build b/meson.build +index 29080f4..4b3e7c3 100644 +--- a/meson.build ++++ b/meson.build +@@ -39,8 +39,12 @@ else + compile_args : '-DFMT_HEADER_ONLY') + endif + +-pybind11_includes = include_directories('ext/pybind11/include') +-pybind11_dep = declare_dependency(include_directories : pybind11_includes) ++if get_option('use-system-pybind11') ++ pybind11_dep = dependency('pybind11') ++else ++ pybind11_includes = include_directories('ext/pybind11/include') ++ pybind11_dep = declare_dependency(include_directories : pybind11_includes) ++endif + + libdrmomap_dep = dependency('libdrm_omap', required : get_option('omap')) + +diff --git a/meson_options.txt b/meson_options.txt +index 48176a8..095c6f2 100644 +--- a/meson_options.txt ++++ b/meson_options.txt +@@ -5,3 +5,4 @@ option('static-libc', type : 'boolean', value : false) + option('utils', type : 'boolean', value : true) + + option('use-system-fmt', type : 'boolean', value : false) ++option('use-system-pybind11', type : 'boolean', value : false) +-- +2.29.2 + diff --git a/package/kmsxx/0003-meson-only-build-py-in-case-pykms-is-enabled.patch b/package/kmsxx/0003-meson-only-build-py-in-case-pykms-is-enabled.patch new file mode 100644 index 0000000000..a908521381 --- /dev/null +++ b/package/kmsxx/0003-meson-only-build-py-in-case-pykms-is-enabled.patch @@ -0,0 +1,48 @@ +From 0ef36b2e22c2ac0331b3096b7adc69fb08044048 Mon Sep 17 00:00:00 2001 +From: Peter Seiderer +Date: Sun, 29 Nov 2020 11:37:26 +0100 +Subject: [PATCH] meson: only build py in case pykms is enabled + +[Upstream: https://github.com/tomba/kmsxx/pull/60] +Signed-off-by: Peter Seiderer +--- + meson.build | 16 ++++++++++------ + 1 file changed, 10 insertions(+), 6 deletions(-) + +diff --git a/meson.build b/meson.build +index 4b3e7c3..1810b17 100644 +--- a/meson.build ++++ b/meson.build +@@ -39,11 +39,13 @@ else + compile_args : '-DFMT_HEADER_ONLY') + endif + +-if get_option('use-system-pybind11') +- pybind11_dep = dependency('pybind11') +-else +- pybind11_includes = include_directories('ext/pybind11/include') +- pybind11_dep = declare_dependency(include_directories : pybind11_includes) ++if get_option('pykms').enabled() ++ if get_option('use-system-pybind11') ++ pybind11_dep = dependency('pybind11') ++ else ++ pybind11_includes = include_directories('ext/pybind11/include') ++ pybind11_dep = declare_dependency(include_directories : pybind11_includes) ++ endif + endif + + libdrmomap_dep = dependency('libdrm_omap', required : get_option('omap')) +@@ -55,7 +57,9 @@ if get_option('utils') + subdir('utils') + endif + +-subdir('py') ++if get_option('pykms').enabled() ++ subdir('py') ++endif + + if get_option('kmscube') + subdir('kmscube') +-- +2.29.2 + diff --git a/package/kmsxx/Config.in b/package/kmsxx/Config.in index 1d174c18b1..6e4d1e61a1 100644 --- a/package/kmsxx/Config.in +++ b/package/kmsxx/Config.in @@ -1,9 +1,10 @@ config BR2_PACKAGE_KMSXX bool "kms++" depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 - depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_8 + depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_11 # linux/dma-buf.h depends on BR2_INSTALL_LIBSTDCPP depends on BR2_TOOLCHAIN_HAS_THREADS # libdrm + select BR2_PACKAGE_FMT select BR2_PACKAGE_LIBDRM help libkms++ is a C++11 library for kernel mode setting. @@ -21,6 +22,6 @@ config BR2_PACKAGE_KMSXX_INSTALL_TESTS endif -comment "kms++ needs a toolchain w/ threads, C++, gcc >= 4.8, headers >= 3.8" +comment "kms++ needs a toolchain w/ threads, C++, gcc >= 4.8, headers >= 4.11" depends on !BR2_TOOLCHAIN_HAS_THREADS || !BR2_INSTALL_LIBSTDCPP || \ - !BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 || !BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_8 + !BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 || !BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_11 diff --git a/package/kmsxx/kmsxx.hash b/package/kmsxx/kmsxx.hash index b8d06ac478..1eeb1e6a7e 100644 --- a/package/kmsxx/kmsxx.hash +++ b/package/kmsxx/kmsxx.hash @@ -1,3 +1,3 @@ # Locally calculated -sha256 28892e50c1d1c83fddff9ec683e3bdbd465f5032d0014ceeab43563b813807e1 kmsxx-cb0786049f960f2bd383617151b01318e02e9ff9.tar.gz -sha256 022b4d51da34a380d74dc24eea8e2c4e1a4c8776a52171f8d9e941cf56daf888 LICENSE +sha256 4a682328b03c28ff1f6cfcafc48d30c3feb5ef98ed07e5dd3bbd9e6a1d4a47cc kmsxx-548905611c130ea9d31929a0caf7a198d8bac462.tar.gz +sha256 fab3dd6bdab226f1c08630b1dd917e11fcb4ec5e1e020e2c16f83a0a13863e85 LICENSE diff --git a/package/kmsxx/kmsxx.mk b/package/kmsxx/kmsxx.mk index 829beb1d68..fd40ff8e73 100644 --- a/package/kmsxx/kmsxx.mk +++ b/package/kmsxx/kmsxx.mk @@ -4,62 +4,46 @@ # ################################################################################ -KMSXX_VERSION = cb0786049f960f2bd383617151b01318e02e9ff9 +KMSXX_VERSION = 548905611c130ea9d31929a0caf7a198d8bac462 KMSXX_SITE = $(call github,tomba,kmsxx,$(KMSXX_VERSION)) KMSXX_LICENSE = MPL-2.0 KMSXX_LICENSE_FILES = LICENSE KMSXX_INSTALL_STAGING = YES -KMSXX_DEPENDENCIES = libdrm host-pkgconf -KMSXX_CONF_OPTS = -DKMSXX_ENABLE_PYTHON=OFF +KMSXX_DEPENDENCIES = fmt libdrm host-pkgconf +KMSXX_CONF_OPTS = \ + -Dkmscube=false \ + -Dpykms=disabled \ + -Domap=disabled \ + -Duse-system-fmt=true \ + -Duse-system-pybind11=true -KMSXX_CXXFLAGS = $(TARGET_CXXFLAGS) - -ifeq ($(BR2_TOOLCHAIN_HAS_GCC_BUG_85180),y) -KMSXX_CXXFLAGS += -O0 +ifeq ($(BR2_STATIC_LIBS),y) +KMSXX_CONF_OPTS += -Dstatic-libc=true +else +KMSXX_CONF_OPTS += -Dstatic-libc=false endif -KMSXX_CONF_OPTS += -DCMAKE_CXX_FLAGS="$(KMSXX_CXXFLAGS)" +ifeq ($(BR2_TOOLCHAIN_HAS_GCC_BUG_85180),y) +KMSXX_CXXFLAGS += $(TARGET_CXXFLAGS) -O0 +endif ifeq ($(BR2_PACKAGE_KMSXX_INSTALL_TESTS),y) -KMSXX_TESTS = \ - fbtest kmsblank kmscapture \ - kmsprint kmstest kmsview wbcap \ - wbm2m - -define KMSXX_INSTALL_TARGET_TESTS - $(foreach t,$(KMSXX_TESTS),\ - $(INSTALL) -D -m 0755 $(@D)/bin/$(t) \ +KMSXX_CONF_OPTS += -Dutils=true +# extra handling for some utils not installed by default +KMSXX_EXTRA_UTILS = kmsview kmscapture omap-wbcap omap-wbm2m +ifeq ($(BR2_PACKAGE_LIBEVDEV),y) +KMSXX_DEPENDENCIES += libevdev +KMSXX_EXTRA_UTILS += kmstouch +endif +define KMSXX_INSTALL_EXTRA_UTILS + $(foreach t,$(KMSXX_EXTRA_UTILS),\ + $(INSTALL) -D -m 0755 $(@D)/build/utils/$(t) \ $(TARGET_DIR)/usr/bin/$(t) ) endef +KMSXX_POST_INSTALL_TARGET_HOOKS += KMSXX_INSTALL_EXTRA_UTILS +else +KMSXX_CONF_OPTS += -Dutils=false endif -KMSXX_LIBS = kms++ kms++util - -define KMSXX_INSTALL_TARGET_CMDS - $(if $(BR2_SHARED_LIBS)$(BR2_SHARED_STATIC_LIBS), - $(foreach l,$(KMSXX_LIBS),\ - $(INSTALL) -D -m 0755 $(@D)/lib/lib$(l).so \ - $(TARGET_DIR)/usr/lib/lib$(l).so - ) - ) - $(KMSXX_INSTALL_TARGET_TESTS) -endef - -# kmsxx only builds shared or static libraries, so when -# BR2_SHARED_STATIC_LIBS=y, we don't have any static library to -# install -define KMSXX_INSTALL_STAGING_CMDS - $(foreach l,$(KMSXX_LIBS),\ - $(if $(BR2_SHARED_LIBS)$(BR2_SHARED_STATIC_LIBS), - $(INSTALL) -D -m 0755 $(@D)/lib/lib$(l).so \ - $(STAGING_DIR)/usr/lib/lib$(l).so) - $(if $(BR2_STATIC_LIBS), - $(INSTALL) -D -m 0755 $(@D)/lib/lib$(l).a \ - $(STAGING_DIR)/usr/lib/lib$(l).a) - mkdir -p $(STAGING_DIR)/usr/include/$(l) - cp -dpfr $(@D)/$(l)/inc/$(l)/* $(STAGING_DIR)/usr/include/$(l)/ - ) -endef - -$(eval $(cmake-package)) +$(eval $(meson-package)) From a68e516ac52ddbff5f6e0742a1ee4c614e831486 Mon Sep 17 00:00:00 2001 From: Johan Oudinet Date: Thu, 26 Nov 2020 18:42:44 +0100 Subject: [PATCH 71/95] package/erlang-p1-utils: bump version to 1.0.20 Signed-off-by: Johan Oudinet Signed-off-by: Thomas Petazzoni --- package/erlang-p1-utils/erlang-p1-utils.hash | 4 ++-- package/erlang-p1-utils/erlang-p1-utils.mk | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package/erlang-p1-utils/erlang-p1-utils.hash b/package/erlang-p1-utils/erlang-p1-utils.hash index f749aabe37..dec7c26039 100644 --- a/package/erlang-p1-utils/erlang-p1-utils.hash +++ b/package/erlang-p1-utils/erlang-p1-utils.hash @@ -1,3 +1,3 @@ # Locally calculated -sha256 2559967770558dc003bcc3c7efc216f6c57c4f23830d5de33c6bf61d8a3f880c erlang-p1-utils-1.0.16.tar.gz -sha256 cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30 LICENSE.txt +sha256 234b88227f61ef03a6177d97ed062c62a22760b6fd189a5a24d2fd1599d95ac9 erlang-p1-utils-1.0.20.tar.gz +sha256 cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30 LICENSE.txt diff --git a/package/erlang-p1-utils/erlang-p1-utils.mk b/package/erlang-p1-utils/erlang-p1-utils.mk index 5375971d39..084382cd2b 100644 --- a/package/erlang-p1-utils/erlang-p1-utils.mk +++ b/package/erlang-p1-utils/erlang-p1-utils.mk @@ -4,7 +4,7 @@ # ################################################################################ -ERLANG_P1_UTILS_VERSION = 1.0.16 +ERLANG_P1_UTILS_VERSION = 1.0.20 ERLANG_P1_UTILS_SITE = $(call github,processone,p1_utils,$(ERLANG_P1_UTILS_VERSION)) ERLANG_P1_UTILS_LICENSE = Apache-2.0 ERLANG_P1_UTILS_LICENSE_FILES = LICENSE.txt From fe282f13bad1413afea106bba5a44047dfb62595 Mon Sep 17 00:00:00 2001 From: Johan Oudinet Date: Thu, 26 Nov 2020 18:42:45 +0100 Subject: [PATCH 72/95] package/erlang-p1-cache-tab: bump version to 1.0.25 Signed-off-by: Johan Oudinet Signed-off-by: Thomas Petazzoni --- package/erlang-p1-cache-tab/erlang-p1-cache-tab.hash | 4 ++-- package/erlang-p1-cache-tab/erlang-p1-cache-tab.mk | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package/erlang-p1-cache-tab/erlang-p1-cache-tab.hash b/package/erlang-p1-cache-tab/erlang-p1-cache-tab.hash index 605ced2ba7..85a92cf0b2 100644 --- a/package/erlang-p1-cache-tab/erlang-p1-cache-tab.hash +++ b/package/erlang-p1-cache-tab/erlang-p1-cache-tab.hash @@ -1,3 +1,3 @@ # Locally calculated -sha256 572b6532dca59c561d994bf2bf8eed3637118c64cdd3a9e51d81b506f5b09e2c erlang-p1-cache-tab-1.0.20.tar.gz -sha256 cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30 LICENSE.txt +sha256 32cb3a3017f53e66bd1c2b75f60a2c4a14f00f375582a3c511ea39266b2385b9 erlang-p1-cache-tab-1.0.25.tar.gz +sha256 cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30 LICENSE.txt diff --git a/package/erlang-p1-cache-tab/erlang-p1-cache-tab.mk b/package/erlang-p1-cache-tab/erlang-p1-cache-tab.mk index 0d53358cfa..f3253d1cd7 100644 --- a/package/erlang-p1-cache-tab/erlang-p1-cache-tab.mk +++ b/package/erlang-p1-cache-tab/erlang-p1-cache-tab.mk @@ -4,7 +4,7 @@ # ################################################################################ -ERLANG_P1_CACHE_TAB_VERSION = 1.0.20 +ERLANG_P1_CACHE_TAB_VERSION = 1.0.25 ERLANG_P1_CACHE_TAB_SITE = $(call github,processone,cache_tab,$(ERLANG_P1_CACHE_TAB_VERSION)) ERLANG_P1_CACHE_TAB_LICENSE = Apache-2.0 ERLANG_P1_CACHE_TAB_LICENSE_FILES = LICENSE.txt From 5f932efd90ea16f663e22b5f14fe5ea0969d1000 Mon Sep 17 00:00:00 2001 From: Johan Oudinet Date: Thu, 26 Nov 2020 18:42:46 +0100 Subject: [PATCH 73/95] package/erlang-eimp: bump version to 1.0.17 Signed-off-by: Johan Oudinet Signed-off-by: Thomas Petazzoni --- package/erlang-eimp/erlang-eimp.hash | 4 ++-- package/erlang-eimp/erlang-eimp.mk | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package/erlang-eimp/erlang-eimp.hash b/package/erlang-eimp/erlang-eimp.hash index a0276beded..28d22be16d 100644 --- a/package/erlang-eimp/erlang-eimp.hash +++ b/package/erlang-eimp/erlang-eimp.hash @@ -1,3 +1,3 @@ # Locally calculated -sha256 dfcdc211480f974175af615616c7f8c1e8f9dff5d6be5faa3f20c3eb4c60240e erlang-eimp-1.0.12.tar.gz -sha256 cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30 LICENSE.txt +sha256 1a529fa6e8264d3cad43861db417a1e841b28c0601aa847857fa0d6a81935922 erlang-eimp-1.0.17.tar.gz +sha256 cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30 LICENSE.txt diff --git a/package/erlang-eimp/erlang-eimp.mk b/package/erlang-eimp/erlang-eimp.mk index c8cea0e429..d066961cd3 100644 --- a/package/erlang-eimp/erlang-eimp.mk +++ b/package/erlang-eimp/erlang-eimp.mk @@ -4,7 +4,7 @@ # ################################################################################ -ERLANG_EIMP_VERSION = 1.0.12 +ERLANG_EIMP_VERSION = 1.0.17 ERLANG_EIMP_SITE = $(call github,processone,eimp,$(ERLANG_EIMP_VERSION)) ERLANG_EIMP_LICENSE = Apache-2.0 ERLANG_EIMP_LICENSE_FILES = LICENSE.txt From 5f47e7adb4e3a3748abc3ba9f83020d00a73401b Mon Sep 17 00:00:00 2001 From: Johan Oudinet Date: Thu, 26 Nov 2020 18:42:47 +0100 Subject: [PATCH 74/95] package/erlang-p1-zlib: bump version to 1.0.9 The license file hash has changed due to: -Copyright 2002-2019 ProcessOne SARL +Copyright 2002-2020 ProcessOne SARL Signed-off-by: Johan Oudinet Signed-off-by: Thomas Petazzoni --- package/erlang-p1-zlib/erlang-p1-zlib.hash | 4 ++-- package/erlang-p1-zlib/erlang-p1-zlib.mk | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package/erlang-p1-zlib/erlang-p1-zlib.hash b/package/erlang-p1-zlib/erlang-p1-zlib.hash index ed803d98d8..7ce58762f8 100644 --- a/package/erlang-p1-zlib/erlang-p1-zlib.hash +++ b/package/erlang-p1-zlib/erlang-p1-zlib.hash @@ -1,3 +1,3 @@ # Locally calculated -sha256 7d39a3cb92ed7781b6b6ba95704e2591c626d62eddb3c52dcaeac60c339084d7 erlang-p1-zlib-1.0.6.tar.gz -sha256 6e68ca4488fcdacf80ea0a3f5a6a294d48c2d8dc9de520cc3d6b3f3c1bc12847 LICENSE.txt +sha256 f0ac60336b2ddf55ac4f58934580cb8f02dba440d68feb607be312dd35d91269 erlang-p1-zlib-1.0.9.tar.gz +sha256 6cd4871db940d055cf272c12c10e0c08febdc94362e404390758fde34b4ce01a LICENSE.txt diff --git a/package/erlang-p1-zlib/erlang-p1-zlib.mk b/package/erlang-p1-zlib/erlang-p1-zlib.mk index 46a7d12862..0e6ee298ef 100644 --- a/package/erlang-p1-zlib/erlang-p1-zlib.mk +++ b/package/erlang-p1-zlib/erlang-p1-zlib.mk @@ -4,7 +4,7 @@ # ################################################################################ -ERLANG_P1_ZLIB_VERSION = 1.0.6 +ERLANG_P1_ZLIB_VERSION = 1.0.9 ERLANG_P1_ZLIB_SITE = $(call github,processone,ezlib,$(ERLANG_P1_ZLIB_VERSION)) ERLANG_P1_ZLIB_LICENSE = Apache-2.0 ERLANG_P1_ZLIB_LICENSE_FILES = LICENSE.txt From b5dcddf4521b37e597828cac6ac5b863ad3dbf1b Mon Sep 17 00:00:00 2001 From: Johan Oudinet Date: Thu, 26 Nov 2020 18:42:48 +0100 Subject: [PATCH 75/95] package/erlang-p1-tls: bump version to 1.1.9 The license file hash has changed due to: -Copyright 2002-2019 ProcessOne SARL +Copyright 2002-2020 ProcessOne SARL Signed-off-by: Johan Oudinet Signed-off-by: Thomas Petazzoni --- package/erlang-p1-tls/erlang-p1-tls.hash | 4 ++-- package/erlang-p1-tls/erlang-p1-tls.mk | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package/erlang-p1-tls/erlang-p1-tls.hash b/package/erlang-p1-tls/erlang-p1-tls.hash index 135a5368d1..475223b986 100644 --- a/package/erlang-p1-tls/erlang-p1-tls.hash +++ b/package/erlang-p1-tls/erlang-p1-tls.hash @@ -1,3 +1,3 @@ # Locally calculated -sha256 6444e174650054a53624490155a914b8bea31cdefbcd5f87fc1862102dc1db6e erlang-p1-tls-1.1.2.tar.gz -sha256 6e68ca4488fcdacf80ea0a3f5a6a294d48c2d8dc9de520cc3d6b3f3c1bc12847 LICENSE.txt +sha256 97fd0a398751fc63b28df016e92a08ea98d083f7d5e3f32380a92de1ee86ca0e erlang-p1-tls-1.1.9.tar.gz +sha256 6cd4871db940d055cf272c12c10e0c08febdc94362e404390758fde34b4ce01a LICENSE.txt diff --git a/package/erlang-p1-tls/erlang-p1-tls.mk b/package/erlang-p1-tls/erlang-p1-tls.mk index 824fe41ec1..9e7d4c7c73 100644 --- a/package/erlang-p1-tls/erlang-p1-tls.mk +++ b/package/erlang-p1-tls/erlang-p1-tls.mk @@ -4,7 +4,7 @@ # ################################################################################ -ERLANG_P1_TLS_VERSION = 1.1.2 +ERLANG_P1_TLS_VERSION = 1.1.9 ERLANG_P1_TLS_SITE = $(call github,processone,fast_tls,$(ERLANG_P1_TLS_VERSION)) ERLANG_P1_TLS_LICENSE = Apache-2.0 ERLANG_P1_TLS_LICENSE_FILES = LICENSE.txt From cab94833faa286155b8579e31ba63aa79572bdd0 Mon Sep 17 00:00:00 2001 From: Johan Oudinet Date: Thu, 26 Nov 2020 18:42:49 +0100 Subject: [PATCH 76/95] package/erlang-p1-xml: bump version to 1.1.44 Signed-off-by: Johan Oudinet Signed-off-by: Thomas Petazzoni --- package/erlang-p1-xml/erlang-p1-xml.hash | 4 ++-- package/erlang-p1-xml/erlang-p1-xml.mk | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package/erlang-p1-xml/erlang-p1-xml.hash b/package/erlang-p1-xml/erlang-p1-xml.hash index 07e640341a..f2a4ab83e0 100644 --- a/package/erlang-p1-xml/erlang-p1-xml.hash +++ b/package/erlang-p1-xml/erlang-p1-xml.hash @@ -1,3 +1,3 @@ # Locally calculated -sha256 f3226683ec9c8406147a025beebb5b9ed0adcb28099b7c4bb9435a369e9ac3f9 erlang-p1-xml-1.1.37.tar.gz -sha256 cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30 LICENSE.txt +sha256 739f37a161a570071469ab1f3d8fc232f004ea616700fe7e46b6d8afa9d03a60 erlang-p1-xml-1.1.44.tar.gz +sha256 cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30 LICENSE.txt diff --git a/package/erlang-p1-xml/erlang-p1-xml.mk b/package/erlang-p1-xml/erlang-p1-xml.mk index c66bd25776..5730181ac6 100644 --- a/package/erlang-p1-xml/erlang-p1-xml.mk +++ b/package/erlang-p1-xml/erlang-p1-xml.mk @@ -4,7 +4,7 @@ # ################################################################################ -ERLANG_P1_XML_VERSION = 1.1.37 +ERLANG_P1_XML_VERSION = 1.1.44 ERLANG_P1_XML_SITE = $(call github,processone,fast_xml,$(ERLANG_P1_XML_VERSION)) ERLANG_P1_XML_LICENSE = Apache-2.0 ERLANG_P1_XML_LICENSE_FILES = LICENSE.txt From add7a8aaa71731841de301d80516781cc21673c6 Mon Sep 17 00:00:00 2001 From: Johan Oudinet Date: Thu, 26 Nov 2020 18:42:50 +0100 Subject: [PATCH 77/95] package/erlang-jiffy: bump version to 1.0.6 Signed-off-by: Johan Oudinet Signed-off-by: Thomas Petazzoni --- package/erlang-jiffy/erlang-jiffy.hash | 4 ++-- package/erlang-jiffy/erlang-jiffy.mk | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package/erlang-jiffy/erlang-jiffy.hash b/package/erlang-jiffy/erlang-jiffy.hash index 1c18142b6e..19e4f96012 100644 --- a/package/erlang-jiffy/erlang-jiffy.hash +++ b/package/erlang-jiffy/erlang-jiffy.hash @@ -1,3 +1,3 @@ # Locally computed -sha256 c555726f592b79894c253ca1dc3c3aec6a5697271d29364d57f8175f387b86f3 erlang-jiffy-0.14.11.tar.gz -sha256 0fa8afad2f02c08850a16e36fe55376ee19732b3a116a0207f2a73c857777a49 LICENSE +sha256 7cf67840c58b8732e12c84c8a3b714774da2601ae5e6a57f286273e25b205516 erlang-jiffy-1.0.6.tar.gz +sha256 0fa8afad2f02c08850a16e36fe55376ee19732b3a116a0207f2a73c857777a49 LICENSE diff --git a/package/erlang-jiffy/erlang-jiffy.mk b/package/erlang-jiffy/erlang-jiffy.mk index 9a688f7c9b..e50a5f598f 100644 --- a/package/erlang-jiffy/erlang-jiffy.mk +++ b/package/erlang-jiffy/erlang-jiffy.mk @@ -4,7 +4,7 @@ # ################################################################################ -ERLANG_JIFFY_VERSION = 0.14.11 +ERLANG_JIFFY_VERSION = 1.0.6 ERLANG_JIFFY_SITE = $(call github,davisp,jiffy,$(ERLANG_JIFFY_VERSION)) ERLANG_JIFFY_LICENSE = MIT (core), \ BSD-3-Clause (Google double conversion library), \ From 8edc25ca9bfbf39d0718330b70a7feb5652fd140 Mon Sep 17 00:00:00 2001 From: Johan Oudinet Date: Thu, 26 Nov 2020 18:42:51 +0100 Subject: [PATCH 78/95] package/erlang-p1-mqtree: bump version to 1.0.10 Signed-off-by: Johan Oudinet Signed-off-by: Thomas Petazzoni --- package/erlang-p1-mqtree/erlang-p1-mqtree.hash | 4 ++-- package/erlang-p1-mqtree/erlang-p1-mqtree.mk | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package/erlang-p1-mqtree/erlang-p1-mqtree.hash b/package/erlang-p1-mqtree/erlang-p1-mqtree.hash index 43e98d0699..cf1a880cb8 100644 --- a/package/erlang-p1-mqtree/erlang-p1-mqtree.hash +++ b/package/erlang-p1-mqtree/erlang-p1-mqtree.hash @@ -1,3 +1,3 @@ # Locally calculated -sha256 034d564e92ca8e9d66668548ea510d2cf9fdbad40609622a87374aa907110884 erlang-p1-mqtree-1.0.5.tar.gz -sha256 cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30 LICENSE +sha256 4f86e272a97152d3f5166dad583dc1b5bda9582f6777f6294fb8328def8b2189 erlang-p1-mqtree-1.0.10.tar.gz +sha256 cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30 LICENSE diff --git a/package/erlang-p1-mqtree/erlang-p1-mqtree.mk b/package/erlang-p1-mqtree/erlang-p1-mqtree.mk index bd5f28237c..19e31ef1b2 100644 --- a/package/erlang-p1-mqtree/erlang-p1-mqtree.mk +++ b/package/erlang-p1-mqtree/erlang-p1-mqtree.mk @@ -4,7 +4,7 @@ # ################################################################################ -ERLANG_P1_MQTREE_VERSION = 1.0.5 +ERLANG_P1_MQTREE_VERSION = 1.0.10 ERLANG_P1_MQTREE_SITE = $(call github,processone,mqtree,$(ERLANG_P1_MQTREE_VERSION)) ERLANG_P1_MQTREE_LICENSE = Apache-2.0 ERLANG_P1_MQTREE_LICENSE_FILES = LICENSE From 76f15737647ff4c3b4cc1f86a2154b63ffa4b1b9 Mon Sep 17 00:00:00 2001 From: Johan Oudinet Date: Thu, 26 Nov 2020 18:42:52 +0100 Subject: [PATCH 79/95] package/erlang-p1-yconf: bump version to 1.0.8 Signed-off-by: Johan Oudinet Signed-off-by: Thomas Petazzoni --- package/erlang-p1-yconf/erlang-p1-yconf.hash | 4 ++-- package/erlang-p1-yconf/erlang-p1-yconf.mk | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package/erlang-p1-yconf/erlang-p1-yconf.hash b/package/erlang-p1-yconf/erlang-p1-yconf.hash index 6d0a9f68a1..97e71f85cd 100644 --- a/package/erlang-p1-yconf/erlang-p1-yconf.hash +++ b/package/erlang-p1-yconf/erlang-p1-yconf.hash @@ -1,3 +1,3 @@ # Locally calculated -sha256 94724bde03c976cdf51d0d43eece73c70381ef60a9dd7e49292d194c0beaeb53 erlang-p1-yconf-1.0.1.tar.gz -sha256 cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30 LICENSE +sha256 ab0f7462b8d03d18be1587fa9cfb227923055f765fca4459b4bb42ccef971329 erlang-p1-yconf-1.0.8.tar.gz +sha256 cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30 LICENSE diff --git a/package/erlang-p1-yconf/erlang-p1-yconf.mk b/package/erlang-p1-yconf/erlang-p1-yconf.mk index 5d44ec7eec..3e3a10ae15 100644 --- a/package/erlang-p1-yconf/erlang-p1-yconf.mk +++ b/package/erlang-p1-yconf/erlang-p1-yconf.mk @@ -4,7 +4,7 @@ # ################################################################################ -ERLANG_P1_YCONF_VERSION = 1.0.1 +ERLANG_P1_YCONF_VERSION = 1.0.8 ERLANG_P1_YCONF_SITE = $(call github,processone,yconf,$(ERLANG_P1_YCONF_VERSION)) ERLANG_P1_YCONF_LICENSE = Apache-2.0 ERLANG_P1_YCONF_LICENSE_FILES = LICENSE From 878bbbcc7b92cf705d5a77b4f477dc465f62fba6 Mon Sep 17 00:00:00 2001 From: Johan Oudinet Date: Thu, 26 Nov 2020 18:42:53 +0100 Subject: [PATCH 80/95] package/erlang-p1-acme: bump version to 1.0.9 The rebar.config.script file adds a dependency to base64url package. Since we remove all rebar dependencies, add a patch to remove such dependency. Otherwise rebar would try to download it during the build. Signed-off-by: Johan Oudinet Signed-off-by: Thomas Petazzoni --- ...ipt-remove-extra-dependency-to-base6.patch | 26 +++++++++++++++++++ package/erlang-p1-acme/erlang-p1-acme.hash | 4 +-- package/erlang-p1-acme/erlang-p1-acme.mk | 2 +- 3 files changed, 29 insertions(+), 3 deletions(-) create mode 100644 package/erlang-p1-acme/0001-rebar.config.script-remove-extra-dependency-to-base6.patch diff --git a/package/erlang-p1-acme/0001-rebar.config.script-remove-extra-dependency-to-base6.patch b/package/erlang-p1-acme/0001-rebar.config.script-remove-extra-dependency-to-base6.patch new file mode 100644 index 0000000000..a27730e23c --- /dev/null +++ b/package/erlang-p1-acme/0001-rebar.config.script-remove-extra-dependency-to-base6.patch @@ -0,0 +1,26 @@ +From a2422fdf4097d1f5f8c8f88bbe08b9a0f3c35fe6 Mon Sep 17 00:00:00 2001 +From: Johan Oudinet +Date: Wed, 25 Nov 2020 22:38:22 +0100 +Subject: [PATCH] rebar.config.script: remove extra dependency to base64url + +Signed-off-by: Johan Oudinet +--- + rebar.config.script | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/rebar.config.script b/rebar.config.script +index a63895e..41b2970 100644 +--- a/rebar.config.script ++++ b/rebar.config.script +@@ -62,7 +62,7 @@ Cfg2 = case IsRebar3 of + [{plugin_dir, filename:join([filename:dirname(SCRIPT),"plugins"])}, + {plugins, [override_deps_versions]}] ++ + ModCfg(CONFIG, [deps], fun(V) -> +- V ++ [{base64url, ".*", {git, "git://github.com/dvv/base64url.git", {tag, "v1.0"}}}] ++ V + end, []) + end, + +-- +2.29.2 + diff --git a/package/erlang-p1-acme/erlang-p1-acme.hash b/package/erlang-p1-acme/erlang-p1-acme.hash index 036cb923bd..af13e88b1a 100644 --- a/package/erlang-p1-acme/erlang-p1-acme.hash +++ b/package/erlang-p1-acme/erlang-p1-acme.hash @@ -1,3 +1,3 @@ # Locally calculated -sha256 556a9628c323a5a83116ed78599c891f74447b0bac237c095e776c7009089656 erlang-p1-acme-1.0.1.tar.gz -sha256 cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30 LICENSE.txt +sha256 e17ba49f45b72200470bc2f176b315bec1028d07a4817859052f98c0a7259632 erlang-p1-acme-1.0.9.tar.gz +sha256 cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30 LICENSE.txt diff --git a/package/erlang-p1-acme/erlang-p1-acme.mk b/package/erlang-p1-acme/erlang-p1-acme.mk index ae77d4a580..21c155e206 100644 --- a/package/erlang-p1-acme/erlang-p1-acme.mk +++ b/package/erlang-p1-acme/erlang-p1-acme.mk @@ -4,7 +4,7 @@ # ################################################################################ -ERLANG_P1_ACME_VERSION = 1.0.1 +ERLANG_P1_ACME_VERSION = 1.0.9 ERLANG_P1_ACME_SITE = $(call github,processone,p1_acme,$(ERLANG_P1_ACME_VERSION)) ERLANG_P1_ACME_LICENSE = Apache-2.0 ERLANG_P1_ACME_LICENSE_FILES = LICENSE.txt From 05e15d1e2d1b19b68acac84d66f0e69877667ce9 Mon Sep 17 00:00:00 2001 From: Johan Oudinet Date: Thu, 26 Nov 2020 18:42:54 +0100 Subject: [PATCH 81/95] package/erlang-p1-oauth2: bump version to 0.6.7 Signed-off-by: Johan Oudinet Signed-off-by: Thomas Petazzoni --- package/erlang-p1-oauth2/erlang-p1-oauth2.hash | 4 ++-- package/erlang-p1-oauth2/erlang-p1-oauth2.mk | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package/erlang-p1-oauth2/erlang-p1-oauth2.hash b/package/erlang-p1-oauth2/erlang-p1-oauth2.hash index ed5ea55145..a6d00aa96e 100644 --- a/package/erlang-p1-oauth2/erlang-p1-oauth2.hash +++ b/package/erlang-p1-oauth2/erlang-p1-oauth2.hash @@ -1,3 +1,3 @@ # Locally calculated -sha256 55bf54133ce0882fab59f813ddf9ed4dac1e051a53fb4bd1c0565136ebb4d6ac erlang-p1-oauth2-0.6.5.tar.gz -sha256 0ecddd0a5e35b7fcdab451f54c5bb688fac8365cdf6b0da0ac64b7895a0770f3 LICENSE +sha256 c5cf0d2a9f5874c289cc6044945f4771a79007bda812e5269dea3a4c92fc8811 erlang-p1-oauth2-0.6.7.tar.gz +sha256 0ecddd0a5e35b7fcdab451f54c5bb688fac8365cdf6b0da0ac64b7895a0770f3 LICENSE diff --git a/package/erlang-p1-oauth2/erlang-p1-oauth2.mk b/package/erlang-p1-oauth2/erlang-p1-oauth2.mk index ea7c23a517..d7dd45b252 100644 --- a/package/erlang-p1-oauth2/erlang-p1-oauth2.mk +++ b/package/erlang-p1-oauth2/erlang-p1-oauth2.mk @@ -4,7 +4,7 @@ # ################################################################################ -ERLANG_P1_OAUTH2_VERSION = 0.6.5 +ERLANG_P1_OAUTH2_VERSION = 0.6.7 ERLANG_P1_OAUTH2_SITE = $(call github,processone,p1_oauth2,$(ERLANG_P1_OAUTH2_VERSION)) ERLANG_P1_OAUTH2_LICENSE = MIT ERLANG_P1_OAUTH2_LICENSE_FILES = LICENSE From dbe2c34083a8f77b240f2a613c1670d10626a688 Mon Sep 17 00:00:00 2001 From: Johan Oudinet Date: Thu, 26 Nov 2020 18:42:55 +0100 Subject: [PATCH 82/95] package/erlang-p1-pkix: bump version to 1.0.6 Signed-off-by: Johan Oudinet Signed-off-by: Thomas Petazzoni --- package/erlang-p1-pkix/erlang-p1-pkix.hash | 4 ++-- package/erlang-p1-pkix/erlang-p1-pkix.mk | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package/erlang-p1-pkix/erlang-p1-pkix.hash b/package/erlang-p1-pkix/erlang-p1-pkix.hash index b11340b873..b0ee7d58ba 100644 --- a/package/erlang-p1-pkix/erlang-p1-pkix.hash +++ b/package/erlang-p1-pkix/erlang-p1-pkix.hash @@ -1,3 +1,3 @@ # Locally calculated -sha256 184069d9055991cb8b7bd07dde8737a0a793e66e1ec1020deb680f83260a3e82 erlang-p1-pkix-1.0.4.tar.gz -sha256 cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30 LICENSE +sha256 3a39c4ca74f93efa0e4de4c37f9e4d073b1aeb142ad669f12588ad2b3c39724e erlang-p1-pkix-1.0.6.tar.gz +sha256 cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30 LICENSE diff --git a/package/erlang-p1-pkix/erlang-p1-pkix.mk b/package/erlang-p1-pkix/erlang-p1-pkix.mk index 9f902d44bb..12ae042138 100644 --- a/package/erlang-p1-pkix/erlang-p1-pkix.mk +++ b/package/erlang-p1-pkix/erlang-p1-pkix.mk @@ -4,7 +4,7 @@ # ################################################################################ -ERLANG_P1_PKIX_VERSION = 1.0.4 +ERLANG_P1_PKIX_VERSION = 1.0.6 ERLANG_P1_PKIX_SITE = $(call github,processone,pkix,$(ERLANG_P1_PKIX_VERSION)) ERLANG_P1_PKIX_LICENSE = Apache-2.0 ERLANG_P1_PKIX_LICENSE_FILES = LICENSE From 5b308d137aa8a83e1efa597e4ad2fc22bde03575 Mon Sep 17 00:00:00 2001 From: Johan Oudinet Date: Thu, 26 Nov 2020 18:42:56 +0100 Subject: [PATCH 83/95] package/erlang-p1-stringprep: bump version to 1.0.23 Signed-off-by: Johan Oudinet Signed-off-by: Thomas Petazzoni --- package/erlang-p1-stringprep/erlang-p1-stringprep.hash | 8 ++++---- package/erlang-p1-stringprep/erlang-p1-stringprep.mk | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package/erlang-p1-stringprep/erlang-p1-stringprep.hash b/package/erlang-p1-stringprep/erlang-p1-stringprep.hash index bd1995cb73..e23cc4f38b 100644 --- a/package/erlang-p1-stringprep/erlang-p1-stringprep.hash +++ b/package/erlang-p1-stringprep/erlang-p1-stringprep.hash @@ -1,5 +1,5 @@ # Locally calculated -sha256 119b751f569baecc4d911ff3c2a6a33a042f8d0b2e64445072d1af14ed935fc0 erlang-p1-stringprep-1.0.17.tar.gz -sha256 f44415631770cb818de6d92f3961fdfe6e407a5154f84b87cc06ac27323e919c LICENSE.ALL -sha256 42aef2a1337ef1f45ae2832aa5aa268c79b2560fb1f3ebab519629372cb24ffe LICENSE.TCL -sha256 cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30 LICENSE.txt +sha256 47f9f8ee901f47b7f62c5140ea09f113efe7fedd5e8ffb92d50f51c5e11fb67f erlang-p1-stringprep-1.0.23.tar.gz +sha256 f44415631770cb818de6d92f3961fdfe6e407a5154f84b87cc06ac27323e919c LICENSE.ALL +sha256 42aef2a1337ef1f45ae2832aa5aa268c79b2560fb1f3ebab519629372cb24ffe LICENSE.TCL +sha256 cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30 LICENSE.txt diff --git a/package/erlang-p1-stringprep/erlang-p1-stringprep.mk b/package/erlang-p1-stringprep/erlang-p1-stringprep.mk index 49ffb77cd3..580f4a9aa9 100644 --- a/package/erlang-p1-stringprep/erlang-p1-stringprep.mk +++ b/package/erlang-p1-stringprep/erlang-p1-stringprep.mk @@ -4,7 +4,7 @@ # ################################################################################ -ERLANG_P1_STRINGPREP_VERSION = 1.0.17 +ERLANG_P1_STRINGPREP_VERSION = 1.0.23 ERLANG_P1_STRINGPREP_SITE = $(call github,processone,stringprep,$(ERLANG_P1_STRINGPREP_VERSION)) ERLANG_P1_STRINGPREP_LICENSE = TCL (tools/*.tcl), Apache-2.0 (rest) ERLANG_P1_STRINGPREP_LICENSE_FILES = LICENSE.ALL LICENSE.TCL LICENSE.txt From c4bd3689adea613d2d4c07944ffd023f88e09d88 Mon Sep 17 00:00:00 2001 From: Johan Oudinet Date: Thu, 26 Nov 2020 18:42:57 +0100 Subject: [PATCH 84/95] package/erlang-p1-stun: bump version to 1.0.39 Signed-off-by: Johan Oudinet Signed-off-by: Thomas Petazzoni --- package/erlang-p1-stun/erlang-p1-stun.hash | 4 ++-- package/erlang-p1-stun/erlang-p1-stun.mk | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package/erlang-p1-stun/erlang-p1-stun.hash b/package/erlang-p1-stun/erlang-p1-stun.hash index bf569201b8..fb56b8f4e6 100644 --- a/package/erlang-p1-stun/erlang-p1-stun.hash +++ b/package/erlang-p1-stun/erlang-p1-stun.hash @@ -1,3 +1,3 @@ # Locally calculated -sha256 87cfd9d75c7b956b4c26c9e94492737a4528abf4b09f4f7d89a40abaa0dc088a erlang-p1-stun-1.0.29.tar.gz -sha256 cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30 LICENSE.txt +sha256 05d2f31f172883d2301a93cd141e6b930dfdd01e10b6aacf806becc3674973d8 erlang-p1-stun-1.0.39.tar.gz +sha256 cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30 LICENSE.txt diff --git a/package/erlang-p1-stun/erlang-p1-stun.mk b/package/erlang-p1-stun/erlang-p1-stun.mk index ff2899ffbe..f762e7f45c 100644 --- a/package/erlang-p1-stun/erlang-p1-stun.mk +++ b/package/erlang-p1-stun/erlang-p1-stun.mk @@ -4,7 +4,7 @@ # ################################################################################ -ERLANG_P1_STUN_VERSION = 1.0.29 +ERLANG_P1_STUN_VERSION = 1.0.39 ERLANG_P1_STUN_SITE = $(call github,processone,stun,$(ERLANG_P1_STUN_VERSION)) ERLANG_P1_STUN_LICENSE = Apache-2.0 ERLANG_P1_STUN_LICENSE_FILES = LICENSE.txt From 26da19b7c5eb548e7ab958b319dcd38a541e1640 Mon Sep 17 00:00:00 2001 From: Johan Oudinet Date: Thu, 26 Nov 2020 18:42:58 +0100 Subject: [PATCH 85/95] package/erlang-p1-sip: bump version to 1.0.38 upstream is finally using include_lib to include libraries. Adapt the patch accordingly. The hash of the license file has changed, due to: -Copyright 2002-2019 ProcessOne SARL +Copyright 2002-2020 ProcessOne SARL Signed-off-by: Johan Oudinet Signed-off-by: Thomas Petazzoni --- .../erlang-p1-sip/0001-correct-include.patch | 31 +++++++++++++++++++ package/erlang-p1-sip/0001-fix-includes.patch | 19 ------------ package/erlang-p1-sip/erlang-p1-sip.hash | 4 +-- package/erlang-p1-sip/erlang-p1-sip.mk | 2 +- 4 files changed, 34 insertions(+), 22 deletions(-) create mode 100644 package/erlang-p1-sip/0001-correct-include.patch delete mode 100644 package/erlang-p1-sip/0001-fix-includes.patch diff --git a/package/erlang-p1-sip/0001-correct-include.patch b/package/erlang-p1-sip/0001-correct-include.patch new file mode 100644 index 0000000000..90d68b5184 --- /dev/null +++ b/package/erlang-p1-sip/0001-correct-include.patch @@ -0,0 +1,31 @@ +From 5ad4f871df7cbbc973708cb7380c3410b20bde1c Mon Sep 17 00:00:00 2001 +From: Philipp Huebner +Date: Tue, 1 Dec 2020 23:07:51 +0100 +Subject: [PATCH] correct include + +This part of the code was moved into it's own project and was packaged +separately by me. To make the build process work, this small fix is +necessary. + +Author: Philipp Huebner +Signed-off-by: Johan Oudinet +--- + src/esip_socket.erl | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/esip_socket.erl b/src/esip_socket.erl +index 4154faa..db5fa92 100644 +--- a/src/esip_socket.erl ++++ b/src/esip_socket.erl +@@ -37,7 +37,7 @@ + + -include("esip.hrl"). + -include("esip_lib.hrl"). +--include_lib("stun/include/stun.hrl"). ++-include_lib("p1_stun/include/stun.hrl"). + + -define(TCP_SEND_TIMEOUT, 15000). + -define(CONNECT_TIMEOUT, 20000). +-- +2.28.0 + diff --git a/package/erlang-p1-sip/0001-fix-includes.patch b/package/erlang-p1-sip/0001-fix-includes.patch deleted file mode 100644 index 80e2ab36c2..0000000000 --- a/package/erlang-p1-sip/0001-fix-includes.patch +++ /dev/null @@ -1,19 +0,0 @@ -Description: correct include - This part of the code was moved into it's own project and was packaged - separately by me. To make the build process work, this small fix is - necessary. -Author: Philipp Huebner - -Index: erlang-p1-sip/src/esip_socket.erl -=================================================================== ---- erlang-p1-sip.orig/src/esip_socket.erl -+++ erlang-p1-sip/src/esip_socket.erl -@@ -22,7 +22,7 @@ - - -include("esip.hrl"). - -include("esip_lib.hrl"). ---include("stun.hrl"). -+-include_lib("p1_stun/include/stun.hrl"). - - -define(TCP_SEND_TIMEOUT, 15000). - -define(CONNECT_TIMEOUT, 20000). diff --git a/package/erlang-p1-sip/erlang-p1-sip.hash b/package/erlang-p1-sip/erlang-p1-sip.hash index 70b20f95dc..e52371e404 100644 --- a/package/erlang-p1-sip/erlang-p1-sip.hash +++ b/package/erlang-p1-sip/erlang-p1-sip.hash @@ -1,3 +1,3 @@ # Locally calculated -sha256 4c8dbba1dfcbb16a300fea5fd75f5ab2a145f011fa1ebff37e31e1672a9bc285 erlang-p1-sip-1.0.30.tar.gz -sha256 6e68ca4488fcdacf80ea0a3f5a6a294d48c2d8dc9de520cc3d6b3f3c1bc12847 LICENSE.txt +sha256 b46349a7077d8e5f36a216ada4a5c0b51ef3d66005606beb0ea3962069f215a7 erlang-p1-sip-1.0.38.tar.gz +sha256 6cd4871db940d055cf272c12c10e0c08febdc94362e404390758fde34b4ce01a LICENSE.txt diff --git a/package/erlang-p1-sip/erlang-p1-sip.mk b/package/erlang-p1-sip/erlang-p1-sip.mk index f7f10caf94..2d2f0110c3 100644 --- a/package/erlang-p1-sip/erlang-p1-sip.mk +++ b/package/erlang-p1-sip/erlang-p1-sip.mk @@ -4,7 +4,7 @@ # ################################################################################ -ERLANG_P1_SIP_VERSION = 1.0.30 +ERLANG_P1_SIP_VERSION = 1.0.38 ERLANG_P1_SIP_SITE = $(call github,processone,esip,$(ERLANG_P1_SIP_VERSION)) ERLANG_P1_SIP_LICENSE = Apache-2.0 ERLANG_P1_SIP_LICENSE_FILES = LICENSE.txt From c8a140592df64ae1d9f44af23ce890793e6db6ac Mon Sep 17 00:00:00 2001 From: Johan Oudinet Date: Thu, 26 Nov 2020 18:42:59 +0100 Subject: [PATCH 86/95] package/erlang-p1-yaml: bump version to 1.0.28 Signed-off-by: Johan Oudinet Signed-off-by: Thomas Petazzoni --- package/erlang-p1-yaml/erlang-p1-yaml.hash | 4 ++-- package/erlang-p1-yaml/erlang-p1-yaml.mk | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package/erlang-p1-yaml/erlang-p1-yaml.hash b/package/erlang-p1-yaml/erlang-p1-yaml.hash index 116363203c..955a000930 100644 --- a/package/erlang-p1-yaml/erlang-p1-yaml.hash +++ b/package/erlang-p1-yaml/erlang-p1-yaml.hash @@ -1,3 +1,3 @@ # Locally calculated -sha256 b915612c06ef190bfed6d0370906b071274ed4ce4143b668cdad66588a9484a0 erlang-p1-yaml-1.0.21.tar.gz -sha256 cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30 LICENSE.txt +sha256 8f53308438e4d1613562acb586b4c4540569d8305097508c40e6f261fe4216cd erlang-p1-yaml-1.0.28.tar.gz +sha256 cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30 LICENSE.txt diff --git a/package/erlang-p1-yaml/erlang-p1-yaml.mk b/package/erlang-p1-yaml/erlang-p1-yaml.mk index 6836c3f557..e42ff5fe38 100644 --- a/package/erlang-p1-yaml/erlang-p1-yaml.mk +++ b/package/erlang-p1-yaml/erlang-p1-yaml.mk @@ -4,7 +4,7 @@ # ################################################################################ -ERLANG_P1_YAML_VERSION = 1.0.21 +ERLANG_P1_YAML_VERSION = 1.0.28 ERLANG_P1_YAML_SITE = $(call github,processone,fast_yaml,$(ERLANG_P1_YAML_VERSION)) ERLANG_P1_YAML_LICENSE = Apache-2.0 ERLANG_P1_YAML_LICENSE_FILES = LICENSE.txt From 7ba849b8037dda5c2d7dc0d978c66c99ab09cf52 Mon Sep 17 00:00:00 2001 From: Johan Oudinet Date: Thu, 26 Nov 2020 18:43:00 +0100 Subject: [PATCH 87/95] package/erlang-p1-xmpp: bump version to 1.4.10 upstream uses include_lib. Adapt the corresponding patch accordingly. Signed-off-by: Johan Oudinet Signed-off-by: Thomas Petazzoni --- package/erlang-p1-xmpp/0001-fix-includes.patch | 4 ++-- package/erlang-p1-xmpp/erlang-p1-xmpp.hash | 4 ++-- package/erlang-p1-xmpp/erlang-p1-xmpp.mk | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package/erlang-p1-xmpp/0001-fix-includes.patch b/package/erlang-p1-xmpp/0001-fix-includes.patch index d0a267b721..f02037fdc1 100644 --- a/package/erlang-p1-xmpp/0001-fix-includes.patch +++ b/package/erlang-p1-xmpp/0001-fix-includes.patch @@ -6,11 +6,11 @@ diff --git a/include/xmpp.hrl b/include/xmpp.hrl index afa5f61..678858e 100644 --- a/include/xmpp.hrl +++ b/include/xmpp.hrl -@@ -26,7 +26,7 @@ +@@ -25,7 +25,7 @@ -include("ns.hrl"). -include("jid.hrl"). -include("xmpp_codec.hrl"). ---include("fxml.hrl"). +--include_lib("fast_xml/include/fxml.hrl"). +-include_lib("p1_xml/include/fxml.hrl"). -type stanza() :: iq() | presence() | message(). diff --git a/package/erlang-p1-xmpp/erlang-p1-xmpp.hash b/package/erlang-p1-xmpp/erlang-p1-xmpp.hash index 05578f9939..d0a761fcac 100644 --- a/package/erlang-p1-xmpp/erlang-p1-xmpp.hash +++ b/package/erlang-p1-xmpp/erlang-p1-xmpp.hash @@ -1,3 +1,3 @@ # Locally calculated -sha256 a192349e256c0c0af46e6d7f46c52e6345e61984a266696bb0346934c434f342 erlang-p1-xmpp-1.4.2.tar.gz -sha256 cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30 LICENSE.txt +sha256 65c73ffaf8faab5d6fc7d42ada0b5a380f20f3e46056ad98614d81922322d9a2 erlang-p1-xmpp-1.4.10.tar.gz +sha256 cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30 LICENSE.txt diff --git a/package/erlang-p1-xmpp/erlang-p1-xmpp.mk b/package/erlang-p1-xmpp/erlang-p1-xmpp.mk index 2f74c60df2..f903cb945d 100644 --- a/package/erlang-p1-xmpp/erlang-p1-xmpp.mk +++ b/package/erlang-p1-xmpp/erlang-p1-xmpp.mk @@ -4,7 +4,7 @@ # ################################################################################ -ERLANG_P1_XMPP_VERSION = 1.4.2 +ERLANG_P1_XMPP_VERSION = 1.4.10 ERLANG_P1_XMPP_SITE = $(call github,processone,xmpp,$(ERLANG_P1_XMPP_VERSION)) ERLANG_P1_XMPP_LICENSE = Apache-2.0 ERLANG_P1_XMPP_LICENSE_FILES = LICENSE.txt From 0e58c21047f15fa6c59b7d63aa1cd7db1d8e4eb8 Mon Sep 17 00:00:00 2001 From: Johan Oudinet Date: Thu, 26 Nov 2020 18:43:01 +0100 Subject: [PATCH 88/95] package/ejabberd: bump version to 20.07 - Fix the download url to reflect upstream website changes. - Fix line numbers in patch 0001. Signed-off-by: Johan Oudinet Signed-off-by: Thomas Petazzoni --- ....in-do-not-download-or-compile-dependencies.patch | 12 ++++++------ package/ejabberd/ejabberd.hash | 4 ++-- package/ejabberd/ejabberd.mk | 4 ++-- 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/package/ejabberd/0001-Makefile.in-do-not-download-or-compile-dependencies.patch b/package/ejabberd/0001-Makefile.in-do-not-download-or-compile-dependencies.patch index 01a5362e5f..ffacb6dafd 100644 --- a/package/ejabberd/0001-Makefile.in-do-not-download-or-compile-dependencies.patch +++ b/package/ejabberd/0001-Makefile.in-do-not-download-or-compile-dependencies.patch @@ -1,6 +1,6 @@ -From 277103e886c9b3ddfede8b3f5b92d3e94736f404 Mon Sep 17 00:00:00 2001 +From cb583beba1acba55112fbb4636c1c73d9ae691a0 Mon Sep 17 00:00:00 2001 From: Johan Oudinet -Date: Fri, 23 Nov 2018 16:13:21 +0100 +Date: Fri, 20 Nov 2020 00:33:30 +0100 Subject: [PATCH] Makefile.in: do not download or compile dependencies Signed-off-by: Johan Oudinet @@ -9,10 +9,10 @@ Signed-off-by: Johan Oudinet 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Makefile.in b/Makefile.in -index 48dca7d8..d2324dae 100644 +index abd64835..06f876bb 100644 --- a/Makefile.in +++ b/Makefile.in -@@ -94,7 +94,7 @@ ifneq ($(INSTALLGROUP),) +@@ -97,7 +97,7 @@ ifneq ($(INSTALLGROUP),) G_USER=-g $(INSTALLGROUP) endif @@ -21,7 +21,7 @@ index 48dca7d8..d2324dae 100644 deps: deps/.got -@@ -108,7 +108,7 @@ deps/.built: deps/.got +@@ -111,7 +111,7 @@ deps/.built: deps/.got $(REBAR) configure-deps $(REBAR) compile && :> deps/.built @@ -31,5 +31,5 @@ index 48dca7d8..d2324dae 100644 update: -- -2.17.1 +2.29.2 diff --git a/package/ejabberd/ejabberd.hash b/package/ejabberd/ejabberd.hash index 145e7401a9..0d57ada5bb 100644 --- a/package/ejabberd/ejabberd.hash +++ b/package/ejabberd/ejabberd.hash @@ -1,3 +1,3 @@ # Locally computed -sha256 18ddf61af22fc9b59f8afc6835aae2aee9896eb91cc1030056d6bca6a1fa40d2 ejabberd-19.09.1.tgz -sha256 469bb8cfa3ef22c102875ff31932450c075e6908ff3f7d36893485c0c30898eb COPYING +sha256 9e922b938458ae9d72d4e5fdd2d08a1fbad651aae47c9a9d15b79d0bbd1e11f8 ejabberd-20.07.tgz +sha256 469bb8cfa3ef22c102875ff31932450c075e6908ff3f7d36893485c0c30898eb COPYING diff --git a/package/ejabberd/ejabberd.mk b/package/ejabberd/ejabberd.mk index 3419c6e59c..a0b4a63542 100644 --- a/package/ejabberd/ejabberd.mk +++ b/package/ejabberd/ejabberd.mk @@ -4,9 +4,9 @@ # ################################################################################ -EJABBERD_VERSION = 19.09.1 +EJABBERD_VERSION = 20.07 EJABBERD_SOURCE = ejabberd-$(EJABBERD_VERSION).tgz -EJABBERD_SITE = https://www.process-one.net/downloads/ejabberd/$(EJABBERD_VERSION) +EJABBERD_SITE = https://static.process-one.net/ejabberd/downloads/$(EJABBERD_VERSION) EJABBERD_LICENSE = GPL-2.0+ with OpenSSL exception EJABBERD_LICENSE_FILES = COPYING EJABBERD_DEPENDENCIES = getent openssl erlang-eimp host-erlang-lager \ From d7f2c77244879cb03d253d186fda761e7b4b1c5b Mon Sep 17 00:00:00 2001 From: Fabrice Fontaine Date: Sat, 28 Nov 2020 23:11:53 +0100 Subject: [PATCH 89/95] package/rust: bump to version 1.48.0 Update indentation in hash file (two spaces) https://github.com/rust-lang/rust/blob/master/RELEASES.md#version-1480-2020-11-19 Signed-off-by: Fabrice Fontaine Signed-off-by: Thomas Petazzoni --- package/rust-bin/rust-bin.hash | 94 +++++++++++++++++----------------- package/rust-bin/rust-bin.mk | 2 +- package/rust/rust.hash | 10 ++-- package/rust/rust.mk | 2 +- 4 files changed, 54 insertions(+), 54 deletions(-) diff --git a/package/rust-bin/rust-bin.hash b/package/rust-bin/rust-bin.hash index dd81edd581..cc3ea89b1f 100644 --- a/package/rust-bin/rust-bin.hash +++ b/package/rust-bin/rust-bin.hash @@ -1,48 +1,48 @@ -# From https://static.rust-lang.org/dist/rust-1.45.2-i686-unknown-linux-gnu.tar.xz.sha256 -# Verified using https://static.rust-lang.org/dist/rust-1.45.2-i686-unknown-linux-gnu.tar.xz.asc -sha256 42c25bea5c6dc35e89c65217477880aa52ee95b85271192f7e6833c80f3761f0 rust-1.45.2-i686-unknown-linux-gnu.tar.xz -# From https://static.rust-lang.org/dist/rust-1.45.2-x86_64-unknown-linux-gnu.tar.xz.sha256 -# Verified using https://static.rust-lang.org/dist/rust-1.45.2-x86_64-unknown-linux-gnu.tar.xz.asc -sha256 39455d1ebd6f386e50748f566e1b37780f236c1f3cbc869690653662beca1ea9 rust-1.45.2-x86_64-unknown-linux-gnu.tar.xz -# From https://static.rust-lang.org/dist/rust-std-1.45.2-aarch64-unknown-linux-gnu.tar.xz.sha256 -# Verified using https://static.rust-lang.org/dist/rust-std-1.45.2-aarch64-unknown-linux-gnu.tar.xz.asc -sha256 d0006b1ec413cd0f698195584cc478d3ceb44ea4232fe1971970be22f1470e1d rust-std-1.45.2-aarch64-unknown-linux-gnu.tar.xz -# From https://static.rust-lang.org/dist/rust-std-1.45.2-arm-unknown-linux-gnueabi.tar.xz.sha256 -# Verified using https://static.rust-lang.org/dist/rust-std-1.45.2-arm-unknown-linux-gnueabi.tar.xz.asc -sha256 68ec96eadf94aa409a74e1ac1cf56c578c539cae8c238664b1805374037ac1b3 rust-std-1.45.2-arm-unknown-linux-gnueabi.tar.xz -# From https://static.rust-lang.org/dist/rust-std-1.45.2-arm-unknown-linux-gnueabihf.tar.xz.sha256 -# Verified using https://static.rust-lang.org/dist/rust-std-1.45.2-arm-unknown-linux-gnueabihf.tar.xz.asc -sha256 63d539b8ec09d6f555106a41278456dc443a88259eb4693f1c834b3dc2529616 rust-std-1.45.2-arm-unknown-linux-gnueabihf.tar.xz -# From https://static.rust-lang.org/dist/rust-std-1.45.2-armv7-unknown-linux-gnueabihf.tar.xz.sha256 -# Verified using https://static.rust-lang.org/dist/rust-std-1.45.2-armv7-unknown-linux-gnueabihf.tar.xz.asc -sha256 f60ddfcbc6e7292b1b2a5145c93463cdc0e0811c95e3b426f629fcab9e24588b rust-std-1.45.2-armv7-unknown-linux-gnueabihf.tar.xz -# From https://static.rust-lang.org/dist/rust-std-1.45.2-i686-unknown-linux-gnu.tar.xz.sha256 -# Verified using https://static.rust-lang.org/dist/rust-std-1.45.2-i686-unknown-linux-gnu.tar.xz.asc -sha256 05474dbec0385c8dcfd940e6f8954d4f8284745a4fbcf57932022b1593829463 rust-std-1.45.2-i686-unknown-linux-gnu.tar.xz -# From https://static.rust-lang.org/dist/rust-std-1.45.2-mips-unknown-linux-gnu.tar.xz.sha256 -# Verified using https://static.rust-lang.org/dist/rust-std-1.45.2-mips-unknown-linux-gnu.tar.xz.asc -sha256 6add56f405fac0306b7d966b842dfe6d6beb4eaa93492eac7ac74015ceaeba7e rust-std-1.45.2-mips-unknown-linux-gnu.tar.xz -# From https://static.rust-lang.org/dist/rust-std-1.45.2-mips64-unknown-linux-gnuabi64.tar.xz.sha256 -# Verified using https://static.rust-lang.org/dist/rust-std-1.45.2-mips64-unknown-linux-gnuabi64.tar.xz.asc -sha256 107931f34646486211dcc582b6c4c58b17379025969b4d0f17c52d219483e66f rust-std-1.45.2-mips64-unknown-linux-gnuabi64.tar.xz -# From https://static.rust-lang.org/dist/rust-std-1.45.2-mips64el-unknown-linux-gnuabi64.tar.xz.sha256 -# Verified using https://static.rust-lang.org/dist/rust-std-1.45.2-mips64el-unknown-linux-gnuabi64.tar.xz.asc -sha256 6f7dbbc7098c1a5af5e6490c8335eb8f8b8a53de9773199ac65c02e099956d58 rust-std-1.45.2-mips64el-unknown-linux-gnuabi64.tar.xz -# From https://static.rust-lang.org/dist/rust-std-1.45.2-mipsel-unknown-linux-gnu.tar.xz.sha256 -# Verified using https://static.rust-lang.org/dist/rust-std-1.45.2-mipsel-unknown-linux-gnu.tar.xz.asc -sha256 6e7638cd370e0e5aa455d325a5f66b20c677fa3abb24bbf2519fc97ba3ac78ba rust-std-1.45.2-mipsel-unknown-linux-gnu.tar.xz -# From https://static.rust-lang.org/dist/rust-std-1.45.2-powerpc-unknown-linux-gnu.tar.xz.sha256 -# Verified using https://static.rust-lang.org/dist/rust-std-1.45.2-powerpc-unknown-linux-gnu.tar.xz.asc -sha256 c6ad70fc0b052ceba0f886d2431dbd23fd444ad307c0f2f4932ccc7af246bd73 rust-std-1.45.2-powerpc-unknown-linux-gnu.tar.xz -# From https://static.rust-lang.org/dist/rust-std-1.45.2-powerpc64-unknown-linux-gnu.tar.xz.sha256 -# Verified using https://static.rust-lang.org/dist/rust-std-1.45.2-powerpc64-unknown-linux-gnu.tar.xz.asc -sha256 11edc189ea6544018ee74df7996d2ee8877a0d8b719a31b7e7a33d71bba9013c rust-std-1.45.2-powerpc64-unknown-linux-gnu.tar.xz -# From https://static.rust-lang.org/dist/rust-std-1.45.2-powerpc64le-unknown-linux-gnu.tar.xz.sha256 -# Verified using https://static.rust-lang.org/dist/rust-std-1.45.2-powerpc64le-unknown-linux-gnu.tar.xz.asc -sha256 0a000c2e047c675bee27c2287b2e03fe21148ead95c35b884846a8dc7c3c162d rust-std-1.45.2-powerpc64le-unknown-linux-gnu.tar.xz -# From https://static.rust-lang.org/dist/rust-std-1.45.2-x86_64-unknown-linux-gnu.tar.xz.sha256 -# Verified using https://static.rust-lang.org/dist/rust-std-1.45.2-x86_64-unknown-linux-gnu.tar.xz.asc -sha256 02309322467af8e37256ccf1f064f5233c7fca4423dffde0bd5eb32cde46942a rust-std-1.45.2-x86_64-unknown-linux-gnu.tar.xz +# From https://static.rust-lang.org/dist/rust-1.48.0-i686-unknown-linux-gnu.tar.xz.sha256 +# Verified using https://static.rust-lang.org/dist/rust-1.48.0-i686-unknown-linux-gnu.tar.xz.asc +sha256 ddbfb5af1cd2cb6ae79d6f3f95cf29c0057e6387eada8b3975e7d7658e315aae rust-1.48.0-i686-unknown-linux-gnu.tar.xz +# From https://static.rust-lang.org/dist/rust-1.48.0-x86_64-unknown-linux-gnu.tar.xz.sha256 +# Verified using https://static.rust-lang.org/dist/rust-1.48.0-x86_64-unknown-linux-gnu.tar.xz.asc +sha256 58270d8e10f72e1712ba08db6b8f8ffca64a63d1a7b220688b59fb05655b3843 rust-1.48.0-x86_64-unknown-linux-gnu.tar.xz +# From https://static.rust-lang.org/dist/rust-std-1.48.0-aarch64-unknown-linux-gnu.tar.xz.sha256 +# Verified using https://static.rust-lang.org/dist/rust-std-1.48.0-aarch64-unknown-linux-gnu.tar.xz.asc +sha256 3a50eeb64a63a09f79bee49e01f72410d455b9ae1c7f07ebdb6dc0d40e9aa0bc rust-std-1.48.0-aarch64-unknown-linux-gnu.tar.xz +# From https://static.rust-lang.org/dist/rust-std-1.48.0-arm-unknown-linux-gnueabi.tar.xz.sha256 +# Verified using https://static.rust-lang.org/dist/rust-std-1.48.0-arm-unknown-linux-gnueabi.tar.xz.asc +sha256 f512696b54142abda3d68b2ba213ae115d5e898952a50a1fa3d1fe6b4ef71d3c rust-std-1.48.0-arm-unknown-linux-gnueabi.tar.xz +# From https://static.rust-lang.org/dist/rust-std-1.48.0-arm-unknown-linux-gnueabihf.tar.xz.sha256 +# Verified using https://static.rust-lang.org/dist/rust-std-1.48.0-arm-unknown-linux-gnueabihf.tar.xz.asc +sha256 5bc6c5dfcc9c345c3f7af519df8ac77c2b0938ea32aa7949f589bec2c7cd3a22 rust-std-1.48.0-arm-unknown-linux-gnueabihf.tar.xz +# From https://static.rust-lang.org/dist/rust-std-1.48.0-armv7-unknown-linux-gnueabihf.tar.xz.sha256 +# Verified using https://static.rust-lang.org/dist/rust-std-1.48.0-armv7-unknown-linux-gnueabihf.tar.xz.asc +sha256 da71ec82973eb6fdf67de25b5a39d9cb4b943ec2c43de570f4785a3a79036430 rust-std-1.48.0-armv7-unknown-linux-gnueabihf.tar.xz +# From https://static.rust-lang.org/dist/rust-std-1.48.0-i686-unknown-linux-gnu.tar.xz.sha256 +# Verified using https://static.rust-lang.org/dist/rust-std-1.48.0-i686-unknown-linux-gnu.tar.xz.asc +sha256 d4ea5ca6f9c8f9092b50c879f1d9a2620486f08020fa4cac227743a19f6e8cdf rust-std-1.48.0-i686-unknown-linux-gnu.tar.xz +# From https://static.rust-lang.org/dist/rust-std-1.48.0-mips-unknown-linux-gnu.tar.xz.sha256 +# Verified using https://static.rust-lang.org/dist/rust-std-1.48.0-mips-unknown-linux-gnu.tar.xz.asc +sha256 5c4d49cbd16ac89e39c3cbfae127961289af3419435f2b90e1732a97d9326b35 rust-std-1.48.0-mips-unknown-linux-gnu.tar.xz +# From https://static.rust-lang.org/dist/rust-std-1.48.0-mips64-unknown-linux-gnuabi64.tar.xz.sha256 +# Verified using https://static.rust-lang.org/dist/rust-std-1.48.0-mips64-unknown-linux-gnuabi64.tar.xz.asc +sha256 3fd7194abb8f51c3caf09c222c12700cddef73449d38953c6b1adb04a89dcc31 rust-std-1.48.0-mips64-unknown-linux-gnuabi64.tar.xz +# From https://static.rust-lang.org/dist/rust-std-1.48.0-mips64el-unknown-linux-gnuabi64.tar.xz.sha256 +# Verified using https://static.rust-lang.org/dist/rust-std-1.48.0-mips64el-unknown-linux-gnuabi64.tar.xz.asc +sha256 9200f952416488bc68857989bc10239e59b44a6c55153cb063fa03f28f5016f8 rust-std-1.48.0-mips64el-unknown-linux-gnuabi64.tar.xz +# From https://static.rust-lang.org/dist/rust-std-1.48.0-mipsel-unknown-linux-gnu.tar.xz.sha256 +# Verified using https://static.rust-lang.org/dist/rust-std-1.48.0-mipsel-unknown-linux-gnu.tar.xz.asc +sha256 792008f6c9ea68db39e59312fc372bf649980cf676c01a71da7db399de49966c rust-std-1.48.0-mipsel-unknown-linux-gnu.tar.xz +# From https://static.rust-lang.org/dist/rust-std-1.48.0-powerpc-unknown-linux-gnu.tar.xz.sha256 +# Verified using https://static.rust-lang.org/dist/rust-std-1.48.0-powerpc-unknown-linux-gnu.tar.xz.asc +sha256 58d0da369bfd71a17d27807ef7c052556a771cf209bee068d44504f554bf2a8c rust-std-1.48.0-powerpc-unknown-linux-gnu.tar.xz +# From https://static.rust-lang.org/dist/rust-std-1.48.0-powerpc64-unknown-linux-gnu.tar.xz.sha256 +# Verified using https://static.rust-lang.org/dist/rust-std-1.48.0-powerpc64-unknown-linux-gnu.tar.xz.asc +sha256 10346635487b14aa4b82baeae02ee5a4bffe930090c6c551083262e9811755f0 rust-std-1.48.0-powerpc64-unknown-linux-gnu.tar.xz +# From https://static.rust-lang.org/dist/rust-std-1.48.0-powerpc64le-unknown-linux-gnu.tar.xz.sha256 +# Verified using https://static.rust-lang.org/dist/rust-std-1.48.0-powerpc64le-unknown-linux-gnu.tar.xz.asc +sha256 e42b64c5710d3982f22ed744ea21ef2f0196df908c6a673b6df550904583b1c3 rust-std-1.48.0-powerpc64le-unknown-linux-gnu.tar.xz +# From https://static.rust-lang.org/dist/rust-std-1.48.0-x86_64-unknown-linux-gnu.tar.xz.sha256 +# Verified using https://static.rust-lang.org/dist/rust-std-1.48.0-x86_64-unknown-linux-gnu.tar.xz.asc +sha256 1c00a6a0dabbf6290728b09f9307d9fa6cc985487f727075c68acd4a600ef3f8 rust-std-1.48.0-x86_64-unknown-linux-gnu.tar.xz # Locally generated -sha256 62c7a1e35f56406896d7aa7ca52d0cc0d272ac022b5d2796e7d6905db8a3636a LICENSE-APACHE -sha256 23f18e03dc49df91622fe2a76176497404e46ced8a715d9d2b67a7446571cca3 LICENSE-MIT +sha256 62c7a1e35f56406896d7aa7ca52d0cc0d272ac022b5d2796e7d6905db8a3636a LICENSE-APACHE +sha256 23f18e03dc49df91622fe2a76176497404e46ced8a715d9d2b67a7446571cca3 LICENSE-MIT diff --git a/package/rust-bin/rust-bin.mk b/package/rust-bin/rust-bin.mk index 36557048c7..28901e0cfa 100644 --- a/package/rust-bin/rust-bin.mk +++ b/package/rust-bin/rust-bin.mk @@ -4,7 +4,7 @@ # ################################################################################ -RUST_BIN_VERSION = 1.45.2 +RUST_BIN_VERSION = 1.48.0 RUST_BIN_SITE = https://static.rust-lang.org/dist RUST_BIN_LICENSE = Apache-2.0 or MIT RUST_BIN_LICENSE_FILES = LICENSE-APACHE LICENSE-MIT diff --git a/package/rust/rust.hash b/package/rust/rust.hash index e2d3a48e4f..1c993b9339 100644 --- a/package/rust/rust.hash +++ b/package/rust/rust.hash @@ -1,6 +1,6 @@ -# From https://static.rust-lang.org/dist/rustc-1.45.2-src.tar.xz.sha256 -# Verified using https://static.rust-lang.org/dist/rustc-1.45.2-src.tar.xz.asc -sha256 f8412adac2f5d974b2f06c5bd4be7361084d18a678d098bf05de5ccfa57b74a9 rustc-1.45.2-src.tar.xz +# From https://static.rust-lang.org/dist/rustc-1.48.0-src.tar.xz.sha256 +# Verified using https://static.rust-lang.org/dist/rustc-1.48.0-src.tar.xz.asc +sha256 ff0a242392a1865d7b2d08eb5ca6c1b3fd0820741d4c13a51a4b2d5d2bb53908 rustc-1.48.0-src.tar.xz # Locally generated -sha256 62c7a1e35f56406896d7aa7ca52d0cc0d272ac022b5d2796e7d6905db8a3636a LICENSE-APACHE -sha256 23f18e03dc49df91622fe2a76176497404e46ced8a715d9d2b67a7446571cca3 LICENSE-MIT +sha256 62c7a1e35f56406896d7aa7ca52d0cc0d272ac022b5d2796e7d6905db8a3636a LICENSE-APACHE +sha256 23f18e03dc49df91622fe2a76176497404e46ced8a715d9d2b67a7446571cca3 LICENSE-MIT diff --git a/package/rust/rust.mk b/package/rust/rust.mk index d62f7b7be7..798450e04e 100644 --- a/package/rust/rust.mk +++ b/package/rust/rust.mk @@ -4,7 +4,7 @@ # ################################################################################ -RUST_VERSION = 1.45.2 +RUST_VERSION = 1.48.0 RUST_SOURCE = rustc-$(RUST_VERSION)-src.tar.xz RUST_SITE = https://static.rust-lang.org/dist RUST_LICENSE = Apache-2.0 or MIT From 7422573b4f5fbb118cd89e04606e4a1681d164c1 Mon Sep 17 00:00:00 2001 From: Alexander Egorenkov Date: Sat, 28 Nov 2020 10:50:50 +0100 Subject: [PATCH 90/95] package/makedumpfile: bump to version 1.6.8 Signed-off-by: Alexander Egorenkov Signed-off-by: Thomas Petazzoni --- ...001-PATCH-Define-PN_XNUM-if-missing.patch} | 0 ...move-duplicated-variable-definitions.patch | 104 ------------------ package/makedumpfile/makedumpfile.hash | 2 +- package/makedumpfile/makedumpfile.mk | 4 +- 4 files changed, 3 insertions(+), 107 deletions(-) rename package/makedumpfile/{0002-PATCH-Define-PN_XNUM-if-missing.patch => 0001-PATCH-Define-PN_XNUM-if-missing.patch} (100%) delete mode 100644 package/makedumpfile/0001-PATCH-Remove-duplicated-variable-definitions.patch diff --git a/package/makedumpfile/0002-PATCH-Define-PN_XNUM-if-missing.patch b/package/makedumpfile/0001-PATCH-Define-PN_XNUM-if-missing.patch similarity index 100% rename from package/makedumpfile/0002-PATCH-Define-PN_XNUM-if-missing.patch rename to package/makedumpfile/0001-PATCH-Define-PN_XNUM-if-missing.patch diff --git a/package/makedumpfile/0001-PATCH-Remove-duplicated-variable-definitions.patch b/package/makedumpfile/0001-PATCH-Remove-duplicated-variable-definitions.patch deleted file mode 100644 index aab4f70f06..0000000000 --- a/package/makedumpfile/0001-PATCH-Remove-duplicated-variable-definitions.patch +++ /dev/null @@ -1,104 +0,0 @@ -From 399f2c9a3acd5bd913e50a4dde52dee6527b297e Mon Sep 17 00:00:00 2001 -From: Kairui Song -Date: Wed, 29 Jan 2020 13:37:13 +0800 -Subject: [PATCH] Remove duplicated variable definitions - -When building on Fedora 32 (with GCC 10), following error is observed: - -/usr/bin/ld: erase_info.o:/tmp/makedumpfile/makedumpfile.h:2010: multiple definition of - `crash_reserved_mem_nr'; elf_info.o:/tmp/makedumpfile/makedumpfile.h:2010: first defined here -/usr/bin/ld: erase_info.o:/tmp/makedumpfile/makedumpfile.h:2009: multiple definition of - `crash_reserved_mem'; elf_info.o:/tmp/makedumpfile/makedumpfile.h:2009: first defined here -/usr/bin/ld: erase_info.o:/tmp/makedumpfile/makedumpfile.h:1278: multiple definition of - `parallel_info_t'; elf_info.o:/tmp/makedumpfile/makedumpfile.h:1278: first defined here -/usr/bin/ld: erase_info.o:/tmp/makedumpfile/makedumpfile.h:1265: multiple definition of - `splitting_info_t'; elf_info.o:/tmp/makedumpfile/makedumpfile.h:1265: first defined here -... -collect2: error: ld returned 1 exit status -make: *** [Makefile:97: makedumpfile] Error 1 - -These variables are wrongly defined multiple times. So remove the -duplicated definitions. - -Signed-off-by: Kairui Song -Signed-off-by: Kazuhito Hagio -Signed-off-by: Alexander Egorenkov ---- - makedumpfile.c | 8 ++++---- - makedumpfile.h | 8 ++++---- - 2 files changed, 8 insertions(+), 8 deletions(-) - -diff --git a/makedumpfile.c b/makedumpfile.c -index e290fbd..ae7336a 100644 ---- a/makedumpfile.c -+++ b/makedumpfile.c -@@ -10954,7 +10954,7 @@ check_param_for_reassembling_dumpfile(int argc, char *argv[]) - return FALSE; - - if ((info->splitting_info -- = malloc(sizeof(splitting_info_t) * info->num_dumpfile)) -+ = malloc(sizeof(struct splitting_info) * info->num_dumpfile)) - == NULL) { - MSG("Can't allocate memory for splitting_info.\n"); - return FALSE; -@@ -11042,7 +11042,7 @@ check_param_for_creating_dumpfile(int argc, char *argv[]) - return FALSE; - } - if ((info->splitting_info -- = malloc(sizeof(splitting_info_t) * info->num_dumpfile)) -+ = malloc(sizeof(struct splitting_info) * info->num_dumpfile)) - == NULL) { - MSG("Can't allocate memory for splitting_info.\n"); - return FALSE; -@@ -11077,13 +11077,13 @@ check_param_for_creating_dumpfile(int argc, char *argv[]) - - if (info->num_threads) { - if ((info->parallel_info = -- malloc(sizeof(parallel_info_t) * info->num_threads)) -+ malloc(sizeof(struct parallel_info) * info->num_threads)) - == NULL) { - MSG("Can't allocate memory for parallel_info.\n"); - return FALSE; - } - -- memset(info->parallel_info, 0, sizeof(parallel_info_t) -+ memset(info->parallel_info, 0, sizeof(struct parallel_info) - * info->num_threads); - } - -diff --git a/makedumpfile.h b/makedumpfile.h -index 68d9691..7217407 100644 ---- a/makedumpfile.h -+++ b/makedumpfile.h -@@ -1262,7 +1262,7 @@ struct splitting_info { - mdf_pfn_t end_pfn; - off_t offset_eraseinfo; - unsigned long size_eraseinfo; --} splitting_info_t; -+}; - - struct parallel_info { - int fd_memory; -@@ -1275,7 +1275,7 @@ struct parallel_info { - #ifdef USELZO - lzo_bytep wrkmem; - #endif --} parallel_info_t; -+}; - - struct ppc64_vmemmap { - unsigned long phys; -@@ -2006,8 +2006,8 @@ struct memory_range { - }; - - #define CRASH_RESERVED_MEM_NR 8 --struct memory_range crash_reserved_mem[CRASH_RESERVED_MEM_NR]; --int crash_reserved_mem_nr; -+extern struct memory_range crash_reserved_mem[CRASH_RESERVED_MEM_NR]; -+extern int crash_reserved_mem_nr; - - unsigned long read_vmcoreinfo_symbol(char *str_symbol); - int readmem(int type_addr, unsigned long long addr, void *bufptr, size_t size); --- -2.28.0 - diff --git a/package/makedumpfile/makedumpfile.hash b/package/makedumpfile/makedumpfile.hash index 2ecfc5b1c5..1b2df008d2 100644 --- a/package/makedumpfile/makedumpfile.hash +++ b/package/makedumpfile/makedumpfile.hash @@ -1,3 +1,3 @@ # Locally computed: -sha256 cd3642dfe780d446f2dc328736bb2070007032718f5628262d5f59baf03619a4 makedumpfile-1.6.7.tar.gz +sha256 85d79b7090e9a8ce0d426795d3bc1de2858def7e12954d9bc6ae03de160b694c makedumpfile-1.6.8.tar.gz sha256 ab15fd526bd8dd18a9e77ebc139656bf4d33e97fc7238cd11bf60e2b9b8666c6 COPYING diff --git a/package/makedumpfile/makedumpfile.mk b/package/makedumpfile/makedumpfile.mk index ad63e280e8..99fb3a71c8 100644 --- a/package/makedumpfile/makedumpfile.mk +++ b/package/makedumpfile/makedumpfile.mk @@ -4,8 +4,8 @@ # ################################################################################ -MAKEDUMPFILE_VERSION = 1.6.7 -MAKEDUMPFILE_SITE = $(call github,makedumpfile,makedumpfile,Released-$(subst .,-,$(MAKEDUMPFILE_VERSION))) +MAKEDUMPFILE_VERSION = 1.6.8 +MAKEDUMPFILE_SITE = $(call github,makedumpfile,makedumpfile,$(MAKEDUMPFILE_VERSION)) MAKEDUMPFILE_DEPENDENCIES = bzip2 elfutils xz zlib MAKEDUMPFILE_LICENSE = GPL-2.0 MAKEDUMPFILE_LICENSE_FILES = COPYING From 064f263aa8e016fee81621c531951279bc72bdf9 Mon Sep 17 00:00:00 2001 From: James Hilliard Date: Mon, 23 Nov 2020 18:59:27 -0700 Subject: [PATCH 91/95] package/python-aiohttp-jinja2: bump to version 1.4.2 License hash changed due to formatting change. Signed-off-by: James Hilliard Signed-off-by: Thomas Petazzoni --- package/python-aiohttp-jinja2/python-aiohttp-jinja2.hash | 6 +++--- package/python-aiohttp-jinja2/python-aiohttp-jinja2.mk | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package/python-aiohttp-jinja2/python-aiohttp-jinja2.hash b/package/python-aiohttp-jinja2/python-aiohttp-jinja2.hash index 3563d2ab4b..44e2ae463f 100644 --- a/package/python-aiohttp-jinja2/python-aiohttp-jinja2.hash +++ b/package/python-aiohttp-jinja2/python-aiohttp-jinja2.hash @@ -1,5 +1,5 @@ # md5, sha256 from https://pypi.org/pypi/aiohttp-jinja2/json -md5 7eb1a9be9e776c94d3bff73330c213d0 aiohttp-jinja2-1.2.0.tar.gz -sha256 2dfe29cfd278d07cd0a851afb98471bc8ce2a830968443e40d67636f3c035d79 aiohttp-jinja2-1.2.0.tar.gz +md5 d474a6440ac906a9d818a03a540830ba aiohttp-jinja2-1.4.2.tar.gz +sha256 9c22a0e48e3b277fc145c67dd8c3b8f609dab36bce9eb337f70dfe716663c9a0 aiohttp-jinja2-1.4.2.tar.gz # Locally computed sha256 checksums -sha256 2a86817fedf0c52baaa47d7dd975073639dfaaebd37312bd279de54d7f841791 LICENSE +sha256 d9d867affaeac220a60381cc544681dcd37c668ed6ea5ddbf9948617f828889a LICENSE diff --git a/package/python-aiohttp-jinja2/python-aiohttp-jinja2.mk b/package/python-aiohttp-jinja2/python-aiohttp-jinja2.mk index 94a0c9d75a..724acdb601 100644 --- a/package/python-aiohttp-jinja2/python-aiohttp-jinja2.mk +++ b/package/python-aiohttp-jinja2/python-aiohttp-jinja2.mk @@ -4,9 +4,9 @@ # ################################################################################ -PYTHON_AIOHTTP_JINJA2_VERSION = 1.2.0 +PYTHON_AIOHTTP_JINJA2_VERSION = 1.4.2 PYTHON_AIOHTTP_JINJA2_SOURCE = aiohttp-jinja2-$(PYTHON_AIOHTTP_JINJA2_VERSION).tar.gz -PYTHON_AIOHTTP_JINJA2_SITE = https://files.pythonhosted.org/packages/9c/fb/8f1f8941e1e1937247c6de552668d73ab8ef860a1d633072d9f4e3c9b542 +PYTHON_AIOHTTP_JINJA2_SITE = https://files.pythonhosted.org/packages/da/4f/3b1a0c7177fdb0417308a95bfa8340f19cf84b44f8f2d734cd3052f56644 PYTHON_AIOHTTP_JINJA2_SETUP_TYPE = setuptools PYTHON_AIOHTTP_JINJA2_LICENSE = Apache-2.0 PYTHON_AIOHTTP_JINJA2_LICENSE_FILES = LICENSE From 362cd315f998d0b5c32dbd8d853b5e6e501b99c0 Mon Sep 17 00:00:00 2001 From: James Hilliard Date: Mon, 23 Nov 2020 19:07:37 -0700 Subject: [PATCH 92/95] package/python-serial-asyncio: bump to version 0.5 License hash changed due to year update. Signed-off-by: James Hilliard Signed-off-by: Thomas Petazzoni --- package/python-serial-asyncio/python-serial-asyncio.hash | 6 +++--- package/python-serial-asyncio/python-serial-asyncio.mk | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package/python-serial-asyncio/python-serial-asyncio.hash b/package/python-serial-asyncio/python-serial-asyncio.hash index 268c7d83f5..f5d1d9e485 100644 --- a/package/python-serial-asyncio/python-serial-asyncio.hash +++ b/package/python-serial-asyncio/python-serial-asyncio.hash @@ -1,5 +1,5 @@ # md5, sha256 from https://pypi.org/pypi/pyserial-asyncio/json -md5 67244fdc11cc31cf0ebf675c271c71d8 pyserial-asyncio-0.4.tar.gz -sha256 c40677a8874d8c24d4423a97498746de776f6dbcd0efbb8fa43dcf011a589aee pyserial-asyncio-0.4.tar.gz +md5 64d15bfb20982b2129b02070321f49f3 pyserial-asyncio-0.5.tar.gz +sha256 1641e5433a866eeaf6464b3ab88b741e7a89dd8cd0f851b3343b15f425138d33 pyserial-asyncio-0.5.tar.gz # Locally computed sha256 checksums -sha256 f8ded3a7460d3b2850b0cf673e986c70e9d997fd0732d8ab3f3c84f1f191087d LICENSE.txt +sha256 ebc84abdbdec7f9fa6962612c110123897db47b79529d5ae41191ef584b88f2c LICENSE.txt diff --git a/package/python-serial-asyncio/python-serial-asyncio.mk b/package/python-serial-asyncio/python-serial-asyncio.mk index 39c3476d9e..bc95f2c44a 100644 --- a/package/python-serial-asyncio/python-serial-asyncio.mk +++ b/package/python-serial-asyncio/python-serial-asyncio.mk @@ -4,9 +4,9 @@ # ################################################################################ -PYTHON_SERIAL_ASYNCIO_VERSION = 0.4 +PYTHON_SERIAL_ASYNCIO_VERSION = 0.5 PYTHON_SERIAL_ASYNCIO_SOURCE = pyserial-asyncio-$(PYTHON_SERIAL_ASYNCIO_VERSION).tar.gz -PYTHON_SERIAL_ASYNCIO_SITE = https://files.pythonhosted.org/packages/41/3f/e26f71269cbc0890a527a736d9afc5c0d5838a2c188be680558d635b7dc2 +PYTHON_SERIAL_ASYNCIO_SITE = https://files.pythonhosted.org/packages/e1/97/8dd1bf656796668ed4bd86058c815b130303a00a7b70cf79758e4918814a PYTHON_SERIAL_ASYNCIO_LICENSE = BSD-3-Clause PYTHON_SERIAL_ASYNCIO_LICENSE_FILES = LICENSE.txt PYTHON_SERIAL_ASYNCIO_SETUP_TYPE = setuptools From da59c616ba6f011296349f749030b9ef0b9f002d Mon Sep 17 00:00:00 2001 From: James Hilliard Date: Mon, 23 Nov 2020 19:12:59 -0700 Subject: [PATCH 93/95] package/python-serial: bump to version 3.5 License hash changed due to year update. Signed-off-by: James Hilliard Signed-off-by: Thomas Petazzoni --- package/python-serial/python-serial.hash | 6 +++--- package/python-serial/python-serial.mk | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package/python-serial/python-serial.hash b/package/python-serial/python-serial.hash index 96209a9965..d885d3c0c8 100644 --- a/package/python-serial/python-serial.hash +++ b/package/python-serial/python-serial.hash @@ -1,5 +1,5 @@ # md5, sha256 from https://pypi.org/pypi/pyserial/json -md5 ed6183b15519a0ae96675e9c3330c69b pyserial-3.4.tar.gz -sha256 6e2d401fdee0eab996cf734e67773a0143b932772ca8b42451440cfed942c627 pyserial-3.4.tar.gz +md5 1cf25a76da59b530dbfc2cf99392dc83 pyserial-3.5.tar.gz +sha256 3c77e014170dfffbd816e6ffc205e9842efb10be9f58ec16d3e8675b4925cddb pyserial-3.5.tar.gz # Locally computed sha256 checksums -sha256 a89d951d157e2c199fbbe7ecf8d41bc3bc93de166db524aa6b9b610dbccc832d LICENSE.txt +sha256 f91cb9813de6a5b142b8f7f2dede630b5134160aedaeaf55f4d6a7e2593ca3f3 LICENSE.txt diff --git a/package/python-serial/python-serial.mk b/package/python-serial/python-serial.mk index d583ac65ab..249ea9d5a3 100644 --- a/package/python-serial/python-serial.mk +++ b/package/python-serial/python-serial.mk @@ -4,9 +4,9 @@ # ################################################################################ -PYTHON_SERIAL_VERSION = 3.4 +PYTHON_SERIAL_VERSION = 3.5 PYTHON_SERIAL_SOURCE = pyserial-$(PYTHON_SERIAL_VERSION).tar.gz -PYTHON_SERIAL_SITE = https://files.pythonhosted.org/packages/cc/74/11b04703ec416717b247d789103277269d567db575d2fd88f25d9767fe3d +PYTHON_SERIAL_SITE = https://files.pythonhosted.org/packages/1e/7d/ae3f0a63f41e4d2f6cb66a5b57197850f919f59e558159a4dd3a818f5082 PYTHON_SERIAL_LICENSE = BSD-3-Clause PYTHON_SERIAL_LICENSE_FILES = LICENSE.txt PYTHON_SERIAL_SETUP_TYPE = setuptools From 7467105d6c8a734900dfe7860521c03e41c26b49 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vincent=20Stehl=C3=A9?= Date: Fri, 27 Nov 2020 15:40:24 +0100 Subject: [PATCH 94/95] configs/arm_foundationv8: bump to Linux 5.9.11 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Bump to the latest kernel v5.9.11 and require openssl. - Switch to PSCI for bringing up the secondary CPUs. - Switch to GICv3. - Update the instruction in the readme.txt to use the latest FVP v8 Foundation Platform 11.12 build 38, and to start 4 cores in SMP. Signed-off-by: Vincent Stehlé Cc: Masahiro Yamada Signed-off-by: Thomas Petazzoni --- board/arm/foundation-v8/readme.txt | 7 ++++--- configs/arm_foundationv8_defconfig | 13 ++++++++----- 2 files changed, 12 insertions(+), 8 deletions(-) diff --git a/board/arm/foundation-v8/readme.txt b/board/arm/foundation-v8/readme.txt index 1dedf68cba..b5106f015e 100644 --- a/board/arm/foundation-v8/readme.txt +++ b/board/arm/foundation-v8/readme.txt @@ -3,17 +3,18 @@ ARM software simulator of the AArch64 architecture. First, one has to download the AArch64 software simulator from: - https://silver.arm.com/download/download.tm?pv=2663527 + https://silver.arm.com/download/download.tm?pv=4807186 Then, use the arm_foundationv8_defconfig configuration to build your Buildroot system. Finally, boot your system with: - ${LOCATION_OF_FOUNDATIONV8_SIMULATOR}/models/Linux64_GCC-4.7/Foundation_Platform \ + ${LOCATION_OF_FOUNDATIONV8_SIMULATOR}/models/Linux64_GCC-6.4/Foundation_Platform \ --image output/images/linux-system.axf \ --block-device output/images/rootfs.ext2 \ - --network=nat + --network=nat \ + --cores 4 You can get network access from within the simulated environment by requesting an IP address using DHCP (run the command 'udhcpc'). diff --git a/configs/arm_foundationv8_defconfig b/configs/arm_foundationv8_defconfig index ea19f35502..363f288b87 100644 --- a/configs/arm_foundationv8_defconfig +++ b/configs/arm_foundationv8_defconfig @@ -1,15 +1,18 @@ BR2_aarch64=y -# Linux headers same as kernel, a 4.4 series -BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_4=y +# Linux headers same as kernel, a 5.9 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_5_9=y BR2_TARGET_GENERIC_GETTY_PORT="ttyAMA0" BR2_LINUX_KERNEL=y BR2_LINUX_KERNEL_CUSTOM_VERSION=y -BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.4.3" +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="5.9.11" BR2_LINUX_KERNEL_USE_ARCH_DEFAULT_CONFIG=y BR2_LINUX_KERNEL_DTS_SUPPORT=y -BR2_LINUX_KERNEL_INTREE_DTS_NAME="arm/foundation-v8" +BR2_LINUX_KERNEL_INTREE_DTS_NAME="arm/foundation-v8-gicv3-psci" +BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y BR2_TARGET_ROOTFS_EXT2=y # BR2_TARGET_ROOTFS_TAR is not set BR2_TARGET_BOOT_WRAPPER_AARCH64=y -BR2_TARGET_BOOT_WRAPPER_AARCH64_DTS="arm/foundation-v8" +BR2_TARGET_BOOT_WRAPPER_AARCH64_DTS="arm/foundation-v8-gicv3-psci" BR2_TARGET_BOOT_WRAPPER_AARCH64_BOOTARGS="root=/dev/vda consolelog=9 console=ttyAMA0 rw" +BR2_TARGET_BOOT_WRAPPER_AARCH64_PSCI=y +BR2_TARGET_BOOT_WRAPPER_AARCH64_GICV3=y From 9c26200cb9ad56564d3f0f832aad0cd274c9a330 Mon Sep 17 00:00:00 2001 From: Waldemar Brodkorb Date: Mon, 23 Nov 2020 17:30:35 +0100 Subject: [PATCH 95/95] package/mksh: update to 59c Signed-off-by: Waldemar Brodkorb Signed-off-by: Thomas Petazzoni --- package/mksh/mksh.hash | 4 ++-- package/mksh/mksh.mk | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package/mksh/mksh.hash b/package/mksh/mksh.hash index 7fc34fa3e3..d81deccb39 100644 --- a/package/mksh/mksh.hash +++ b/package/mksh/mksh.hash @@ -1,4 +1,4 @@ # From http://www.mirbsd.org/mksh.htm#build -sha256 907ed1a9586e7f18bdefdd4a763aaa8397b755e15034aa54f4d753bfb272e0e6 mksh-R59b.tgz +sha256 77ae1665a337f1c48c61d6b961db3e52119b38e58884d1c89684af31f87bc506 mksh-R59c.tgz # Locally computed -sha256 fb1e64c95ded58058c7f0cf5269236bc83c3cbda089cbb025b03e08f189bf47e mksh.1 +sha256 abf44a61ec777c98f8ae7e08e4fe25fe258e0c470215e2eeb22816f6bae72c80 mksh.1 diff --git a/package/mksh/mksh.mk b/package/mksh/mksh.mk index 05ddc3f4c9..386b1bd016 100644 --- a/package/mksh/mksh.mk +++ b/package/mksh/mksh.mk @@ -4,7 +4,7 @@ # ################################################################################ -MKSH_VERSION = 59b +MKSH_VERSION = 59c MKSH_SOURCE = mksh-R$(MKSH_VERSION).tgz MKSH_SITE = https://www.mirbsd.org/MirOS/dist/mir/mksh # For MirOS License see https://www.mirbsd.org/TaC-mksh.txt