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/DEVELOPERS b/DEVELOPERS index 9ab1e125f4..9f6d18131c 100644 --- a/DEVELOPERS +++ b/DEVELOPERS @@ -921,6 +921,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/ @@ -1863,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/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/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 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 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 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: diff --git a/package/Config.in b/package/Config.in index 016a99ed1a..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" @@ -1245,6 +1246,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 @@ -2111,7 +2113,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/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..ab6c709318 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 +HOST_ABOOTIMG_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)) 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+ 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) 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..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.22/bind-9.11.22.tar.gz.asc -# with key AE3FAC796711EC59FC007AA474BB6B9A4CBB3D38 -sha256 afc6d8015006f1cabf699ff19f517bb8fd9c1811e5231f26baf51c3550262ac9 bind-9.11.22.tar.gz -sha256 da2aec2b7f6f0feb16bcb080e2c587375fd3195145f047e4d92d112f5b9db501 COPYRIGHT +# 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 e316d9d12b3cc3600985d71011d7856f5ff93d28e748155a3a18171b32d98d8b 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) 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 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 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 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 \ 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)) 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 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), \ 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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+ 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 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)) 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-porti.patch b/package/kmsxx/0002-added-include-string-to-card.h-to-follow-gcc10-porti.patch deleted file mode 100644 index 3febac40e8..0000000000 --- a/package/kmsxx/0002-added-include-string-to-card.h-to-follow-gcc10-porti.patch +++ /dev/null @@ -1,27 +0,0 @@ -From f7ee1e8c96ffbfc645487e483b928d250a7e79ec 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 - -[Upstream: https://github.com/tomba/kmsxx/commit/b53f9d383c9189a897c44cd88a8fc1b871fdc8a2.patch] -Signed-off-by: Peter Seiderer ---- - 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 90ad1f6..f055e27 100644 ---- a/kms++/inc/kms++/card.h -+++ b/kms++/inc/kms++/card.h -@@ -3,6 +3,7 @@ - #include - #include - #include -+#include - - #include "decls.h" - #include "pipeline.h" --- -2.29.2 - 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)) 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 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 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 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) 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/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 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 $(@) diff --git a/package/linux-firmware/linux-firmware.hash b/package/linux-firmware/linux-firmware.hash index 2ebd11365f..1c1f3bd116 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 ba045512bb782ba8efc82651a85679684fb0fec7a7a094971031be665d6c82d6 linux-firmware-20201022.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 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..c0ca98c45c 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 @@ -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 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 \ diff --git a/package/linux-tools/linux-tool-perf.mk.in b/package/linux-tools/linux-tool-perf.mk.in index 53b7c5b9cd..efa747cf8d 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,16 @@ 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_ZSTD),y) +PERF_DEPENDENCIES += zstd +endif + ifeq ($(BR2_PACKAGE_LIBUNWIND),y) PERF_DEPENDENCIES += libunwind else 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 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 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) 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 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+ 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 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 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 += \ 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 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. 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))) diff --git a/package/postgresql/postgresql.mk b/package/postgresql/postgresql.mk index 4c5f200bdf..4d675e9e28 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) 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-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 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 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 \ 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 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 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 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 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 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)) 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 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)) 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 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..4cd5980f0b 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_CONFIGURE_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 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)) 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 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..bed6367841 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,11 +12,15 @@ 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 +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 \ 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 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)) 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 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 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 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 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 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 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 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 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 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 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:*:*:*:*:*:*")