aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar Peter Korsgaard <peter@korsgaard.com>2020-12-03 10:30:49 +0100
committerGravatar Peter Korsgaard <peter@korsgaard.com>2020-12-03 10:30:49 +0100
commit6eff339082d2c9a7dca7f436ea898189f5510ef2 (patch)
tree8b990d9e5e45153fe95ef10210d6b418ef72fd4c
parent4dd43e684120b0fd964f14e90301e4b83a16de1b (diff)
parent9c26200cb9ad56564d3f0f832aad0cd274c9a330 (diff)
downloadbuildroot-refs/heads/master.tar.gz
buildroot-refs/heads/master.tar.bz2
Merge branch 'next'HEADmaster
Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
-rw-r--r--Config.in.legacy9
-rw-r--r--DEVELOPERS4
-rw-r--r--board/arm/foundation-v8/readme.txt7
-rw-r--r--configs/aarch64_efi_defconfig6
-rw-r--r--configs/arm_foundationv8_defconfig13
-rw-r--r--configs/bananapi_m2_zero_defconfig6
-rw-r--r--docs/manual/adding-packages-generic.txt39
-rw-r--r--package/Config.in3
-rw-r--r--package/Config.in.host1
-rw-r--r--package/abootimg/Config.in.host8
-rw-r--r--package/abootimg/abootimg.mk10
-rw-r--r--package/axel/axel.hash2
-rw-r--r--package/axel/axel.mk2
-rw-r--r--package/bctoolbox/bctoolbox.mk1
-rw-r--r--package/bind/0001-cross.patch25
-rw-r--r--package/bind/bind.hash8
-rw-r--r--package/bind/bind.mk2
-rw-r--r--package/botan/0001-src-build-data-arch-arm64.txt-add-aarch64_be.patch31
-rw-r--r--package/botan/botan.hash2
-rw-r--r--package/botan/botan.mk2
-rw-r--r--package/cups-filters/0001-configure.ac-fix-cross-compilation-without-dejavu.patch41
-rw-r--r--package/cups-filters/cups-filters.hash4
-rw-r--r--package/cups-filters/cups-filters.mk4
-rw-r--r--package/dnsmasq/dnsmasq.hash4
-rw-r--r--package/dnsmasq/dnsmasq.mk8
-rw-r--r--package/ejabberd/0001-Makefile.in-do-not-download-or-compile-dependencies.patch12
-rw-r--r--package/ejabberd/ejabberd.hash4
-rw-r--r--package/ejabberd/ejabberd.mk4
-rw-r--r--package/environment-setup/environment-setup1
-rw-r--r--package/environment-setup/environment-setup.mk5
-rw-r--r--package/erlang-eimp/erlang-eimp.hash4
-rw-r--r--package/erlang-eimp/erlang-eimp.mk2
-rw-r--r--package/erlang-jiffy/erlang-jiffy.hash4
-rw-r--r--package/erlang-jiffy/erlang-jiffy.mk2
-rw-r--r--package/erlang-p1-acme/0001-rebar.config.script-remove-extra-dependency-to-base6.patch26
-rw-r--r--package/erlang-p1-acme/erlang-p1-acme.hash4
-rw-r--r--package/erlang-p1-acme/erlang-p1-acme.mk2
-rw-r--r--package/erlang-p1-cache-tab/erlang-p1-cache-tab.hash4
-rw-r--r--package/erlang-p1-cache-tab/erlang-p1-cache-tab.mk2
-rw-r--r--package/erlang-p1-mqtree/erlang-p1-mqtree.hash4
-rw-r--r--package/erlang-p1-mqtree/erlang-p1-mqtree.mk2
-rw-r--r--package/erlang-p1-oauth2/erlang-p1-oauth2.hash4
-rw-r--r--package/erlang-p1-oauth2/erlang-p1-oauth2.mk2
-rw-r--r--package/erlang-p1-pkix/erlang-p1-pkix.hash4
-rw-r--r--package/erlang-p1-pkix/erlang-p1-pkix.mk2
-rw-r--r--package/erlang-p1-sip/0001-correct-include.patch31
-rw-r--r--package/erlang-p1-sip/0001-fix-includes.patch19
-rw-r--r--package/erlang-p1-sip/erlang-p1-sip.hash4
-rw-r--r--package/erlang-p1-sip/erlang-p1-sip.mk2
-rw-r--r--package/erlang-p1-stringprep/erlang-p1-stringprep.hash8
-rw-r--r--package/erlang-p1-stringprep/erlang-p1-stringprep.mk2
-rw-r--r--package/erlang-p1-stun/erlang-p1-stun.hash4
-rw-r--r--package/erlang-p1-stun/erlang-p1-stun.mk2
-rw-r--r--package/erlang-p1-tls/erlang-p1-tls.hash4
-rw-r--r--package/erlang-p1-tls/erlang-p1-tls.mk2
-rw-r--r--package/erlang-p1-utils/erlang-p1-utils.hash4
-rw-r--r--package/erlang-p1-utils/erlang-p1-utils.mk2
-rw-r--r--package/erlang-p1-xml/erlang-p1-xml.hash4
-rw-r--r--package/erlang-p1-xml/erlang-p1-xml.mk2
-rw-r--r--package/erlang-p1-xmpp/0001-fix-includes.patch4
-rw-r--r--package/erlang-p1-xmpp/erlang-p1-xmpp.hash4
-rw-r--r--package/erlang-p1-xmpp/erlang-p1-xmpp.mk2
-rw-r--r--package/erlang-p1-yaml/erlang-p1-yaml.hash4
-rw-r--r--package/erlang-p1-yaml/erlang-p1-yaml.mk2
-rw-r--r--package/erlang-p1-yconf/erlang-p1-yconf.hash4
-rw-r--r--package/erlang-p1-yconf/erlang-p1-yconf.mk2
-rw-r--r--package/erlang-p1-zlib/erlang-p1-zlib.hash4
-rw-r--r--package/erlang-p1-zlib/erlang-p1-zlib.mk2
-rw-r--r--package/fbgrab/fbgrab.hash2
-rw-r--r--package/fbgrab/fbgrab.mk2
-rw-r--r--package/fmt/fmt.hash2
-rw-r--r--package/fmt/fmt.mk2
-rw-r--r--package/grep/grep.hash4
-rw-r--r--package/grep/grep.mk2
-rw-r--r--package/haproxy/haproxy.hash4
-rw-r--r--package/haproxy/haproxy.mk2
-rw-r--r--package/ipsec-tools/0001-susv3-legacy.patch35
-rw-r--r--package/ipsec-tools/0002-configure-automake.patch21
-rw-r--r--package/ipsec-tools/0003-Don-t-link-against-libfl.patch92
-rw-r--r--package/ipsec-tools/0004-CVE-2015-4047.patch26
-rw-r--r--package/ipsec-tools/0005-CVE-2016-10396.patch208
-rw-r--r--package/ipsec-tools/0006-openssl-1.1.patch1104
-rw-r--r--package/ipsec-tools/Config.in75
-rw-r--r--package/ipsec-tools/ipsec-tools.hash6
-rw-r--r--package/ipsec-tools/ipsec-tools.mk85
-rw-r--r--package/kmsxx/0001-fix-compiler-errors-with-gcc-10.patch35
-rw-r--r--package/kmsxx/0001-meson-add-use-system-fmt-option.patch46
-rw-r--r--package/kmsxx/0002-added-include-string-to-card.h-to-follow-gcc10-porti.patch27
-rw-r--r--package/kmsxx/0002-meson-add-use-system-pybind11-option.patch43
-rw-r--r--package/kmsxx/0003-meson-only-build-py-in-case-pykms-is-enabled.patch48
-rw-r--r--package/kmsxx/Config.in7
-rw-r--r--package/kmsxx/kmsxx.hash4
-rw-r--r--package/kmsxx/kmsxx.mk74
-rw-r--r--package/libbluray/libbluray.hash6
-rw-r--r--package/libbluray/libbluray.mk2
-rw-r--r--package/libdrm/0003-xf86drm.c-fix-build-failure.patch84
-rw-r--r--package/libdrm/libdrm.hash6
-rw-r--r--package/libdrm/libdrm.mk2
-rw-r--r--package/libinput/libinput.hash8
-rw-r--r--package/libinput/libinput.mk2
-rw-r--r--package/libostree/libostree.hash2
-rw-r--r--package/libostree/libostree.mk2
-rw-r--r--package/libuv/libuv.hash2
-rw-r--r--package/libuv/libuv.mk2
-rw-r--r--package/libva-utils/libva-utils.hash6
-rw-r--r--package/libva-utils/libva-utils.mk2
-rw-r--r--package/linux-backports/Config.in2
-rw-r--r--package/linux-backports/linux-backports.hash8
-rw-r--r--package/linux-backports/linux-backports.mk19
-rw-r--r--package/linux-firmware/linux-firmware.hash68
-rw-r--r--package/linux-firmware/linux-firmware.mk5
-rw-r--r--package/linux-pam/0001-configure-ac-fix-build-failure-when-crypt-does-not-require-libcrypt.patch37
-rw-r--r--package/linux-pam/0002-fix-build-on-musl.patch320
-rw-r--r--package/linux-pam/linux-pam.hash4
-rw-r--r--package/linux-pam/linux-pam.mk11
-rw-r--r--package/linux-tools/linux-tool-perf.mk.in11
-rw-r--r--package/lua-lyaml/lua-lyaml.hash4
-rw-r--r--package/lua-lyaml/lua-lyaml.mk2
-rw-r--r--package/luajit/luajit.mk8
-rw-r--r--package/lz4/lz4.hash2
-rw-r--r--package/lz4/lz4.mk2
-rw-r--r--package/makedumpfile/0001-PATCH-Define-PN_XNUM-if-missing.patch (renamed from package/makedumpfile/0002-PATCH-Define-PN_XNUM-if-missing.patch)0
-rw-r--r--package/makedumpfile/0001-PATCH-Remove-duplicated-variable-definitions.patch104
-rw-r--r--package/makedumpfile/makedumpfile.hash2
-rw-r--r--package/makedumpfile/makedumpfile.mk4
-rw-r--r--package/mbuffer/mbuffer.hash4
-rw-r--r--package/mbuffer/mbuffer.mk2
-rw-r--r--package/mesa3d-headers/mesa3d-headers.mk2
-rw-r--r--package/mesa3d/mesa3d.hash6
-rw-r--r--package/mesa3d/mesa3d.mk2
-rw-r--r--package/mksh/mksh.hash4
-rw-r--r--package/mksh/mksh.mk2
-rw-r--r--package/openvpn/openvpn.hash4
-rw-r--r--package/openvpn/openvpn.mk9
-rw-r--r--package/pixz/0001-fix-linkage.patch41
-rw-r--r--package/pixz/pixz.hash2
-rw-r--r--package/pixz/pixz.mk2
-rw-r--r--package/pkg-generic.mk70
-rw-r--r--package/pkg-utils.mk3
-rw-r--r--package/postgresql/postgresql.mk2
-rw-r--r--package/protobuf/protobuf.hash2
-rw-r--r--package/protobuf/protobuf.mk2
-rw-r--r--package/python-aiohttp-jinja2/python-aiohttp-jinja2.hash6
-rw-r--r--package/python-aiohttp-jinja2/python-aiohttp-jinja2.mk4
-rw-r--r--package/python-can/python-can.hash4
-rw-r--r--package/python-can/python-can.mk4
-rw-r--r--package/python-pillow/Config.in1
-rw-r--r--package/python-pillow/python-pillow.hash3
-rw-r--r--package/python-pillow/python-pillow.mk13
-rw-r--r--package/python-protobuf/0001-python-setup.py-remove-unneeded-wheel-dependency.patch41
-rw-r--r--package/python-protobuf/python-protobuf.hash2
-rw-r--r--package/python-pybind/python-pybind.hash4
-rw-r--r--package/python-pybind/python-pybind.mk2
-rw-r--r--package/python-pydal/python-pydal.hash4
-rw-r--r--package/python-pydal/python-pydal.mk2
-rw-r--r--package/python-serial-asyncio/python-serial-asyncio.hash6
-rw-r--r--package/python-serial-asyncio/python-serial-asyncio.mk4
-rw-r--r--package/python-serial/python-serial.hash6
-rw-r--r--package/python-serial/python-serial.mk4
-rw-r--r--package/python-thrift/Config.in5
-rw-r--r--package/python-thrift/python-thrift.hash6
-rw-r--r--package/python-thrift/python-thrift.mk8
-rw-r--r--package/python-yatl/python-yatl.hash4
-rw-r--r--package/python-yatl/python-yatl.mk4
-rw-r--r--package/qcom-db410c-firmware/Config.in7
-rw-r--r--package/qcom-db410c-firmware/qcom-db410c-firmware.hash3
-rw-r--r--package/qcom-db410c-firmware/qcom-db410c-firmware.mk41
-rw-r--r--package/qdecoder/qdecoder.hash4
-rw-r--r--package/qdecoder/qdecoder.mk2
-rw-r--r--package/qt5/qt5base/Config.in5
-rw-r--r--package/qt5/qt5base/qt5base.mk6
-rw-r--r--package/quickjs/Config.in16
-rw-r--r--package/quickjs/quickjs.hash2
-rw-r--r--package/quickjs/quickjs.mk37
-rw-r--r--package/quota/0001-configure.ac-add-disable-pie-option.patch55
-rw-r--r--package/quota/0001-quota-Use-realloc-3-instead-of-reallocarray-3.patch34
-rw-r--r--package/quota/quota.hash10
-rw-r--r--package/quota/quota.mk5
-rw-r--r--package/radvd/0002-Don-t-force-fstack-protector-the-toolchain-might-lac.patch27
-rw-r--r--package/radvd/radvd.hash6
-rw-r--r--package/radvd/radvd.mk10
-rw-r--r--package/rhash/rhash.hash9
-rw-r--r--package/rhash/rhash.mk32
-rw-r--r--package/rocksdb/0001-build_tools-build_detect_platform-fix-C-tests.patch67
-rw-r--r--package/rocksdb/0002-POWER7-8-compatiblity-fix-CRC32-C-implementation.patch3787
-rw-r--r--package/rocksdb/0002-replace-POWER-crc32c-with-C-implementation.patch4058
-rw-r--r--package/rocksdb/rocksdb.hash4
-rw-r--r--package/rocksdb/rocksdb.mk16
-rw-r--r--package/rust-bin/rust-bin.hash94
-rw-r--r--package/rust-bin/rust-bin.mk2
-rw-r--r--package/rust/rust.hash10
-rw-r--r--package/rust/rust.mk2
-rw-r--r--package/samba4/samba4.hash4
-rw-r--r--package/samba4/samba4.mk2
-rw-r--r--package/shadowsocks-libev/shadowsocks-libev.hash2
-rw-r--r--package/shadowsocks-libev/shadowsocks-libev.mk2
-rw-r--r--package/spdlog/spdlog.hash2
-rw-r--r--package/spdlog/spdlog.mk2
-rw-r--r--package/sqlite/sqlite.hash9
-rw-r--r--package/sqlite/sqlite.mk2
-rw-r--r--package/sshfs/0001-sshfs.c-fix-build-with-gcc-4.8.patch47
-rw-r--r--package/sshfs/sshfs.hash2
-rw-r--r--package/sshfs/sshfs.mk2
-rw-r--r--package/trousers/0003-Correct-multiple-security-issues-that-are-present-if.patch90
-rw-r--r--package/trousers/0004-trousers-resolve-build-failure.patch41
-rw-r--r--package/trousers/trousers.hash10
-rw-r--r--package/trousers/trousers.mk5
-rw-r--r--package/uvw/uvw.hash2
-rw-r--r--package/uvw/uvw.mk2
-rw-r--r--package/x11r7/xserver_xorg-server/0002-Remove-check-for-useSIGIO-option.patch53
-rw-r--r--package/x11r7/xserver_xorg-server/0002-include-misc.h-fix-uClibc-build.patch (renamed from package/x11r7/xserver_xorg-server/0003-include-misc.h-fix-uClibc-build.patch)0
-rw-r--r--package/x11r7/xserver_xorg-server/0003-hw-xwayland-Makefile.am-fix-build-without-glx.patch (renamed from package/x11r7/xserver_xorg-server/0004-hw-xwayland-Makefile.am-fix-build-without-glx.patch)0
-rw-r--r--package/x11r7/xserver_xorg-server/0004-hw-xfree86-common-xf86Init.c-fix-build-without-glx.patch (renamed from package/x11r7/xserver_xorg-server/0005-hw-xfree86-common-xf86Init.c-fix-build-without-glx.patch)0
-rw-r--r--package/x11r7/xserver_xorg-server/0005-Fix-segfault-on-probing-a-non-PCI-platform-device-on.patch (renamed from package/x11r7/xserver_xorg-server/0006-Fix-segfault-on-probing-a-non-PCI-platform-device-on.patch)0
-rwxr-xr-xsupport/scripts/cve.py9
-rw-r--r--support/testing/tests/core/cpeid-br2-external/Config.in0
-rw-r--r--support/testing/tests/core/cpeid-br2-external/external.desc1
-rw-r--r--support/testing/tests/core/cpeid-br2-external/external.mk1
-rw-r--r--support/testing/tests/core/cpeid-br2-external/package/cpe-id-pkg1/cpe-id-pkg1.mk4
-rw-r--r--support/testing/tests/core/cpeid-br2-external/package/cpe-id-pkg2/cpe-id-pkg2.mk3
-rw-r--r--support/testing/tests/core/cpeid-br2-external/package/cpe-id-pkg3/cpe-id-pkg3.mk5
-rw-r--r--support/testing/tests/core/cpeid-br2-external/package/cpe-id-pkg4/cpe-id-pkg4.mk9
-rw-r--r--support/testing/tests/core/cpeid-br2-external/package/cpe-id-pkg5/cpe-id-pkg5.mk16
-rw-r--r--support/testing/tests/core/test_cpeid.py109
224 files changed, 4944 insertions, 7288 deletions
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 <michel.stempin@wanadoo.fr>
F: board/licheepi/
F: configs/licheepi_zero_defconfig
+N: Mike Frampton <mikeframpo@gmail.com>
+F: package/qcom-db410c-firmware/
+
N: Mike Harmony <mike.harmony@snapav.com>
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
+ +<pkgname>_project+.
+
+** +LIBFOO_CPE_ID_PRODUCT+, specifies the product part of the CPE
+ identifier. When not defined, the default value is +<pkgname>+.
+
+** +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 <gustavo@zacarias.com.ar>
+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 <gustavo@zacarias.com.ar>
[Fabrice: updated for 9.11.10]
Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>
+Signed-off-by: Petr Vorel <petr.vorel@gmail.com>
+---
+ 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 <fontaine.fabrice@gmail.com>
-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 <fontaine.fabrice@gmail.com>
-[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
-
- <aliases>
- aarch64
-+aarch64_be
- armv8
- armv8-a
- </aliases>
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 <fontaine.fabrice@gmail.com>
-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 <fontaine.fabrice@gmail.com>
-[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 <johan.oudinet@gmail.com>
-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 <johan.oudinet@gmail.com>
@@ -9,10 +9,10 @@ Signed-off-by: Johan Oudinet <johan.oudinet@gmail.com>
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 <johan.oudinet@gmail.com>
+Date: Wed, 25 Nov 2020 22:38:22 +0100
+Subject: [PATCH] rebar.config.script: remove extra dependency to base64url
+
+Signed-off-by: Johan Oudinet <johan.oudinet@gmail.com>
+---
+ 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 <debalance@debian.org>
+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 <debalance@debian.org>
+Signed-off-by: Johan Oudinet <johan.oudinet@gmail.com>
+---
+ 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 <debalance@debian.org>
-
-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 <julien.boibessot@armadeus.com>
-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 <bernd.kuhls@t-online.de>
-
-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 <paul@paulbarker.me.uk>
-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 <paul@paulbarker.me.uk>
-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 <bernd.kuhls@t-online.de>
----
- 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 <bernd.kuhls@t-online.de>
-
---- ./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 <bernd.kuhls@t-online.de>
-
-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 <cote2004-github@yahoo.com>
-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 <cote2004-github@yahoo.com>
-
-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 <bernd.kuhls@t-online.de>
----
- 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 <string.h>
-+
-+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 <openssl/opensslv.h>
-+#if OPENSSL_VERSION_NUMBER < 0x10100000L
-+
-+#include <openssl/rsa.h>
-+#include <openssl/dh.h>
-+#include <openssl/evp.h>
-+#include <openssl/hmac.h>
-+
-+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 <christoph@zen.fritz.box>
-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 <fontaine.fabrice@gmail.com>
----
- 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 <cstdint>
- #include <string>
-+#include <stdexcept>
-
- 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 <algorithm>
-+#include <stdexcept>
-
- #include <unistd.h>
- #include <getopt.h>
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 <ps.report@gmx.net>
+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 <ps.report@gmx.net>
+---
+ 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 <sebastianoff@web.de>
-Date: Thu, 8 Oct 2020 22:37:55 +0200
-Subject: [PATCH] added #include <string> to card.h to follow gcc10 porting
- guide
-
-[Upstream: https://github.com/tomba/kmsxx/commit/b53f9d383c9189a897c44cd88a8fc1b871fdc8a2.patch]
-Signed-off-by: Peter Seiderer <ps.report@gmx.net>
----
- 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 <cstdint>
- #include <vector>
- #include <map>
-+#include <string>
-
- #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 <ps.report@gmx.net>
+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 <ps.report@gmx.net>
+---
+ 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 <ps.report@gmx.net>
+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 <ps.report@gmx.net>
+---
+ 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_CXXFLAGS = $(TARGET_CXXFLAGS)
+KMSXX_DEPENDENCIES = fmt libdrm host-pkgconf
+KMSXX_CONF_OPTS = \
+ -Dkmscube=false \
+ -Dpykms=disabled \
+ -Domap=disabled \
+ -Duse-system-fmt=true \
+ -Duse-system-pybind11=true
+
+ifeq ($(BR2_STATIC_LIBS),y)
+KMSXX_CONF_OPTS += -Dstatic-libc=true
+else
+KMSXX_CONF_OPTS += -Dstatic-libc=false
+endif
ifeq ($(BR2_TOOLCHAIN_HAS_GCC_BUG_85180),y)
-KMSXX_CXXFLAGS += -O0
+KMSXX_CXXFLAGS += $(TARGET_CXXFLAGS) -O0
endif
-KMSXX_CONF_OPTS += -DCMAKE_CXX_FLAGS="$(KMSXX_CXXFLAGS)"
-
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 <heiko.thiery@gmail.com>
-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 <heiko.thiery@gmail.com>
-[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 <fontaine.fabrice@gmail.com>
-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 <fontaine.fabrice@gmail.com>
-[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 <fontaine.fabrice@gmail.com>
-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 <fontaine.fabrice@gmail.com>
-[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 <security/_pam_types.h>
-
-+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 <security/pam_ext.h>
-+
-+#include <stdio.h>
-+#include <syslog.h>
-+
-+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 <unistd.h>
-
- #include <security/pam_modules.h>
-+#include <security/pam_modutil.h>
- #include <security/pam_ext.h>
- #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
index 162e893cbe..162e893cbe 100644
--- a/package/makedumpfile/0002-PATCH-Define-PN_XNUM-if-missing.patch
+++ b/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 <kasong@redhat.com>
-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 <kasong@redhat.com>
-Signed-off-by: Kazuhito Hagio <k-hagio-ab@nec.com>
-Signed-off-by: Alexander Egorenkov <egorenar-dev@posteo.net>
----
- 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 <dave@vasilevsky.ca>
-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 <fontaine.fabrice@gmail.com>
----
- 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 <pkg>_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 <fontaine.fabrice@gmail.com>
-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 <fontaine.fabrice@gmail.com>
----
- 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 <fontaine.fabrice@gmail.com>
-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 <fontaine.fabrice@gmail.com>
-[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 <fontaine.fabrice@gmail.com>
+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 <fontaine.fabrice@gmail.com>
+Signed-off-by: Jan Kara <jack@suse.cz>
+[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 <gustavo@zacarias.com.ar>
-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 <gustavo@zacarias.com.ar>
-Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
----
- 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 <linux/if_arp.h>, 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_SYSTEM_ENABLE_NLS),y)
+RHASH_CONF_OPTS += --disable-gettext
+else
+RHASH_CONF_OPTS += --enable-gettext
+endif
ifeq ($(BR2_PACKAGE_OPENSSL)x$(BR2_STATIC_LIBS),yx)
+RHASH_CONF_OPTS += --enable-openssl
RHASH_DEPENDENCIES += openssl
-RHASH_ADDCFLAGS += -DOPENSSL_RUNTIME -rdynamic
-RHASH_ADDLDFLAGS += -ldl
+else
+RHASH_CONF_OPTS += --disable-openssl
endif
-RHASH_MAKE_OPTS = \
- ADDCFLAGS="$(RHASH_ADDCFLAGS)" \
- ADDLDFLAGS="$(RHASH_ADDLDFLAGS)" \
- PREFIX="/usr"
+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 <fontaine.fabrice@gmail.com>
[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 <<EOF
++ $CXX $CFLAGS -x c++ - -luring -o test.o 2>/dev/null <<EOF
+ #include <liburing.h>
+ 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 <gflags/gflags.h>
+ 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 <gflags/gflags.h>
+ 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 <gflags/gflags.h>
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 <<EOF
++ $CXX $CFLAGS $COMMON_FLAGS -lmemkind -x c++ - -o test.o 2>/dev/null <<EOF
+ #include <memkind.h>
+ 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 <<EOF
@@ -222,7 +249,7 @@ index 2535d8124..64a0ae76c 100755
EOF
if [ "$?" = 0 ]; then
@@ -603,7 +603,7 @@ if test "$TRY_SSE_ETC"; then
- TRY_AVX2="-mavx2"
+ TRY_LZCNT="-mlzcnt"
fi
-$CXX $PLATFORM_CXXFLAGS $COMMON_FLAGS $TRY_SSE42 -x c++ - -o /dev/null 2>/dev/null <<EOF
@@ -252,6 +279,24 @@ index 2535d8124..64a0ae76c 100755
echo "warning: USE_SSE specified but compiler could not use AVX2 intrinsics, disabling" >&2
fi
+-$CXX $PLATFORM_CXXFLAGS $COMMON_FLAGS $TRY_BMI -x c++ - -o /dev/null 2>/dev/null <<EOF
++$CXX $PLATFORM_CXXFLAGS $COMMON_FLAGS $TRY_BMI -x c++ - -o test.o 2>/dev/null <<EOF
+ #include <cstdint>
+ #include <immintrin.h>
+ 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 <<EOF
++$CXX $PLATFORM_CXXFLAGS $COMMON_FLAGS $TRY_LZCNT -x c++ - -o test.o 2>/dev/null <<EOF
+ #include <cstdint>
+ #include <immintrin.h>
+ 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 <<EOF
+$CXX $PLATFORM_CXXFLAGS $COMMON_FLAGS -x c++ - -o test.o 2>/dev/null <<EOF
#include <cstdint>
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 <daniel@linux.ibm.com>
+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 <fontaine.fabrice@gmail.com>
+---
+ 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 <cstdint>
+ #include <nmmintrin.h>
+@@ -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 <sys/auxv.h>
+ #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<void (*CRC32)(uint64_t*, uint8_t const**)>
+ 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<uint32_t>(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<Slow_CRC32>;
+ #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 <stdint.h>
+-#include <stdlib.h>
+-#include <strings.h>
+-#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 <rogealve@br.ibm.com>, 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 <altivec.h>
++
++#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 <anton@au.ibm.com>, 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 <ppc-asm.h>
+-#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 <daniel@linux.ibm.com>
-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 <fontaine.fabrice@gmail.com>
----
- 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 <sys/auxv.h>
- #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<void (*CRC32)(uint64_t*, uint8_t const**)>
- 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<Slow_CRC32>;
- #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 <altivec.h>
-+
-+#define POWER8_INTRINSICS
- #define CRC_TABLE
--#include <stdint.h>
--#include <stdlib.h>
--#include <strings.h>
--#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 <anton@au.ibm.com>, 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 <ppc-asm.h>
--#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 <fontaine.fabrice@gmail.com>
-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 <fontaine.fabrice@gmail.com>
-[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 <mgerstner@suse.de>
-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 <mgerstner@suse.de>
-Signed-off-by: Debora Velarde Babb <debora@linux.ibm.com>
-Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
----
- 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 <jsnitsel@redhat.com>
-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 <jsnitsel@redhat.com>
-Signed-off-by: Debora Velarde Babb <debora@linux.ibm.com>
-[Retrieved from:
-https://sourceforge.net/p/trousers/trousers/ci/c9b8c4434f3b11bae4f7e72c3aec5b4f3459eecc]
-Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>
----
- 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 <prabhu.sundararaj@nxp.com>
-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 <prabhu.sundararaj@nxp.com>
-
-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 <mylene.josserand@free-electrons.com>
----
- 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
index 562aa79fbb..562aa79fbb 100644
--- 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
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
index 5f19a26d14..5f19a26d14 100644
--- 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
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
index de086fb665..de086fb665 100644
--- 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
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
index 7802fd96c9..7802fd96c9 100644
--- 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
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
--- /dev/null
+++ b/support/testing/tests/core/cpeid-br2-external/Config.in
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 <pkg>_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
+ # <pkg>_CPE_ID_{VENDOR,NAME,VERSION,VERSION_MINOR,PREFIX},
+ # make sure we get the computed <pkg>_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
+ # <pkg>_CPE_ID_{VENDOR,NAME,VERSION,VERSION_MINOR,PREFIX} and
+ # HOST_<pkg>_CPE_ID_{VENDOR,NAME,VERSION,VERSION_MINOR,PREFIX}
+ # separately, with different values. Make sure we get the
+ # right <pkg>_CPE_ID and HOST_<pkg>_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:*:*:*:*:*:*")