From 90a55c38544e49e9194d6931f8251775a47fcabb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Franti=C5=A1ek=20Zatloukal?= Date: Thu, 13 Jul 2023 14:48:06 +0200 Subject: [PATCH 01/76] Python 3.12 Fixes --- Partial-migration-from-imp-to-importlib.patch | 36 +++++++++++++++++++ qt6-qtwebengine.spec | 32 ++++++++++++++++- 2 files changed, 67 insertions(+), 1 deletion(-) create mode 100644 Partial-migration-from-imp-to-importlib.patch diff --git a/Partial-migration-from-imp-to-importlib.patch b/Partial-migration-from-imp-to-importlib.patch new file mode 100644 index 0000000..46cc88f --- /dev/null +++ b/Partial-migration-from-imp-to-importlib.patch @@ -0,0 +1,36 @@ +From cbf5f7ad619a967bd54482e1d1df36d80b28145a Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Franti=C5=A1ek=20Zatloukal?= +Date: Thu, 13 Jul 2023 12:18:00 +0200 +Subject: [PATCH] Partial migration from imp to importlib + +--- + .../resources/protobufs/binary_proto_generator.py | 6 ++++-- + 1 file changed, 4 insertions(+), 2 deletions(-) + +diff --git a/src/3rdparty/chromium/components/resources/protobufs/binary_proto_generator.py b/src/3rdparty/chromium/components/resources/protobufs/binary_proto_generator.py +index 2a1802d..ba67251 100755 +--- a/src/3rdparty/chromium/components/resources/protobufs/binary_proto_generator.py ++++ b/src/3rdparty/chromium/components/resources/protobufs/binary_proto_generator.py +@@ -9,7 +9,7 @@ + """ + from __future__ import print_function + import abc +-import imp ++from importlib import util + import optparse + import os + import re +@@ -68,7 +68,9 @@ class GoogleProtobufModuleImporter: + raise ImportError(fullname) + + filepath = self._fullname_to_filepath(fullname) +- return imp.load_source(fullname, filepath) ++ spec = util.spec_from_file_location(fullname, filepath) ++ loaded = util.module_from_spec(spec) ++ return spec.loader.exec_module(loaded) + + class BinaryProtoGenerator: + +-- +2.41.0 + diff --git a/qt6-qtwebengine.spec b/qt6-qtwebengine.spec index 852bab4..7ab3223 100644 --- a/qt6-qtwebengine.spec +++ b/qt6-qtwebengine.spec @@ -13,6 +13,11 @@ %global use_system_libicu 1 %endif +%if 0%{?fedora} && 0%{?fedora} >= 39 +# Bundled python-six is too old to work with Python 3.12+ +%global use_system_py_six 1 +%endif + %global use_system_re2 1 # NEON support on ARM (detected at runtime) - disable this if you are hitting @@ -44,7 +49,7 @@ Summary: Qt6 - QtWebEngine components Name: qt6-qtwebengine Version: 6.5.1 -Release: 2%{?dist} +Release: 3%{?dist} # See LICENSE.GPL LICENSE.LGPL LGPL_EXCEPTION.txt, for details # See also http://qt-project.org/doc/qt-5.0/qtdoc/licensing.html @@ -77,6 +82,11 @@ Patch4: qtwebengine-ffmpeg-first_dts.patch # use the 'class' keyword Patch50: qtwebengine-fix-build.patch +# FTBFS Fix with Python 3.12 later on +# Parts of the project are fine with zombie-imp, this one not, however +# (It's messing with sys.path a lot) +Patch60: Partial-migration-from-imp-to-importlib.patch + ## Upstream patches: # https://webrtc-review.googlesource.com/c/src/+/285464 Patch100: qtwebengine-webrtc-dlopen-h264.patch @@ -185,6 +195,10 @@ BuildRequires: pkgconfig(libavcodec) BuildRequires: pkgconfig(libavformat) BuildRequires: pkgconfig(libavutil) +%if 0%{?fedora} && 0%{?fedora} >= 39 +BuildRequires: python3-zombie-imp +%endif + # extra (non-upstream) functions needed, see # src/3rdparty/chromium/third_party/sqlite/README.chromium for details #BuildRequires: pkgconfig(sqlite3) @@ -339,6 +353,9 @@ popd %patch4 -p1 -b .qtwebengine-ffmpeg-first_dts %patch50 -p1 -b .fix-build.patch +%if 0%{?fedora} && 0%{?fedora} >= 39 +%patch60 -p1 -b .fix-py-imp.patch +%endif ## upstream patches %patch100 -p1 -b .webrtc-dlopen-h264 @@ -351,6 +368,16 @@ popd sed -i -e '/toolprefix = /d' -e 's/\${toolprefix}//g' \ src/3rdparty/chromium/build/toolchain/linux/BUILD.gn +%if 0%{?use_system_py_six} +rm src/3rdparty/chromium/third_party/six/src/six.py +rm src/3rdparty/chromium/third_party/catapult/third_party/six/six.py +rm src/3rdparty/chromium/third_party/wpt_tools/wpt/tools/third_party/six/six.py + +ln -s /usr/lib/python%{python3_version}/site-packages/six.py src/3rdparty/chromium/third_party/six/src/six.py +ln -s /usr/lib/python%{python3_version}/site-packages/six.py src/3rdparty/chromium/third_party/catapult/third_party/six/six.py +ln -s /usr/lib/python%{python3_version}/site-packages/six.py src/3rdparty/chromium/third_party/wpt_tools/wpt/tools/third_party/six/six.py +%endif + %if 0%{?use_system_re2} # http://bugzilla.redhat.com/1337585 # can't just delete, but we'll overwrite with system headers to be on the safe side @@ -608,6 +635,9 @@ done %changelog +* Thu Jul 13 2023 František Zatloukal - 6.5.1-3 +- Python 3.12 Fixes + * Tue Jul 11 2023 František Zatloukal - 6.5.1-2 - Rebuilt for ICU 73.2 From 57204b2dba83882746ac94bc0f2b4b59099c1c70 Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Fri, 21 Jul 2023 16:15:36 +0000 Subject: [PATCH 02/76] Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild Signed-off-by: Fedora Release Engineering --- qt6-qtwebengine.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/qt6-qtwebengine.spec b/qt6-qtwebengine.spec index 7ab3223..476fb37 100644 --- a/qt6-qtwebengine.spec +++ b/qt6-qtwebengine.spec @@ -49,7 +49,7 @@ Summary: Qt6 - QtWebEngine components Name: qt6-qtwebengine Version: 6.5.1 -Release: 3%{?dist} +Release: 4%{?dist} # See LICENSE.GPL LICENSE.LGPL LGPL_EXCEPTION.txt, for details # See also http://qt-project.org/doc/qt-5.0/qtdoc/licensing.html @@ -635,6 +635,9 @@ done %changelog +* Fri Jul 21 2023 Fedora Release Engineering - 6.5.1-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild + * Thu Jul 13 2023 František Zatloukal - 6.5.1-3 - Python 3.12 Fixes From f3ed16734144eae1cfa060c154e2756710bf3a21 Mon Sep 17 00:00:00 2001 From: Jan Grulich Date: Mon, 24 Jul 2023 08:36:41 +0200 Subject: [PATCH 03/76] 6.5.2 --- .gitignore | 1 + qt6-qtwebengine.spec | 7 +++++-- sources | 3 +-- 3 files changed, 7 insertions(+), 4 deletions(-) diff --git a/.gitignore b/.gitignore index 2ef8b1d..11af953 100644 --- a/.gitignore +++ b/.gitignore @@ -3,3 +3,4 @@ /qtwebengine-everywhere-src-6.4.3-clean.tar.xz /qtwebengine-everywhere-src-6.5.0-clean.tar.xz /qtwebengine-everywhere-src-6.5.1-clean.tar.xz +/qtwebengine-everywhere-src-6.5.2-clean.tar.xz diff --git a/qt6-qtwebengine.spec b/qt6-qtwebengine.spec index 476fb37..8e8d782 100644 --- a/qt6-qtwebengine.spec +++ b/qt6-qtwebengine.spec @@ -48,8 +48,8 @@ Summary: Qt6 - QtWebEngine components Name: qt6-qtwebengine -Version: 6.5.1 -Release: 4%{?dist} +Version: 6.5.2 +Release: 1%{?dist} # See LICENSE.GPL LICENSE.LGPL LGPL_EXCEPTION.txt, for details # See also http://qt-project.org/doc/qt-5.0/qtdoc/licensing.html @@ -635,6 +635,9 @@ done %changelog +* Mon Jul 24 2023 Jan Grulich - 6.5.2-1 +- 6.5.2 + * Fri Jul 21 2023 Fedora Release Engineering - 6.5.1-4 - Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild diff --git a/sources b/sources index e56e8f6..6f19baa 100644 --- a/sources +++ b/sources @@ -1,2 +1 @@ -SHA512 (pulseaudio-12.2-headers.tar.gz) = a5a9bcbb16030b3bc83cc0cc8f5e7f90e0723d3e83258a5c77eacb32eaa267118a73fa7814fbcc99a24e4907916a2b371ebb6dedc4f45541c3acf6c834fd35be -SHA512 (qtwebengine-everywhere-src-6.5.1-clean.tar.xz) = 58425d510e2623c7241673b300a9a30106ee237f24da4278d2b3c6c0f2167a7bf385e8045cd9b23dbacc29be6b97a06692f8eb0c43bc3bd3dec67328e24cb2cb +SHA512 (qtwebengine-everywhere-src-6.5.2-clean.tar.xz) = c85af09cf7353e7242197d9feb43d757e4c8a7a1f0733db3e7819b1b97d877f7dc0b650c39b4822a052264f03ad756e912e8680d3823ed3abcae898a3350ff12 From 687b7bf390b7c6b66c7eee2b02a1cf4096ceab1d Mon Sep 17 00:00:00 2001 From: Jan Grulich Date: Mon, 24 Jul 2023 08:44:29 +0200 Subject: [PATCH 04/76] Re-add pulseaudio sources --- sources | 1 + 1 file changed, 1 insertion(+) diff --git a/sources b/sources index 6f19baa..466917c 100644 --- a/sources +++ b/sources @@ -1 +1,2 @@ SHA512 (qtwebengine-everywhere-src-6.5.2-clean.tar.xz) = c85af09cf7353e7242197d9feb43d757e4c8a7a1f0733db3e7819b1b97d877f7dc0b650c39b4822a052264f03ad756e912e8680d3823ed3abcae898a3350ff12 +SHA512 (pulseaudio-12.2-headers.tar.gz) = a5a9bcbb16030b3bc83cc0cc8f5e7f90e0723d3e83258a5c77eacb32eaa267118a73fa7814fbcc99a24e4907916a2b371ebb6dedc4f45541c3acf6c834fd35be From c10d3781b6e78fecaea4ffc1fa8324d89ffded74 Mon Sep 17 00:00:00 2001 From: Jan Grulich Date: Mon, 24 Jul 2023 14:04:17 +0200 Subject: [PATCH 05/76] Rebase WebRTC patch for h264 dlopening --- qtwebengine-webrtc-dlopen-h264.patch | 78 ++++++++++++++-------------- 1 file changed, 39 insertions(+), 39 deletions(-) diff --git a/qtwebengine-webrtc-dlopen-h264.patch b/qtwebengine-webrtc-dlopen-h264.patch index 3575b28..07cecaa 100644 --- a/qtwebengine-webrtc-dlopen-h264.patch +++ b/qtwebengine-webrtc-dlopen-h264.patch @@ -4,16 +4,16 @@ index 640d6626d..3d1f62190 100644 +++ b/src/3rdparty/chromium/third_party/webrtc/modules/video_coding/BUILD.gn @@ -7,6 +7,7 @@ # be found in the AUTHORS file in the root of the source tree. - + import("//third_party/libaom/options.gni") +import("//tools/generate_stubs/rules.gni") import("../../webrtc.gni") - + rtc_library("encoded_frame") { @@ -499,6 +500,21 @@ rtc_library("video_coding_utility") { ] } - + +if (rtc_use_h264 && rtc_dlopen_openh264) { + # When OpenH264 is not directly linked, use stubs to allow for dlopening of + # the binary. @@ -34,7 +34,7 @@ index 640d6626d..3d1f62190 100644 sources = [ @@ -542,10 +558,15 @@ rtc_library("webrtc_h264") { ] - + if (rtc_use_h264) { - deps += [ - "//third_party/ffmpeg", @@ -59,15 +59,15 @@ index fc3fd195f..48eedcefd 100644 @@ -36,10 +36,22 @@ #include "third_party/openh264/src/codec/api/svc/codec_def.h" #include "third_party/openh264/src/codec/api/svc/codec_ver.h" - + +#if defined(WEBRTC_DLOPEN_OPENH264) +#include "modules/video_coding/codecs/h264/openh264_stubs.h" +#endif // defined(WEBRTC_DLOPEN_OPENH264) + namespace webrtc { - + namespace { - + +#if defined(WEBRTC_DLOPEN_OPENH264) +using modules_video_coding_codecs_h264::InitializeStubs; +using modules_video_coding_codecs_h264::kModuleOpenh264; @@ -77,10 +77,10 @@ index fc3fd195f..48eedcefd 100644 +#endif + const bool kOpenH264EncoderDetailedLogging = false; - + // QP scaling thresholds. @@ -167,6 +179,15 @@ H264EncoderImpl::~H264EncoderImpl() { - + int32_t H264EncoderImpl::InitEncode(const VideoCodec* inst, const VideoEncoder::Settings& settings) { +#if defined(WEBRTC_DLOPEN_OPENH264) @@ -95,35 +95,6 @@ index fc3fd195f..48eedcefd 100644 ReportInit(); if (!inst || inst->codecType != kVideoCodecH264) { ReportError(); -diff --git a/src/3rdparty/chromium/third_party/webrtc/webrtc.gni b/src/3rdparty/chromium/third_party/webrtc/webrtc.gni -index df42a48d4..cb5de2fda 100644 ---- a/src/3rdparty/chromium/third_party/webrtc/webrtc.gni -+++ b/src/3rdparty/chromium/third_party/webrtc/webrtc.gni -@@ -181,6 +181,10 @@ declare_args() { - rtc_use_h264 = - proprietary_codecs && !is_android && !is_ios && !(is_win && !is_clang) - -+ # Allow to use OpenH264 on systems where OpenH264 cannot be installed by -+ # default due to licensing, but can be installed later from other sources. -+ rtc_dlopen_openh264 = false -+ - # Enable this flag to make webrtc::Mutex be implemented by absl::Mutex. - rtc_use_absl_mutex = false - -diff --git a/src/core/CMakeLists.txt b/src/core/CMakeLists.txt -index e1e551a3e..1a5f839a0 100644 ---- a/src/core/CMakeLists.txt -+++ b/src/core/CMakeLists.txt -@@ -401,6 +401,9 @@ foreach(arch ${archs}) - use_bluez=false - use_vaapi=false - use_udev=true -+ media_use_openh264=false -+ rtc_use_h264=true -+ rtc_dlopen_openh264=true - enable_session_service=false - is_cfi=false - use_ozone=true diff --git a/src/3rdparty/chromium/third_party/webrtc/modules/video_coding/codecs/h264/openh264.sigs b/src/3rdparty/chromium/third_party/webrtc/modules/video_coding/codecs/h264/openh264.sigs new file mode 100644 index 000000000..4924f8e9a @@ -146,7 +117,7 @@ index 000000000..4924f8e9a +void WelsGetCodecVersionEx(OpenH264Version *pVersion); diff --git a/src/3rdparty/chromium/third_party/webrtc/modules/video_coding/codecs/h264/openh264_stub_header.fragment b/src/3rdparty/chromium/third_party/webrtc/modules/video_coding/codecs/h264/openh264_stub_header.fragment new file mode 100644 -index 000000000..9bc0a7cbe +index 000000000..e8a3727a0 --- /dev/null +++ b/src/3rdparty/chromium/third_party/webrtc/modules/video_coding/codecs/h264/openh264_stub_header.fragment @@ -0,0 +1,11 @@ @@ -161,3 +132,32 @@ index 000000000..9bc0a7cbe +#include "third_party/openh264/src/codec/api/svc/codec_ver.h" + +} +diff --git a/src/3rdparty/chromium/third_party/webrtc/webrtc.gni b/src/3rdparty/chromium/third_party/webrtc/webrtc.gni +index 8ab7b27f0..2023102a8 100644 +--- a/src/3rdparty/chromium/third_party/webrtc/webrtc.gni ++++ b/src/3rdparty/chromium/third_party/webrtc/webrtc.gni +@@ -181,6 +181,10 @@ declare_args() { + rtc_use_h264 = + proprietary_codecs && !is_android && !is_ios && !(is_win && !is_clang) + ++ # Allow to use OpenH264 on systems where OpenH264 cannot be installed by ++ # default due to licensing, but can be installed later from other sources. ++ rtc_dlopen_openh264 = false ++ + # Enable this flag to make webrtc::Mutex be implemented by absl::Mutex. + rtc_use_absl_mutex = false + +diff --git a/src/core/CMakeLists.txt b/src/core/CMakeLists.txt +index 1d183573f..d08fd1bcb 100644 +--- a/src/core/CMakeLists.txt ++++ b/src/core/CMakeLists.txt +@@ -413,6 +413,9 @@ foreach(arch ${archs}) + use_udev=true + is_cfi=false + use_ozone=true ++ media_use_openh264=false ++ rtc_use_h264=true ++ rtc_dlopen_openh264=true + ozone_auto_platforms=false + ozone_platform_headless=false + ozone_platform_external=true From dc4cfcf32339de7427b16ffe2bb65ce615f26832 Mon Sep 17 00:00:00 2001 From: Yaakov Selkowitz Date: Tue, 5 Sep 2023 08:06:55 -0400 Subject: [PATCH 06/76] Separate qtpdf subpackages While built as part of qtwebengine, qtpdf is usable separately (as the examples show), does not have extensive dependencies, and its Python bindings are part of PyQt6 rather than PyQt6-WebEngine. --- qt6-qtwebengine.spec | 110 +++++++++++++++++++++++++++++-------------- 1 file changed, 74 insertions(+), 36 deletions(-) diff --git a/qt6-qtwebengine.spec b/qt6-qtwebengine.spec index 8e8d782..61ecae4 100644 --- a/qt6-qtwebengine.spec +++ b/qt6-qtwebengine.spec @@ -49,7 +49,7 @@ Summary: Qt6 - QtWebEngine components Name: qt6-qtwebengine Version: 6.5.2 -Release: 1%{?dist} +Release: 2%{?dist} # See LICENSE.GPL LICENSE.LGPL LGPL_EXCEPTION.txt, for details # See also http://qt-project.org/doc/qt-5.0/qtdoc/licensing.html @@ -203,6 +203,9 @@ BuildRequires: python3-zombie-imp # src/3rdparty/chromium/third_party/sqlite/README.chromium for details #BuildRequires: pkgconfig(sqlite3) +# Split subpackage +Requires: qt6-qtpdf%{?_isa} = %{version}-%{release} + ## Various bundled libraries that Chromium does not support unbundling :-( ## Only the parts actually built are listed. ## Query for candidates: @@ -322,6 +325,7 @@ Summary: Development files for %{name} Requires: %{name}%{?_isa} = %{version}-%{release} Requires: qt6-qtbase-devel%{?_isa} Requires: qt6-qtdeclarative-devel%{?_isa} +Requires: qt6-qtpdf-devel%{?_isa} = %{version}-%{release} # not arch'd for now, see if can get away with avoiding multilib'ing -- rex Requires: %{name}-devtools = %{version}-%{release} %description devel @@ -339,6 +343,25 @@ Summary: Example files for %{name} %description examples %{summary}. +%package -n qt6-qtpdf +Summary: Qt6 - QtPdf components +%description -n qt6-qtpdf +%{summary}. + +%package -n qt6-qtpdf-devel +Summary: Development files for qt6-qtpdf +Requires: qt6-qtpdf%{?_isa} = %{version}-%{release} +Requires: qt6-qtbase-devel%{?_isa} +Requires: qt6-qtdeclarative-devel%{?_isa} +%description -n qt6-qtpdf-devel +%{summary}. + +%package -n qt6-qtpdf-examples +Summary: Example files for qt6-qtpdf + +%description -n qt6-qtpdf-examples +%{summary}. + %prep %setup -q -n %{qt_module}-everywhere-src-%{version}%{?prerelease:-%{prerelease}} -a20 @@ -482,9 +505,6 @@ done %if 0%{?docs} %license src/webengine/doc/src/qtwebengine-3rdparty.qdoc %endif -%{_qt6_libdir}/libQt6Pdf.so.* -%{_qt6_libdir}/libQt6PdfQuick.so.* -%{_qt6_libdir}/libQt6PdfWidgets.so.* %{_qt6_libdir}/libQt6WebEngineCore.so.* %{_qt6_libdir}/libQt6WebEngineQuick.so.* %{_qt6_libdir}/libQt6WebEngineQuickDelegatesQml.so.* @@ -492,12 +512,9 @@ done %{_qt6_libdir}/qt6/libexec/gn %{_qt6_libdir}/qt6/libexec/qwebengine_convert_dict %{_qt6_libdir}/qt6/libexec/QtWebEngineProcess -%dir %{_qt6_libdir}/qt6/qml/QtQuick/Pdf -%{_qt6_libdir}/qt6/qml/QtQuick/Pdf/* %dir %{_qt6_libdir}/qt6/qml/QtWebEngine %{_qt6_libdir}/qt6/qml/QtWebEngine/* %{_qt6_plugindir}/designer/libqwebengineview.so -%{_qt6_plugindir}/imageformats/libqpdf.so %dir %{_qt6_datadir}/resources/ %{_qt6_datadir}/resources/qtwebengine_resources.pak %{_qt6_datadir}/resources/qtwebengine_resources_100p.pak @@ -563,46 +580,27 @@ done %files devel %{_rpmmacrodir}/macros.qt6-qtwebengine -%dir %{_qt6_headerdir}/QtPdf -%{_qt6_headerdir}/QtPdf/* -%dir %{_qt6_headerdir}/QtPdfQuick -%{_qt6_headerdir}/QtPdfQuick/* -%dir %{_qt6_headerdir}/QtPdfWidgets -%{_qt6_headerdir}/QtPdfWidgets/* %dir %{_qt6_headerdir}/QtWebEngineCore %{_qt6_headerdir}/QtWebEngineCore/* %dir %{_qt6_headerdir}/QtWebEngineQuick %{_qt6_headerdir}/QtWebEngineQuick/* %dir %{_qt6_headerdir}/QtWebEngineWidgets %{_qt6_headerdir}/QtWebEngineWidgets/* -%{_qt6_libdir}/qt6/metatypes/*.json -%{_qt6_libdir}/qt6/modules/*.json -%{_qt6_libdir}/libQt6Pdf.so -%{_qt6_libdir}/libQt6PdfQuick.so -%{_qt6_libdir}/libQt6PdfWidgets.so +%{_qt6_libdir}/qt6/metatypes/qt6webengine*.json +%{_qt6_libdir}/qt6/modules/WebEngine*.json %{_qt6_libdir}/libQt6WebEngineCore.so %{_qt6_libdir}/libQt6WebEngineQuick.so %{_qt6_libdir}/libQt6WebEngineQuickDelegatesQml.so %{_qt6_libdir}/libQt6WebEngineWidgets.so %{_qt6_libdir}/libQt6WebEngineCore.prl -%{_qt6_libdir}/libQt6Pdf.prl -%{_qt6_libdir}/libQt6PdfQuick.prl -%{_qt6_libdir}/libQt6PdfWidgets.prl %{_qt6_libdir}/libQt6WebEngineQuick.prl %{_qt6_libdir}/libQt6WebEngineQuickDelegatesQml.prl %{_qt6_libdir}/libQt6WebEngineWidgets.prl %{_qt6_libdir}/cmake/Qt6/*.cmake -%{_qt6_libdir}/cmake/Qt6BuildInternals/StandaloneTests -%{_qt6_libdir}/cmake/Qt6Gui/*.cmake -%{_qt6_libdir}/cmake/Qt6Qml/QmlPlugins/*.cmake +%{_qt6_libdir}/cmake/Qt6BuildInternals/StandaloneTests/QtWebEngine* +%{_qt6_libdir}/cmake/Qt6Qml/QmlPlugins/Qt6qtwebengine*.cmake %dir %{_qt6_libdir}/cmake/Qt6Designer -%{_qt6_libdir}/cmake/Qt6Designer/*.cmake -%dir %{_qt6_libdir}/cmake/Qt6Pdf -%{_qt6_libdir}/cmake/Qt6Pdf/*.cmake -%dir %{_qt6_libdir}/cmake/Qt6PdfQuick -%{_qt6_libdir}/cmake/Qt6PdfQuick/*.cmake -%dir %{_qt6_libdir}/cmake/Qt6PdfWidgets -%{_qt6_libdir}/cmake/Qt6PdfWidgets/*.cmake +%{_qt6_libdir}/cmake/Qt6Designer/Qt6QWebEngine*.cmake %dir %{_qt6_libdir}/cmake/Qt6WebEngineQuick %{_qt6_libdir}/cmake/Qt6WebEngineQuick/*.cmake %dir %{_qt6_libdir}/cmake/Qt6WebEngineWidgets @@ -613,28 +611,68 @@ done %{_qt6_libdir}/cmake/Qt6WebEngineCoreTools/*.cmake %dir %{_qt6_libdir}/cmake/Qt6WebEngineQuickDelegatesQml %{_qt6_libdir}/cmake/Qt6WebEngineQuickDelegatesQml/*.cmake -%{_qt6_libdir}/pkgconfig/Qt6Pdf.pc -%{_qt6_libdir}/pkgconfig/Qt6PdfQuick.pc -%{_qt6_libdir}/pkgconfig/Qt6PdfWidgets.pc %{_qt6_libdir}/pkgconfig/Qt6WebEngineCore.pc %{_qt6_libdir}/pkgconfig/Qt6WebEngineQuick.pc %{_qt6_libdir}/pkgconfig/Qt6WebEngineQuickDelegatesQml.pc %{_qt6_libdir}/pkgconfig/Qt6WebEngineWidgets.pc -%{_qt6_archdatadir}/mkspecs/modules/*.pri +%{_qt6_archdatadir}/mkspecs/modules/qt_lib_webengine*.pri %files devtools %{_qt6_datadir}/resources/qtwebengine_devtools_resources.pak %files examples -%{_qt6_examplesdir}/ +%{_qt6_examplesdir}/webengine* %if 0%{?docs} %files doc %{_qt6_docdir}/* %endif +%files -n qt6-qtpdf +%license LICENSE.* +%{_qt6_libdir}/libQt6Pdf.so.* +%{_qt6_libdir}/libQt6PdfQuick.so.* +%{_qt6_libdir}/libQt6PdfWidgets.so.* +%dir %{_qt6_libdir}/qt6/qml/QtQuick/Pdf +%{_qt6_libdir}/qt6/qml/QtQuick/Pdf/* +%{_qt6_plugindir}/imageformats/libqpdf.so + +%files -n qt6-qtpdf-devel +%dir %{_qt6_headerdir}/QtPdf +%{_qt6_headerdir}/QtPdf/* +%dir %{_qt6_headerdir}/QtPdfQuick +%{_qt6_headerdir}/QtPdfQuick/* +%dir %{_qt6_headerdir}/QtPdfWidgets +%{_qt6_headerdir}/QtPdfWidgets/* +%{_qt6_libdir}/qt6/metatypes/qt6pdf*.json +%{_qt6_libdir}/qt6/modules/Pdf*.json +%{_qt6_libdir}/libQt6Pdf.so +%{_qt6_libdir}/libQt6PdfQuick.so +%{_qt6_libdir}/libQt6PdfWidgets.so +%{_qt6_libdir}/libQt6Pdf.prl +%{_qt6_libdir}/libQt6PdfQuick.prl +%{_qt6_libdir}/libQt6PdfWidgets.prl +%{_qt6_libdir}/cmake/Qt6Gui/Qt6QPdf*.cmake +%dir %{_qt6_libdir}/cmake/Qt6Pdf +%{_qt6_libdir}/cmake/Qt6Pdf/*.cmake +%dir %{_qt6_libdir}/cmake/Qt6PdfQuick +%{_qt6_libdir}/cmake/Qt6PdfQuick/*.cmake +%dir %{_qt6_libdir}/cmake/Qt6PdfWidgets +%{_qt6_libdir}/cmake/Qt6PdfWidgets/*.cmake +%{_qt6_libdir}/cmake/Qt6Qml/QmlPlugins/Qt6Pdf*.cmake +%{_qt6_libdir}/pkgconfig/Qt6Pdf.pc +%{_qt6_libdir}/pkgconfig/Qt6PdfQuick.pc +%{_qt6_libdir}/pkgconfig/Qt6PdfWidgets.pc +%{_qt6_archdatadir}/mkspecs/modules/qt_lib_pdf*.pri + +%files -n qt6-qtpdf-examples +%{_qt6_examplesdir}/pdf* + %changelog +* Tue Sep 05 2023 Yaakov Selkowitz - 6.5.2-2 +- Separate qtpdf subpackages + * Mon Jul 24 2023 Jan Grulich - 6.5.2-1 - 6.5.2 From 88e6fec40b4a6ac279cf9df07ebf0253ba47dd6e Mon Sep 17 00:00:00 2001 From: Justin Zobel Date: Sun, 1 Oct 2023 15:57:37 +1030 Subject: [PATCH 07/76] Update to 6.5.3 --- .gitignore | 1 + qt6-qtwebengine.spec | 7 +++++-- sources | 1 + 3 files changed, 7 insertions(+), 2 deletions(-) diff --git a/.gitignore b/.gitignore index 11af953..b1920c3 100644 --- a/.gitignore +++ b/.gitignore @@ -4,3 +4,4 @@ /qtwebengine-everywhere-src-6.5.0-clean.tar.xz /qtwebengine-everywhere-src-6.5.1-clean.tar.xz /qtwebengine-everywhere-src-6.5.2-clean.tar.xz +/qtwebengine-everywhere-src-6.5.3.tar.xz diff --git a/qt6-qtwebengine.spec b/qt6-qtwebengine.spec index 61ecae4..97dad31 100644 --- a/qt6-qtwebengine.spec +++ b/qt6-qtwebengine.spec @@ -48,8 +48,8 @@ Summary: Qt6 - QtWebEngine components Name: qt6-qtwebengine -Version: 6.5.2 -Release: 2%{?dist} +Version: 6.5.3 +Release: 1%{?dist} # See LICENSE.GPL LICENSE.LGPL LGPL_EXCEPTION.txt, for details # See also http://qt-project.org/doc/qt-5.0/qtdoc/licensing.html @@ -670,6 +670,9 @@ done %changelog +* Sun Oct 01 2023 Justin Zobel - 6.5.3-1 +- new version + * Tue Sep 05 2023 Yaakov Selkowitz - 6.5.2-2 - Separate qtpdf subpackages diff --git a/sources b/sources index 466917c..97cc351 100644 --- a/sources +++ b/sources @@ -1,2 +1,3 @@ SHA512 (qtwebengine-everywhere-src-6.5.2-clean.tar.xz) = c85af09cf7353e7242197d9feb43d757e4c8a7a1f0733db3e7819b1b97d877f7dc0b650c39b4822a052264f03ad756e912e8680d3823ed3abcae898a3350ff12 SHA512 (pulseaudio-12.2-headers.tar.gz) = a5a9bcbb16030b3bc83cc0cc8f5e7f90e0723d3e83258a5c77eacb32eaa267118a73fa7814fbcc99a24e4907916a2b371ebb6dedc4f45541c3acf6c834fd35be +SHA512 (qtwebengine-everywhere-src-6.5.3.tar.xz) = 8634eac4931fb27a0ded417de901955774d001dc74dc5779b216519b6b79f0a30f0774224abb14dffef779ca9df1cf384f822f9d5190e4d80b9f6ab0d012bc49 From 8d4e2229e4788712535cbd3116a5683be4a6141a Mon Sep 17 00:00:00 2001 From: Justin Zobel Date: Mon, 2 Oct 2023 15:42:48 +1030 Subject: [PATCH 08/76] Clean QtWebEngine Source --- .gitignore | 1 + sources | 1 + 2 files changed, 2 insertions(+) diff --git a/.gitignore b/.gitignore index b1920c3..f274000 100644 --- a/.gitignore +++ b/.gitignore @@ -5,3 +5,4 @@ /qtwebengine-everywhere-src-6.5.1-clean.tar.xz /qtwebengine-everywhere-src-6.5.2-clean.tar.xz /qtwebengine-everywhere-src-6.5.3.tar.xz +/qtwebengine-everywhere-src-6.5.3-clean.tar.xz diff --git a/sources b/sources index 97cc351..db26cec 100644 --- a/sources +++ b/sources @@ -1,3 +1,4 @@ SHA512 (qtwebengine-everywhere-src-6.5.2-clean.tar.xz) = c85af09cf7353e7242197d9feb43d757e4c8a7a1f0733db3e7819b1b97d877f7dc0b650c39b4822a052264f03ad756e912e8680d3823ed3abcae898a3350ff12 SHA512 (pulseaudio-12.2-headers.tar.gz) = a5a9bcbb16030b3bc83cc0cc8f5e7f90e0723d3e83258a5c77eacb32eaa267118a73fa7814fbcc99a24e4907916a2b371ebb6dedc4f45541c3acf6c834fd35be SHA512 (qtwebengine-everywhere-src-6.5.3.tar.xz) = 8634eac4931fb27a0ded417de901955774d001dc74dc5779b216519b6b79f0a30f0774224abb14dffef779ca9df1cf384f822f9d5190e4d80b9f6ab0d012bc49 +SHA512 (qtwebengine-everywhere-src-6.5.3-clean.tar.xz) = 3fbfcb144b05011676f27a46a07b546ee69423969367913d011efe76a7deab53a914e4217630203a052d775c9d93dc3bf528b31b8ac80dfbbc07d995328d835a From 6c9da4fc708e1d3a950a42852fa3ce10c2a78823 Mon Sep 17 00:00:00 2001 From: Jan Grulich Date: Fri, 13 Oct 2023 14:58:16 +0200 Subject: [PATCH 09/76] 6.6.0 --- qt6-qtwebengine.spec | 6 ++- qtwebengine-blink-dlopen-h264.patch | 56 ++++++++++++---------------- qtwebengine-ffmpeg-first_dts.patch | 38 +++++++++---------- qtwebengine-fix-build.patch | 43 +++++---------------- qtwebengine-webrtc-dlopen-h264.patch | 42 ++++++++++----------- sources | 4 +- 6 files changed, 77 insertions(+), 112 deletions(-) diff --git a/qt6-qtwebengine.spec b/qt6-qtwebengine.spec index 97dad31..94cddf7 100644 --- a/qt6-qtwebengine.spec +++ b/qt6-qtwebengine.spec @@ -48,7 +48,7 @@ Summary: Qt6 - QtWebEngine components Name: qt6-qtwebengine -Version: 6.5.3 +Version: 6.6.0 Release: 1%{?dist} # See LICENSE.GPL LICENSE.LGPL LGPL_EXCEPTION.txt, for details @@ -619,6 +619,7 @@ done %files devtools %{_qt6_datadir}/resources/qtwebengine_devtools_resources.pak +%{_qt6_datadir}/resources/v8_context_snapshot.bin %files examples %{_qt6_examplesdir}/webengine* @@ -670,6 +671,9 @@ done %changelog +* Wed Oct 11 2023 Jan Grulich - 6.6.0-1 +- 6.6.0 + * Sun Oct 01 2023 Justin Zobel - 6.5.3-1 - new version diff --git a/qtwebengine-blink-dlopen-h264.patch b/qtwebengine-blink-dlopen-h264.patch index 5cf7cc4..6dae942 100644 --- a/qtwebengine-blink-dlopen-h264.patch +++ b/qtwebengine-blink-dlopen-h264.patch @@ -1,11 +1,5 @@ -From 828d03c76b3b108019b1cf66062b0e9679012207 Mon Sep 17 00:00:00 2001 -From: Jan Grulich -Date: Mon, 23 Jan 2023 11:04:00 +0100 -Subject: [Blink] mediarecorder: allow to dlopen openh264 - - diff --git a/src/3rdparty/chromium/third_party/blink/renderer/modules/mediarecorder/BUILD.gn b/src/3rdparty/chromium/third_party/blink/renderer/modules/mediarecorder/BUILD.gn -index cf6de49bef6b2..61e8879d6b97f 100644 +index cf6de49be..61e8879d6 100644 --- a/src/3rdparty/chromium/third_party/blink/renderer/modules/mediarecorder/BUILD.gn +++ b/src/3rdparty/chromium/third_party/blink/renderer/modules/mediarecorder/BUILD.gn @@ -5,12 +5,23 @@ @@ -13,12 +7,12 @@ index cf6de49bef6b2..61e8879d6b97f 100644 import("//third_party/blink/renderer/modules/modules.gni") import("//third_party/webrtc/webrtc.gni") +import("//tools/generate_stubs/rules.gni") - + buildflag_header("buildflags") { header = "buildflags.h" flags = [ "RTC_USE_H264=$rtc_use_h264" ] } - + +if (rtc_use_h264 && rtc_dlopen_openh264) { + # When OpenH264 is not directly linked, use stubs to allow for dlopening of + # the binary. @@ -35,7 +29,7 @@ index cf6de49bef6b2..61e8879d6b97f 100644 @@ -56,6 +67,11 @@ blink_modules_sources("mediarecorder") { "h264_encoder.h", ] - + - deps += [ "//third_party/openh264:encoder" ] + if (rtc_dlopen_openh264) { + defines = [ "BLINK_DLOPEN_OPENH264" ] @@ -46,11 +40,11 @@ index cf6de49bef6b2..61e8879d6b97f 100644 } } diff --git a/src/3rdparty/chromium/third_party/blink/renderer/modules/mediarecorder/h264_encoder.cc b/src/3rdparty/chromium/third_party/blink/renderer/modules/mediarecorder/h264_encoder.cc -index c9aee6f3a..0f4ef593d 100644 +index 4253f3280..56ea1574c 100644 --- a/src/3rdparty/chromium/third_party/blink/renderer/modules/mediarecorder/h264_encoder.cc +++ b/src/3rdparty/chromium/third_party/blink/renderer/modules/mediarecorder/h264_encoder.cc -@@ -24,10 +24,22 @@ - #include "third_party/openh264/src/codec/api/svc/codec_def.h" +@@ -23,9 +23,21 @@ + #include "third_party/openh264/src/codec/api/wels/codec_def.h" #include "ui/gfx/geometry/size.h" +#if defined(BLINK_DLOPEN_OPENH264) @@ -58,7 +52,6 @@ index c9aee6f3a..0f4ef593d 100644 +#endif // defined(BLINK_DLOPEN_OPENH264) + namespace blink { - namespace { +#if defined(BLINK_DLOPEN_OPENH264) @@ -72,9 +65,9 @@ index c9aee6f3a..0f4ef593d 100644 absl::optional ToOpenH264Profile( media::VideoCodecProfile profile) { static const HashMap -@@ -98,6 +110,13 @@ H264Encoder::H264Encoder( +@@ -86,6 +98,13 @@ H264Encoder::H264Encoder( + : Encoder(on_encoded_video_cb, bits_per_second), codec_profile_(codec_profile) { - DCHECK(encoding_thread_); DCHECK_EQ(codec_profile_.codec_id, VideoTrackRecorder::CodecId::kH264); + +#if defined(BLINK_DLOPEN_OPENH264) @@ -85,11 +78,11 @@ index c9aee6f3a..0f4ef593d 100644 +#endif } - H264Encoder::~H264Encoder() { -@@ -180,6 +199,14 @@ void H264Encoder::EncodeOnEncodingTaskRunner( - bool H264Encoder::ConfigureEncoderOnEncodingTaskRunner(const gfx::Size& size) { - TRACE_EVENT0("media", "H264Encoder::ConfigureEncoderOnEncodingTaskRunner"); - DCHECK(encoding_task_runner_->RunsTasksInCurrentSequence()); + // Needs to be defined here to combat a Windows linking issue. +@@ -167,6 +186,14 @@ void H264Encoder::EncodeFrame(scoped_refptr frame, + + bool H264Encoder::ConfigureEncoder(const gfx::Size& size) { + TRACE_EVENT0("media", "H264Encoder::ConfigureEncoder"); + +#if defined(BLINK_DLOPEN_OPENH264) + if (!openh264_dlopened_) { @@ -102,22 +95,21 @@ index c9aee6f3a..0f4ef593d 100644 if (WelsCreateSVCEncoder(&temp_encoder) != 0) { NOTREACHED() << "Failed to create OpenH264 encoder"; diff --git a/src/3rdparty/chromium/third_party/blink/renderer/modules/mediarecorder/h264_encoder.h b/src/3rdparty/chromium/third_party/blink/renderer/modules/mediarecorder/h264_encoder.h -index e7aa2c338..79e902f67 100644 +index 1d9d7bc5a..a5b7eefe3 100644 --- a/src/3rdparty/chromium/third_party/blink/renderer/modules/mediarecorder/h264_encoder.h +++ b/src/3rdparty/chromium/third_party/blink/renderer/modules/mediarecorder/h264_encoder.h -@@ -62,6 +62,8 @@ class MODULES_EXPORT H264Encoder final : public VideoTrackRecorder::Encoder { - // The |VideoFrame::timestamp()| of the first received frame. Only used on - // VideoTrackRecorder::Encoder::encoding_thread_. +@@ -58,6 +58,8 @@ class MODULES_EXPORT H264Encoder final : public VideoTrackRecorder::Encoder { + // The |VideoFrame::timestamp()| of the first received frame. base::TimeTicks first_frame_timestamp_; + base::WeakPtrFactory weak_factory_{this}; + + bool openh264_dlopened_ = false; }; } // namespace blink - diff --git a/src/3rdparty/chromium/third_party/blink/renderer/modules/mediarecorder/openh264.sigs b/src/3rdparty/chromium/third_party/blink/renderer/modules/mediarecorder/openh264.sigs new file mode 100644 -index 0000000000000..4924f8e9a17de +index 000000000..4924f8e9a --- /dev/null +++ b/src/3rdparty/chromium/third_party/blink/renderer/modules/mediarecorder/openh264.sigs @@ -0,0 +1,14 @@ @@ -137,7 +129,7 @@ index 0000000000000..4924f8e9a17de +void WelsGetCodecVersionEx(OpenH264Version *pVersion); diff --git a/src/3rdparty/chromium/third_party/blink/renderer/modules/mediarecorder/openh264_stub_header.fragment b/src/3rdparty/chromium/third_party/blink/renderer/modules/mediarecorder/openh264_stub_header.fragment new file mode 100644 -index 0000000000000..9bc0a7cbee038 +index 000000000..e8a3727a0 --- /dev/null +++ b/src/3rdparty/chromium/third_party/blink/renderer/modules/mediarecorder/openh264_stub_header.fragment @@ -0,0 +1,11 @@ @@ -146,9 +138,9 @@ index 0000000000000..9bc0a7cbee038 + +extern "C" { + -+#include "third_party/openh264/src/codec/api/svc/codec_api.h" -+#include "third_party/openh264/src/codec/api/svc/codec_app_def.h" -+#include "third_party/openh264/src/codec/api/svc/codec_def.h" -+#include "third_party/openh264/src/codec/api/svc/codec_ver.h" ++#include "third_party/openh264/src/codec/api/wels/codec_api.h" ++#include "third_party/openh264/src/codec/api/wels/codec_app_def.h" ++#include "third_party/openh264/src/codec/api/wels/codec_def.h" ++#include "third_party/openh264/src/codec/api/wels/codec_ver.h" + +} diff --git a/qtwebengine-ffmpeg-first_dts.patch b/qtwebengine-ffmpeg-first_dts.patch index 0d8a3e8..e2c7118 100644 --- a/qtwebengine-ffmpeg-first_dts.patch +++ b/qtwebengine-ffmpeg-first_dts.patch @@ -1,8 +1,8 @@ diff --git a/configure.cmake b/configure.cmake -index b20ab3b65..c41f66301 100644 +index 8f30b34..bbd934e 100644 --- a/configure.cmake +++ b/configure.cmake -@@ -203,25 +203,6 @@ int main(void){ +@@ -209,25 +209,6 @@ int main(void){ }" ) @@ -28,7 +28,7 @@ index b20ab3b65..c41f66301 100644 #### Features qt_feature("qtwebengine-build" PUBLIC -@@ -542,11 +523,6 @@ add_check_for_support( +@@ -563,11 +544,6 @@ add_check_for_support( CONDITION NOT LINUX OR DBUS_FOUND MESSAGE "Build requires dbus." ) @@ -41,10 +41,10 @@ index b20ab3b65..c41f66301 100644 set(xcbSupport X11 LIBDRM XCOMPOSITE XCURSOR XRANDR XI XPROTO XSHMFENCE XTST) foreach(xs ${xcbSupport}) diff --git a/src/3rdparty/chromium/AUTHORS b/src/3rdparty/chromium/AUTHORS -index 8d638184b..80e4a9b35 100644 +index ff6abe8..0fd7937 100644 --- a/src/3rdparty/chromium/AUTHORS +++ b/src/3rdparty/chromium/AUTHORS -@@ -94,6 +94,7 @@ Andra Paraschiv +@@ -99,6 +99,7 @@ Andra Paraschiv Andras Tokodi Andreas Nazlidis Andreas Papacharalampous @@ -53,10 +53,10 @@ index 8d638184b..80e4a9b35 100644 Andrei Parvu Andrei Parvu diff --git a/src/3rdparty/chromium/media/filters/ffmpeg_demuxer.cc b/src/3rdparty/chromium/media/filters/ffmpeg_demuxer.cc -index 7b709d70d..d97b6b4d0 100644 +index f41464b..3aa3918 100644 --- a/src/3rdparty/chromium/media/filters/ffmpeg_demuxer.cc +++ b/src/3rdparty/chromium/media/filters/ffmpeg_demuxer.cc -@@ -58,7 +58,7 @@ namespace media { +@@ -59,7 +59,7 @@ namespace media { namespace { @@ -65,7 +65,7 @@ index 7b709d70d..d97b6b4d0 100644 void SetAVStreamDiscard(AVStream* stream, AVDiscard discard) { DCHECK(stream); -@@ -101,7 +101,7 @@ static base::TimeDelta FramesToTimeDelta(int frames, double sample_rate) { +@@ -97,7 +97,7 @@ static base::TimeDelta FramesToTimeDelta(int frames, double sample_rate) { sample_rate); } @@ -74,7 +74,7 @@ index 7b709d70d..d97b6b4d0 100644 // The default start time is zero. base::TimeDelta start_time; -@@ -111,12 +111,12 @@ static base::TimeDelta ExtractStartTime(AVStream* stream) { +@@ -107,12 +107,12 @@ static base::TimeDelta ExtractStartTime(AVStream* stream) { // Next try to use the first DTS value, for codecs where we know PTS == DTS // (excludes all H26x codecs). The start time must be returned in PTS. @@ -89,7 +89,7 @@ index 7b709d70d..d97b6b4d0 100644 if (first_pts < start_time) start_time = first_pts; } -@@ -285,6 +285,7 @@ FFmpegDemuxerStream::FFmpegDemuxerStream( +@@ -270,6 +270,7 @@ FFmpegDemuxerStream::FFmpegDemuxerStream( fixup_negative_timestamps_(false), fixup_chained_ogg_(false), num_discarded_packet_warnings_(0), @@ -97,7 +97,7 @@ index 7b709d70d..d97b6b4d0 100644 last_packet_pos_(AV_NOPTS_VALUE), last_packet_dts_(AV_NOPTS_VALUE) { DCHECK(demuxer_); -@@ -351,6 +352,11 @@ void FFmpegDemuxerStream::EnqueuePacket(ScopedAVPacket packet) { +@@ -336,6 +337,11 @@ void FFmpegDemuxerStream::EnqueuePacket(ScopedAVPacket packet) { int64_t packet_dts = packet->dts == AV_NOPTS_VALUE ? packet->pts : packet->dts; @@ -109,7 +109,7 @@ index 7b709d70d..d97b6b4d0 100644 // Chained ogg files have non-monotonically increasing position and time stamp // values, which prevents us from using them to determine if a packet should // be dropped. Since chained ogg is only allowed on single track audio only -@@ -698,6 +704,7 @@ void FFmpegDemuxerStream::FlushBuffers(bool preserve_packet_position) { +@@ -683,6 +689,7 @@ void FFmpegDemuxerStream::FlushBuffers(bool preserve_packet_position) { ResetBitstreamConverter(); if (!preserve_packet_position) { @@ -117,7 +117,7 @@ index 7b709d70d..d97b6b4d0 100644 last_packet_pos_ = AV_NOPTS_VALUE; last_packet_dts_ = AV_NOPTS_VALUE; } -@@ -1449,7 +1456,8 @@ void FFmpegDemuxer::OnFindStreamInfoDone(int result) { +@@ -1452,7 +1459,8 @@ void FFmpegDemuxer::OnFindStreamInfoDone(int result) { max_duration = std::max(max_duration, streams_[i]->duration()); @@ -127,7 +127,7 @@ index 7b709d70d..d97b6b4d0 100644 // Note: This value is used for seeking, so we must take the true value and // not the one possibly clamped to zero below. -@@ -1606,7 +1614,7 @@ FFmpegDemuxerStream* FFmpegDemuxer::FindStreamWithLowestStartTimestamp( +@@ -1609,7 +1617,7 @@ FFmpegDemuxerStream* FFmpegDemuxer::FindStreamWithLowestStartTimestamp( for (const auto& stream : streams_) { if (!stream || stream->IsEnabled() != enabled) continue; @@ -136,7 +136,7 @@ index 7b709d70d..d97b6b4d0 100644 continue; if (!lowest_start_time_stream || stream->start_time() < lowest_start_time_stream->start_time()) { -@@ -1627,7 +1635,7 @@ FFmpegDemuxerStream* FFmpegDemuxer::FindPreferredStreamForSeeking( +@@ -1630,7 +1638,7 @@ FFmpegDemuxerStream* FFmpegDemuxer::FindPreferredStreamForSeeking( if (stream->type() != DemuxerStream::VIDEO) continue; @@ -146,10 +146,10 @@ index 7b709d70d..d97b6b4d0 100644 if (!stream->IsEnabled()) diff --git a/src/3rdparty/chromium/media/filters/ffmpeg_demuxer.h b/src/3rdparty/chromium/media/filters/ffmpeg_demuxer.h -index 45ab0f348..6b093318f 100644 +index 086a795..ba9c665 100644 --- a/src/3rdparty/chromium/media/filters/ffmpeg_demuxer.h +++ b/src/3rdparty/chromium/media/filters/ffmpeg_demuxer.h -@@ -152,6 +152,8 @@ class MEDIA_EXPORT FFmpegDemuxerStream : public DemuxerStream { +@@ -145,6 +145,8 @@ class MEDIA_EXPORT FFmpegDemuxerStream : public DemuxerStream { base::TimeDelta start_time() const { return start_time_; } void set_start_time(base::TimeDelta time) { start_time_ = time; } @@ -158,11 +158,11 @@ index 45ab0f348..6b093318f 100644 private: friend class FFmpegDemuxerTest; -@@ -209,6 +211,7 @@ class MEDIA_EXPORT FFmpegDemuxerStream : public DemuxerStream { +@@ -202,6 +204,7 @@ class MEDIA_EXPORT FFmpegDemuxerStream : public DemuxerStream { bool fixup_chained_ogg_; int num_discarded_packet_warnings_; + int64_t first_dts_; int64_t last_packet_pos_; int64_t last_packet_dts_; - }; + // Requested buffer count. The actual returned buffer count could be less diff --git a/qtwebengine-fix-build.patch b/qtwebengine-fix-build.patch index 52d9d39..be6a7bc 100644 --- a/qtwebengine-fix-build.patch +++ b/qtwebengine-fix-build.patch @@ -37,7 +37,7 @@ index c62a00ee0..af54520b7 100644 OneWriterSeqLock::OneWriterSeqLock() : sequence_(0) {} diff --git a/src/3rdparty/chromium/extensions/common/constants.h b/src/3rdparty/chromium/extensions/common/constants.h -index b1a0d56ea..019bc0743 100644 +index 27adc05bf..a4839e859 100644 --- a/src/3rdparty/chromium/extensions/common/constants.h +++ b/src/3rdparty/chromium/extensions/common/constants.h @@ -12,6 +12,8 @@ @@ -63,7 +63,7 @@ index 574aca1ff..fca32671c 100644 #include "gpu/config/gpu_feature_info.h" #include "gpu/gpu_export.h" diff --git a/src/3rdparty/chromium/net/base/parse_number.h b/src/3rdparty/chromium/net/base/parse_number.h -index ea360d1c9..dca84fd02 100644 +index 091649590..a49ed9382 100644 --- a/src/3rdparty/chromium/net/base/parse_number.h +++ b/src/3rdparty/chromium/net/base/parse_number.h @@ -10,6 +10,8 @@ @@ -99,31 +99,6 @@ index 7c0dcdecb..97054d476 100644 }; /// The non-thread-safe version of thread traits. Using this class as the -diff --git a/src/3rdparty/chromium/third_party/blink/renderer/platform/graphics/paint/effect_paint_property_node.h b/src/3rdparty/chromium/third_party/blink/renderer/platform/graphics/paint/effect_paint_property_node.h -index 745b7b089..1e5dec4f5 100644 ---- a/src/3rdparty/chromium/third_party/blink/renderer/platform/graphics/paint/effect_paint_property_node.h -+++ b/src/3rdparty/chromium/third_party/blink/renderer/platform/graphics/paint/effect_paint_property_node.h -@@ -291,7 +291,7 @@ class PLATFORM_EXPORT EffectPaintPropertyNode - return state_.compositor_element_id; - } - -- const blink::DocumentTransitionSharedElementId& -+ const cc::DocumentTransitionSharedElementId& - DocumentTransitionSharedElementId() const { - return state_.document_transition_shared_element_id; - } -diff --git a/src/3rdparty/chromium/third_party/breakpad/breakpad/src/client/linux/handler/minidump_descriptor.h b/src/3rdparty/chromium/third_party/breakpad/breakpad/src/client/linux/handler/minidump_descriptor.h -index c7e4f2b37..e491a1f68 100644 ---- a/src/3rdparty/chromium/third_party/breakpad/breakpad/src/client/linux/handler/minidump_descriptor.h -+++ b/src/3rdparty/chromium/third_party/breakpad/breakpad/src/client/linux/handler/minidump_descriptor.h -@@ -33,6 +33,7 @@ - #include - #include - -+#include - #include - - #include "client/linux/handler/microdump_extra_info.h" diff --git a/src/3rdparty/chromium/third_party/dawn/src/dawn/native/CacheKey.h b/src/3rdparty/chromium/third_party/dawn/src/dawn/native/CacheKey.h index 6cec3b6b8..541bba5b1 100644 --- a/src/3rdparty/chromium/third_party/dawn/src/dawn/native/CacheKey.h @@ -173,7 +148,7 @@ index 8e0306b6a..0fc0cc2b0 100644 #include diff --git a/src/3rdparty/chromium/third_party/dawn/src/tint/reader/wgsl/token.h b/src/3rdparty/chromium/third_party/dawn/src/tint/reader/wgsl/token.h -index 4cf9aad1b..3fa13e216 100644 +index 222f28ef8..335c4c396 100644 --- a/src/3rdparty/chromium/third_party/dawn/src/tint/reader/wgsl/token.h +++ b/src/3rdparty/chromium/third_party/dawn/src/tint/reader/wgsl/token.h @@ -15,6 +15,7 @@ @@ -209,11 +184,11 @@ index a3099e15d..2e6f0eea7 100644 #include diff --git a/src/3rdparty/chromium/third_party/perfetto/src/trace_processor/importers/proto/proto_importer_module.h b/src/3rdparty/chromium/third_party/perfetto/src/trace_processor/importers/proto/proto_importer_module.h -index d047de1bf..d7fc91a59 100644 +index 3ff56aa0b..a36388bb8 100644 --- a/src/3rdparty/chromium/third_party/perfetto/src/trace_processor/importers/proto/proto_importer_module.h +++ b/src/3rdparty/chromium/third_party/perfetto/src/trace_processor/importers/proto/proto_importer_module.h @@ -21,6 +21,8 @@ - #include "perfetto/trace_processor/status.h" + #include "perfetto/ext/base/optional.h" #include "src/trace_processor/importers/common/trace_parser.h" +#include @@ -249,10 +224,10 @@ index 9e073d4e1..da96f327c 100644 #ifdef __cplusplus extern "C" { #endif -diff --git a/src/3rdparty/chromium/third_party/webrtc/modules/desktop_capture/linux/wayland/xdg_session_details.h b/src/3rdparty/chromium/third_party/webrtc/modules/desktop_capture/linux/wayland/xdg_session_details.h -index b70ac4aa5..7ba555564 100644 ---- a/src/3rdparty/chromium/third_party/webrtc/modules/desktop_capture/linux/wayland/xdg_session_details.h -+++ b/src/3rdparty/chromium/third_party/webrtc/modules/desktop_capture/linux/wayland/xdg_session_details.h +diff --git a/src/3rdparty/chromium/third_party/webrtc/modules/portal/xdg_session_details.h b/src/3rdparty/chromium/third_party/webrtc/modules/portal/xdg_session_details.h +index ab52508c2..050229a2f 100644 +--- a/src/3rdparty/chromium/third_party/webrtc/modules/portal/xdg_session_details.h ++++ b/src/3rdparty/chromium/third_party/webrtc/modules/portal/xdg_session_details.h @@ -13,6 +13,7 @@ #include diff --git a/qtwebengine-webrtc-dlopen-h264.patch b/qtwebengine-webrtc-dlopen-h264.patch index 07cecaa..048e191 100644 --- a/qtwebengine-webrtc-dlopen-h264.patch +++ b/qtwebengine-webrtc-dlopen-h264.patch @@ -1,5 +1,5 @@ diff --git a/src/3rdparty/chromium/third_party/webrtc/modules/video_coding/BUILD.gn b/src/3rdparty/chromium/third_party/webrtc/modules/video_coding/BUILD.gn -index 640d6626d..3d1f62190 100644 +index 8e3529974..ca7370599 100644 --- a/src/3rdparty/chromium/third_party/webrtc/modules/video_coding/BUILD.gn +++ b/src/3rdparty/chromium/third_party/webrtc/modules/video_coding/BUILD.gn @@ -7,6 +7,7 @@ @@ -10,7 +10,7 @@ index 640d6626d..3d1f62190 100644 import("../../webrtc.gni") rtc_library("encoded_frame") { -@@ -499,6 +500,21 @@ rtc_library("video_coding_utility") { +@@ -461,6 +462,17 @@ rtc_library("video_coding_utility") { ] } @@ -19,12 +19,8 @@ index 640d6626d..3d1f62190 100644 + # the binary. + generate_stubs("openh264_stubs") { + configs = [ "../../:common_config" ] -+ deps = [ "../../rtc_base" ] + extra_header = "codecs/h264/openh264_stub_header.fragment" -+ logging_function = "RTC_LOG(LS_VERBOSE)" -+ logging_include = "rtc_base/logging.h" + output_name = "codecs/h264/openh264_stubs" -+ path_from_source = "modules/video_coding/codecs/h264" + sigs = [ "codecs/h264/openh264.sigs" ] + } +} @@ -32,7 +28,7 @@ index 640d6626d..3d1f62190 100644 rtc_library("webrtc_h264") { visibility = [ "*" ] sources = [ -@@ -542,10 +558,15 @@ rtc_library("webrtc_h264") { +@@ -507,10 +519,15 @@ rtc_library("webrtc_h264") { ] if (rtc_use_h264) { @@ -53,12 +49,12 @@ index 640d6626d..3d1f62190 100644 deps += [ "../../media:rtc_media_base" ] } diff --git a/src/3rdparty/chromium/third_party/webrtc/modules/video_coding/codecs/h264/h264_encoder_impl.cc b/src/3rdparty/chromium/third_party/webrtc/modules/video_coding/codecs/h264/h264_encoder_impl.cc -index fc3fd195f..48eedcefd 100644 +index b6023ac50..228486870 100644 --- a/src/3rdparty/chromium/third_party/webrtc/modules/video_coding/codecs/h264/h264_encoder_impl.cc +++ b/src/3rdparty/chromium/third_party/webrtc/modules/video_coding/codecs/h264/h264_encoder_impl.cc -@@ -36,10 +36,22 @@ - #include "third_party/openh264/src/codec/api/svc/codec_def.h" - #include "third_party/openh264/src/codec/api/svc/codec_ver.h" +@@ -39,10 +39,22 @@ + #include "third_party/openh264/src/codec/api/wels/codec_def.h" + #include "third_party/openh264/src/codec/api/wels/codec_ver.h" +#if defined(WEBRTC_DLOPEN_OPENH264) +#include "modules/video_coding/codecs/h264/openh264_stubs.h" @@ -69,9 +65,9 @@ index fc3fd195f..48eedcefd 100644 namespace { +#if defined(WEBRTC_DLOPEN_OPENH264) -+using modules_video_coding_codecs_h264::InitializeStubs; -+using modules_video_coding_codecs_h264::kModuleOpenh264; -+using modules_video_coding_codecs_h264::StubPathMap; ++using third_party_webrtc_modules_video_coding_codecs_h264::InitializeStubs; ++using third_party_webrtc_modules_video_coding_codecs_h264::kModuleOpenh264; ++using third_party_webrtc_modules_video_coding_codecs_h264::StubPathMap; + +static constexpr char kOpenH264Lib[] = "libopenh264.so.7"; +#endif @@ -79,7 +75,7 @@ index fc3fd195f..48eedcefd 100644 const bool kOpenH264EncoderDetailedLogging = false; // QP scaling thresholds. -@@ -167,6 +179,15 @@ H264EncoderImpl::~H264EncoderImpl() { +@@ -198,6 +210,15 @@ H264EncoderImpl::~H264EncoderImpl() { int32_t H264EncoderImpl::InitEncode(const VideoCodec* inst, const VideoEncoder::Settings& settings) { @@ -117,7 +113,7 @@ index 000000000..4924f8e9a +void WelsGetCodecVersionEx(OpenH264Version *pVersion); diff --git a/src/3rdparty/chromium/third_party/webrtc/modules/video_coding/codecs/h264/openh264_stub_header.fragment b/src/3rdparty/chromium/third_party/webrtc/modules/video_coding/codecs/h264/openh264_stub_header.fragment new file mode 100644 -index 000000000..e8a3727a0 +index 000000000..9bc0a7cbe --- /dev/null +++ b/src/3rdparty/chromium/third_party/webrtc/modules/video_coding/codecs/h264/openh264_stub_header.fragment @@ -0,0 +1,11 @@ @@ -126,14 +122,14 @@ index 000000000..e8a3727a0 + +extern "C" { + -+#include "third_party/openh264/src/codec/api/svc/codec_api.h" -+#include "third_party/openh264/src/codec/api/svc/codec_app_def.h" -+#include "third_party/openh264/src/codec/api/svc/codec_def.h" -+#include "third_party/openh264/src/codec/api/svc/codec_ver.h" ++#include "third_party/openh264/src/codec/api/wels/codec_api.h" ++#include "third_party/openh264/src/codec/api/wels/codec_app_def.h" ++#include "third_party/openh264/src/codec/api/wels/codec_def.h" ++#include "third_party/openh264/src/codec/api/wels/codec_ver.h" + +} diff --git a/src/3rdparty/chromium/third_party/webrtc/webrtc.gni b/src/3rdparty/chromium/third_party/webrtc/webrtc.gni -index 8ab7b27f0..2023102a8 100644 +index 8dfcc9d24..0a27fd2d6 100644 --- a/src/3rdparty/chromium/third_party/webrtc/webrtc.gni +++ b/src/3rdparty/chromium/third_party/webrtc/webrtc.gni @@ -181,6 +181,10 @@ declare_args() { @@ -148,10 +144,10 @@ index 8ab7b27f0..2023102a8 100644 rtc_use_absl_mutex = false diff --git a/src/core/CMakeLists.txt b/src/core/CMakeLists.txt -index 1d183573f..d08fd1bcb 100644 +index 4153ce180..afaa9dcb1 100644 --- a/src/core/CMakeLists.txt +++ b/src/core/CMakeLists.txt -@@ -413,6 +413,9 @@ foreach(arch ${archs}) +@@ -418,6 +418,9 @@ foreach(arch ${archs}) use_udev=true is_cfi=false use_ozone=true diff --git a/sources b/sources index db26cec..7a0740e 100644 --- a/sources +++ b/sources @@ -1,4 +1,2 @@ -SHA512 (qtwebengine-everywhere-src-6.5.2-clean.tar.xz) = c85af09cf7353e7242197d9feb43d757e4c8a7a1f0733db3e7819b1b97d877f7dc0b650c39b4822a052264f03ad756e912e8680d3823ed3abcae898a3350ff12 SHA512 (pulseaudio-12.2-headers.tar.gz) = a5a9bcbb16030b3bc83cc0cc8f5e7f90e0723d3e83258a5c77eacb32eaa267118a73fa7814fbcc99a24e4907916a2b371ebb6dedc4f45541c3acf6c834fd35be -SHA512 (qtwebengine-everywhere-src-6.5.3.tar.xz) = 8634eac4931fb27a0ded417de901955774d001dc74dc5779b216519b6b79f0a30f0774224abb14dffef779ca9df1cf384f822f9d5190e4d80b9f6ab0d012bc49 -SHA512 (qtwebengine-everywhere-src-6.5.3-clean.tar.xz) = 3fbfcb144b05011676f27a46a07b546ee69423969367913d011efe76a7deab53a914e4217630203a052d775c9d93dc3bf528b31b8ac80dfbbc07d995328d835a +SHA512 (qtwebengine-everywhere-src-6.6.0-clean.tar.xz) = 4f578066dbd28c7688c4e6801bee11156791cf6df39b0b084017e351aa0520fb473c3a519c411662ea8d7a94e362b160b785462f6a16ea5df69773c6a722030f From d5c3f17e705b79f7676bec02f6801550d5e73a08 Mon Sep 17 00:00:00 2001 From: Jan Grulich Date: Fri, 27 Oct 2023 13:42:05 +0200 Subject: [PATCH 10/76] Move v8_context_snapshot file to correct subpackage --- qt6-qtwebengine.spec | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/qt6-qtwebengine.spec b/qt6-qtwebengine.spec index 94cddf7..458c5ad 100644 --- a/qt6-qtwebengine.spec +++ b/qt6-qtwebengine.spec @@ -49,7 +49,7 @@ Summary: Qt6 - QtWebEngine components Name: qt6-qtwebengine Version: 6.6.0 -Release: 1%{?dist} +Release: 2%{?dist} # See LICENSE.GPL LICENSE.LGPL LGPL_EXCEPTION.txt, for details # See also http://qt-project.org/doc/qt-5.0/qtdoc/licensing.html @@ -516,6 +516,7 @@ done %{_qt6_libdir}/qt6/qml/QtWebEngine/* %{_qt6_plugindir}/designer/libqwebengineview.so %dir %{_qt6_datadir}/resources/ +%{_qt6_datadir}/resources/v8_context_snapshot.bin %{_qt6_datadir}/resources/qtwebengine_resources.pak %{_qt6_datadir}/resources/qtwebengine_resources_100p.pak %{_qt6_datadir}/resources/qtwebengine_resources_200p.pak @@ -619,7 +620,6 @@ done %files devtools %{_qt6_datadir}/resources/qtwebengine_devtools_resources.pak -%{_qt6_datadir}/resources/v8_context_snapshot.bin %files examples %{_qt6_examplesdir}/webengine* @@ -671,6 +671,9 @@ done %changelog +* Fri Oct 27 2023 Jan Grulich - 6.6.0-2 +- Move v8_context_snapshot file to correct subpackage + * Wed Oct 11 2023 Jan Grulich - 6.6.0-1 - 6.6.0 From e7a3b4daeb007ca3a281e62eb03ea9e1fb61fea9 Mon Sep 17 00:00:00 2001 From: Jan Grulich Date: Tue, 28 Nov 2023 14:19:41 +0100 Subject: [PATCH 11/76] 6.6.1 --- .gitignore | 1 + qt6-qtwebengine.spec | 7 +++++-- sources | 2 +- 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/.gitignore b/.gitignore index f274000..0ed8d04 100644 --- a/.gitignore +++ b/.gitignore @@ -6,3 +6,4 @@ /qtwebengine-everywhere-src-6.5.2-clean.tar.xz /qtwebengine-everywhere-src-6.5.3.tar.xz /qtwebengine-everywhere-src-6.5.3-clean.tar.xz +/qtwebengine-everywhere-src-6.6.1-clean.tar.xz diff --git a/qt6-qtwebengine.spec b/qt6-qtwebengine.spec index 458c5ad..458d721 100644 --- a/qt6-qtwebengine.spec +++ b/qt6-qtwebengine.spec @@ -48,8 +48,8 @@ Summary: Qt6 - QtWebEngine components Name: qt6-qtwebengine -Version: 6.6.0 -Release: 2%{?dist} +Version: 6.6.1 +Release: 1%{?dist} # See LICENSE.GPL LICENSE.LGPL LGPL_EXCEPTION.txt, for details # See also http://qt-project.org/doc/qt-5.0/qtdoc/licensing.html @@ -671,6 +671,9 @@ done %changelog +* Tue Nov 28 2023 Jan Grulich - 6.6.1-1 +- 6.6.1 + * Fri Oct 27 2023 Jan Grulich - 6.6.0-2 - Move v8_context_snapshot file to correct subpackage diff --git a/sources b/sources index 7a0740e..98f8b71 100644 --- a/sources +++ b/sources @@ -1,2 +1,2 @@ +SHA512 (qtwebengine-everywhere-src-6.6.1-clean.tar.xz) = bfcf6244de9c78cdaa37ec8b521201c19dce65ee63b56a4225037e18a139d826752fb9d0850a87061ab63cd00e83afc7a89344c444b3ff87894202e2df127085 SHA512 (pulseaudio-12.2-headers.tar.gz) = a5a9bcbb16030b3bc83cc0cc8f5e7f90e0723d3e83258a5c77eacb32eaa267118a73fa7814fbcc99a24e4907916a2b371ebb6dedc4f45541c3acf6c834fd35be -SHA512 (qtwebengine-everywhere-src-6.6.0-clean.tar.xz) = 4f578066dbd28c7688c4e6801bee11156791cf6df39b0b084017e351aa0520fb473c3a519c411662ea8d7a94e362b160b785462f6a16ea5df69773c6a722030f From 40941ebdcb6643b36e0fe14d4b9ab28bbc8889d5 Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Mon, 22 Jan 2024 10:07:46 +0000 Subject: [PATCH 12/76] Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild --- qt6-qtwebengine.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/qt6-qtwebengine.spec b/qt6-qtwebengine.spec index 458d721..9e79704 100644 --- a/qt6-qtwebengine.spec +++ b/qt6-qtwebengine.spec @@ -49,7 +49,7 @@ Summary: Qt6 - QtWebEngine components Name: qt6-qtwebengine Version: 6.6.1 -Release: 1%{?dist} +Release: 2%{?dist} # See LICENSE.GPL LICENSE.LGPL LGPL_EXCEPTION.txt, for details # See also http://qt-project.org/doc/qt-5.0/qtdoc/licensing.html @@ -671,6 +671,9 @@ done %changelog +* Mon Jan 22 2024 Fedora Release Engineering - 6.6.1-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild + * Tue Nov 28 2023 Jan Grulich - 6.6.1-1 - 6.6.1 From bcb85e498b86d2d58b195df05199b2f1b2df8dca Mon Sep 17 00:00:00 2001 From: Jan Grulich Date: Fri, 16 Feb 2024 07:05:23 +0100 Subject: [PATCH 13/76] 6.6.2 --- .gitignore | 1 + Partial-migration-from-imp-to-importlib.patch | 36 ------------------- qt6-qtwebengine.spec | 15 +++----- sources | 2 +- 4 files changed, 7 insertions(+), 47 deletions(-) delete mode 100644 Partial-migration-from-imp-to-importlib.patch diff --git a/.gitignore b/.gitignore index 0ed8d04..8b756da 100644 --- a/.gitignore +++ b/.gitignore @@ -7,3 +7,4 @@ /qtwebengine-everywhere-src-6.5.3.tar.xz /qtwebengine-everywhere-src-6.5.3-clean.tar.xz /qtwebengine-everywhere-src-6.6.1-clean.tar.xz +/qtwebengine-everywhere-src-6.6.2-clean.tar.xz diff --git a/Partial-migration-from-imp-to-importlib.patch b/Partial-migration-from-imp-to-importlib.patch deleted file mode 100644 index 46cc88f..0000000 --- a/Partial-migration-from-imp-to-importlib.patch +++ /dev/null @@ -1,36 +0,0 @@ -From cbf5f7ad619a967bd54482e1d1df36d80b28145a Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Franti=C5=A1ek=20Zatloukal?= -Date: Thu, 13 Jul 2023 12:18:00 +0200 -Subject: [PATCH] Partial migration from imp to importlib - ---- - .../resources/protobufs/binary_proto_generator.py | 6 ++++-- - 1 file changed, 4 insertions(+), 2 deletions(-) - -diff --git a/src/3rdparty/chromium/components/resources/protobufs/binary_proto_generator.py b/src/3rdparty/chromium/components/resources/protobufs/binary_proto_generator.py -index 2a1802d..ba67251 100755 ---- a/src/3rdparty/chromium/components/resources/protobufs/binary_proto_generator.py -+++ b/src/3rdparty/chromium/components/resources/protobufs/binary_proto_generator.py -@@ -9,7 +9,7 @@ - """ - from __future__ import print_function - import abc --import imp -+from importlib import util - import optparse - import os - import re -@@ -68,7 +68,9 @@ class GoogleProtobufModuleImporter: - raise ImportError(fullname) - - filepath = self._fullname_to_filepath(fullname) -- return imp.load_source(fullname, filepath) -+ spec = util.spec_from_file_location(fullname, filepath) -+ loaded = util.module_from_spec(spec) -+ return spec.loader.exec_module(loaded) - - class BinaryProtoGenerator: - --- -2.41.0 - diff --git a/qt6-qtwebengine.spec b/qt6-qtwebengine.spec index 9e79704..7816f12 100644 --- a/qt6-qtwebengine.spec +++ b/qt6-qtwebengine.spec @@ -48,8 +48,8 @@ Summary: Qt6 - QtWebEngine components Name: qt6-qtwebengine -Version: 6.6.1 -Release: 2%{?dist} +Version: 6.6.2 +Release: 1%{?dist} # See LICENSE.GPL LICENSE.LGPL LGPL_EXCEPTION.txt, for details # See also http://qt-project.org/doc/qt-5.0/qtdoc/licensing.html @@ -82,11 +82,6 @@ Patch4: qtwebengine-ffmpeg-first_dts.patch # use the 'class' keyword Patch50: qtwebengine-fix-build.patch -# FTBFS Fix with Python 3.12 later on -# Parts of the project are fine with zombie-imp, this one not, however -# (It's messing with sys.path a lot) -Patch60: Partial-migration-from-imp-to-importlib.patch - ## Upstream patches: # https://webrtc-review.googlesource.com/c/src/+/285464 Patch100: qtwebengine-webrtc-dlopen-h264.patch @@ -376,9 +371,6 @@ popd %patch4 -p1 -b .qtwebengine-ffmpeg-first_dts %patch50 -p1 -b .fix-build.patch -%if 0%{?fedora} && 0%{?fedora} >= 39 -%patch60 -p1 -b .fix-py-imp.patch -%endif ## upstream patches %patch100 -p1 -b .webrtc-dlopen-h264 @@ -671,6 +663,9 @@ done %changelog +* Thu Feb 15 2024 Jan Grulich - 6.6.2-1 +- 6.6.2 + * Mon Jan 22 2024 Fedora Release Engineering - 6.6.1-2 - Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild diff --git a/sources b/sources index 98f8b71..3e56ce3 100644 --- a/sources +++ b/sources @@ -1,2 +1,2 @@ -SHA512 (qtwebengine-everywhere-src-6.6.1-clean.tar.xz) = bfcf6244de9c78cdaa37ec8b521201c19dce65ee63b56a4225037e18a139d826752fb9d0850a87061ab63cd00e83afc7a89344c444b3ff87894202e2df127085 SHA512 (pulseaudio-12.2-headers.tar.gz) = a5a9bcbb16030b3bc83cc0cc8f5e7f90e0723d3e83258a5c77eacb32eaa267118a73fa7814fbcc99a24e4907916a2b371ebb6dedc4f45541c3acf6c834fd35be +SHA512 (qtwebengine-everywhere-src-6.6.2-clean.tar.xz) = d86fab76f7f8d332eadf9e995210cf5e964a59276dc46d51bc0325c6db96e8c53536e6eaf75aad4a6f80dae9a680951dd878e5198ef84b43e3073c411ddaca3d From 6b9a5c893763c6626b04c7ab58110d858e85ac76 Mon Sep 17 00:00:00 2001 From: Jan Grulich Date: Mon, 19 Feb 2024 19:56:36 +0100 Subject: [PATCH 14/76] Bump build for examples change --- qt6-qtwebengine.spec | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/qt6-qtwebengine.spec b/qt6-qtwebengine.spec index 7816f12..c8a497c 100644 --- a/qt6-qtwebengine.spec +++ b/qt6-qtwebengine.spec @@ -46,10 +46,12 @@ # and designer plugins %global __provides_exclude_from ^%{_qt6_plugindir}/.*\\.so$ +%global examples 1 + Summary: Qt6 - QtWebEngine components Name: qt6-qtwebengine Version: 6.6.2 -Release: 1%{?dist} +Release: 2%{?dist} # See LICENSE.GPL LICENSE.LGPL LGPL_EXCEPTION.txt, for details # See also http://qt-project.org/doc/qt-5.0/qtdoc/licensing.html @@ -332,11 +334,12 @@ Requires: %{name}%{?_isa} = %{version}-%{release} %description devtools Support for remote debugging. +%if 0%{?examples} %package examples Summary: Example files for %{name} - %description examples %{summary}. +%endif %package -n qt6-qtpdf Summary: Qt6 - QtPdf components @@ -436,7 +439,8 @@ export NINJA_PATH=%{__ninja} -DFEATURE_webengine_system_ffmpeg:BOOL=ON \ -DFEATURE_webengine_webrtc:BOOL=ON \ -DFEATURE_webengine_webrtc_pipewire:BOOL=ON \ - -DQT_BUILD_EXAMPLES:BOOL=ON + -DQT_BUILD_EXAMPLES:BOOL=%{?examples:ON}%{!?examples:OFF} \ + -DQT_INSTALL_EXAMPLES_SOURCES=%{?examples:ON}%{!?examples:OFF} %cmake_build @@ -613,8 +617,10 @@ done %files devtools %{_qt6_datadir}/resources/qtwebengine_devtools_resources.pak +%if 0%{?examples} %files examples %{_qt6_examplesdir}/webengine* +%endif %if 0%{?docs} %files doc @@ -663,6 +669,9 @@ done %changelog +* Mon Feb 19 2024 Jan Grulich - 6.6.2-2 +- Examples: also install source files + * Thu Feb 15 2024 Jan Grulich - 6.6.2-1 - 6.6.2 From ba369a790282c25d361889f8158b0e5987296b82 Mon Sep 17 00:00:00 2001 From: Jan Grulich Date: Tue, 20 Feb 2024 08:32:16 +0100 Subject: [PATCH 15/76] Add defines around qtpdf-examples --- qt6-qtwebengine.spec | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/qt6-qtwebengine.spec b/qt6-qtwebengine.spec index c8a497c..2b12c28 100644 --- a/qt6-qtwebengine.spec +++ b/qt6-qtwebengine.spec @@ -664,9 +664,10 @@ done %{_qt6_libdir}/pkgconfig/Qt6PdfWidgets.pc %{_qt6_archdatadir}/mkspecs/modules/qt_lib_pdf*.pri +%if 0%{?examples} %files -n qt6-qtpdf-examples %{_qt6_examplesdir}/pdf* - +%endif %changelog * Mon Feb 19 2024 Jan Grulich - 6.6.2-2 From 4bbc8e8d6cd468abac3e5708c362a5ac5b3a91f3 Mon Sep 17 00:00:00 2001 From: Marie Loise Nolden Date: Sun, 3 Mar 2024 12:49:38 +0000 Subject: [PATCH 16/76] move qt designer plugin to -devel - move qt designer plugin to -devel - remove old doc package code (docs are in qt6-doc) --- qt6-qtwebengine.spec | 16 ++++++---------- 1 file changed, 6 insertions(+), 10 deletions(-) diff --git a/qt6-qtwebengine.spec b/qt6-qtwebengine.spec index 2b12c28..b6ab852 100644 --- a/qt6-qtwebengine.spec +++ b/qt6-qtwebengine.spec @@ -51,7 +51,7 @@ Summary: Qt6 - QtWebEngine components Name: qt6-qtwebengine Version: 6.6.2 -Release: 2%{?dist} +Release: 3%{?dist} # See LICENSE.GPL LICENSE.LGPL LGPL_EXCEPTION.txt, for details # See also http://qt-project.org/doc/qt-5.0/qtdoc/licensing.html @@ -498,9 +498,6 @@ done %files %license LICENSE.* -%if 0%{?docs} -%license src/webengine/doc/src/qtwebengine-3rdparty.qdoc -%endif %{_qt6_libdir}/libQt6WebEngineCore.so.* %{_qt6_libdir}/libQt6WebEngineQuick.so.* %{_qt6_libdir}/libQt6WebEngineQuickDelegatesQml.so.* @@ -510,7 +507,6 @@ done %{_qt6_libdir}/qt6/libexec/QtWebEngineProcess %dir %{_qt6_libdir}/qt6/qml/QtWebEngine %{_qt6_libdir}/qt6/qml/QtWebEngine/* -%{_qt6_plugindir}/designer/libqwebengineview.so %dir %{_qt6_datadir}/resources/ %{_qt6_datadir}/resources/v8_context_snapshot.bin %{_qt6_datadir}/resources/qtwebengine_resources.pak @@ -613,6 +609,7 @@ done %{_qt6_libdir}/pkgconfig/Qt6WebEngineQuickDelegatesQml.pc %{_qt6_libdir}/pkgconfig/Qt6WebEngineWidgets.pc %{_qt6_archdatadir}/mkspecs/modules/qt_lib_webengine*.pri +%{_qt6_plugindir}/designer/libqwebengineview.so %files devtools %{_qt6_datadir}/resources/qtwebengine_devtools_resources.pak @@ -622,11 +619,6 @@ done %{_qt6_examplesdir}/webengine* %endif -%if 0%{?docs} -%files doc -%{_qt6_docdir}/* -%endif - %files -n qt6-qtpdf %license LICENSE.* %{_qt6_libdir}/libQt6Pdf.so.* @@ -670,6 +662,10 @@ done %endif %changelog +* Sun Mar 3 2024 Marie Loise Nolden - 6.6.2-3 +- move qt designer plugin to -devel +- remove old doc package code (docs are in qt6-doc) + * Mon Feb 19 2024 Jan Grulich - 6.6.2-2 - Examples: also install source files From dada0fec68f6ce4b8012c2b4bee620d4f5429312 Mon Sep 17 00:00:00 2001 From: Troy Dawson Date: Tue, 19 Mar 2024 11:24:37 -0700 Subject: [PATCH 17/76] rhel9 needs gcc-toolset-13 --- qt6-qtwebengine.spec | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/qt6-qtwebengine.spec b/qt6-qtwebengine.spec index b6ab852..3486baf 100644 --- a/qt6-qtwebengine.spec +++ b/qt6-qtwebengine.spec @@ -117,7 +117,7 @@ BuildRequires: bison BuildRequires: flex BuildRequires: gcc-c++ %if 0%{?rhel} && 0%{?rhel} < 10 -BuildRequires: gcc-toolset-12 +BuildRequires: gcc-toolset-13 %endif # gn links statically (for now) BuildRequires: libstdc++-static @@ -418,7 +418,7 @@ cp -p src/3rdparty/chromium/LICENSE LICENSE.Chromium %build %if 0%{?rhel} && 0%{?rhel} < 10 -. /opt/rh/gcc-toolset-12/enable +. /opt/rh/gcc-toolset-13/enable %endif export STRIP=strip export NINJAFLAGS="%{__ninja_common_opts}" From def205233368da15b55a838b864402ab73a8e40e Mon Sep 17 00:00:00 2001 From: Jan Grulich Date: Thu, 4 Apr 2024 10:37:36 +0200 Subject: [PATCH 18/76] 6.7.0 --- .gitignore | 1 + qt6-qtwebengine.spec | 20 +++- qtwebengine-SIOCGSTAMP.patch | 4 +- qtwebengine-blink-dlopen-h264.patch | 45 ++++---- qtwebengine-ffmpeg-first_dts.patch | 64 +++++------ qtwebengine-fix-build.patch | 164 +++++++++------------------ qtwebengine-link-pipewire.patch | 8 +- qtwebengine-webrtc-dlopen-h264.patch | 40 +++---- sources | 2 +- 9 files changed, 149 insertions(+), 199 deletions(-) diff --git a/.gitignore b/.gitignore index 8b756da..f8a04ab 100644 --- a/.gitignore +++ b/.gitignore @@ -8,3 +8,4 @@ /qtwebengine-everywhere-src-6.5.3-clean.tar.xz /qtwebengine-everywhere-src-6.6.1-clean.tar.xz /qtwebengine-everywhere-src-6.6.2-clean.tar.xz +/qtwebengine-everywhere-src-6.7.0-clean.tar.xz diff --git a/qt6-qtwebengine.spec b/qt6-qtwebengine.spec index 3486baf..1b86c8b 100644 --- a/qt6-qtwebengine.spec +++ b/qt6-qtwebengine.spec @@ -18,7 +18,7 @@ %global use_system_py_six 1 %endif -%global use_system_re2 1 +%global use_system_re2 0 # NEON support on ARM (detected at runtime) - disable this if you are hitting # FTBFS due to e.g. GCC bug https://bugzilla.redhat.com/show_bug.cgi?id=1282495 @@ -50,8 +50,8 @@ Summary: Qt6 - QtWebEngine components Name: qt6-qtwebengine -Version: 6.6.2 -Release: 3%{?dist} +Version: 6.7.0 +Release: 1%{?dist} # See LICENSE.GPL LICENSE.LGPL LGPL_EXCEPTION.txt, for details # See also http://qt-project.org/doc/qt-5.0/qtdoc/licensing.html @@ -127,10 +127,12 @@ BuildRequires: krb5-devel %if 0%{?use_system_libicu} BuildRequires: libicu-devel >= 68 %endif +BuildRequires: libatomic BuildRequires: libjpeg-devel BuildRequires: nodejs %if 0%{?use_system_re2} BuildRequires: re2-devel +Provides: bundled(re2) %endif BuildRequires: snappy-devel BuildConflicts: minizip-devel @@ -376,10 +378,12 @@ popd %patch50 -p1 -b .fix-build.patch ## upstream patches -%patch100 -p1 -b .webrtc-dlopen-h264 +# FIXME: make sure it works and builds +# patch100 -p1 -b .webrtc-dlopen-h264 ## upstreamable patches -%patch110 -p1 -b .blink-dlopen-h264 +# FIXME: make sure it works and builds +#patch110 -p1 -b .blink-dlopen-h264 # delete all "toolprefix = " lines from build/toolchain/linux/BUILD.gn, as we # never cross-compile in native Fedora RPMs, fixes ARM and aarch64 FTBFS @@ -433,7 +437,7 @@ export NINJA_PATH=%{__ninja} -DFEATURE_webengine_kerberos:BOOL=ON \ -DFEATURE_webengine_native_spellchecker:BOOL=OFF \ -DFEATURE_webengine_printing_and_pdf:BOOL=ON \ - -DFEATURE_webengine_proprietary_codecs:BOOL=ON \ + -DFEATURE_webengine_proprietary_codecs:BOOL=OFF \ -DFEATURE_webengine_system_icu:BOOL=%{?use_system_libicu} \ -DFEATURE_webengine_system_libevent:BOOL=ON \ -DFEATURE_webengine_system_ffmpeg:BOOL=ON \ @@ -505,6 +509,7 @@ done %{_qt6_libdir}/qt6/libexec/gn %{_qt6_libdir}/qt6/libexec/qwebengine_convert_dict %{_qt6_libdir}/qt6/libexec/QtWebEngineProcess +%{_qt6_libdir}/qt6/libexec/webenginedriver %dir %{_qt6_libdir}/qt6/qml/QtWebEngine %{_qt6_libdir}/qt6/qml/QtWebEngine/* %dir %{_qt6_datadir}/resources/ @@ -662,6 +667,9 @@ done %endif %changelog +* Wed Apr 03 2024 Jan Grulich - 6.7.0-1 +- 6.7.0 + * Sun Mar 3 2024 Marie Loise Nolden - 6.6.2-3 - move qt designer plugin to -devel - remove old doc package code (docs are in qt6-doc) diff --git a/qtwebengine-SIOCGSTAMP.patch b/qtwebengine-SIOCGSTAMP.patch index 7609f85..d97da42 100644 --- a/qtwebengine-SIOCGSTAMP.patch +++ b/qtwebengine-SIOCGSTAMP.patch @@ -1,8 +1,8 @@ diff --git a/src/3rdparty/chromium/third_party/webrtc/rtc_base/physical_socket_server.cc b/src/3rdparty/chromium/third_party/webrtc/rtc_base/physical_socket_server.cc -index c38d7fdfa..0a8b0fd8b 100644 +index d421682..ffa75a7 100644 --- a/src/3rdparty/chromium/third_party/webrtc/rtc_base/physical_socket_server.cc +++ b/src/3rdparty/chromium/third_party/webrtc/rtc_base/physical_socket_server.cc -@@ -72,6 +72,11 @@ typedef void* SockOptArg; +@@ -77,6 +77,11 @@ typedef void* SockOptArg; #if defined(WEBRTC_POSIX) && !defined(WEBRTC_MAC) && !defined(__native_client__) diff --git a/qtwebengine-blink-dlopen-h264.patch b/qtwebengine-blink-dlopen-h264.patch index 6dae942..bb8316d 100644 --- a/qtwebengine-blink-dlopen-h264.patch +++ b/qtwebengine-blink-dlopen-h264.patch @@ -1,18 +1,18 @@ diff --git a/src/3rdparty/chromium/third_party/blink/renderer/modules/mediarecorder/BUILD.gn b/src/3rdparty/chromium/third_party/blink/renderer/modules/mediarecorder/BUILD.gn -index cf6de49be..61e8879d6 100644 +index 0be70ed4b..55c18c60d 100644 --- a/src/3rdparty/chromium/third_party/blink/renderer/modules/mediarecorder/BUILD.gn +++ b/src/3rdparty/chromium/third_party/blink/renderer/modules/mediarecorder/BUILD.gn -@@ -5,12 +5,23 @@ - import("//build/buildflag_header.gni") +@@ -7,12 +7,23 @@ import("//media/media_options.gni") import("//third_party/blink/renderer/modules/modules.gni") + import("//third_party/libaom/options.gni") import("//third_party/webrtc/webrtc.gni") +import("//tools/generate_stubs/rules.gni") - + buildflag_header("buildflags") { header = "buildflags.h" flags = [ "RTC_USE_H264=$rtc_use_h264" ] } - + +if (rtc_use_h264 && rtc_dlopen_openh264) { + # When OpenH264 is not directly linked, use stubs to allow for dlopening of + # the binary. @@ -26,10 +26,10 @@ index cf6de49be..61e8879d6 100644 blink_modules_sources("mediarecorder") { sources = [ "audio_track_encoder.cc", -@@ -56,6 +67,11 @@ blink_modules_sources("mediarecorder") { +@@ -62,7 +73,12 @@ blink_modules_sources("mediarecorder") { "h264_encoder.h", ] - + - deps += [ "//third_party/openh264:encoder" ] + if (rtc_dlopen_openh264) { + defines = [ "BLINK_DLOPEN_OPENH264" ] @@ -38,22 +38,23 @@ index cf6de49be..61e8879d6 100644 + deps += [ "//third_party/openh264:encoder" ] + } } - } + + if (enable_libaom) { diff --git a/src/3rdparty/chromium/third_party/blink/renderer/modules/mediarecorder/h264_encoder.cc b/src/3rdparty/chromium/third_party/blink/renderer/modules/mediarecorder/h264_encoder.cc -index 4253f3280..56ea1574c 100644 +index cf1126a20..b6b5ae8df 100644 --- a/src/3rdparty/chromium/third_party/blink/renderer/modules/mediarecorder/h264_encoder.cc +++ b/src/3rdparty/chromium/third_party/blink/renderer/modules/mediarecorder/h264_encoder.cc -@@ -23,9 +23,21 @@ +@@ -28,9 +28,21 @@ #include "third_party/openh264/src/codec/api/wels/codec_def.h" #include "ui/gfx/geometry/size.h" - + +#if defined(BLINK_DLOPEN_OPENH264) +#include "third_party/blink/renderer/modules/mediarecorder/openh264_stubs.h" +#endif // defined(BLINK_DLOPEN_OPENH264) + namespace blink { namespace { - + +#if defined(BLINK_DLOPEN_OPENH264) +using third_party_blink_renderer_modules_mediarecorder::InitializeStubs; +using third_party_blink_renderer_modules_mediarecorder::kModuleOpenh264; @@ -64,9 +65,9 @@ index 4253f3280..56ea1574c 100644 + absl::optional ToOpenH264Profile( media::VideoCodecProfile profile) { - static const HashMap -@@ -86,6 +98,13 @@ H264Encoder::H264Encoder( - : Encoder(on_encoded_video_cb, bits_per_second), + static constexpr auto kProfileToEProfileIdc = +@@ -95,6 +107,13 @@ H264Encoder::H264Encoder( + bits_per_second), codec_profile_(codec_profile) { DCHECK_EQ(codec_profile_.codec_id, VideoTrackRecorder::CodecId::kH264); + @@ -77,10 +78,10 @@ index 4253f3280..56ea1574c 100644 + openh264_dlopened_ = InitializeStubs(paths); +#endif } - + // Needs to be defined here to combat a Windows linking issue. -@@ -167,6 +186,14 @@ void H264Encoder::EncodeFrame(scoped_refptr frame, - +@@ -189,6 +208,14 @@ void H264Encoder::EncodeFrame(scoped_refptr frame, + bool H264Encoder::ConfigureEncoder(const gfx::Size& size) { TRACE_EVENT0("media", "H264Encoder::ConfigureEncoder"); + @@ -95,17 +96,17 @@ index 4253f3280..56ea1574c 100644 if (WelsCreateSVCEncoder(&temp_encoder) != 0) { NOTREACHED() << "Failed to create OpenH264 encoder"; diff --git a/src/3rdparty/chromium/third_party/blink/renderer/modules/mediarecorder/h264_encoder.h b/src/3rdparty/chromium/third_party/blink/renderer/modules/mediarecorder/h264_encoder.h -index 1d9d7bc5a..a5b7eefe3 100644 +index ff80d42a7..1f3b2962a 100644 --- a/src/3rdparty/chromium/third_party/blink/renderer/modules/mediarecorder/h264_encoder.h +++ b/src/3rdparty/chromium/third_party/blink/renderer/modules/mediarecorder/h264_encoder.h -@@ -58,6 +58,8 @@ class MODULES_EXPORT H264Encoder final : public VideoTrackRecorder::Encoder { +@@ -60,6 +60,8 @@ class MODULES_EXPORT H264Encoder final : public VideoTrackRecorder::Encoder { // The |VideoFrame::timestamp()| of the first received frame. base::TimeTicks first_frame_timestamp_; base::WeakPtrFactory weak_factory_{this}; + + bool openh264_dlopened_ = false; }; - + } // namespace blink diff --git a/src/3rdparty/chromium/third_party/blink/renderer/modules/mediarecorder/openh264.sigs b/src/3rdparty/chromium/third_party/blink/renderer/modules/mediarecorder/openh264.sigs new file mode 100644 @@ -129,7 +130,7 @@ index 000000000..4924f8e9a +void WelsGetCodecVersionEx(OpenH264Version *pVersion); diff --git a/src/3rdparty/chromium/third_party/blink/renderer/modules/mediarecorder/openh264_stub_header.fragment b/src/3rdparty/chromium/third_party/blink/renderer/modules/mediarecorder/openh264_stub_header.fragment new file mode 100644 -index 000000000..e8a3727a0 +index 000000000..9bc0a7cbe --- /dev/null +++ b/src/3rdparty/chromium/third_party/blink/renderer/modules/mediarecorder/openh264_stub_header.fragment @@ -0,0 +1,11 @@ diff --git a/qtwebengine-ffmpeg-first_dts.patch b/qtwebengine-ffmpeg-first_dts.patch index e2c7118..659b80b 100644 --- a/qtwebengine-ffmpeg-first_dts.patch +++ b/qtwebengine-ffmpeg-first_dts.patch @@ -1,11 +1,11 @@ diff --git a/configure.cmake b/configure.cmake -index 8f30b34..bbd934e 100644 +index a9f659533..ed49ff9c8 100644 --- a/configure.cmake +++ b/configure.cmake -@@ -209,25 +209,6 @@ int main(void){ +@@ -198,25 +198,6 @@ int main(void) { }" ) - + -qt_config_compile_test(libavformat - LABEL "libavformat" - LIBRARIES @@ -26,9 +26,9 @@ index 8f30b34..bbd934e 100644 -) - #### Features - + qt_feature("qtwebengine-build" PUBLIC -@@ -563,11 +544,6 @@ add_check_for_support( +@@ -554,11 +535,6 @@ add_check_for_support( CONDITION NOT LINUX OR DBUS_FOUND MESSAGE "Build requires dbus." ) @@ -41,10 +41,10 @@ index 8f30b34..bbd934e 100644 set(xcbSupport X11 LIBDRM XCOMPOSITE XCURSOR XRANDR XI XPROTO XSHMFENCE XTST) foreach(xs ${xcbSupport}) diff --git a/src/3rdparty/chromium/AUTHORS b/src/3rdparty/chromium/AUTHORS -index ff6abe8..0fd7937 100644 +index 5b604c40c..2e31a9fd5 100644 --- a/src/3rdparty/chromium/AUTHORS +++ b/src/3rdparty/chromium/AUTHORS -@@ -99,6 +99,7 @@ Andra Paraschiv +@@ -105,6 +105,7 @@ Andra Paraschiv Andras Tokodi Andreas Nazlidis Andreas Papacharalampous @@ -53,29 +53,29 @@ index ff6abe8..0fd7937 100644 Andrei Parvu Andrei Parvu diff --git a/src/3rdparty/chromium/media/filters/ffmpeg_demuxer.cc b/src/3rdparty/chromium/media/filters/ffmpeg_demuxer.cc -index f41464b..3aa3918 100644 +index 138cea9d6..91c20058d 100644 --- a/src/3rdparty/chromium/media/filters/ffmpeg_demuxer.cc +++ b/src/3rdparty/chromium/media/filters/ffmpeg_demuxer.cc @@ -59,7 +59,7 @@ namespace media { - + namespace { - + -constexpr int64_t kInvalidPTSMarker = static_cast(0x8000000000000000); +constexpr int64_t kRelativeTsBase = static_cast(0x7ffeffffffffffff); - + void SetAVStreamDiscard(AVStream* stream, AVDiscard discard) { DCHECK(stream); -@@ -97,7 +97,7 @@ static base::TimeDelta FramesToTimeDelta(int frames, double sample_rate) { +@@ -108,7 +108,7 @@ static base::TimeDelta FramesToTimeDelta(int frames, double sample_rate) { sample_rate); } - + -static base::TimeDelta ExtractStartTime(AVStream* stream) { +static base::TimeDelta ExtractStartTime(AVStream* stream, int64_t first_dts) { // The default start time is zero. base::TimeDelta start_time; - -@@ -107,12 +107,12 @@ static base::TimeDelta ExtractStartTime(AVStream* stream) { - + +@@ -118,12 +118,12 @@ static base::TimeDelta ExtractStartTime(AVStream* stream) { + // Next try to use the first DTS value, for codecs where we know PTS == DTS // (excludes all H26x codecs). The start time must be returned in PTS. - if (av_stream_get_first_dts(stream) != kInvalidPTSMarker && @@ -89,7 +89,7 @@ index f41464b..3aa3918 100644 if (first_pts < start_time) start_time = first_pts; } -@@ -270,6 +270,7 @@ FFmpegDemuxerStream::FFmpegDemuxerStream( +@@ -281,6 +281,7 @@ FFmpegDemuxerStream::FFmpegDemuxerStream( fixup_negative_timestamps_(false), fixup_chained_ogg_(false), num_discarded_packet_warnings_(0), @@ -97,10 +97,10 @@ index f41464b..3aa3918 100644 last_packet_pos_(AV_NOPTS_VALUE), last_packet_dts_(AV_NOPTS_VALUE) { DCHECK(demuxer_); -@@ -336,6 +337,11 @@ void FFmpegDemuxerStream::EnqueuePacket(ScopedAVPacket packet) { +@@ -347,6 +348,11 @@ void FFmpegDemuxerStream::EnqueuePacket(ScopedAVPacket packet) { int64_t packet_dts = packet->dts == AV_NOPTS_VALUE ? packet->pts : packet->dts; - + + if (first_dts_ == AV_NOPTS_VALUE && packet->dts != AV_NOPTS_VALUE && + last_packet_dts_ != AV_NOPTS_VALUE) { + first_dts_ = packet->dts - (last_packet_dts_ + kRelativeTsBase); @@ -111,23 +111,23 @@ index f41464b..3aa3918 100644 // be dropped. Since chained ogg is only allowed on single track audio only @@ -683,6 +689,7 @@ void FFmpegDemuxerStream::FlushBuffers(bool preserve_packet_position) { ResetBitstreamConverter(); - + if (!preserve_packet_position) { + first_dts_ = AV_NOPTS_VALUE; last_packet_pos_ = AV_NOPTS_VALUE; last_packet_dts_ = AV_NOPTS_VALUE; } -@@ -1452,7 +1459,8 @@ void FFmpegDemuxer::OnFindStreamInfoDone(int result) { - +@@ -1461,7 +1468,8 @@ void FFmpegDemuxer::OnFindStreamInfoDone(int result) { + max_duration = std::max(max_duration, streams_[i]->duration()); - + - base::TimeDelta start_time = ExtractStartTime(stream); + base::TimeDelta start_time = + ExtractStartTime(stream, streams_[i]->first_dts()); - + // Note: This value is used for seeking, so we must take the true value and // not the one possibly clamped to zero below. -@@ -1609,7 +1617,7 @@ FFmpegDemuxerStream* FFmpegDemuxer::FindStreamWithLowestStartTimestamp( +@@ -1623,7 +1631,7 @@ FFmpegDemuxerStream* FFmpegDemuxer::FindStreamWithLowestStartTimestamp( for (const auto& stream : streams_) { if (!stream || stream->IsEnabled() != enabled) continue; @@ -136,31 +136,31 @@ index f41464b..3aa3918 100644 continue; if (!lowest_start_time_stream || stream->start_time() < lowest_start_time_stream->start_time()) { -@@ -1630,7 +1638,7 @@ FFmpegDemuxerStream* FFmpegDemuxer::FindPreferredStreamForSeeking( +@@ -1644,7 +1652,7 @@ FFmpegDemuxerStream* FFmpegDemuxer::FindPreferredStreamForSeeking( if (stream->type() != DemuxerStream::VIDEO) continue; - + - if (av_stream_get_first_dts(stream->av_stream()) == kInvalidPTSMarker) + if (stream->first_dts() == AV_NOPTS_VALUE) continue; - + if (!stream->IsEnabled()) diff --git a/src/3rdparty/chromium/media/filters/ffmpeg_demuxer.h b/src/3rdparty/chromium/media/filters/ffmpeg_demuxer.h -index 086a795..ba9c665 100644 +index e234a2078..bada6eedd 100644 --- a/src/3rdparty/chromium/media/filters/ffmpeg_demuxer.h +++ b/src/3rdparty/chromium/media/filters/ffmpeg_demuxer.h @@ -145,6 +145,8 @@ class MEDIA_EXPORT FFmpegDemuxerStream : public DemuxerStream { base::TimeDelta start_time() const { return start_time_; } void set_start_time(base::TimeDelta time) { start_time_ = time; } - + + int64_t first_dts() const { return first_dts_; } + private: friend class FFmpegDemuxerTest; - + @@ -202,6 +204,7 @@ class MEDIA_EXPORT FFmpegDemuxerStream : public DemuxerStream { bool fixup_chained_ogg_; - + int num_discarded_packet_warnings_; + int64_t first_dts_; int64_t last_packet_pos_; diff --git a/qtwebengine-fix-build.patch b/qtwebengine-fix-build.patch index be6a7bc..d9e3d01 100644 --- a/qtwebengine-fix-build.patch +++ b/qtwebengine-fix-build.patch @@ -1,75 +1,75 @@ diff --git a/src/3rdparty/chromium/base/debug/profiler.h b/src/3rdparty/chromium/base/debug/profiler.h -index 80c73feb9..d3921a6aa 100644 +index 035affc7c..d8e1a5346 100644 --- a/src/3rdparty/chromium/base/debug/profiler.h +++ b/src/3rdparty/chromium/base/debug/profiler.h @@ -5,6 +5,7 @@ #ifndef BASE_DEBUG_PROFILER_H_ #define BASE_DEBUG_PROFILER_H_ - + +#include #include - #include - + #include + diff --git a/src/3rdparty/chromium/cc/trees/target_property.cc b/src/3rdparty/chromium/cc/trees/target_property.cc -index 714bd5efe..cf0bb5fa9 100644 +index 7d73467a9..be4febd9a 100644 --- a/src/3rdparty/chromium/cc/trees/target_property.cc +++ b/src/3rdparty/chromium/cc/trees/target_property.cc @@ -8,6 +8,8 @@ - + #include "ui/gfx/animation/keyframe/target_property.h" - + +#include + namespace cc { - + static_assert(TargetProperty::LAST_TARGET_PROPERTY < diff --git a/src/3rdparty/chromium/device/base/synchronization/one_writer_seqlock.cc b/src/3rdparty/chromium/device/base/synchronization/one_writer_seqlock.cc index c62a00ee0..af54520b7 100644 --- a/src/3rdparty/chromium/device/base/synchronization/one_writer_seqlock.cc +++ b/src/3rdparty/chromium/device/base/synchronization/one_writer_seqlock.cc @@ -6,6 +6,8 @@ - + #include "base/threading/platform_thread.h" - + +#include + namespace device { - + OneWriterSeqLock::OneWriterSeqLock() : sequence_(0) {} diff --git a/src/3rdparty/chromium/extensions/common/constants.h b/src/3rdparty/chromium/extensions/common/constants.h -index 27adc05bf..a4839e859 100644 +index adbcfa540..5923bd2fe 100644 --- a/src/3rdparty/chromium/extensions/common/constants.h +++ b/src/3rdparty/chromium/extensions/common/constants.h -@@ -12,6 +12,8 @@ +@@ -13,6 +13,8 @@ #include "build/chromeos_buildflags.h" #include "extensions/common/extensions_export.h" - + +#include + namespace extensions { - + // Scheme we serve extension content from. diff --git a/src/3rdparty/chromium/gpu/config/gpu_util.h b/src/3rdparty/chromium/gpu/config/gpu_util.h -index 574aca1ff..fca32671c 100644 +index 8edbfbe7d..467ebd65e 100644 --- a/src/3rdparty/chromium/gpu/config/gpu_util.h +++ b/src/3rdparty/chromium/gpu/config/gpu_util.h @@ -5,6 +5,8 @@ #ifndef GPU_CONFIG_GPU_UTIL_H_ #define GPU_CONFIG_GPU_UTIL_H_ - + +#include + #include "build/build_config.h" #include "gpu/config/gpu_feature_info.h" #include "gpu/gpu_export.h" diff --git a/src/3rdparty/chromium/net/base/parse_number.h b/src/3rdparty/chromium/net/base/parse_number.h -index 091649590..a49ed9382 100644 +index f923b18a7..8f3c6ef78 100644 --- a/src/3rdparty/chromium/net/base/parse_number.h +++ b/src/3rdparty/chromium/net/base/parse_number.h @@ -10,6 +10,8 @@ #include "base/strings/string_piece.h" #include "net/base/net_export.h" - + +#include + // This file contains utility functions for parsing numbers, in the context of @@ -93,11 +93,11 @@ index 7c0dcdecb..97054d476 100644 @@ -67,8 +71,6 @@ class ThreadSafeThreadTraits { int32_t ref_; }; - + - typedef pp::Lock Lock; - typedef pp::AutoLock AutoLock; }; - + /// The non-thread-safe version of thread traits. Using this class as the diff --git a/src/3rdparty/chromium/third_party/dawn/src/dawn/native/CacheKey.h b/src/3rdparty/chromium/third_party/dawn/src/dawn/native/CacheKey.h index 6cec3b6b8..541bba5b1 100644 @@ -106,73 +106,13 @@ index 6cec3b6b8..541bba5b1 100644 @@ -15,6 +15,7 @@ #ifndef SRC_DAWN_NATIVE_CACHEKEY_H_ #define SRC_DAWN_NATIVE_CACHEKEY_H_ - + +#include #include - + #include "dawn/native/stream/ByteVectorSink.h" -diff --git a/src/3rdparty/chromium/third_party/dawn/src/tint/reader/spirv/entry_point_info.h b/src/3rdparty/chromium/third_party/dawn/src/tint/reader/spirv/entry_point_info.h -index 90077421d..f303f9e8b 100644 ---- a/src/3rdparty/chromium/third_party/dawn/src/tint/reader/spirv/entry_point_info.h -+++ b/src/3rdparty/chromium/third_party/dawn/src/tint/reader/spirv/entry_point_info.h -@@ -15,6 +15,7 @@ - #ifndef SRC_TINT_READER_SPIRV_ENTRY_POINT_INFO_H_ - #define SRC_TINT_READER_SPIRV_ENTRY_POINT_INFO_H_ - -+#include - #include - - #include "src/tint/ast/pipeline_stage.h" -diff --git a/src/3rdparty/chromium/third_party/dawn/src/tint/reader/spirv/namer.h b/src/3rdparty/chromium/third_party/dawn/src/tint/reader/spirv/namer.h -index 7a20e8738..655f69ce3 100644 ---- a/src/3rdparty/chromium/third_party/dawn/src/tint/reader/spirv/namer.h -+++ b/src/3rdparty/chromium/third_party/dawn/src/tint/reader/spirv/namer.h -@@ -15,6 +15,7 @@ - #ifndef SRC_TINT_READER_SPIRV_NAMER_H_ - #define SRC_TINT_READER_SPIRV_NAMER_H_ - -+#include - #include - #include - #include -diff --git a/src/3rdparty/chromium/third_party/dawn/src/tint/reader/wgsl/lexer.h b/src/3rdparty/chromium/third_party/dawn/src/tint/reader/wgsl/lexer.h -index 8e0306b6a..0fc0cc2b0 100644 ---- a/src/3rdparty/chromium/third_party/dawn/src/tint/reader/wgsl/lexer.h -+++ b/src/3rdparty/chromium/third_party/dawn/src/tint/reader/wgsl/lexer.h -@@ -15,6 +15,7 @@ - #ifndef SRC_TINT_READER_WGSL_LEXER_H_ - #define SRC_TINT_READER_WGSL_LEXER_H_ - -+#include - #include - #include - -diff --git a/src/3rdparty/chromium/third_party/dawn/src/tint/reader/wgsl/token.h b/src/3rdparty/chromium/third_party/dawn/src/tint/reader/wgsl/token.h -index 222f28ef8..335c4c396 100644 ---- a/src/3rdparty/chromium/third_party/dawn/src/tint/reader/wgsl/token.h -+++ b/src/3rdparty/chromium/third_party/dawn/src/tint/reader/wgsl/token.h -@@ -15,6 +15,7 @@ - #ifndef SRC_TINT_READER_WGSL_TOKEN_H_ - #define SRC_TINT_READER_WGSL_TOKEN_H_ - -+#include - #include - #include - #include -diff --git a/src/3rdparty/chromium/third_party/dawn/src/tint/writer/spirv/operand.h b/src/3rdparty/chromium/third_party/dawn/src/tint/writer/spirv/operand.h -index 0601ca068..ac9dde64e 100644 ---- a/src/3rdparty/chromium/third_party/dawn/src/tint/writer/spirv/operand.h -+++ b/src/3rdparty/chromium/third_party/dawn/src/tint/writer/spirv/operand.h -@@ -15,6 +15,7 @@ - #ifndef SRC_TINT_WRITER_SPIRV_OPERAND_H_ - #define SRC_TINT_WRITER_SPIRV_OPERAND_H_ - -+#include - #include - #include - #include diff --git a/src/3rdparty/chromium/third_party/libgav1/src/src/utils/threadpool.cc b/src/3rdparty/chromium/third_party/libgav1/src/src/utils/threadpool.cc -index a3099e15d..2e6f0eea7 100644 +index e171db6c7..dfbd126b4 100644 --- a/src/3rdparty/chromium/third_party/libgav1/src/src/utils/threadpool.cc +++ b/src/3rdparty/chromium/third_party/libgav1/src/src/utils/threadpool.cc @@ -30,6 +30,7 @@ @@ -182,19 +122,19 @@ index a3099e15d..2e6f0eea7 100644 +#include #include #include - + diff --git a/src/3rdparty/chromium/third_party/perfetto/src/trace_processor/importers/proto/proto_importer_module.h b/src/3rdparty/chromium/third_party/perfetto/src/trace_processor/importers/proto/proto_importer_module.h -index 3ff56aa0b..a36388bb8 100644 +index cc2c3a2b3..8eb694e73 100644 --- a/src/3rdparty/chromium/third_party/perfetto/src/trace_processor/importers/proto/proto_importer_module.h +++ b/src/3rdparty/chromium/third_party/perfetto/src/trace_processor/importers/proto/proto_importer_module.h -@@ -21,6 +21,8 @@ - #include "perfetto/ext/base/optional.h" +@@ -22,6 +22,8 @@ + #include "perfetto/base/status.h" #include "src/trace_processor/importers/common/trace_parser.h" - + +#include + namespace perfetto { - + namespace protos { diff --git a/src/3rdparty/chromium/third_party/skia/src/utils/SkParseColor.cpp b/src/3rdparty/chromium/third_party/skia/src/utils/SkParseColor.cpp index 0101632c5..3f04a2dd2 100644 @@ -203,7 +143,7 @@ index 0101632c5..3f04a2dd2 100644 @@ -15,6 +15,10 @@ #include #include - + +#include +#include +#include @@ -212,13 +152,13 @@ index 0101632c5..3f04a2dd2 100644 "aliceblue", "antiquewhite", diff --git a/src/3rdparty/chromium/third_party/vulkan_memory_allocator/include/vk_mem_alloc.h b/src/3rdparty/chromium/third_party/vulkan_memory_allocator/include/vk_mem_alloc.h -index 9e073d4e1..da96f327c 100644 +index b26de34cc..caa0df9f9 100644 --- a/src/3rdparty/chromium/third_party/vulkan_memory_allocator/include/vk_mem_alloc.h +++ b/src/3rdparty/chromium/third_party/vulkan_memory_allocator/include/vk_mem_alloc.h @@ -105,6 +105,8 @@ Documentation of all members: vk_mem_alloc.h - [Source repository on GitHub](https://github.com/GPUOpen-LibrariesAndSDKs/VulkanMemoryAllocator) */ - + +#include + #ifdef __cplusplus @@ -229,59 +169,59 @@ index ab52508c2..050229a2f 100644 --- a/src/3rdparty/chromium/third_party/webrtc/modules/portal/xdg_session_details.h +++ b/src/3rdparty/chromium/third_party/webrtc/modules/portal/xdg_session_details.h @@ -13,6 +13,7 @@ - + #include - + +#include #include - + namespace webrtc { diff --git a/src/3rdparty/chromium/ui/events/gesture_event_details.h b/src/3rdparty/chromium/ui/events/gesture_event_details.h -index 41ff9906d..1864e9e21 100644 +index bdf840619..68f473f27 100644 --- a/src/3rdparty/chromium/ui/events/gesture_event_details.h +++ b/src/3rdparty/chromium/ui/events/gesture_event_details.h @@ -5,6 +5,7 @@ #ifndef UI_EVENTS_GESTURE_EVENT_DETAILS_H_ #define UI_EVENTS_GESTURE_EVENT_DETAILS_H_ - + +#include #include - + #include "base/check_op.h" diff --git a/src/3rdparty/chromium/ui/gfx/geometry/linear_gradient.h b/src/3rdparty/chromium/ui/gfx/geometry/linear_gradient.h -index ab0ce5808..9a9f187bb 100644 +index d32766283..18b8a85e1 100644 --- a/src/3rdparty/chromium/ui/gfx/geometry/linear_gradient.h +++ b/src/3rdparty/chromium/ui/gfx/geometry/linear_gradient.h -@@ -5,6 +5,7 @@ - #ifndef UI_GFX_LINEAR_GRADIENT_H_ - #define UI_GFX_LINEAR_GRADIENT_H_ - +@@ -7,6 +7,7 @@ + + #include + +#include #include + #include #include - #include diff --git a/src/3rdparty/chromium/v8/src/base/macros.h b/src/3rdparty/chromium/v8/src/base/macros.h -index cd5b91f74..a74c0021f 100644 +index f81258363..ec7d67550 100644 --- a/src/3rdparty/chromium/v8/src/base/macros.h +++ b/src/3rdparty/chromium/v8/src/base/macros.h @@ -5,6 +5,7 @@ #ifndef V8_BASE_MACROS_H_ #define V8_BASE_MACROS_H_ - + +#include #include #include - + diff --git a/src/core/browsing_data_remover_delegate_qt.h b/src/core/browsing_data_remover_delegate_qt.h -index a611a710c..67743f52b 100644 +index d33af4acb..ce864b6bd 100644 --- a/src/core/browsing_data_remover_delegate_qt.h +++ b/src/core/browsing_data_remover_delegate_qt.h @@ -8,6 +8,8 @@ - + #include "content/public/browser/browsing_data_remover_delegate.h" - + +#include + namespace QtWebEngineCore { - + class BrowsingDataRemoverDelegateQt : public content::BrowsingDataRemoverDelegate { diff --git a/qtwebengine-link-pipewire.patch b/qtwebengine-link-pipewire.patch index e21f728..49d8aa2 100644 --- a/qtwebengine-link-pipewire.patch +++ b/qtwebengine-link-pipewire.patch @@ -1,13 +1,13 @@ diff --git a/src/3rdparty/chromium/third_party/webrtc/webrtc.gni b/src/3rdparty/chromium/third_party/webrtc/webrtc.gni -index a5da76c..9c5d358 100644 +index 5a1c43c..82870d2 100644 --- a/src/3rdparty/chromium/third_party/webrtc/webrtc.gni +++ b/src/3rdparty/chromium/third_party/webrtc/webrtc.gni -@@ -138,7 +138,7 @@ declare_args() { +@@ -150,7 +150,7 @@ declare_args() { rtc_use_pipewire = is_linux && use_sysroot - + # Set this to link PipeWire and required libraries directly instead of using the dlopen. - rtc_link_pipewire = false + rtc_link_pipewire = true - + # Enable to use the Mozilla internal settings. build_with_mozilla = false diff --git a/qtwebengine-webrtc-dlopen-h264.patch b/qtwebengine-webrtc-dlopen-h264.patch index 048e191..3d7b60e 100644 --- a/qtwebengine-webrtc-dlopen-h264.patch +++ b/qtwebengine-webrtc-dlopen-h264.patch @@ -1,19 +1,19 @@ diff --git a/src/3rdparty/chromium/third_party/webrtc/modules/video_coding/BUILD.gn b/src/3rdparty/chromium/third_party/webrtc/modules/video_coding/BUILD.gn -index 8e3529974..ca7370599 100644 +index 738d3d4ed..c9b1a3455 100644 --- a/src/3rdparty/chromium/third_party/webrtc/modules/video_coding/BUILD.gn +++ b/src/3rdparty/chromium/third_party/webrtc/modules/video_coding/BUILD.gn @@ -7,6 +7,7 @@ # be found in the AUTHORS file in the root of the source tree. - + import("//third_party/libaom/options.gni") +import("//tools/generate_stubs/rules.gni") import("../../webrtc.gni") - + rtc_library("encoded_frame") { -@@ -461,6 +462,17 @@ rtc_library("video_coding_utility") { +@@ -453,6 +454,17 @@ rtc_library("video_coding_utility") { ] } - + +if (rtc_use_h264 && rtc_dlopen_openh264) { + # When OpenH264 is not directly linked, use stubs to allow for dlopening of + # the binary. @@ -28,9 +28,9 @@ index 8e3529974..ca7370599 100644 rtc_library("webrtc_h264") { visibility = [ "*" ] sources = [ -@@ -507,10 +519,15 @@ rtc_library("webrtc_h264") { +@@ -499,10 +511,15 @@ rtc_library("webrtc_h264") { ] - + if (rtc_use_h264) { - deps += [ - "//third_party/ffmpeg", @@ -55,15 +55,15 @@ index b6023ac50..228486870 100644 @@ -39,10 +39,22 @@ #include "third_party/openh264/src/codec/api/wels/codec_def.h" #include "third_party/openh264/src/codec/api/wels/codec_ver.h" - + +#if defined(WEBRTC_DLOPEN_OPENH264) +#include "modules/video_coding/codecs/h264/openh264_stubs.h" +#endif // defined(WEBRTC_DLOPEN_OPENH264) + namespace webrtc { - + namespace { - + +#if defined(WEBRTC_DLOPEN_OPENH264) +using third_party_webrtc_modules_video_coding_codecs_h264::InitializeStubs; +using third_party_webrtc_modules_video_coding_codecs_h264::kModuleOpenh264; @@ -73,10 +73,10 @@ index b6023ac50..228486870 100644 +#endif + const bool kOpenH264EncoderDetailedLogging = false; - + // QP scaling thresholds. @@ -198,6 +210,15 @@ H264EncoderImpl::~H264EncoderImpl() { - + int32_t H264EncoderImpl::InitEncode(const VideoCodec* inst, const VideoEncoder::Settings& settings) { +#if defined(WEBRTC_DLOPEN_OPENH264) @@ -129,25 +129,25 @@ index 000000000..9bc0a7cbe + +} diff --git a/src/3rdparty/chromium/third_party/webrtc/webrtc.gni b/src/3rdparty/chromium/third_party/webrtc/webrtc.gni -index 8dfcc9d24..0a27fd2d6 100644 +index 82870d2db..e7782bd63 100644 --- a/src/3rdparty/chromium/third_party/webrtc/webrtc.gni +++ b/src/3rdparty/chromium/third_party/webrtc/webrtc.gni -@@ -181,6 +181,10 @@ declare_args() { - rtc_use_h264 = - proprietary_codecs && !is_android && !is_ios && !(is_win && !is_clang) - +@@ -192,6 +192,10 @@ declare_args() { + # Enable to use H265 + rtc_use_h265 = proprietary_codecs + + # Allow to use OpenH264 on systems where OpenH264 cannot be installed by + # default due to licensing, but can be installed later from other sources. + rtc_dlopen_openh264 = false + # Enable this flag to make webrtc::Mutex be implemented by absl::Mutex. rtc_use_absl_mutex = false - + diff --git a/src/core/CMakeLists.txt b/src/core/CMakeLists.txt -index 4153ce180..afaa9dcb1 100644 +index e7432d0c7..e7df90dfa 100644 --- a/src/core/CMakeLists.txt +++ b/src/core/CMakeLists.txt -@@ -418,6 +418,9 @@ foreach(arch ${archs}) +@@ -436,6 +436,9 @@ foreach(arch ${archs}) use_udev=true is_cfi=false use_ozone=true diff --git a/sources b/sources index 3e56ce3..1f95fbb 100644 --- a/sources +++ b/sources @@ -1,2 +1,2 @@ +SHA512 (qtwebengine-everywhere-src-6.7.0-clean.tar.xz) = 81f0cd771bc4e6027d32a32c88e47908e59a58997d106899a4acb2b1b917806f7ca4d55d6055578b595b8dc2c7af1f07d0236a10c436901c8a2486f9ea404e17 SHA512 (pulseaudio-12.2-headers.tar.gz) = a5a9bcbb16030b3bc83cc0cc8f5e7f90e0723d3e83258a5c77eacb32eaa267118a73fa7814fbcc99a24e4907916a2b371ebb6dedc4f45541c3acf6c834fd35be -SHA512 (qtwebengine-everywhere-src-6.6.2-clean.tar.xz) = d86fab76f7f8d332eadf9e995210cf5e964a59276dc46d51bc0325c6db96e8c53536e6eaf75aad4a6f80dae9a680951dd878e5198ef84b43e3073c411ddaca3d From e139d6d8fb88c39e234673c0afba33899d86472f Mon Sep 17 00:00:00 2001 From: Marie Loise Nolden Date: Thu, 4 Apr 2024 19:44:29 +0000 Subject: [PATCH 19/76] fix for epel9 BR --- qt6-qtwebengine.spec | 1 + 1 file changed, 1 insertion(+) diff --git a/qt6-qtwebengine.spec b/qt6-qtwebengine.spec index 1b86c8b..9cc07c2 100644 --- a/qt6-qtwebengine.spec +++ b/qt6-qtwebengine.spec @@ -118,6 +118,7 @@ BuildRequires: flex BuildRequires: gcc-c++ %if 0%{?rhel} && 0%{?rhel} < 10 BuildRequires: gcc-toolset-13 +BuildRequires: gcc-toolset-13-libatomic-devel %endif # gn links statically (for now) BuildRequires: libstdc++-static From fdbce7214834e9fd9852cc77abc3317992a78bf8 Mon Sep 17 00:00:00 2001 From: Jan Grulich Date: Wed, 24 Apr 2024 09:50:37 +0200 Subject: [PATCH 20/76] Rework and enable openh264 patches --- qt6-qtwebengine.spec | 23 ++-- qtwebengine-blink-dlopen-h264.patch | 147 -------------------- qtwebengine-blink-system-openh264.patch | 79 +++++++++++ qtwebengine-ffmpeg-first_dts.patch | 168 ----------------------- qtwebengine-media-system-openh264.patch | 36 +++++ qtwebengine-webrtc-dlopen-h264.patch | 159 --------------------- qtwebengine-webrtc-system-openh264.patch | 71 ++++++++++ 7 files changed, 198 insertions(+), 485 deletions(-) delete mode 100644 qtwebengine-blink-dlopen-h264.patch create mode 100644 qtwebengine-blink-system-openh264.patch delete mode 100644 qtwebengine-ffmpeg-first_dts.patch create mode 100644 qtwebengine-media-system-openh264.patch delete mode 100644 qtwebengine-webrtc-dlopen-h264.patch create mode 100644 qtwebengine-webrtc-system-openh264.patch diff --git a/qt6-qtwebengine.spec b/qt6-qtwebengine.spec index 9cc07c2..cf20959 100644 --- a/qt6-qtwebengine.spec +++ b/qt6-qtwebengine.spec @@ -51,7 +51,7 @@ Summary: Qt6 - QtWebEngine components Name: qt6-qtwebengine Version: 6.7.0 -Release: 1%{?dist} +Release: 2%{?dist} # See LICENSE.GPL LICENSE.LGPL LGPL_EXCEPTION.txt, for details # See also http://qt-project.org/doc/qt-5.0/qtdoc/licensing.html @@ -78,18 +78,17 @@ Patch1: qtwebengine-SIOCGSTAMP.patch Patch2: qtwebengine-link-pipewire.patch # Fix/workaround FTBFS on aarch64 with newer glibc Patch3: qtwebengine-aarch64-new-stat.patch -Patch4: qtwebengine-ffmpeg-first_dts.patch # FTBS warning: elaborated-type-specifier for a scoped enum must not # use the 'class' keyword Patch50: qtwebengine-fix-build.patch ## Upstream patches: -# https://webrtc-review.googlesource.com/c/src/+/285464 -Patch100: qtwebengine-webrtc-dlopen-h264.patch ## Upstreamable patches: -Patch110: qtwebengine-blink-dlopen-h264.patch +Patch110: qtwebengine-webrtc-system-openh264.patch +Patch111: qtwebengine-blink-system-openh264.patch +Patch112: qtwebengine-media-system-openh264.patch # handled by qt6-srpm-macros, which defines %%qt6_qtwebengine_arches # FIXME use/update qt6_qtwebengine_arches @@ -194,6 +193,7 @@ BuildRequires: pkgconfig(vpx) >= 1.8.0 BuildRequires: pkgconfig(libavcodec) BuildRequires: pkgconfig(libavformat) BuildRequires: pkgconfig(libavutil) +BuildRequires: pkgconfig(openh264) %if 0%{?fedora} && 0%{?fedora} >= 39 BuildRequires: python3-zombie-imp @@ -374,17 +374,15 @@ popd %patch1 -p1 -b .SIOCGSTAMP %patch2 -p1 -b .link-pipewire %patch3 -p1 -b .aarch64-new-stat -%patch4 -p1 -b .qtwebengine-ffmpeg-first_dts %patch50 -p1 -b .fix-build.patch ## upstream patches -# FIXME: make sure it works and builds -# patch100 -p1 -b .webrtc-dlopen-h264 ## upstreamable patches -# FIXME: make sure it works and builds -#patch110 -p1 -b .blink-dlopen-h264 +%patch110 -p1 -b .webrtc-system-openh264 +%patch111 -p1 -b .blink-system-openh264 +%patch112 -p1 -b .media-system-openh264 # delete all "toolprefix = " lines from build/toolchain/linux/BUILD.gn, as we # never cross-compile in native Fedora RPMs, fixes ARM and aarch64 FTBFS @@ -438,7 +436,7 @@ export NINJA_PATH=%{__ninja} -DFEATURE_webengine_kerberos:BOOL=ON \ -DFEATURE_webengine_native_spellchecker:BOOL=OFF \ -DFEATURE_webengine_printing_and_pdf:BOOL=ON \ - -DFEATURE_webengine_proprietary_codecs:BOOL=OFF \ + -DFEATURE_webengine_proprietary_codecs:BOOL=ON \ -DFEATURE_webengine_system_icu:BOOL=%{?use_system_libicu} \ -DFEATURE_webengine_system_libevent:BOOL=ON \ -DFEATURE_webengine_system_ffmpeg:BOOL=ON \ @@ -668,6 +666,9 @@ done %endif %changelog +* Wed Apr 24 2024 Jan Grulich - 6.7.0-2 +- Rework and enable openh264 patches + * Wed Apr 03 2024 Jan Grulich - 6.7.0-1 - 6.7.0 diff --git a/qtwebengine-blink-dlopen-h264.patch b/qtwebengine-blink-dlopen-h264.patch deleted file mode 100644 index bb8316d..0000000 --- a/qtwebengine-blink-dlopen-h264.patch +++ /dev/null @@ -1,147 +0,0 @@ -diff --git a/src/3rdparty/chromium/third_party/blink/renderer/modules/mediarecorder/BUILD.gn b/src/3rdparty/chromium/third_party/blink/renderer/modules/mediarecorder/BUILD.gn -index 0be70ed4b..55c18c60d 100644 ---- a/src/3rdparty/chromium/third_party/blink/renderer/modules/mediarecorder/BUILD.gn -+++ b/src/3rdparty/chromium/third_party/blink/renderer/modules/mediarecorder/BUILD.gn -@@ -7,12 +7,23 @@ import("//media/media_options.gni") - import("//third_party/blink/renderer/modules/modules.gni") - import("//third_party/libaom/options.gni") - import("//third_party/webrtc/webrtc.gni") -+import("//tools/generate_stubs/rules.gni") - - buildflag_header("buildflags") { - header = "buildflags.h" - flags = [ "RTC_USE_H264=$rtc_use_h264" ] - } - -+if (rtc_use_h264 && rtc_dlopen_openh264) { -+ # When OpenH264 is not directly linked, use stubs to allow for dlopening of -+ # the binary. -+ generate_stubs("openh264_stubs") { -+ extra_header = "openh264_stub_header.fragment" -+ output_name = "openh264_stubs" -+ sigs = [ "openh264.sigs" ] -+ } -+} -+ - blink_modules_sources("mediarecorder") { - sources = [ - "audio_track_encoder.cc", -@@ -62,7 +73,12 @@ blink_modules_sources("mediarecorder") { - "h264_encoder.h", - ] - -- deps += [ "//third_party/openh264:encoder" ] -+ if (rtc_dlopen_openh264) { -+ defines = [ "BLINK_DLOPEN_OPENH264" ] -+ deps += [ ":openh264_stubs" ] -+ } else { -+ deps += [ "//third_party/openh264:encoder" ] -+ } - } - - if (enable_libaom) { -diff --git a/src/3rdparty/chromium/third_party/blink/renderer/modules/mediarecorder/h264_encoder.cc b/src/3rdparty/chromium/third_party/blink/renderer/modules/mediarecorder/h264_encoder.cc -index cf1126a20..b6b5ae8df 100644 ---- a/src/3rdparty/chromium/third_party/blink/renderer/modules/mediarecorder/h264_encoder.cc -+++ b/src/3rdparty/chromium/third_party/blink/renderer/modules/mediarecorder/h264_encoder.cc -@@ -28,9 +28,21 @@ - #include "third_party/openh264/src/codec/api/wels/codec_def.h" - #include "ui/gfx/geometry/size.h" - -+#if defined(BLINK_DLOPEN_OPENH264) -+#include "third_party/blink/renderer/modules/mediarecorder/openh264_stubs.h" -+#endif // defined(BLINK_DLOPEN_OPENH264) -+ - namespace blink { - namespace { - -+#if defined(BLINK_DLOPEN_OPENH264) -+using third_party_blink_renderer_modules_mediarecorder::InitializeStubs; -+using third_party_blink_renderer_modules_mediarecorder::kModuleOpenh264; -+using third_party_blink_renderer_modules_mediarecorder::StubPathMap; -+ -+static constexpr char kOpenH264Lib[] = "libopenh264.so.7"; -+#endif -+ - absl::optional ToOpenH264Profile( - media::VideoCodecProfile profile) { - static constexpr auto kProfileToEProfileIdc = -@@ -95,6 +107,13 @@ H264Encoder::H264Encoder( - bits_per_second), - codec_profile_(codec_profile) { - DCHECK_EQ(codec_profile_.codec_id, VideoTrackRecorder::CodecId::kH264); -+ -+#if defined(BLINK_DLOPEN_OPENH264) -+ StubPathMap paths; -+ paths[kModuleOpenh264].push_back(kOpenH264Lib); -+ -+ openh264_dlopened_ = InitializeStubs(paths); -+#endif - } - - // Needs to be defined here to combat a Windows linking issue. -@@ -189,6 +208,14 @@ void H264Encoder::EncodeFrame(scoped_refptr frame, - - bool H264Encoder::ConfigureEncoder(const gfx::Size& size) { - TRACE_EVENT0("media", "H264Encoder::ConfigureEncoder"); -+ -+#if defined(BLINK_DLOPEN_OPENH264) -+ if (!openh264_dlopened_) { -+ NOTREACHED() << "Failed to dlopen openh264"; -+ return false; -+ } -+#endif -+ - ISVCEncoder* temp_encoder = nullptr; - if (WelsCreateSVCEncoder(&temp_encoder) != 0) { - NOTREACHED() << "Failed to create OpenH264 encoder"; -diff --git a/src/3rdparty/chromium/third_party/blink/renderer/modules/mediarecorder/h264_encoder.h b/src/3rdparty/chromium/third_party/blink/renderer/modules/mediarecorder/h264_encoder.h -index ff80d42a7..1f3b2962a 100644 ---- a/src/3rdparty/chromium/third_party/blink/renderer/modules/mediarecorder/h264_encoder.h -+++ b/src/3rdparty/chromium/third_party/blink/renderer/modules/mediarecorder/h264_encoder.h -@@ -60,6 +60,8 @@ class MODULES_EXPORT H264Encoder final : public VideoTrackRecorder::Encoder { - // The |VideoFrame::timestamp()| of the first received frame. - base::TimeTicks first_frame_timestamp_; - base::WeakPtrFactory weak_factory_{this}; -+ -+ bool openh264_dlopened_ = false; - }; - - } // namespace blink -diff --git a/src/3rdparty/chromium/third_party/blink/renderer/modules/mediarecorder/openh264.sigs b/src/3rdparty/chromium/third_party/blink/renderer/modules/mediarecorder/openh264.sigs -new file mode 100644 -index 000000000..4924f8e9a ---- /dev/null -+++ b/src/3rdparty/chromium/third_party/blink/renderer/modules/mediarecorder/openh264.sigs -@@ -0,0 +1,14 @@ -+// Copyright 2022 The WebRTC project authors. All rights reserved. -+// Use of this source code is governed by a BSD-style license that can be -+// found in the LICENSE file. -+ -+//------------------------------------------------ -+// Functions from OpenH264. -+//------------------------------------------------ -+int WelsCreateSVCEncoder(ISVCEncoder **ppEncoder); -+void WelsDestroySVCEncoder(ISVCEncoder *pEncoder); -+int WelsGetDecoderCapability(SDecoderCapability *pDecCapability); -+long WelsCreateDecoder(ISVCDecoder **ppDecoder); -+void WelsDestroyDecoder(ISVCDecoder *pDecoder); -+OpenH264Version WelsGetCodecVersion(void); -+void WelsGetCodecVersionEx(OpenH264Version *pVersion); -diff --git a/src/3rdparty/chromium/third_party/blink/renderer/modules/mediarecorder/openh264_stub_header.fragment b/src/3rdparty/chromium/third_party/blink/renderer/modules/mediarecorder/openh264_stub_header.fragment -new file mode 100644 -index 000000000..9bc0a7cbe ---- /dev/null -+++ b/src/3rdparty/chromium/third_party/blink/renderer/modules/mediarecorder/openh264_stub_header.fragment -@@ -0,0 +1,11 @@ -+// The extra include header needed in the generated stub file for defining -+// various OpenH264 types. -+ -+extern "C" { -+ -+#include "third_party/openh264/src/codec/api/wels/codec_api.h" -+#include "third_party/openh264/src/codec/api/wels/codec_app_def.h" -+#include "third_party/openh264/src/codec/api/wels/codec_def.h" -+#include "third_party/openh264/src/codec/api/wels/codec_ver.h" -+ -+} diff --git a/qtwebengine-blink-system-openh264.patch b/qtwebengine-blink-system-openh264.patch new file mode 100644 index 0000000..2f102b1 --- /dev/null +++ b/qtwebengine-blink-system-openh264.patch @@ -0,0 +1,79 @@ +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/modules/mediarecorder/BUILD.gn b/src/3rdparty/chromium/third_party/blink/renderer/modules/mediarecorder/BUILD.gn +index 0be70ed4b..bec344dec 100644 +--- a/src/3rdparty/chromium/third_party/blink/renderer/modules/mediarecorder/BUILD.gn ++++ b/src/3rdparty/chromium/third_party/blink/renderer/modules/mediarecorder/BUILD.gn +@@ -3,6 +3,7 @@ + # found in the LICENSE file. + + import("//build/buildflag_header.gni") ++import("//build/config/linux/pkg_config.gni") + import("//media/media_options.gni") + import("//third_party/blink/renderer/modules/modules.gni") + import("//third_party/libaom/options.gni") +@@ -13,6 +14,14 @@ buildflag_header("buildflags") { + flags = [ "RTC_USE_H264=$rtc_use_h264" ] + } + ++if (rtc_use_h264 && rtc_use_system_openh264) { ++ pkg_config("openh264") { ++ packages = [ ++ "openh264", ++ ] ++ } ++} ++ + blink_modules_sources("mediarecorder") { + sources = [ + "audio_track_encoder.cc", +@@ -62,7 +71,11 @@ blink_modules_sources("mediarecorder") { + "h264_encoder.h", + ] + +- deps += [ "//third_party/openh264:encoder" ] ++ if (rtc_use_system_openh264) { ++ configs += [":openh264"] ++ } else { ++ deps += [ "//third_party/openh264:encoder" ] ++ } + } + + if (enable_libaom) { +diff --git a/src/3rdparty/chromium/third_party/blink/renderer/modules/webcodecs/BUILD.gn b/src/3rdparty/chromium/third_party/blink/renderer/modules/webcodecs/BUILD.gn +index 28205ad14..def86bc8f 100644 +--- a/src/3rdparty/chromium/third_party/blink/renderer/modules/webcodecs/BUILD.gn ++++ b/src/3rdparty/chromium/third_party/blink/renderer/modules/webcodecs/BUILD.gn +@@ -2,11 +2,21 @@ + # Use of this source code is governed by a BSD-style license that can be + # found in the LICENSE file. + ++import("//build/config/linux/pkg_config.gni") + import("//media/media_options.gni") + import("//third_party/blink/renderer/modules/modules.gni") + import("//third_party/libaom/options.gni") + import("//third_party/libprotobuf-mutator/fuzzable_proto_library.gni") + import("//third_party/protobuf/proto_library.gni") ++import("//third_party/webrtc/webrtc.gni") ++ ++if (rtc_use_h264 && rtc_use_system_openh264) { ++ pkg_config("openh264") { ++ packages = [ ++ "openh264", ++ ] ++ } ++} + + blink_modules_sources("webcodecs") { + sources = [ +@@ -115,7 +125,11 @@ blink_modules_sources("webcodecs") { + deps += [ "//third_party/libvpx" ] + } + if (media_use_openh264) { +- deps += [ "//third_party/openh264:encoder" ] ++ if (rtc_use_system_openh264) { ++ configs += [":openh264"] ++ } else { ++ deps += [ "//third_party/openh264:encoder" ] ++ } + } + if (is_fuchsia) { + deps += [ "//media/fuchsia/video" ] diff --git a/qtwebengine-ffmpeg-first_dts.patch b/qtwebengine-ffmpeg-first_dts.patch deleted file mode 100644 index 659b80b..0000000 --- a/qtwebengine-ffmpeg-first_dts.patch +++ /dev/null @@ -1,168 +0,0 @@ -diff --git a/configure.cmake b/configure.cmake -index a9f659533..ed49ff9c8 100644 ---- a/configure.cmake -+++ b/configure.cmake -@@ -198,25 +198,6 @@ int main(void) { - }" - ) - --qt_config_compile_test(libavformat -- LABEL "libavformat" -- LIBRARIES -- PkgConfig::FFMPEG -- CODE --" --#include \"libavformat/version.h\" --extern \"C\" { --#include \"libavformat/avformat.h\" --} --int main(void) { --#if LIBAVFORMAT_VERSION_MAJOR >= 59 -- AVStream stream; -- auto first_dts = av_stream_get_first_dts(&stream); --#endif -- return 0; --}" --) -- - #### Features - - qt_feature("qtwebengine-build" PUBLIC -@@ -554,11 +535,6 @@ add_check_for_support( - CONDITION NOT LINUX OR DBUS_FOUND - MESSAGE "Build requires dbus." - ) --add_check_for_support( -- MODULES QtWebEngine -- CONDITION NOT LINUX OR NOT QT_FEATURE_webengine_system_ffmpeg OR TEST_libavformat -- MESSAGE "Unmodified ffmpeg >= 5.0 is not supported." --) - # FIXME: This prevents non XCB Linux builds from building: - set(xcbSupport X11 LIBDRM XCOMPOSITE XCURSOR XRANDR XI XPROTO XSHMFENCE XTST) - foreach(xs ${xcbSupport}) -diff --git a/src/3rdparty/chromium/AUTHORS b/src/3rdparty/chromium/AUTHORS -index 5b604c40c..2e31a9fd5 100644 ---- a/src/3rdparty/chromium/AUTHORS -+++ b/src/3rdparty/chromium/AUTHORS -@@ -105,6 +105,7 @@ Andra Paraschiv - Andras Tokodi - Andreas Nazlidis - Andreas Papacharalampous -+Andreas Schneider - Andrei Borza - Andrei Parvu - Andrei Parvu -diff --git a/src/3rdparty/chromium/media/filters/ffmpeg_demuxer.cc b/src/3rdparty/chromium/media/filters/ffmpeg_demuxer.cc -index 138cea9d6..91c20058d 100644 ---- a/src/3rdparty/chromium/media/filters/ffmpeg_demuxer.cc -+++ b/src/3rdparty/chromium/media/filters/ffmpeg_demuxer.cc -@@ -59,7 +59,7 @@ namespace media { - - namespace { - --constexpr int64_t kInvalidPTSMarker = static_cast(0x8000000000000000); -+constexpr int64_t kRelativeTsBase = static_cast(0x7ffeffffffffffff); - - void SetAVStreamDiscard(AVStream* stream, AVDiscard discard) { - DCHECK(stream); -@@ -108,7 +108,7 @@ static base::TimeDelta FramesToTimeDelta(int frames, double sample_rate) { - sample_rate); - } - --static base::TimeDelta ExtractStartTime(AVStream* stream) { -+static base::TimeDelta ExtractStartTime(AVStream* stream, int64_t first_dts) { - // The default start time is zero. - base::TimeDelta start_time; - -@@ -118,12 +118,12 @@ static base::TimeDelta ExtractStartTime(AVStream* stream) { - - // Next try to use the first DTS value, for codecs where we know PTS == DTS - // (excludes all H26x codecs). The start time must be returned in PTS. -- if (av_stream_get_first_dts(stream) != kInvalidPTSMarker && -+ if (first_dts != AV_NOPTS_VALUE && - stream->codecpar->codec_id != AV_CODEC_ID_HEVC && - stream->codecpar->codec_id != AV_CODEC_ID_H264 && - stream->codecpar->codec_id != AV_CODEC_ID_MPEG4) { - const base::TimeDelta first_pts = -- ConvertFromTimeBase(stream->time_base, av_stream_get_first_dts(stream)); -+ ConvertFromTimeBase(stream->time_base, first_dts); - if (first_pts < start_time) - start_time = first_pts; - } -@@ -281,6 +281,7 @@ FFmpegDemuxerStream::FFmpegDemuxerStream( - fixup_negative_timestamps_(false), - fixup_chained_ogg_(false), - num_discarded_packet_warnings_(0), -+ first_dts_(AV_NOPTS_VALUE), - last_packet_pos_(AV_NOPTS_VALUE), - last_packet_dts_(AV_NOPTS_VALUE) { - DCHECK(demuxer_); -@@ -347,6 +348,11 @@ void FFmpegDemuxerStream::EnqueuePacket(ScopedAVPacket packet) { - int64_t packet_dts = - packet->dts == AV_NOPTS_VALUE ? packet->pts : packet->dts; - -+ if (first_dts_ == AV_NOPTS_VALUE && packet->dts != AV_NOPTS_VALUE && -+ last_packet_dts_ != AV_NOPTS_VALUE) { -+ first_dts_ = packet->dts - (last_packet_dts_ + kRelativeTsBase); -+ } -+ - // Chained ogg files have non-monotonically increasing position and time stamp - // values, which prevents us from using them to determine if a packet should - // be dropped. Since chained ogg is only allowed on single track audio only -@@ -683,6 +689,7 @@ void FFmpegDemuxerStream::FlushBuffers(bool preserve_packet_position) { - ResetBitstreamConverter(); - - if (!preserve_packet_position) { -+ first_dts_ = AV_NOPTS_VALUE; - last_packet_pos_ = AV_NOPTS_VALUE; - last_packet_dts_ = AV_NOPTS_VALUE; - } -@@ -1461,7 +1468,8 @@ void FFmpegDemuxer::OnFindStreamInfoDone(int result) { - - max_duration = std::max(max_duration, streams_[i]->duration()); - -- base::TimeDelta start_time = ExtractStartTime(stream); -+ base::TimeDelta start_time = -+ ExtractStartTime(stream, streams_[i]->first_dts()); - - // Note: This value is used for seeking, so we must take the true value and - // not the one possibly clamped to zero below. -@@ -1623,7 +1631,7 @@ FFmpegDemuxerStream* FFmpegDemuxer::FindStreamWithLowestStartTimestamp( - for (const auto& stream : streams_) { - if (!stream || stream->IsEnabled() != enabled) - continue; -- if (av_stream_get_first_dts(stream->av_stream()) == kInvalidPTSMarker) -+ if (stream->first_dts() == AV_NOPTS_VALUE) - continue; - if (!lowest_start_time_stream || - stream->start_time() < lowest_start_time_stream->start_time()) { -@@ -1644,7 +1652,7 @@ FFmpegDemuxerStream* FFmpegDemuxer::FindPreferredStreamForSeeking( - if (stream->type() != DemuxerStream::VIDEO) - continue; - -- if (av_stream_get_first_dts(stream->av_stream()) == kInvalidPTSMarker) -+ if (stream->first_dts() == AV_NOPTS_VALUE) - continue; - - if (!stream->IsEnabled()) -diff --git a/src/3rdparty/chromium/media/filters/ffmpeg_demuxer.h b/src/3rdparty/chromium/media/filters/ffmpeg_demuxer.h -index e234a2078..bada6eedd 100644 ---- a/src/3rdparty/chromium/media/filters/ffmpeg_demuxer.h -+++ b/src/3rdparty/chromium/media/filters/ffmpeg_demuxer.h -@@ -145,6 +145,8 @@ class MEDIA_EXPORT FFmpegDemuxerStream : public DemuxerStream { - base::TimeDelta start_time() const { return start_time_; } - void set_start_time(base::TimeDelta time) { start_time_ = time; } - -+ int64_t first_dts() const { return first_dts_; } -+ - private: - friend class FFmpegDemuxerTest; - -@@ -202,6 +204,7 @@ class MEDIA_EXPORT FFmpegDemuxerStream : public DemuxerStream { - bool fixup_chained_ogg_; - - int num_discarded_packet_warnings_; -+ int64_t first_dts_; - int64_t last_packet_pos_; - int64_t last_packet_dts_; - // Requested buffer count. The actual returned buffer count could be less diff --git a/qtwebengine-media-system-openh264.patch b/qtwebengine-media-system-openh264.patch new file mode 100644 index 0000000..36ffbea --- /dev/null +++ b/qtwebengine-media-system-openh264.patch @@ -0,0 +1,36 @@ +diff --git a/src/3rdparty/chromium/media/video/BUILD.gn b/src/3rdparty/chromium/media/video/BUILD.gn +index ef5c9c6c0..7e439852d 100644 +--- a/src/3rdparty/chromium/media/video/BUILD.gn ++++ b/src/3rdparty/chromium/media/video/BUILD.gn +@@ -2,7 +2,17 @@ + # Use of this source code is governed by a BSD-style license that can be + # found in the LICENSE file. + ++import("//build/config/linux/pkg_config.gni") + import("//media/media_options.gni") ++import("//third_party/webrtc/webrtc.gni") ++ ++if (rtc_use_h264 && rtc_use_system_openh264) { ++ pkg_config("openh264") { ++ packages = [ ++ "openh264", ++ ] ++ } ++} + + source_set("video") { + # Do not expand the visibility here without double-checking with OWNERS, this +@@ -114,7 +124,12 @@ source_set("video") { + "openh264_video_encoder.cc", + "openh264_video_encoder.h", + ] +- deps += [ "//third_party/openh264:encoder" ] ++ ++ if (rtc_use_system_openh264) { ++ configs += [":openh264"] ++ } else { ++ deps += [ "//third_party/openh264:encoder" ] ++ } + } + + if (is_apple) { diff --git a/qtwebengine-webrtc-dlopen-h264.patch b/qtwebengine-webrtc-dlopen-h264.patch deleted file mode 100644 index 3d7b60e..0000000 --- a/qtwebengine-webrtc-dlopen-h264.patch +++ /dev/null @@ -1,159 +0,0 @@ -diff --git a/src/3rdparty/chromium/third_party/webrtc/modules/video_coding/BUILD.gn b/src/3rdparty/chromium/third_party/webrtc/modules/video_coding/BUILD.gn -index 738d3d4ed..c9b1a3455 100644 ---- a/src/3rdparty/chromium/third_party/webrtc/modules/video_coding/BUILD.gn -+++ b/src/3rdparty/chromium/third_party/webrtc/modules/video_coding/BUILD.gn -@@ -7,6 +7,7 @@ - # be found in the AUTHORS file in the root of the source tree. - - import("//third_party/libaom/options.gni") -+import("//tools/generate_stubs/rules.gni") - import("../../webrtc.gni") - - rtc_library("encoded_frame") { -@@ -453,6 +454,17 @@ rtc_library("video_coding_utility") { - ] - } - -+if (rtc_use_h264 && rtc_dlopen_openh264) { -+ # When OpenH264 is not directly linked, use stubs to allow for dlopening of -+ # the binary. -+ generate_stubs("openh264_stubs") { -+ configs = [ "../../:common_config" ] -+ extra_header = "codecs/h264/openh264_stub_header.fragment" -+ output_name = "codecs/h264/openh264_stubs" -+ sigs = [ "codecs/h264/openh264.sigs" ] -+ } -+} -+ - rtc_library("webrtc_h264") { - visibility = [ "*" ] - sources = [ -@@ -499,10 +511,15 @@ rtc_library("webrtc_h264") { - ] - - if (rtc_use_h264) { -- deps += [ -- "//third_party/ffmpeg", -- "//third_party/openh264:encoder", -- ] -+ deps += [ "//third_party/ffmpeg" ] -+ -+ if (rtc_dlopen_openh264) { -+ defines = [ "WEBRTC_DLOPEN_OPENH264" ] -+ deps += [ ":openh264_stubs" ] -+ } else { -+ deps += [ "//third_party/openh264:encoder" ] -+ } -+ - if (!build_with_mozilla) { - deps += [ "../../media:rtc_media_base" ] - } -diff --git a/src/3rdparty/chromium/third_party/webrtc/modules/video_coding/codecs/h264/h264_encoder_impl.cc b/src/3rdparty/chromium/third_party/webrtc/modules/video_coding/codecs/h264/h264_encoder_impl.cc -index b6023ac50..228486870 100644 ---- a/src/3rdparty/chromium/third_party/webrtc/modules/video_coding/codecs/h264/h264_encoder_impl.cc -+++ b/src/3rdparty/chromium/third_party/webrtc/modules/video_coding/codecs/h264/h264_encoder_impl.cc -@@ -39,10 +39,22 @@ - #include "third_party/openh264/src/codec/api/wels/codec_def.h" - #include "third_party/openh264/src/codec/api/wels/codec_ver.h" - -+#if defined(WEBRTC_DLOPEN_OPENH264) -+#include "modules/video_coding/codecs/h264/openh264_stubs.h" -+#endif // defined(WEBRTC_DLOPEN_OPENH264) -+ - namespace webrtc { - - namespace { - -+#if defined(WEBRTC_DLOPEN_OPENH264) -+using third_party_webrtc_modules_video_coding_codecs_h264::InitializeStubs; -+using third_party_webrtc_modules_video_coding_codecs_h264::kModuleOpenh264; -+using third_party_webrtc_modules_video_coding_codecs_h264::StubPathMap; -+ -+static constexpr char kOpenH264Lib[] = "libopenh264.so.7"; -+#endif -+ - const bool kOpenH264EncoderDetailedLogging = false; - - // QP scaling thresholds. -@@ -198,6 +210,15 @@ H264EncoderImpl::~H264EncoderImpl() { - - int32_t H264EncoderImpl::InitEncode(const VideoCodec* inst, - const VideoEncoder::Settings& settings) { -+#if defined(WEBRTC_DLOPEN_OPENH264) -+ StubPathMap paths; -+ paths[kModuleOpenh264].push_back(kOpenH264Lib); -+ -+ static bool result = InitializeStubs(paths); -+ if (!result) -+ return WEBRTC_VIDEO_CODEC_UNINITIALIZED; -+#endif -+ - ReportInit(); - if (!inst || inst->codecType != kVideoCodecH264) { - ReportError(); -diff --git a/src/3rdparty/chromium/third_party/webrtc/modules/video_coding/codecs/h264/openh264.sigs b/src/3rdparty/chromium/third_party/webrtc/modules/video_coding/codecs/h264/openh264.sigs -new file mode 100644 -index 000000000..4924f8e9a ---- /dev/null -+++ b/src/3rdparty/chromium/third_party/webrtc/modules/video_coding/codecs/h264/openh264.sigs -@@ -0,0 +1,14 @@ -+// Copyright 2022 The WebRTC project authors. All rights reserved. -+// Use of this source code is governed by a BSD-style license that can be -+// found in the LICENSE file. -+ -+//------------------------------------------------ -+// Functions from OpenH264. -+//------------------------------------------------ -+int WelsCreateSVCEncoder(ISVCEncoder **ppEncoder); -+void WelsDestroySVCEncoder(ISVCEncoder *pEncoder); -+int WelsGetDecoderCapability(SDecoderCapability *pDecCapability); -+long WelsCreateDecoder(ISVCDecoder **ppDecoder); -+void WelsDestroyDecoder(ISVCDecoder *pDecoder); -+OpenH264Version WelsGetCodecVersion(void); -+void WelsGetCodecVersionEx(OpenH264Version *pVersion); -diff --git a/src/3rdparty/chromium/third_party/webrtc/modules/video_coding/codecs/h264/openh264_stub_header.fragment b/src/3rdparty/chromium/third_party/webrtc/modules/video_coding/codecs/h264/openh264_stub_header.fragment -new file mode 100644 -index 000000000..9bc0a7cbe ---- /dev/null -+++ b/src/3rdparty/chromium/third_party/webrtc/modules/video_coding/codecs/h264/openh264_stub_header.fragment -@@ -0,0 +1,11 @@ -+// The extra include header needed in the generated stub file for defining -+// various OpenH264 types. -+ -+extern "C" { -+ -+#include "third_party/openh264/src/codec/api/wels/codec_api.h" -+#include "third_party/openh264/src/codec/api/wels/codec_app_def.h" -+#include "third_party/openh264/src/codec/api/wels/codec_def.h" -+#include "third_party/openh264/src/codec/api/wels/codec_ver.h" -+ -+} -diff --git a/src/3rdparty/chromium/third_party/webrtc/webrtc.gni b/src/3rdparty/chromium/third_party/webrtc/webrtc.gni -index 82870d2db..e7782bd63 100644 ---- a/src/3rdparty/chromium/third_party/webrtc/webrtc.gni -+++ b/src/3rdparty/chromium/third_party/webrtc/webrtc.gni -@@ -192,6 +192,10 @@ declare_args() { - # Enable to use H265 - rtc_use_h265 = proprietary_codecs - -+ # Allow to use OpenH264 on systems where OpenH264 cannot be installed by -+ # default due to licensing, but can be installed later from other sources. -+ rtc_dlopen_openh264 = false -+ - # Enable this flag to make webrtc::Mutex be implemented by absl::Mutex. - rtc_use_absl_mutex = false - -diff --git a/src/core/CMakeLists.txt b/src/core/CMakeLists.txt -index e7432d0c7..e7df90dfa 100644 ---- a/src/core/CMakeLists.txt -+++ b/src/core/CMakeLists.txt -@@ -436,6 +436,9 @@ foreach(arch ${archs}) - use_udev=true - is_cfi=false - use_ozone=true -+ media_use_openh264=false -+ rtc_use_h264=true -+ rtc_dlopen_openh264=true - ozone_auto_platforms=false - ozone_platform_headless=false - ozone_platform_external=true diff --git a/qtwebengine-webrtc-system-openh264.patch b/qtwebengine-webrtc-system-openh264.patch new file mode 100644 index 0000000..963b9aa --- /dev/null +++ b/qtwebengine-webrtc-system-openh264.patch @@ -0,0 +1,71 @@ +diff --git a/src/3rdparty/chromium/third_party/webrtc/modules/video_coding/BUILD.gn b/src/3rdparty/chromium/third_party/webrtc/modules/video_coding/BUILD.gn +index 738d3d4ed..8344a19b0 100644 +--- a/src/3rdparty/chromium/third_party/webrtc/modules/video_coding/BUILD.gn ++++ b/src/3rdparty/chromium/third_party/webrtc/modules/video_coding/BUILD.gn +@@ -6,6 +6,7 @@ + # in the file PATENTS. All contributing project authors may + # be found in the AUTHORS file in the root of the source tree. + ++import("//build/config/linux/pkg_config.gni") + import("//third_party/libaom/options.gni") + import("../../webrtc.gni") + +@@ -453,6 +454,14 @@ rtc_library("video_coding_utility") { + ] + } + ++if (rtc_use_h264 && rtc_use_system_openh264) { ++ pkg_config("openh264") { ++ packages = [ ++ "openh264", ++ ] ++ } ++} ++ + rtc_library("webrtc_h264") { + visibility = [ "*" ] + sources = [ +@@ -501,8 +510,14 @@ rtc_library("webrtc_h264") { + if (rtc_use_h264) { + deps += [ + "//third_party/ffmpeg", +- "//third_party/openh264:encoder", + ] ++ ++ if (rtc_use_system_openh264) { ++ configs += [":openh264"] ++ } else { ++ deps += [ "//third_party/openh264:encoder" ] ++ } ++ + if (!build_with_mozilla) { + deps += [ "../../media:rtc_media_base" ] + } +diff --git a/src/3rdparty/chromium/third_party/webrtc/webrtc.gni b/src/3rdparty/chromium/third_party/webrtc/webrtc.gni +index 82870d2db..12231becc 100644 +--- a/src/3rdparty/chromium/third_party/webrtc/webrtc.gni ++++ b/src/3rdparty/chromium/third_party/webrtc/webrtc.gni +@@ -192,6 +192,9 @@ declare_args() { + # Enable to use H265 + rtc_use_h265 = proprietary_codecs + ++ # Allow to use system OpenH264 ++ rtc_use_system_openh264 = false ++ + # Enable this flag to make webrtc::Mutex be implemented by absl::Mutex. + rtc_use_absl_mutex = false + +diff --git a/src/core/CMakeLists.txt b/src/core/CMakeLists.txt +index e7432d0c7..394f05011 100644 +--- a/src/core/CMakeLists.txt ++++ b/src/core/CMakeLists.txt +@@ -436,6 +436,9 @@ foreach(arch ${archs}) + use_udev=true + is_cfi=false + use_ozone=true ++ media_use_openh264=true ++ rtc_use_h264=true ++ rtc_use_system_openh264=true + ozone_auto_platforms=false + ozone_platform_headless=false + ozone_platform_external=true From 6dfe4255091ea3e08f20da32ea38bf355dd50133 Mon Sep 17 00:00:00 2001 From: Jan Grulich Date: Wed, 22 May 2024 10:04:54 +0200 Subject: [PATCH 21/76] 6.7.1 --- .gitignore | 1 + qt6-qtwebengine.spec | 13 ++++++++----- sources | 2 +- 3 files changed, 10 insertions(+), 6 deletions(-) diff --git a/.gitignore b/.gitignore index f8a04ab..e8b2bd5 100644 --- a/.gitignore +++ b/.gitignore @@ -9,3 +9,4 @@ /qtwebengine-everywhere-src-6.6.1-clean.tar.xz /qtwebengine-everywhere-src-6.6.2-clean.tar.xz /qtwebengine-everywhere-src-6.7.0-clean.tar.xz +/qtwebengine-everywhere-src-6.7.1-clean.tar.xz diff --git a/qt6-qtwebengine.spec b/qt6-qtwebengine.spec index cf20959..c737996 100644 --- a/qt6-qtwebengine.spec +++ b/qt6-qtwebengine.spec @@ -50,8 +50,8 @@ Summary: Qt6 - QtWebEngine components Name: qt6-qtwebengine -Version: 6.7.0 -Release: 2%{?dist} +Version: 6.7.1 +Release: 1%{?dist} # See LICENSE.GPL LICENSE.LGPL LGPL_EXCEPTION.txt, for details # See also http://qt-project.org/doc/qt-5.0/qtdoc/licensing.html @@ -129,7 +129,7 @@ BuildRequires: libicu-devel >= 68 %endif BuildRequires: libatomic BuildRequires: libjpeg-devel -BuildRequires: nodejs +BuildRequires: nodejs20 %if 0%{?use_system_re2} BuildRequires: re2-devel Provides: bundled(re2) @@ -219,7 +219,7 @@ Requires: qt6-qtpdf%{?_isa} = %{version}-%{release} # Of course, Chromium itself is bundled. It cannot be unbundled because it is # not a library, but forked (modified) application code. -Provides: bundled(chromium) = 102.0.5005.177 +Provides: bundled(chromium) = 118.0.5993.220 # Bundled in src/3rdparty/chromium/third_party: # Check src/3rdparty/chromium/third_party/*/README.chromium for version numbers, @@ -309,7 +309,7 @@ Provides: bundled(nsURLParsers) # Bundled outside of third_party, apparently not considered as such by Chromium: Provides: bundled(mojo) # see src/3rdparty/chromium/v8/include/v8_version.h for the version number -Provides: bundled(v8) = 10.2.154.16 +Provides: bundled(v8) = 11.8.172.18 # bundled by v8 (src/3rdparty/chromium/v8/src/base/ieee754.cc) # The version number is 5.3, the last version that upstream released, years ago: # http://www.netlib.org/fdlibm/readme @@ -666,6 +666,9 @@ done %endif %changelog +* Wed May 22 2024 Jan Grulich - 6.7.1-1 +- 6.7.1 + * Wed Apr 24 2024 Jan Grulich - 6.7.0-2 - Rework and enable openh264 patches diff --git a/sources b/sources index 1f95fbb..c3fee8b 100644 --- a/sources +++ b/sources @@ -1,2 +1,2 @@ -SHA512 (qtwebengine-everywhere-src-6.7.0-clean.tar.xz) = 81f0cd771bc4e6027d32a32c88e47908e59a58997d106899a4acb2b1b917806f7ca4d55d6055578b595b8dc2c7af1f07d0236a10c436901c8a2486f9ea404e17 +SHA512 (qtwebengine-everywhere-src-6.7.1-clean.tar.xz) = a504fd84a783b3b3b60b516c184a15ae801a8282e14a26c82895056c9b9c12ff70381b660cc4dd5a72f12401b02688513d14994dcc0627d97452c55fb3088e49 SHA512 (pulseaudio-12.2-headers.tar.gz) = a5a9bcbb16030b3bc83cc0cc8f5e7f90e0723d3e83258a5c77eacb32eaa267118a73fa7814fbcc99a24e4907916a2b371ebb6dedc4f45541c3acf6c834fd35be From b262abe29a69e188c13cbe6728c13b042fc9f8fe Mon Sep 17 00:00:00 2001 From: Software Management Team Date: Thu, 30 May 2024 12:46:49 +0200 Subject: [PATCH 22/76] Eliminate use of obsolete %patchN syntax (#2283636) --- qt6-qtwebengine.spec | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/qt6-qtwebengine.spec b/qt6-qtwebengine.spec index c737996..067fb61 100644 --- a/qt6-qtwebengine.spec +++ b/qt6-qtwebengine.spec @@ -371,18 +371,18 @@ mv pulse src/3rdparty/chromium/ pushd src/3rdparty/chromium popd -%patch1 -p1 -b .SIOCGSTAMP -%patch2 -p1 -b .link-pipewire -%patch3 -p1 -b .aarch64-new-stat +%patch -P1 -p1 -b .SIOCGSTAMP +%patch -P2 -p1 -b .link-pipewire +%patch -P3 -p1 -b .aarch64-new-stat -%patch50 -p1 -b .fix-build.patch +%patch -P50 -p1 -b .fix-build.patch ## upstream patches ## upstreamable patches -%patch110 -p1 -b .webrtc-system-openh264 -%patch111 -p1 -b .blink-system-openh264 -%patch112 -p1 -b .media-system-openh264 +%patch -P110 -p1 -b .webrtc-system-openh264 +%patch -P111 -p1 -b .blink-system-openh264 +%patch -P112 -p1 -b .media-system-openh264 # delete all "toolprefix = " lines from build/toolchain/linux/BUILD.gn, as we # never cross-compile in native Fedora RPMs, fixes ARM and aarch64 FTBFS From 90549526891ebe8a5f62535f5713d0885fca5b67 Mon Sep 17 00:00:00 2001 From: Jan Grulich Date: Tue, 2 Jul 2024 06:48:27 +0200 Subject: [PATCH 23/76] 6.7.2 --- .gitignore | 1 + qt6-qtwebengine.spec | 5 ++++- sources | 2 +- 3 files changed, 6 insertions(+), 2 deletions(-) diff --git a/.gitignore b/.gitignore index e8b2bd5..69a1a2b 100644 --- a/.gitignore +++ b/.gitignore @@ -10,3 +10,4 @@ /qtwebengine-everywhere-src-6.6.2-clean.tar.xz /qtwebengine-everywhere-src-6.7.0-clean.tar.xz /qtwebengine-everywhere-src-6.7.1-clean.tar.xz +/qtwebengine-everywhere-src-6.7.2-clean.tar.xz diff --git a/qt6-qtwebengine.spec b/qt6-qtwebengine.spec index 067fb61..3b40e71 100644 --- a/qt6-qtwebengine.spec +++ b/qt6-qtwebengine.spec @@ -50,7 +50,7 @@ Summary: Qt6 - QtWebEngine components Name: qt6-qtwebengine -Version: 6.7.1 +Version: 6.7.2 Release: 1%{?dist} # See LICENSE.GPL LICENSE.LGPL LGPL_EXCEPTION.txt, for details @@ -666,6 +666,9 @@ done %endif %changelog +* Tue Jul 02 2024 Jan Grulich - 6.7.2-1 +- 6.7.2 + * Wed May 22 2024 Jan Grulich - 6.7.1-1 - 6.7.1 diff --git a/sources b/sources index c3fee8b..898ad3f 100644 --- a/sources +++ b/sources @@ -1,2 +1,2 @@ -SHA512 (qtwebengine-everywhere-src-6.7.1-clean.tar.xz) = a504fd84a783b3b3b60b516c184a15ae801a8282e14a26c82895056c9b9c12ff70381b660cc4dd5a72f12401b02688513d14994dcc0627d97452c55fb3088e49 +SHA512 (qtwebengine-everywhere-src-6.7.2-clean.tar.xz) = 86fb7bc6d791c5d06d9c8918d294d53c31b1c7c619b546712b9ce0d77ceb0e21d59e89f0f0fc9c6f4aedfc391cc6e2e7a57e06d297da0f76e270d199f1320c4c SHA512 (pulseaudio-12.2-headers.tar.gz) = a5a9bcbb16030b3bc83cc0cc8f5e7f90e0723d3e83258a5c77eacb32eaa267118a73fa7814fbcc99a24e4907916a2b371ebb6dedc4f45541c3acf6c834fd35be From 86a4c904f6e50ed444254c03ff38839c34ff0131 Mon Sep 17 00:00:00 2001 From: Jan Grulich Date: Tue, 2 Jul 2024 12:14:22 +0200 Subject: [PATCH 24/76] Update BR: nodejs --- qt6-qtwebengine.spec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/qt6-qtwebengine.spec b/qt6-qtwebengine.spec index 3b40e71..25087e0 100644 --- a/qt6-qtwebengine.spec +++ b/qt6-qtwebengine.spec @@ -129,7 +129,7 @@ BuildRequires: libicu-devel >= 68 %endif BuildRequires: libatomic BuildRequires: libjpeg-devel -BuildRequires: nodejs20 +BuildRequires: nodejs %if 0%{?use_system_re2} BuildRequires: re2-devel Provides: bundled(re2) From 9e8ac77e52e185c4e7a8022b02a29e91c9003090 Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Fri, 19 Jul 2024 17:59:35 +0000 Subject: [PATCH 25/76] Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild --- qt6-qtwebengine.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/qt6-qtwebengine.spec b/qt6-qtwebengine.spec index 25087e0..fe7cf22 100644 --- a/qt6-qtwebengine.spec +++ b/qt6-qtwebengine.spec @@ -51,7 +51,7 @@ Summary: Qt6 - QtWebEngine components Name: qt6-qtwebengine Version: 6.7.2 -Release: 1%{?dist} +Release: 2%{?dist} # See LICENSE.GPL LICENSE.LGPL LGPL_EXCEPTION.txt, for details # See also http://qt-project.org/doc/qt-5.0/qtdoc/licensing.html @@ -666,6 +666,9 @@ done %endif %changelog +* Fri Jul 19 2024 Fedora Release Engineering - 6.7.2-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild + * Tue Jul 02 2024 Jan Grulich - 6.7.2-1 - 6.7.2 From 864539f2140a11fda9bf3ef878a2e627f04f0b2d Mon Sep 17 00:00:00 2001 From: Jan Grulich Date: Tue, 6 Aug 2024 08:03:51 +0200 Subject: [PATCH 26/76] Fix building with system ffmpeg --- qt6-qtwebengine.spec | 8 +- ...gine-fix-building-with-system-ffmpeg.patch | 408 ++++++++++++++++++ 2 files changed, 415 insertions(+), 1 deletion(-) create mode 100644 qtwebengine-fix-building-with-system-ffmpeg.patch diff --git a/qt6-qtwebengine.spec b/qt6-qtwebengine.spec index fe7cf22..ca84206 100644 --- a/qt6-qtwebengine.spec +++ b/qt6-qtwebengine.spec @@ -51,7 +51,7 @@ Summary: Qt6 - QtWebEngine components Name: qt6-qtwebengine Version: 6.7.2 -Release: 2%{?dist} +Release: 3%{?dist} # See LICENSE.GPL LICENSE.LGPL LGPL_EXCEPTION.txt, for details # See also http://qt-project.org/doc/qt-5.0/qtdoc/licensing.html @@ -84,6 +84,7 @@ Patch3: qtwebengine-aarch64-new-stat.patch Patch50: qtwebengine-fix-build.patch ## Upstream patches: +Patch80: qtwebengine-fix-building-with-system-ffmpeg.patch ## Upstreamable patches: Patch110: qtwebengine-webrtc-system-openh264.patch @@ -375,6 +376,8 @@ popd %patch -P2 -p1 -b .link-pipewire %patch -P3 -p1 -b .aarch64-new-stat +%patch -P80 -p1 -b .fix-building-with-system-ffmpeg + %patch -P50 -p1 -b .fix-build.patch ## upstream patches @@ -666,6 +669,9 @@ done %endif %changelog +* Mon Aug 05 2024 Jan Grulich - 6.7.2-3 +- Fix building with system ffmpeg + * Fri Jul 19 2024 Fedora Release Engineering - 6.7.2-2 - Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild diff --git a/qtwebengine-fix-building-with-system-ffmpeg.patch b/qtwebengine-fix-building-with-system-ffmpeg.patch new file mode 100644 index 0000000..3576bf0 --- /dev/null +++ b/qtwebengine-fix-building-with-system-ffmpeg.patch @@ -0,0 +1,408 @@ +From b30e3535717e1cb970c6e4095b412a2c5fdbce40 Mon Sep 17 00:00:00 2001 +From: Martin Negyokru +Date: Thu, 27 Jun 2024 12:29:29 +0200 +Subject: [PATCH] Fixup: Fix building with system ffmpeg + +Add support for FFmpeg 7 and 6.1. +FFmpeg 6.0 and below need bigger changes. + +Cleanup old code, use guards instead of direct changes. + +Fixes: QTBUG-125227 +Change-Id: I6c8293f5eb8b83de01977a504801b013571f7c2b +Reviewed-on: https://codereview.qt-project.org/c/qt/qtwebengine-src/3rdparty/chromium/+/575610 +Reviewed-by: Allan Sandfeld Jensen +--- + +diff --git a/src/3rdparty/chromium/media/cdm/library_cdm/clear_key_cdm/ffmpeg_cdm_audio_decoder.cc b/src/3rdparty/chromium/media/cdm/library_cdm/clear_key_cdm/ffmpeg_cdm_audio_decoder.cc +index c535d2b4d..9646e7043 100644 +--- a/src/3rdparty/chromium/media/cdm/library_cdm/clear_key_cdm/ffmpeg_cdm_audio_decoder.cc ++++ b/src/3rdparty/chromium/media/cdm/library_cdm/clear_key_cdm/ffmpeg_cdm_audio_decoder.cc +@@ -74,7 +74,11 @@ void CdmAudioDecoderConfigToAVCodecContext( + codec_context->sample_fmt = AV_SAMPLE_FMT_NONE; + } + ++#if LIBAVCODEC_VERSION_MAJOR > 60 ++ codec_context->ch_layout.nb_channels = config.channel_count; ++#else + codec_context->channels = config.channel_count; ++#endif + codec_context->sample_rate = config.samples_per_second; + + if (config.extra_data) { +@@ -124,8 +128,13 @@ void CopySamples(cdm::AudioFormat cdm_format, + case cdm::kAudioFormatPlanarS16: + case cdm::kAudioFormatPlanarF32: { + const int decoded_size_per_channel = ++#if LIBAVCODEC_VERSION_MAJOR > 60 ++ decoded_audio_size / av_frame.ch_layout.nb_channels; ++ for (int i = 0; i < av_frame.ch_layout.nb_channels; ++i) { ++#else + decoded_audio_size / av_frame.channels; + for (int i = 0; i < av_frame.channels; ++i) { ++#endif + memcpy(output_buffer, av_frame.extended_data[i], + decoded_size_per_channel); + output_buffer += decoded_size_per_channel; +@@ -185,13 +194,22 @@ bool FFmpegCdmAudioDecoder::Initialize( + // Success! + decoding_loop_ = std::make_unique(codec_context_.get()); + samples_per_second_ = config.samples_per_second; +- bytes_per_frame_ = codec_context_->channels * config.bits_per_channel / 8; ++ bytes_per_frame_ = ++#if LIBAVCODEC_VERSION_MAJOR > 60 ++ codec_context_->ch_layout.nb_channels * config.bits_per_channel / 8; ++#else ++ codec_context_->channels * config.bits_per_channel / 8; ++#endif + output_timestamp_helper_ = + std::make_unique(config.samples_per_second); + is_initialized_ = true; + + // Store initial values to guard against midstream configuration changes. ++#if LIBAVCODEC_VERSION_MAJOR > 60 ++ channels_ = codec_context_->ch_layout.nb_channels; ++#else + channels_ = codec_context_->channels; ++#endif + av_sample_format_ = codec_context_->sample_fmt; + + return true; +@@ -291,18 +309,31 @@ cdm::Status FFmpegCdmAudioDecoder::DecodeBuffer( + for (auto& frame : audio_frames) { + int decoded_audio_size = 0; + if (frame->sample_rate != samples_per_second_ || +- frame->channels != channels_ || frame->format != av_sample_format_) { +- DLOG(ERROR) << "Unsupported midstream configuration change!" ++#if LIBAVCODEC_VERSION_MAJOR > 60 ++ frame->ch_layout.nb_channels != channels_ || ++#else ++ frame->channels != channels_ || ++#endif ++ frame->format != av_sample_format_) { ++ DLOG(ERROR) << "Unsupported midstream configuration change!" + << " Sample Rate: " << frame->sample_rate << " vs " + << samples_per_second_ ++#if LIBAVCODEC_VERSION_MAJOR > 60 + << ", Channels: " << frame->ch_layout.nb_channels << " vs " ++#else ++ << ", Channels: " << frame->channels << " vs " ++#endif + << channels_ << ", Sample Format: " << frame->format << " vs " + << av_sample_format_; + return cdm::kDecodeError; + } + + decoded_audio_size = av_samples_get_buffer_size( +- nullptr, codec_context_->channels, frame->nb_samples, ++#if LIBAVCODEC_VERSION_MAJOR > 60 ++ nullptr, codec_context_->ch_layout.nb_channels, frame->nb_samples, ++#endif ++ nullptr, codec_context_->channels, frame->nb_samples, ++#else + codec_context_->sample_fmt, 1); + if (!decoded_audio_size) + continue; +@@ -322,7 +353,11 @@ bool FFmpegCdmAudioDecoder::OnNewFrame( + std::vector>* audio_frames, + AVFrame* frame) { + *total_size += av_samples_get_buffer_size( ++#if LIBAVCODEC_VERSION_MAJOR > 60 ++ nullptr, codec_context_->ch_layout.nb_channels, frame->nb_samples, ++#else + nullptr, codec_context_->channels, frame->nb_samples, ++#endif + codec_context_->sample_fmt, 1); + audio_frames->emplace_back(av_frame_clone(frame)); + return true; +diff --git a/src/3rdparty/chromium/media/ffmpeg/ffmpeg_common.cc b/src/3rdparty/chromium/media/ffmpeg/ffmpeg_common.cc +index 266535510..0e6cee9e8 100644 +--- a/src/3rdparty/chromium/media/ffmpeg/ffmpeg_common.cc ++++ b/src/3rdparty/chromium/media/ffmpeg/ffmpeg_common.cc +@@ -336,10 +336,20 @@ bool AVCodecContextToAudioDecoderConfig(const AVCodecContext* codec_context, + codec_context->sample_fmt, codec_context->codec_id); + + ChannelLayout channel_layout = ++#if LIBAVCODEC_VERSION_MAJOR > 60 ++ codec_context->ch_layout.nb_channels > 8 ++#else + codec_context->channels > 8 ++#endif + ? CHANNEL_LAYOUT_DISCRETE +- : ChannelLayoutToChromeChannelLayout(codec_context->channel_layout, +- codec_context->channels); ++ : ChannelLayoutToChromeChannelLayout( ++#if LIBAVCODEC_VERSION_MAJOR > 60 ++ codec_context->ch_layout.u.mask, ++ codec_context->ch_layout.nb_channels); ++#else ++ codec_context->channel_layout, ++ codec_context->channels); ++#endif + + switch (codec) { + // For AC3/EAC3 we enable only demuxing, but not decoding, so FFmpeg does +@@ -391,7 +401,11 @@ bool AVCodecContextToAudioDecoderConfig(const AVCodecContext* codec_context, + extra_data, encryption_scheme, seek_preroll, + codec_context->delay); + if (channel_layout == CHANNEL_LAYOUT_DISCRETE) ++#if LIBAVCODEC_VERSION_MAJOR > 60 ++ config->SetChannelsForDiscrete(codec_context->ch_layout.nb_channels); ++#else + config->SetChannelsForDiscrete(codec_context->channels); ++#endif + + #if BUILDFLAG(ENABLE_PLATFORM_AC3_EAC3_AUDIO) + // These are bitstream formats unknown to ffmpeg, so they don't have +@@ -460,7 +474,11 @@ void AudioDecoderConfigToAVCodecContext(const AudioDecoderConfig& config, + + // TODO(scherkus): should we set |channel_layout|? I'm not sure if FFmpeg uses + // said information to decode. ++#if LIBAVCODEC_VERSION_MAJOR > 60 ++ codec_context->ch_layout.nb_channels = config.channels(); ++#else + codec_context->channels = config.channels(); ++#endif + codec_context->sample_rate = config.samples_per_second(); + + if (config.extra_data().empty()) { +diff --git a/src/3rdparty/chromium/media/filters/audio_file_reader.cc b/src/3rdparty/chromium/media/filters/audio_file_reader.cc +index 777eabc16..4072ffb5c 100644 +--- a/src/3rdparty/chromium/media/filters/audio_file_reader.cc ++++ b/src/3rdparty/chromium/media/filters/audio_file_reader.cc +@@ -113,14 +113,24 @@ bool AudioFileReader::OpenDecoder() { + + // Verify the channel layout is supported by Chrome. Acts as a sanity check + // against invalid files. See http://crbug.com/171962 +- if (ChannelLayoutToChromeChannelLayout(codec_context_->channel_layout, +- codec_context_->channels) == ++ if (ChannelLayoutToChromeChannelLayout( ++#if LIBAVCODEC_VERSION_MAJOR > 60 ++ codec_context_->ch_layout.u.mask, ++ codec_context_->ch_layout.nb_channels) == ++#else ++ codec_context_->channel_layout, ++ codec_context_->channels) == ++#endif + CHANNEL_LAYOUT_UNSUPPORTED) { + return false; + } + + // Store initial values to guard against midstream configuration changes. ++#if LIBAVCODEC_VERSION_MAJOR > 60 ++ channels_ = codec_context_->ch_layout.nb_channels; ++#else + channels_ = codec_context_->channels; ++#endif + audio_codec_ = CodecIDToAudioCodec(codec_context_->codec_id); + sample_rate_ = codec_context_->sample_rate; + av_sample_format_ = codec_context_->sample_fmt; +@@ -223,7 +233,11 @@ bool AudioFileReader::OnNewFrame( + if (frames_read < 0) + return false; + ++#if LIBAVCODEC_VERSION_MAJOR > 60 ++ const int channels = frame->ch_layout.nb_channels; ++#else + const int channels = frame->channels; ++#endif + if (frame->sample_rate != sample_rate_ || channels != channels_ || + frame->format != av_sample_format_) { + DLOG(ERROR) << "Unsupported midstream configuration change!" +@@ -242,18 +256,18 @@ bool AudioFileReader::OnNewFrame( + // silence from being output. In the case where we are also discarding some + // portion of the packet (as indicated by a negative pts), we further want to + // adjust the duration downward by however much exists before zero. +-#if BUILDFLAG(USE_SYSTEM_FFMPEG) +- if (audio_codec_ == AudioCodec::kAAC && frame->pkt_duration) { +-#else ++#if LIBAVCODEC_VERSION_MAJOR > 60 + if (audio_codec_ == AudioCodec::kAAC && frame->duration) { +-#endif // BUILDFLAG(USE_SYSTEM_FFMPEG) ++#else ++ if (audio_codec_ == AudioCodec::kAAC && frame->pkt_duration) { ++#endif + const base::TimeDelta pkt_duration = ConvertFromTimeBase( + glue_->format_context()->streams[stream_index_]->time_base, +-#if BUILDFLAG(USE_SYSTEM_FFMPEG) +- frame->pkt_duration + std::min(static_cast(0), frame->pts)); +-#else ++#if LIBAVCODEC_VERSION_MAJOR > 60 + frame->duration + std::min(static_cast(0), frame->pts)); +-#endif // BUILDFLAG(USE_SYSTEM_FFMPEG) ++#else ++ frame->pkt_duration + std::min(static_cast(0), frame->pts)); ++#endif + const base::TimeDelta frame_duration = + base::Seconds(frames_read / static_cast(sample_rate_)); + +diff --git a/src/3rdparty/chromium/media/filters/ffmpeg_aac_bitstream_converter.cc b/src/3rdparty/chromium/media/filters/ffmpeg_aac_bitstream_converter.cc +index 76b41aa6a..7bd3857c7 100644 +--- a/src/3rdparty/chromium/media/filters/ffmpeg_aac_bitstream_converter.cc ++++ b/src/3rdparty/chromium/media/filters/ffmpeg_aac_bitstream_converter.cc +@@ -195,14 +195,23 @@ bool FFmpegAACBitstreamConverter::ConvertPacket(AVPacket* packet) { + if (!header_generated_ || codec_ != stream_codec_parameters_->codec_id || + audio_profile_ != stream_codec_parameters_->profile || + sample_rate_index_ != sample_rate_index || +- channel_configuration_ != stream_codec_parameters_->channels || ++ channel_configuration_ != ++#if LIBAVCODEC_VERSION_MAJOR > 60 ++ stream_codec_parameters_->ch_layout.nb_channels || ++#else ++ stream_codec_parameters_->channels || ++#endif + frame_length_ != header_plus_packet_size) { + header_generated_ = + GenerateAdtsHeader(stream_codec_parameters_->codec_id, + 0, // layer + stream_codec_parameters_->profile, sample_rate_index, + 0, // private stream ++#if LIBAVCODEC_VERSION_MAJOR > 60 ++ stream_codec_parameters_->ch_layout.nb_channels, ++#else + stream_codec_parameters_->channels, ++#endif + 0, // originality + 0, // home + 0, // copyrighted_stream +@@ -214,7 +223,11 @@ bool FFmpegAACBitstreamConverter::ConvertPacket(AVPacket* packet) { + codec_ = stream_codec_parameters_->codec_id; + audio_profile_ = stream_codec_parameters_->profile; + sample_rate_index_ = sample_rate_index; ++#if LIBAVCODEC_VERSION_MAJOR > 60 ++ channel_configuration_ = stream_codec_parameters_->ch_layout.nb_channels; ++#else + channel_configuration_ = stream_codec_parameters_->channels; ++#endif + frame_length_ = header_plus_packet_size; + } + +diff --git a/src/3rdparty/chromium/media/filters/ffmpeg_audio_decoder.cc b/src/3rdparty/chromium/media/filters/ffmpeg_audio_decoder.cc +index bf3ed002a..87f25c802 100644 +--- a/src/3rdparty/chromium/media/filters/ffmpeg_audio_decoder.cc ++++ b/src/3rdparty/chromium/media/filters/ffmpeg_audio_decoder.cc +@@ -29,7 +29,11 @@ namespace media { + + // Return the number of channels from the data in |frame|. + static inline int DetermineChannels(AVFrame* frame) { ++#if LIBAVCODEC_VERSION_MAJOR > 60 ++ return frame->ch_layout.nb_channels; ++#else + return frame->channels; ++#endif + } + + // Called by FFmpeg's allocation routine to allocate a buffer. Uses +@@ -243,7 +247,11 @@ bool FFmpegAudioDecoder::OnNewFrame(const DecoderBuffer& buffer, + // Translate unsupported into discrete layouts for discrete configurations; + // ffmpeg does not have a labeled discrete configuration internally. + ChannelLayout channel_layout = ChannelLayoutToChromeChannelLayout( ++#if LIBAVCODEC_VERSION_MAJOR > 60 ++ codec_context_->ch_layout.u.mask, codec_context_->ch_layout.nb_channels); ++#else + codec_context_->channel_layout, codec_context_->channels); ++#endif + if (channel_layout == CHANNEL_LAYOUT_UNSUPPORTED && + config_.channel_layout() == CHANNEL_LAYOUT_DISCRETE) { + channel_layout = CHANNEL_LAYOUT_DISCRETE; +@@ -360,11 +368,19 @@ bool FFmpegAudioDecoder::ConfigureDecoder(const AudioDecoderConfig& config) { + // Success! + av_sample_format_ = codec_context_->sample_fmt; + ++#if LIBAVCODEC_VERSION_MAJOR > 60 ++ if (codec_context_->ch_layout.nb_channels != config.channels()) { ++#else + if (codec_context_->channels != config.channels()) { ++#endif + MEDIA_LOG(ERROR, media_log_) + << "Audio configuration specified " << config.channels() + << " channels, but FFmpeg thinks the file contains " ++#if LIBAVCODEC_VERSION_MAJOR > 60 ++ << codec_context_->ch_layout.nb_channels << " channels"; ++#else + << codec_context_->channels << " channels"; ++#endif + ReleaseFFmpegResources(); + state_ = DecoderState::kUninitialized; + return false; +@@ -415,7 +431,11 @@ int FFmpegAudioDecoder::GetAudioBuffer(struct AVCodecContext* s, + if (frame->nb_samples <= 0) + return AVERROR(EINVAL); + ++#if LIBAVCODEC_VERSION_MAJOR > 60 ++ if (s->ch_layout.nb_channels != channels) { ++#else + if (s->channels != channels) { ++#endif + DLOG(ERROR) << "AVCodecContext and AVFrame disagree on channel count."; + return AVERROR(EINVAL); + } +@@ -448,7 +468,13 @@ int FFmpegAudioDecoder::GetAudioBuffer(struct AVCodecContext* s, + ChannelLayout channel_layout = + config_.channel_layout() == CHANNEL_LAYOUT_DISCRETE + ? CHANNEL_LAYOUT_DISCRETE +- : ChannelLayoutToChromeChannelLayout(s->channel_layout, s->channels); ++#if LIBAVCODEC_VERSION_MAJOR > 60 ++ : ChannelLayoutToChromeChannelLayout(s->ch_layout.u.mask, ++ s->ch_layout.nb_channels); ++#else ++ : ChannelLayoutToChromeChannelLayout(s->channel_layout, ++ s->channels); ++#endif + + if (channel_layout == CHANNEL_LAYOUT_UNSUPPORTED) { + DLOG(ERROR) << "Unsupported channel layout."; +diff --git a/src/3rdparty/chromium/media/filters/ffmpeg_demuxer.cc b/src/3rdparty/chromium/media/filters/ffmpeg_demuxer.cc +index 138cea9d6..7714ff3bd 100644 +--- a/src/3rdparty/chromium/media/filters/ffmpeg_demuxer.cc ++++ b/src/3rdparty/chromium/media/filters/ffmpeg_demuxer.cc +@@ -46,10 +46,8 @@ + #include "media/formats/mpeg/mpeg1_audio_stream_parser.h" + #include "media/formats/webm/webm_crypto_helpers.h" + #include "media/media_buildflags.h" +-#if !BUILDFLAG(USE_SYSTEM_FFMPEG) + #include "third_party/ffmpeg/ffmpeg_features.h" + #include "third_party/ffmpeg/libavcodec/packet.h" +-#endif // !BUILDFLAG(USE_SYSTEM_FFMPEG) + + #if BUILDFLAG(ENABLE_PLATFORM_HEVC) + #include "media/filters/ffmpeg_h265_to_annex_b_bitstream_converter.h" +@@ -77,11 +75,6 @@ int AVSeekFrame(AVFormatContext* s, int stream_index, int64_t timestamp) { + return av_seek_frame(s, stream_index, timestamp, 0); + } + +-#if LIBAVCODEC_VERSION_MAJOR < 59 +-auto av_stream_get_first_dts(AVStream* stream) { +- return stream->first_dts; +-} +-#endif + } // namespace + + static base::Time ExtractTimelineOffset( +@@ -401,16 +394,11 @@ void FFmpegDemuxerStream::EnqueuePacket(ScopedAVPacket packet) { + + scoped_refptr buffer; + +-#if LIBAVCODEC_VERSION_MAJOR < 59 +- typedef int side_data_arg; +-#else +- typedef size_t side_data_arg; +-#endif + if (type() == DemuxerStream::TEXT) { + // TODO(crbug.com/1471504): This is now broken without side data; remove. + buffer = DecoderBuffer::CopyFrom(packet->data, packet->size); + } else { +- side_data_arg side_data_size = 0; ++ size_t side_data_size = 0; + uint8_t* side_data = av_packet_get_side_data( + packet.get(), AV_PKT_DATA_MATROSKA_BLOCKADDITIONAL, &side_data_size); + +@@ -473,7 +461,7 @@ void FFmpegDemuxerStream::EnqueuePacket(ScopedAVPacket packet) { + packet->size - data_offset); + } + +- side_data_arg skip_samples_size = 0; ++ size_t skip_samples_size = 0; + const uint32_t* skip_samples_ptr = + reinterpret_cast(av_packet_get_side_data( + packet.get(), AV_PKT_DATA_SKIP_SAMPLES, &skip_samples_size)); From 15edf9656563bd324912ad22930f0ff8fd358a81 Mon Sep 17 00:00:00 2001 From: Fabio Valentini Date: Mon, 23 Sep 2024 17:01:06 +0200 Subject: [PATCH 27/76] Rebuild for ffmpeg 7 --- qt6-qtwebengine.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/qt6-qtwebengine.spec b/qt6-qtwebengine.spec index ca84206..93833a4 100644 --- a/qt6-qtwebengine.spec +++ b/qt6-qtwebengine.spec @@ -51,7 +51,7 @@ Summary: Qt6 - QtWebEngine components Name: qt6-qtwebengine Version: 6.7.2 -Release: 3%{?dist} +Release: 4%{?dist} # See LICENSE.GPL LICENSE.LGPL LGPL_EXCEPTION.txt, for details # See also http://qt-project.org/doc/qt-5.0/qtdoc/licensing.html @@ -669,6 +669,9 @@ done %endif %changelog +* Mon Sep 23 2024 Fabio Valentini - 6.7.2-4 +- Rebuild for ffmpeg 7 + * Mon Aug 05 2024 Jan Grulich - 6.7.2-3 - Fix building with system ffmpeg From 6072e37def4f512ebba1c1a0868a875b4dcec770 Mon Sep 17 00:00:00 2001 From: Jan Grulich Date: Thu, 26 Sep 2024 07:48:16 +0200 Subject: [PATCH 28/76] Fix build with FFmpeg 7 --- qt6-qtwebengine.spec | 6 +- ...gine-fix-building-with-system-ffmpeg.patch | 596 +++++++++++------- 2 files changed, 385 insertions(+), 217 deletions(-) diff --git a/qt6-qtwebengine.spec b/qt6-qtwebengine.spec index 93833a4..4d8ff81 100644 --- a/qt6-qtwebengine.spec +++ b/qt6-qtwebengine.spec @@ -84,6 +84,7 @@ Patch3: qtwebengine-aarch64-new-stat.patch Patch50: qtwebengine-fix-build.patch ## Upstream patches: +# Fixes build with FFmpeg 7 Patch80: qtwebengine-fix-building-with-system-ffmpeg.patch ## Upstreamable patches: @@ -376,11 +377,12 @@ popd %patch -P2 -p1 -b .link-pipewire %patch -P3 -p1 -b .aarch64-new-stat -%patch -P80 -p1 -b .fix-building-with-system-ffmpeg - %patch -P50 -p1 -b .fix-build.patch ## upstream patches +%if 0%{?fedora} && 0%{?fedora} >= 41 +%patch -P80 -p1 -b .fix-building-with-system-ffmpeg +%endif ## upstreamable patches %patch -P110 -p1 -b .webrtc-system-openh264 diff --git a/qtwebengine-fix-building-with-system-ffmpeg.patch b/qtwebengine-fix-building-with-system-ffmpeg.patch index 3576bf0..79a4b71 100644 --- a/qtwebengine-fix-building-with-system-ffmpeg.patch +++ b/qtwebengine-fix-building-with-system-ffmpeg.patch @@ -1,408 +1,574 @@ -From b30e3535717e1cb970c6e4095b412a2c5fdbce40 Mon Sep 17 00:00:00 2001 -From: Martin Negyokru -Date: Thu, 27 Jun 2024 12:29:29 +0200 -Subject: [PATCH] Fixup: Fix building with system ffmpeg +From 6e554a30893150793c2638e3689cf208ffc8e375 Mon Sep 17 00:00:00 2001 +From: Dale Curtis +Date: Sat, 2 Apr 2022 05:13:53 +0000 +Subject: [PATCH] Roll src/third_party/ffmpeg/ 574c39cce..32b2d1d526 (1125 + commits) -Add support for FFmpeg 7 and 6.1. -FFmpeg 6.0 and below need bigger changes. +https://chromium.googlesource.com/chromium/third_party/ffmpeg.git/+log/574c39cce323..32b2d1d526 -Cleanup old code, use guards instead of direct changes. +Created with: + roll-dep src/third_party/ffmpeg -Fixes: QTBUG-125227 -Change-Id: I6c8293f5eb8b83de01977a504801b013571f7c2b -Reviewed-on: https://codereview.qt-project.org/c/qt/qtwebengine-src/3rdparty/chromium/+/575610 -Reviewed-by: Allan Sandfeld Jensen +Fixed: 1293918 +Cq-Include-Trybots: luci.chromium.try:mac_chromium_asan_rel_ng,linux_chromium_asan_rel_ng,linux_chromium_chromeos_asan_rel_ng +Change-Id: I41945d0f963e3d1f65940067bac22f63b68e37d2 +Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/3565647 +Auto-Submit: Dale Curtis +Reviewed-by: Dan Sanders +Commit-Queue: Dale Curtis +Cr-Commit-Position: refs/heads/main@{#988253} --- + .../clear_key_cdm/ffmpeg_cdm_audio_decoder.cc | 29 ++++++++++--------- + media/ffmpeg/ffmpeg_common.cc | 11 +++---- + media/filters/audio_file_reader.cc | 9 +++--- + media/filters/audio_file_reader_unittest.cc | 6 ++-- + .../filters/audio_video_metadata_extractor.cc | 11 +++++-- + .../filters/ffmpeg_aac_bitstream_converter.cc | 7 +++-- + ...ffmpeg_aac_bitstream_converter_unittest.cc | 2 +- + media/filters/ffmpeg_audio_decoder.cc | 13 +++++---- + 8 files changed, 51 insertions(+), 37 deletions(-) diff --git a/src/3rdparty/chromium/media/cdm/library_cdm/clear_key_cdm/ffmpeg_cdm_audio_decoder.cc b/src/3rdparty/chromium/media/cdm/library_cdm/clear_key_cdm/ffmpeg_cdm_audio_decoder.cc -index c535d2b4d..9646e7043 100644 +index c535d2b..62ddbc8 100644 --- a/src/3rdparty/chromium/media/cdm/library_cdm/clear_key_cdm/ffmpeg_cdm_audio_decoder.cc +++ b/src/3rdparty/chromium/media/cdm/library_cdm/clear_key_cdm/ffmpeg_cdm_audio_decoder.cc -@@ -74,7 +74,11 @@ void CdmAudioDecoderConfigToAVCodecContext( +@@ -74,7 +74,7 @@ void CdmAudioDecoderConfigToAVCodecContext( codec_context->sample_fmt = AV_SAMPLE_FMT_NONE; } -+#if LIBAVCODEC_VERSION_MAJOR > 60 +- codec_context->channels = config.channel_count; + codec_context->ch_layout.nb_channels = config.channel_count; -+#else - codec_context->channels = config.channel_count; -+#endif codec_context->sample_rate = config.samples_per_second; if (config.extra_data) { -@@ -124,8 +128,13 @@ void CopySamples(cdm::AudioFormat cdm_format, +@@ -124,8 +124,8 @@ void CopySamples(cdm::AudioFormat cdm_format, case cdm::kAudioFormatPlanarS16: case cdm::kAudioFormatPlanarF32: { const int decoded_size_per_channel = -+#if LIBAVCODEC_VERSION_MAJOR > 60 +- decoded_audio_size / av_frame.channels; +- for (int i = 0; i < av_frame.channels; ++i) { + decoded_audio_size / av_frame.ch_layout.nb_channels; + for (int i = 0; i < av_frame.ch_layout.nb_channels; ++i) { -+#else - decoded_audio_size / av_frame.channels; - for (int i = 0; i < av_frame.channels; ++i) { -+#endif memcpy(output_buffer, av_frame.extended_data[i], decoded_size_per_channel); output_buffer += decoded_size_per_channel; -@@ -185,13 +194,22 @@ bool FFmpegCdmAudioDecoder::Initialize( +@@ -185,13 +185,14 @@ bool FFmpegCdmAudioDecoder::Initialize( // Success! decoding_loop_ = std::make_unique(codec_context_.get()); samples_per_second_ = config.samples_per_second; - bytes_per_frame_ = codec_context_->channels * config.bits_per_channel / 8; + bytes_per_frame_ = -+#if LIBAVCODEC_VERSION_MAJOR > 60 + codec_context_->ch_layout.nb_channels * config.bits_per_channel / 8; -+#else -+ codec_context_->channels * config.bits_per_channel / 8; -+#endif output_timestamp_helper_ = std::make_unique(config.samples_per_second); is_initialized_ = true; // Store initial values to guard against midstream configuration changes. -+#if LIBAVCODEC_VERSION_MAJOR > 60 +- channels_ = codec_context_->channels; + channels_ = codec_context_->ch_layout.nb_channels; -+#else - channels_ = codec_context_->channels; -+#endif av_sample_format_ = codec_context_->sample_fmt; return true; -@@ -291,18 +309,31 @@ cdm::Status FFmpegCdmAudioDecoder::DecodeBuffer( +@@ -291,7 +292,8 @@ cdm::Status FFmpegCdmAudioDecoder::DecodeBuffer( for (auto& frame : audio_frames) { int decoded_audio_size = 0; if (frame->sample_rate != samples_per_second_ || - frame->channels != channels_ || frame->format != av_sample_format_) { -- DLOG(ERROR) << "Unsupported midstream configuration change!" -+#if LIBAVCODEC_VERSION_MAJOR > 60 -+ frame->ch_layout.nb_channels != channels_ || -+#else -+ frame->channels != channels_ || -+#endif -+ frame->format != av_sample_format_) { -+ DLOG(ERROR) << "Unsupported midstream configuration change!" ++ frame->ch_layout.nb_channels != channels_ || ++ frame->format != av_sample_format_) { + DLOG(ERROR) << "Unsupported midstream configuration change!" << " Sample Rate: " << frame->sample_rate << " vs " << samples_per_second_ -+#if LIBAVCODEC_VERSION_MAJOR > 60 - << ", Channels: " << frame->ch_layout.nb_channels << " vs " -+#else -+ << ", Channels: " << frame->channels << " vs " -+#endif - << channels_ << ", Sample Format: " << frame->format << " vs " - << av_sample_format_; - return cdm::kDecodeError; +@@ -302,7 +304,7 @@ cdm::Status FFmpegCdmAudioDecoder::DecodeBuffer( } decoded_audio_size = av_samples_get_buffer_size( - nullptr, codec_context_->channels, frame->nb_samples, -+#if LIBAVCODEC_VERSION_MAJOR > 60 -+ nullptr, codec_context_->ch_layout.nb_channels, frame->nb_samples, -+#endif -+ nullptr, codec_context_->channels, frame->nb_samples, -+#else ++ nullptr, codec_context_->ch_layout.nb_channels, frame->nb_samples, codec_context_->sample_fmt, 1); if (!decoded_audio_size) continue; -@@ -322,7 +353,11 @@ bool FFmpegCdmAudioDecoder::OnNewFrame( +@@ -322,7 +324,7 @@ bool FFmpegCdmAudioDecoder::OnNewFrame( std::vector>* audio_frames, AVFrame* frame) { *total_size += av_samples_get_buffer_size( -+#if LIBAVCODEC_VERSION_MAJOR > 60 +- nullptr, codec_context_->channels, frame->nb_samples, + nullptr, codec_context_->ch_layout.nb_channels, frame->nb_samples, -+#else - nullptr, codec_context_->channels, frame->nb_samples, -+#endif codec_context_->sample_fmt, 1); audio_frames->emplace_back(av_frame_clone(frame)); return true; diff --git a/src/3rdparty/chromium/media/ffmpeg/ffmpeg_common.cc b/src/3rdparty/chromium/media/ffmpeg/ffmpeg_common.cc -index 266535510..0e6cee9e8 100644 +index 2665355..910f9ad 100644 --- a/src/3rdparty/chromium/media/ffmpeg/ffmpeg_common.cc +++ b/src/3rdparty/chromium/media/ffmpeg/ffmpeg_common.cc -@@ -336,10 +336,20 @@ bool AVCodecContextToAudioDecoderConfig(const AVCodecContext* codec_context, +@@ -336,10 +336,11 @@ bool AVCodecContextToAudioDecoderConfig(const AVCodecContext* codec_context, codec_context->sample_fmt, codec_context->codec_id); ChannelLayout channel_layout = -+#if LIBAVCODEC_VERSION_MAJOR > 60 +- codec_context->channels > 8 + codec_context->ch_layout.nb_channels > 8 -+#else - codec_context->channels > 8 -+#endif ? CHANNEL_LAYOUT_DISCRETE - : ChannelLayoutToChromeChannelLayout(codec_context->channel_layout, - codec_context->channels); + : ChannelLayoutToChromeChannelLayout( -+#if LIBAVCODEC_VERSION_MAJOR > 60 + codec_context->ch_layout.u.mask, + codec_context->ch_layout.nb_channels); -+#else -+ codec_context->channel_layout, -+ codec_context->channels); -+#endif switch (codec) { // For AC3/EAC3 we enable only demuxing, but not decoding, so FFmpeg does -@@ -391,7 +401,11 @@ bool AVCodecContextToAudioDecoderConfig(const AVCodecContext* codec_context, +@@ -391,7 +392,7 @@ bool AVCodecContextToAudioDecoderConfig(const AVCodecContext* codec_context, extra_data, encryption_scheme, seek_preroll, codec_context->delay); if (channel_layout == CHANNEL_LAYOUT_DISCRETE) -+#if LIBAVCODEC_VERSION_MAJOR > 60 +- config->SetChannelsForDiscrete(codec_context->channels); + config->SetChannelsForDiscrete(codec_context->ch_layout.nb_channels); -+#else - config->SetChannelsForDiscrete(codec_context->channels); -+#endif #if BUILDFLAG(ENABLE_PLATFORM_AC3_EAC3_AUDIO) // These are bitstream formats unknown to ffmpeg, so they don't have -@@ -460,7 +474,11 @@ void AudioDecoderConfigToAVCodecContext(const AudioDecoderConfig& config, +@@ -460,7 +461,7 @@ void AudioDecoderConfigToAVCodecContext(const AudioDecoderConfig& config, // TODO(scherkus): should we set |channel_layout|? I'm not sure if FFmpeg uses // said information to decode. -+#if LIBAVCODEC_VERSION_MAJOR > 60 +- codec_context->channels = config.channels(); + codec_context->ch_layout.nb_channels = config.channels(); -+#else - codec_context->channels = config.channels(); -+#endif codec_context->sample_rate = config.samples_per_second(); if (config.extra_data().empty()) { diff --git a/src/3rdparty/chromium/media/filters/audio_file_reader.cc b/src/3rdparty/chromium/media/filters/audio_file_reader.cc -index 777eabc16..4072ffb5c 100644 +index 777eabc..2b58dd7 100644 --- a/src/3rdparty/chromium/media/filters/audio_file_reader.cc +++ b/src/3rdparty/chromium/media/filters/audio_file_reader.cc -@@ -113,14 +113,24 @@ bool AudioFileReader::OpenDecoder() { +@@ -113,14 +113,15 @@ bool AudioFileReader::OpenDecoder() { // Verify the channel layout is supported by Chrome. Acts as a sanity check // against invalid files. See http://crbug.com/171962 - if (ChannelLayoutToChromeChannelLayout(codec_context_->channel_layout, - codec_context_->channels) == + if (ChannelLayoutToChromeChannelLayout( -+#if LIBAVCODEC_VERSION_MAJOR > 60 + codec_context_->ch_layout.u.mask, + codec_context_->ch_layout.nb_channels) == -+#else -+ codec_context_->channel_layout, -+ codec_context_->channels) == -+#endif CHANNEL_LAYOUT_UNSUPPORTED) { return false; } // Store initial values to guard against midstream configuration changes. -+#if LIBAVCODEC_VERSION_MAJOR > 60 +- channels_ = codec_context_->channels; + channels_ = codec_context_->ch_layout.nb_channels; -+#else - channels_ = codec_context_->channels; -+#endif audio_codec_ = CodecIDToAudioCodec(codec_context_->codec_id); sample_rate_ = codec_context_->sample_rate; av_sample_format_ = codec_context_->sample_fmt; -@@ -223,7 +233,11 @@ bool AudioFileReader::OnNewFrame( +@@ -223,7 +224,7 @@ bool AudioFileReader::OnNewFrame( if (frames_read < 0) return false; -+#if LIBAVCODEC_VERSION_MAJOR > 60 +- const int channels = frame->channels; + const int channels = frame->ch_layout.nb_channels; -+#else - const int channels = frame->channels; -+#endif if (frame->sample_rate != sample_rate_ || channels != channels_ || frame->format != av_sample_format_) { DLOG(ERROR) << "Unsupported midstream configuration change!" -@@ -242,18 +256,18 @@ bool AudioFileReader::OnNewFrame( - // silence from being output. In the case where we are also discarding some - // portion of the packet (as indicated by a negative pts), we further want to - // adjust the duration downward by however much exists before zero. --#if BUILDFLAG(USE_SYSTEM_FFMPEG) -- if (audio_codec_ == AudioCodec::kAAC && frame->pkt_duration) { --#else -+#if LIBAVCODEC_VERSION_MAJOR > 60 - if (audio_codec_ == AudioCodec::kAAC && frame->duration) { --#endif // BUILDFLAG(USE_SYSTEM_FFMPEG) -+#else -+ if (audio_codec_ == AudioCodec::kAAC && frame->pkt_duration) { -+#endif - const base::TimeDelta pkt_duration = ConvertFromTimeBase( - glue_->format_context()->streams[stream_index_]->time_base, --#if BUILDFLAG(USE_SYSTEM_FFMPEG) -- frame->pkt_duration + std::min(static_cast(0), frame->pts)); --#else -+#if LIBAVCODEC_VERSION_MAJOR > 60 - frame->duration + std::min(static_cast(0), frame->pts)); --#endif // BUILDFLAG(USE_SYSTEM_FFMPEG) -+#else -+ frame->pkt_duration + std::min(static_cast(0), frame->pts)); -+#endif - const base::TimeDelta frame_duration = - base::Seconds(frames_read / static_cast(sample_rate_)); - diff --git a/src/3rdparty/chromium/media/filters/ffmpeg_aac_bitstream_converter.cc b/src/3rdparty/chromium/media/filters/ffmpeg_aac_bitstream_converter.cc -index 76b41aa6a..7bd3857c7 100644 +index 76b41aa..e26b6cd 100644 --- a/src/3rdparty/chromium/media/filters/ffmpeg_aac_bitstream_converter.cc +++ b/src/3rdparty/chromium/media/filters/ffmpeg_aac_bitstream_converter.cc -@@ -195,14 +195,23 @@ bool FFmpegAACBitstreamConverter::ConvertPacket(AVPacket* packet) { +@@ -195,14 +195,15 @@ bool FFmpegAACBitstreamConverter::ConvertPacket(AVPacket* packet) { if (!header_generated_ || codec_ != stream_codec_parameters_->codec_id || audio_profile_ != stream_codec_parameters_->profile || sample_rate_index_ != sample_rate_index || - channel_configuration_ != stream_codec_parameters_->channels || + channel_configuration_ != -+#if LIBAVCODEC_VERSION_MAJOR > 60 + stream_codec_parameters_->ch_layout.nb_channels || -+#else -+ stream_codec_parameters_->channels || -+#endif frame_length_ != header_plus_packet_size) { header_generated_ = GenerateAdtsHeader(stream_codec_parameters_->codec_id, 0, // layer stream_codec_parameters_->profile, sample_rate_index, 0, // private stream -+#if LIBAVCODEC_VERSION_MAJOR > 60 +- stream_codec_parameters_->channels, + stream_codec_parameters_->ch_layout.nb_channels, -+#else - stream_codec_parameters_->channels, -+#endif 0, // originality 0, // home 0, // copyrighted_stream -@@ -214,7 +223,11 @@ bool FFmpegAACBitstreamConverter::ConvertPacket(AVPacket* packet) { +@@ -214,7 +215,7 @@ bool FFmpegAACBitstreamConverter::ConvertPacket(AVPacket* packet) { codec_ = stream_codec_parameters_->codec_id; audio_profile_ = stream_codec_parameters_->profile; sample_rate_index_ = sample_rate_index; -+#if LIBAVCODEC_VERSION_MAJOR > 60 +- channel_configuration_ = stream_codec_parameters_->channels; + channel_configuration_ = stream_codec_parameters_->ch_layout.nb_channels; -+#else - channel_configuration_ = stream_codec_parameters_->channels; -+#endif frame_length_ = header_plus_packet_size; } +diff --git a/src/3rdparty/chromium/media/filters/ffmpeg_aac_bitstream_converter_unittest.cc b/src/3rdparty/chromium/media/filters/ffmpeg_aac_bitstream_converter_unittest.cc +index 3b46f7f..1897eb0 100644 +--- a/src/3rdparty/chromium/media/filters/ffmpeg_aac_bitstream_converter_unittest.cc ++++ b/src/3rdparty/chromium/media/filters/ffmpeg_aac_bitstream_converter_unittest.cc +@@ -34,7 +34,7 @@ class FFmpegAACBitstreamConverterTest : public testing::Test { + memset(&test_parameters_, 0, sizeof(AVCodecParameters)); + test_parameters_.codec_id = AV_CODEC_ID_AAC; + test_parameters_.profile = FF_PROFILE_AAC_MAIN; +- test_parameters_.channels = 2; ++ test_parameters_.ch_layout.nb_channels = 2; + test_parameters_.extradata = extradata_header_; + test_parameters_.extradata_size = sizeof(extradata_header_); + } diff --git a/src/3rdparty/chromium/media/filters/ffmpeg_audio_decoder.cc b/src/3rdparty/chromium/media/filters/ffmpeg_audio_decoder.cc -index bf3ed002a..87f25c802 100644 +index bf3ed00..d564ee9 100644 --- a/src/3rdparty/chromium/media/filters/ffmpeg_audio_decoder.cc +++ b/src/3rdparty/chromium/media/filters/ffmpeg_audio_decoder.cc -@@ -29,7 +29,11 @@ namespace media { +@@ -29,7 +29,7 @@ namespace media { // Return the number of channels from the data in |frame|. static inline int DetermineChannels(AVFrame* frame) { -+#if LIBAVCODEC_VERSION_MAJOR > 60 +- return frame->channels; + return frame->ch_layout.nb_channels; -+#else - return frame->channels; -+#endif } // Called by FFmpeg's allocation routine to allocate a buffer. Uses -@@ -243,7 +247,11 @@ bool FFmpegAudioDecoder::OnNewFrame(const DecoderBuffer& buffer, +@@ -243,7 +243,7 @@ bool FFmpegAudioDecoder::OnNewFrame(const DecoderBuffer& buffer, // Translate unsupported into discrete layouts for discrete configurations; // ffmpeg does not have a labeled discrete configuration internally. ChannelLayout channel_layout = ChannelLayoutToChromeChannelLayout( -+#if LIBAVCODEC_VERSION_MAJOR > 60 +- codec_context_->channel_layout, codec_context_->channels); + codec_context_->ch_layout.u.mask, codec_context_->ch_layout.nb_channels); -+#else - codec_context_->channel_layout, codec_context_->channels); -+#endif if (channel_layout == CHANNEL_LAYOUT_UNSUPPORTED && config_.channel_layout() == CHANNEL_LAYOUT_DISCRETE) { channel_layout = CHANNEL_LAYOUT_DISCRETE; -@@ -360,11 +368,19 @@ bool FFmpegAudioDecoder::ConfigureDecoder(const AudioDecoderConfig& config) { +@@ -360,11 +360,11 @@ bool FFmpegAudioDecoder::ConfigureDecoder(const AudioDecoderConfig& config) { // Success! av_sample_format_ = codec_context_->sample_fmt; -+#if LIBAVCODEC_VERSION_MAJOR > 60 +- if (codec_context_->channels != config.channels()) { + if (codec_context_->ch_layout.nb_channels != config.channels()) { -+#else - if (codec_context_->channels != config.channels()) { -+#endif MEDIA_LOG(ERROR, media_log_) << "Audio configuration specified " << config.channels() << " channels, but FFmpeg thinks the file contains " -+#if LIBAVCODEC_VERSION_MAJOR > 60 +- << codec_context_->channels << " channels"; + << codec_context_->ch_layout.nb_channels << " channels"; -+#else - << codec_context_->channels << " channels"; -+#endif ReleaseFFmpegResources(); state_ = DecoderState::kUninitialized; return false; -@@ -415,7 +431,11 @@ int FFmpegAudioDecoder::GetAudioBuffer(struct AVCodecContext* s, +@@ -415,7 +415,7 @@ int FFmpegAudioDecoder::GetAudioBuffer(struct AVCodecContext* s, if (frame->nb_samples <= 0) return AVERROR(EINVAL); -+#if LIBAVCODEC_VERSION_MAJOR > 60 +- if (s->channels != channels) { + if (s->ch_layout.nb_channels != channels) { -+#else - if (s->channels != channels) { -+#endif DLOG(ERROR) << "AVCodecContext and AVFrame disagree on channel count."; return AVERROR(EINVAL); } -@@ -448,7 +468,13 @@ int FFmpegAudioDecoder::GetAudioBuffer(struct AVCodecContext* s, +@@ -448,7 +448,8 @@ int FFmpegAudioDecoder::GetAudioBuffer(struct AVCodecContext* s, ChannelLayout channel_layout = config_.channel_layout() == CHANNEL_LAYOUT_DISCRETE ? CHANNEL_LAYOUT_DISCRETE - : ChannelLayoutToChromeChannelLayout(s->channel_layout, s->channels); -+#if LIBAVCODEC_VERSION_MAJOR > 60 + : ChannelLayoutToChromeChannelLayout(s->ch_layout.u.mask, + s->ch_layout.nb_channels); -+#else -+ : ChannelLayoutToChromeChannelLayout(s->channel_layout, -+ s->channels); -+#endif if (channel_layout == CHANNEL_LAYOUT_UNSUPPORTED) { DLOG(ERROR) << "Unsupported channel layout."; -diff --git a/src/3rdparty/chromium/media/filters/ffmpeg_demuxer.cc b/src/3rdparty/chromium/media/filters/ffmpeg_demuxer.cc -index 138cea9d6..7714ff3bd 100644 ---- a/src/3rdparty/chromium/media/filters/ffmpeg_demuxer.cc -+++ b/src/3rdparty/chromium/media/filters/ffmpeg_demuxer.cc -@@ -46,10 +46,8 @@ - #include "media/formats/mpeg/mpeg1_audio_stream_parser.h" - #include "media/formats/webm/webm_crypto_helpers.h" - #include "media/media_buildflags.h" --#if !BUILDFLAG(USE_SYSTEM_FFMPEG) - #include "third_party/ffmpeg/ffmpeg_features.h" - #include "third_party/ffmpeg/libavcodec/packet.h" --#endif // !BUILDFLAG(USE_SYSTEM_FFMPEG) +commit 62274859104bd828373ae406aa9309e610449ac5 +Author: Ted Meyer +Date: Fri Mar 22 19:56:55 2024 +0000 + + Replace deprecated use of AVCodecContext::reordered_opaque + + We can use the AV_CODEC_FLAG_COPY_OPAQUE flag on the codec context + now to trigger timestamp propagation. + + Bug: 330573128 + Change-Id: I6bc57241a35ab5283742aad8d42acb4dc5e85858 + Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/5384308 + Commit-Queue: Ted (Chromium) Meyer + Reviewed-by: Dan Sanders + Cr-Commit-Position: refs/heads/main@{#1277051} + +diff --git a/src/3rdparty/chromium/media/ffmpeg/ffmpeg_common.cc b/src/3rdparty/chromium/media/ffmpeg/ffmpeg_common.cc +index 910f9ad..8be165c 100644 +--- a/src/3rdparty/chromium/media/ffmpeg/ffmpeg_common.cc ++++ b/src/3rdparty/chromium/media/ffmpeg/ffmpeg_common.cc +@@ -411,7 +411,9 @@ bool AVCodecContextToAudioDecoderConfig(const AVCodecContext* codec_context, - #if BUILDFLAG(ENABLE_PLATFORM_HEVC) - #include "media/filters/ffmpeg_h265_to_annex_b_bitstream_converter.h" -@@ -77,11 +75,6 @@ int AVSeekFrame(AVFormatContext* s, int stream_index, int64_t timestamp) { - return av_seek_frame(s, stream_index, timestamp, 0); + // TODO(dalecurtis): Just use the profile from the codec context if ffmpeg + // ever starts supporting xHE-AAC. +- if (codec_context->profile == FF_PROFILE_UNKNOWN) { ++ constexpr uint8_t kXHEAAc = 41; ++ if (codec_context->profile == FF_PROFILE_UNKNOWN || ++ codec_context->profile == kXHEAAc) { + // Errors aren't fatal here, so just drop any MediaLog messages. + NullMediaLog media_log; + mp4::AAC aac_parser; +diff --git a/src/3rdparty/chromium/media/ffmpeg/ffmpeg_regression_tests.cc b/src/3rdparty/chromium/media/ffmpeg/ffmpeg_regression_tests.cc +index 05dcb1c..866f446 100644 +--- a/src/3rdparty/chromium/media/ffmpeg/ffmpeg_regression_tests.cc ++++ b/src/3rdparty/chromium/media/ffmpeg/ffmpeg_regression_tests.cc +@@ -90,16 +90,16 @@ FFMPEG_TEST_CASE(Cr62127, + PIPELINE_ERROR_DECODE, + PIPELINE_ERROR_DECODE); + FFMPEG_TEST_CASE(Cr93620, "security/93620.ogg", PIPELINE_OK, PIPELINE_OK); +-FFMPEG_TEST_CASE(Cr100492, +- "security/100492.webm", +- DECODER_ERROR_NOT_SUPPORTED, +- DECODER_ERROR_NOT_SUPPORTED); ++FFMPEG_TEST_CASE(Cr100492, "security/100492.webm", PIPELINE_OK, PIPELINE_OK); + FFMPEG_TEST_CASE(Cr100543, "security/100543.webm", PIPELINE_OK, PIPELINE_OK); + FFMPEG_TEST_CASE(Cr101458, + "security/101458.webm", + PIPELINE_ERROR_DECODE, + PIPELINE_ERROR_DECODE); +-FFMPEG_TEST_CASE(Cr108416, "security/108416.webm", PIPELINE_OK, PIPELINE_OK); ++FFMPEG_TEST_CASE(Cr108416, ++ "security/108416.webm", ++ PIPELINE_ERROR_DECODE, ++ PIPELINE_ERROR_DECODE); + FFMPEG_TEST_CASE(Cr110849, + "security/110849.mkv", + DEMUXER_ERROR_COULD_NOT_OPEN, +@@ -154,7 +154,10 @@ FFMPEG_TEST_CASE(Cr234630b, + "security/234630b.mov", + DEMUXER_ERROR_NO_SUPPORTED_STREAMS, + DEMUXER_ERROR_NO_SUPPORTED_STREAMS); +-FFMPEG_TEST_CASE(Cr242786, "security/242786.webm", PIPELINE_OK, PIPELINE_OK); ++FFMPEG_TEST_CASE(Cr242786, ++ "security/242786.webm", ++ PIPELINE_OK, ++ PIPELINE_ERROR_DECODE); + // Test for out-of-bounds access with slightly corrupt file (detection logic + // thinks it's a MONO file, but actually contains STEREO audio). + FFMPEG_TEST_CASE(Cr275590, +@@ -372,8 +375,8 @@ FFMPEG_TEST_CASE(WEBM_2, + DEMUXER_ERROR_NO_SUPPORTED_STREAMS); + FFMPEG_TEST_CASE(WEBM_4, + "security/out.webm.68798.1929", +- DECODER_ERROR_NOT_SUPPORTED, +- DECODER_ERROR_NOT_SUPPORTED); ++ PIPELINE_OK, ++ PIPELINE_OK); + FFMPEG_TEST_CASE(WEBM_5, "frame_size_change.webm", PIPELINE_OK, PIPELINE_OK); + + // General MKV test cases. +diff --git a/src/3rdparty/chromium/media/filters/audio_decoder_unittest.cc b/src/3rdparty/chromium/media/filters/audio_decoder_unittest.cc +index a7b2533..ba3c308 100644 +--- a/src/3rdparty/chromium/media/filters/audio_decoder_unittest.cc ++++ b/src/3rdparty/chromium/media/filters/audio_decoder_unittest.cc +@@ -484,7 +484,7 @@ constexpr TestParams kXheAacTestParams[] = { + }}, + 0, + 29400, +- CHANNEL_LAYOUT_MONO, ++ CHANNEL_LAYOUT_UNSUPPORTED, + AudioCodecProfile::kXHE_AAC}, + #endif + {AudioCodec::kAAC, +diff --git a/src/3rdparty/chromium/media/filters/audio_file_reader.cc b/src/3rdparty/chromium/media/filters/audio_file_reader.cc +index 2b58dd7..9d37f32 100644 +--- a/src/3rdparty/chromium/media/filters/audio_file_reader.cc ++++ b/src/3rdparty/chromium/media/filters/audio_file_reader.cc +@@ -243,18 +243,10 @@ bool AudioFileReader::OnNewFrame( + // silence from being output. In the case where we are also discarding some + // portion of the packet (as indicated by a negative pts), we further want to + // adjust the duration downward by however much exists before zero. +-#if BUILDFLAG(USE_SYSTEM_FFMPEG) +- if (audio_codec_ == AudioCodec::kAAC && frame->pkt_duration) { +-#else + if (audio_codec_ == AudioCodec::kAAC && frame->duration) { +-#endif // BUILDFLAG(USE_SYSTEM_FFMPEG) + const base::TimeDelta pkt_duration = ConvertFromTimeBase( + glue_->format_context()->streams[stream_index_]->time_base, +-#if BUILDFLAG(USE_SYSTEM_FFMPEG) +- frame->pkt_duration + std::min(static_cast(0), frame->pts)); +-#else + frame->duration + std::min(static_cast(0), frame->pts)); +-#endif // BUILDFLAG(USE_SYSTEM_FFMPEG) + const base::TimeDelta frame_duration = + base::Seconds(frames_read / static_cast(sample_rate_)); + +diff --git a/src/3rdparty/chromium/media/filters/audio_file_reader_unittest.cc b/src/3rdparty/chromium/media/filters/audio_file_reader_unittest.cc +index a1c633d..5784fe1 100644 +--- a/src/3rdparty/chromium/media/filters/audio_file_reader_unittest.cc ++++ b/src/3rdparty/chromium/media/filters/audio_file_reader_unittest.cc +@@ -61,15 +61,14 @@ class AudioFileReaderTest : public testing::Test { + // Verify packets are consistent across demuxer runs. Reads the first few + // packets and then seeks back to the start timestamp and verifies that the + // hashes match on the packets just read. +- void VerifyPackets() { +- const int kReads = 3; ++ void VerifyPackets(int packet_reads) { + const int kTestPasses = 2; + + AVPacket packet; + base::TimeDelta start_timestamp; + std::vector packet_md5_hashes_; + for (int i = 0; i < kTestPasses; ++i) { +- for (int j = 0; j < kReads; ++j) { ++ for (int j = 0; j < packet_reads; ++j) { + ASSERT_TRUE(reader_->ReadPacketForTesting(&packet)); + + // On the first pass save the MD5 hash of each packet, on subsequent +@@ -98,7 +97,8 @@ class AudioFileReaderTest : public testing::Test { + int sample_rate, + base::TimeDelta duration, + int frames, +- int expected_frames) { ++ int expected_frames, ++ int packet_reads = 3) { + Initialize(fn); + ASSERT_TRUE(reader_->Open()); + EXPECT_EQ(channels, reader_->channels()); +@@ -112,7 +112,7 @@ class AudioFileReaderTest : public testing::Test { + EXPECT_EQ(reader_->HasKnownDuration(), false); + } + if (!packet_verification_disabled_) +- ASSERT_NO_FATAL_FAILURE(VerifyPackets()); ++ ASSERT_NO_FATAL_FAILURE(VerifyPackets(packet_reads)); + ReadAndVerify(hash, expected_frames); + } + +@@ -219,7 +219,7 @@ TEST_F(AudioFileReaderTest, AAC_ADTS) { } --#if LIBAVCODEC_VERSION_MAJOR < 59 --auto av_stream_get_first_dts(AVStream* stream) { -- return stream->first_dts; --} --#endif - } // namespace + TEST_F(AudioFileReaderTest, MidStreamConfigChangesFail) { +- RunTestFailingDecode("midstream_config_change.mp3", 42624); ++ RunTestFailingDecode("midstream_config_change.mp3", 0); + } + #endif - static base::Time ExtractTimelineOffset( -@@ -401,16 +394,11 @@ void FFmpegDemuxerStream::EnqueuePacket(ScopedAVPacket packet) { +@@ -229,7 +229,7 @@ TEST_F(AudioFileReaderTest, VorbisInvalidChannelLayout) { - scoped_refptr buffer; + TEST_F(AudioFileReaderTest, WaveValidFourChannelLayout) { + RunTest("4ch.wav", "131.71,38.02,130.31,44.89,135.98,42.52,", 4, 44100, +- base::Microseconds(100001), 4411, 4410); ++ base::Microseconds(100001), 4411, 4410, /*packet_reads=*/2); + } --#if LIBAVCODEC_VERSION_MAJOR < 59 -- typedef int side_data_arg; --#else -- typedef size_t side_data_arg; --#endif - if (type() == DemuxerStream::TEXT) { - // TODO(crbug.com/1471504): This is now broken without side data; remove. - buffer = DecoderBuffer::CopyFrom(packet->data, packet->size); - } else { -- side_data_arg side_data_size = 0; -+ size_t side_data_size = 0; - uint8_t* side_data = av_packet_get_side_data( - packet.get(), AV_PKT_DATA_MATROSKA_BLOCKADDITIONAL, &side_data_size); + TEST_F(AudioFileReaderTest, ReadPartialMP3) { +diff --git a/src/3rdparty/chromium/media/filters/ffmpeg_video_decoder.cc b/src/3rdparty/chromium/media/filters/ffmpeg_video_decoder.cc +index e62b2af..ab39796 100644 +--- a/src/3rdparty/chromium/media/filters/ffmpeg_video_decoder.cc ++++ b/src/3rdparty/chromium/media/filters/ffmpeg_video_decoder.cc +@@ -125,7 +125,7 @@ bool FFmpegVideoDecoder::IsCodecSupported(VideoCodec codec) { + } -@@ -473,7 +461,7 @@ void FFmpegDemuxerStream::EnqueuePacket(ScopedAVPacket packet) { - packet->size - data_offset); - } + FFmpegVideoDecoder::FFmpegVideoDecoder(MediaLog* media_log) +- : media_log_(media_log) { ++ : media_log_(media_log), timestamp_map_(128) { + DVLOG(1) << __func__; + DETACH_FROM_SEQUENCE(sequence_checker_); + } +@@ -204,10 +204,6 @@ int FFmpegVideoDecoder::GetVideoBuffer(struct AVCodecContext* codec_context, + frame->linesize[plane] = layout->planes()[plane].stride; + } -- side_data_arg skip_samples_size = 0; -+ size_t skip_samples_size = 0; - const uint32_t* skip_samples_ptr = - reinterpret_cast(av_packet_get_side_data( - packet.get(), AV_PKT_DATA_SKIP_SAMPLES, &skip_samples_size)); +- // This seems unsafe, given threaded decoding. However, `reordered_opaque` is +- // also going away upstream, so we need a whole new mechanism either way. +- frame->reordered_opaque = codec_context->reordered_opaque; +- + // This will be freed by `ReleaseVideoBufferImpl`. + auto* opaque = new OpaqueData(fb_priv, frame_pool_, data, allocation_size, + std::move(*layout)); +@@ -354,8 +350,10 @@ bool FFmpegVideoDecoder::FFmpegDecode(const DecoderBuffer& buffer) { + DCHECK(packet->data); + DCHECK_GT(packet->size, 0); + +- // Let FFmpeg handle presentation timestamp reordering. +- codec_context_->reordered_opaque = buffer.timestamp().InMicroseconds(); ++ const int64_t timestamp = buffer.timestamp().InMicroseconds(); ++ const TimestampId timestamp_id = timestamp_id_generator_.GenerateNextId(); ++ timestamp_map_.Put(std::make_pair(timestamp_id, timestamp)); ++ packet->opaque = reinterpret_cast(timestamp_id.GetUnsafeValue()); + } + FFmpegDecodingLoop::DecodeStatus decode_status = decoding_loop_->DecodePacket( + packet, base::BindRepeating(&FFmpegVideoDecoder::OnNewFrame, +@@ -414,7 +412,12 @@ bool FFmpegVideoDecoder::OnNewFrame(AVFrame* frame) { + } + gfx::Size natural_size = aspect_ratio.GetNaturalSize(visible_rect); + +- const auto pts = base::Microseconds(frame->reordered_opaque); ++ const auto ts_id = TimestampId(reinterpret_cast(frame->opaque)); ++ const auto ts_lookup = timestamp_map_.Get(ts_id); ++ if (ts_lookup == timestamp_map_.end()) { ++ return false; ++ } ++ const auto pts = base::Microseconds(std::get<1>(*ts_lookup)); + auto video_frame = VideoFrame::WrapExternalDataWithLayout( + opaque->layout, visible_rect, natural_size, opaque->data, opaque->size, + pts); +@@ -489,8 +492,10 @@ bool FFmpegVideoDecoder::ConfigureDecoder(const VideoDecoderConfig& config, + codec_context_->thread_count = GetFFmpegVideoDecoderThreadCount(config); + codec_context_->thread_type = + FF_THREAD_SLICE | (low_delay ? 0 : FF_THREAD_FRAME); ++ + codec_context_->opaque = this; + codec_context_->get_buffer2 = GetVideoBufferImpl; ++ codec_context_->flags |= AV_CODEC_FLAG_COPY_OPAQUE; + + if (decode_nalus_) + codec_context_->flags2 |= AV_CODEC_FLAG2_CHUNKS; +diff --git a/src/3rdparty/chromium/media/filters/ffmpeg_video_decoder.h b/src/3rdparty/chromium/media/filters/ffmpeg_video_decoder.h +index 60cb9d5..4fa8628 100644 +--- a/src/3rdparty/chromium/media/filters/ffmpeg_video_decoder.h ++++ b/src/3rdparty/chromium/media/filters/ffmpeg_video_decoder.h +@@ -7,10 +7,12 @@ + + #include + ++#include "base/containers/lru_cache.h" + #include "base/functional/callback.h" + #include "base/memory/raw_ptr.h" + #include "base/memory/scoped_refptr.h" + #include "base/sequence_checker.h" ++#include "base/types/id_type.h" + #include "media/base/supported_video_decoder_config.h" + #include "media/base/video_decoder.h" + #include "media/base/video_decoder_config.h" +@@ -87,6 +89,20 @@ class MEDIA_EXPORT FFmpegVideoDecoder : public VideoDecoder { + // FFmpeg structures owned by this object. + std::unique_ptr codec_context_; + ++ // The gist here is that timestamps need to be 64 bits to store microsecond ++ // precision. A 32 bit integer would overflow at ~35 minutes at this level of ++ // precision. We can't cast the timestamp to the void ptr object used by the ++ // opaque field in ffmpeg then, because it would lose data on a 32 bit build. ++ // However, we don't actually have 2^31 timestamped frames in a single ++ // playback, so it's fine to use the 32 bit value as a key in a map which ++ // contains the actual timestamps. Additionally, we've in the past set 128 ++ // outstanding frames for re-ordering as a limit for cross-thread decoding ++ // tasks, so we'll do that here too with the LRU cache. ++ using TimestampId = base::IdType; ++ ++ TimestampId::Generator timestamp_id_generator_; ++ base::LRUCache timestamp_map_; ++ + VideoDecoderConfig config_; + + scoped_refptr frame_pool_; +diff --git a/src/3rdparty/chromium/third_party/webrtc/modules/video_coding/codecs/h264/h264_decoder_impl.cc b/src/3rdparty/chromium/third_party/webrtc/modules/video_coding/codecs/h264/h264_decoder_impl.cc +index f67718c..fe42aef 100644 +--- a/src/3rdparty/chromium/third_party/webrtc/modules/video_coding/codecs/h264/h264_decoder_impl.cc ++++ b/src/3rdparty/chromium/third_party/webrtc/modules/video_coding/codecs/h264/h264_decoder_impl.cc +@@ -229,7 +229,6 @@ int H264DecoderImpl::AVGetBuffer2(AVCodecContext* context, + int total_size = y_size + 2 * uv_size; + + av_frame->format = context->pix_fmt; +- av_frame->reordered_opaque = context->reordered_opaque; + + // Create a VideoFrame object, to keep a reference to the buffer. + // TODO(nisse): The VideoFrame's timestamp and rotation info is not used. +@@ -377,8 +376,6 @@ int32_t H264DecoderImpl::Decode(const EncodedImage& input_image, + return WEBRTC_VIDEO_CODEC_ERROR; + } + packet->size = static_cast(input_image.size()); +- int64_t frame_timestamp_us = input_image.ntp_time_ms_ * 1000; // ms -> μs +- av_context_->reordered_opaque = frame_timestamp_us; + + int result = avcodec_send_packet(av_context_.get(), packet.get()); + +@@ -395,10 +392,6 @@ int32_t H264DecoderImpl::Decode(const EncodedImage& input_image, + return WEBRTC_VIDEO_CODEC_ERROR; + } + +- // We don't expect reordering. Decoded frame timestamp should match +- // the input one. +- RTC_DCHECK_EQ(av_frame_->reordered_opaque, frame_timestamp_us); +- + // TODO(sakal): Maybe it is possible to get QP directly from FFmpeg. + h264_bitstream_parser_.ParseBitstream(input_image); + absl::optional qp = h264_bitstream_parser_.GetLastSliceQp(); From 7e43c3d789af284738f0233c81f91cae733a3f6c Mon Sep 17 00:00:00 2001 From: Neal Gompa Date: Thu, 26 Sep 2024 06:35:35 -0400 Subject: [PATCH 29/76] Update ffmpeg patch conditional for EL10 --- qt6-qtwebengine.spec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/qt6-qtwebengine.spec b/qt6-qtwebengine.spec index 4d8ff81..722e542 100644 --- a/qt6-qtwebengine.spec +++ b/qt6-qtwebengine.spec @@ -380,7 +380,7 @@ popd %patch -P50 -p1 -b .fix-build.patch ## upstream patches -%if 0%{?fedora} && 0%{?fedora} >= 41 +%if 0%{?fedora} >= 41 || 0%{?rhel} >= 10 %patch -P80 -p1 -b .fix-building-with-system-ffmpeg %endif From 7982d7dad791da15aa8e5c3368d44c79a4ff6618 Mon Sep 17 00:00:00 2001 From: Troy Dawson Date: Fri, 11 Oct 2024 14:29:47 -0700 Subject: [PATCH 30/76] There is no libXScrnSaver planned for RHEL 10 or EPEL 10 Signed-off-by: Troy Dawson --- qt6-qtwebengine.spec | 2 ++ 1 file changed, 2 insertions(+) diff --git a/qt6-qtwebengine.spec b/qt6-qtwebengine.spec index 722e542..5c12f67 100644 --- a/qt6-qtwebengine.spec +++ b/qt6-qtwebengine.spec @@ -181,7 +181,9 @@ BuildRequires: pkgconfig(xkbcommon) BuildRequires: pkgconfig(xkbfile) BuildRequires: pkgconfig(xrandr) BuildRequires: pkgconfig(xrender) +%if 0%{?fedora} || 0%{?rhel} < 10 BuildRequires: pkgconfig(xscrnsaver) +%endif BuildRequires: pkgconfig(xshmfence) BuildRequires: pkgconfig(xtst) BuildRequires: pkgconfig(zlib) From cf475836107ba92551e85dea45a097897630e131 Mon Sep 17 00:00:00 2001 From: Troy Dawson Date: Sat, 12 Oct 2024 16:04:04 -0700 Subject: [PATCH 31/76] Simplify conditional --- qt6-qtwebengine.spec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/qt6-qtwebengine.spec b/qt6-qtwebengine.spec index 5c12f67..6c2e951 100644 --- a/qt6-qtwebengine.spec +++ b/qt6-qtwebengine.spec @@ -181,7 +181,7 @@ BuildRequires: pkgconfig(xkbcommon) BuildRequires: pkgconfig(xkbfile) BuildRequires: pkgconfig(xrandr) BuildRequires: pkgconfig(xrender) -%if 0%{?fedora} || 0%{?rhel} < 10 +%if ! (0%{?rhel} >= 10) BuildRequires: pkgconfig(xscrnsaver) %endif BuildRequires: pkgconfig(xshmfence) From 41a60ac75af0aebe72e9943515dc6e194c660716 Mon Sep 17 00:00:00 2001 From: Jan Grulich Date: Mon, 14 Oct 2024 15:42:33 +0200 Subject: [PATCH 32/76] 6.8.0 --- .gitignore | 1 + clean_qtwebengine.sh | 2 +- qt6-qtwebengine.spec | 15 ++++---- qtwebengine-blink-system-openh264.patch | 29 +++++++-------- qtwebengine-fix-arm-build.patch | 14 ++++++++ qtwebengine-fix-build.patch | 48 ++++++++++++------------- sources | 2 +- 7 files changed, 62 insertions(+), 49 deletions(-) create mode 100644 qtwebengine-fix-arm-build.patch diff --git a/.gitignore b/.gitignore index 69a1a2b..4cada5f 100644 --- a/.gitignore +++ b/.gitignore @@ -11,3 +11,4 @@ /qtwebengine-everywhere-src-6.7.0-clean.tar.xz /qtwebengine-everywhere-src-6.7.1-clean.tar.xz /qtwebengine-everywhere-src-6.7.2-clean.tar.xz +/qtwebengine-everywhere-src-6.8.0-clean.tar.xz diff --git a/clean_qtwebengine.sh b/clean_qtwebengine.sh index be31c24..0453321 100755 --- a/clean_qtwebengine.sh +++ b/clean_qtwebengine.sh @@ -21,7 +21,7 @@ if [ -z "$1" ] ; then echo "usage: ./clean_qtwebengine.sh VERSION" - echo "e.g.: ./clean_qtwebengine.sh 6.5.0" + echo "e.g.: ./clean_qtwebengine.sh 6.8.0" exit 1 fi diff --git a/qt6-qtwebengine.spec b/qt6-qtwebengine.spec index 6c2e951..46873b3 100644 --- a/qt6-qtwebengine.spec +++ b/qt6-qtwebengine.spec @@ -50,8 +50,8 @@ Summary: Qt6 - QtWebEngine components Name: qt6-qtwebengine -Version: 6.7.2 -Release: 4%{?dist} +Version: 6.8.0 +Release: 1%{?dist} # See LICENSE.GPL LICENSE.LGPL LGPL_EXCEPTION.txt, for details # See also http://qt-project.org/doc/qt-5.0/qtdoc/licensing.html @@ -84,8 +84,8 @@ Patch3: qtwebengine-aarch64-new-stat.patch Patch50: qtwebengine-fix-build.patch ## Upstream patches: -# Fixes build with FFmpeg 7 -Patch80: qtwebengine-fix-building-with-system-ffmpeg.patch +# https://bugreports.qt.io/browse/QTBUG-129985 +Patch80: qtwebengine-fix-arm-build.patch ## Upstreamable patches: Patch110: qtwebengine-webrtc-system-openh264.patch @@ -382,9 +382,7 @@ popd %patch -P50 -p1 -b .fix-build.patch ## upstream patches -%if 0%{?fedora} >= 41 || 0%{?rhel} >= 10 -%patch -P80 -p1 -b .fix-building-with-system-ffmpeg -%endif +%patch -P80 -p1 -b .fix-arm-build ## upstreamable patches %patch -P110 -p1 -b .webrtc-system-openh264 @@ -673,6 +671,9 @@ done %endif %changelog +* Mon Oct 14 2024 Jan Grulich - 6.8.0-1 +- 6.8.0 + * Mon Sep 23 2024 Fabio Valentini - 6.7.2-4 - Rebuild for ffmpeg 7 diff --git a/qtwebengine-blink-system-openh264.patch b/qtwebengine-blink-system-openh264.patch index 2f102b1..2a12522 100644 --- a/qtwebengine-blink-system-openh264.patch +++ b/qtwebengine-blink-system-openh264.patch @@ -1,19 +1,17 @@ diff --git a/src/3rdparty/chromium/third_party/blink/renderer/modules/mediarecorder/BUILD.gn b/src/3rdparty/chromium/third_party/blink/renderer/modules/mediarecorder/BUILD.gn -index 0be70ed4b..bec344dec 100644 +index f05ad3eb2..8c73aa08e 100644 --- a/src/3rdparty/chromium/third_party/blink/renderer/modules/mediarecorder/BUILD.gn +++ b/src/3rdparty/chromium/third_party/blink/renderer/modules/mediarecorder/BUILD.gn -@@ -3,6 +3,7 @@ +@@ -3,9 +3,19 @@ # found in the LICENSE file. - + import("//build/buildflag_header.gni") +import("//build/config/linux/pkg_config.gni") import("//media/media_options.gni") import("//third_party/blink/renderer/modules/modules.gni") import("//third_party/libaom/options.gni") -@@ -13,6 +14,14 @@ buildflag_header("buildflags") { - flags = [ "RTC_USE_H264=$rtc_use_h264" ] - } - ++import("//third_party/webrtc/webrtc.gni") ++ +if (rtc_use_h264 && rtc_use_system_openh264) { + pkg_config("openh264") { + packages = [ @@ -21,14 +19,13 @@ index 0be70ed4b..bec344dec 100644 + ] + } +} -+ + blink_modules_sources("mediarecorder") { sources = [ - "audio_track_encoder.cc", -@@ -62,7 +71,11 @@ blink_modules_sources("mediarecorder") { +@@ -56,7 +66,11 @@ blink_modules_sources("mediarecorder") { "h264_encoder.h", ] - + - deps += [ "//third_party/openh264:encoder" ] + if (rtc_use_system_openh264) { + configs += [":openh264"] @@ -36,16 +33,16 @@ index 0be70ed4b..bec344dec 100644 + deps += [ "//third_party/openh264:encoder" ] + } } - + if (enable_libaom) { diff --git a/src/3rdparty/chromium/third_party/blink/renderer/modules/webcodecs/BUILD.gn b/src/3rdparty/chromium/third_party/blink/renderer/modules/webcodecs/BUILD.gn -index 28205ad14..def86bc8f 100644 +index 1ad082fe7..7bf84b932 100644 --- a/src/3rdparty/chromium/third_party/blink/renderer/modules/webcodecs/BUILD.gn +++ b/src/3rdparty/chromium/third_party/blink/renderer/modules/webcodecs/BUILD.gn @@ -2,11 +2,21 @@ # Use of this source code is governed by a BSD-style license that can be # found in the LICENSE file. - + +import("//build/config/linux/pkg_config.gni") import("//media/media_options.gni") import("//third_party/blink/renderer/modules/modules.gni") @@ -61,10 +58,10 @@ index 28205ad14..def86bc8f 100644 + ] + } +} - + blink_modules_sources("webcodecs") { sources = [ -@@ -115,7 +125,11 @@ blink_modules_sources("webcodecs") { +@@ -117,7 +127,11 @@ blink_modules_sources("webcodecs") { deps += [ "//third_party/libvpx" ] } if (media_use_openh264) { diff --git a/qtwebengine-fix-arm-build.patch b/qtwebengine-fix-arm-build.patch new file mode 100644 index 0000000..123ddac --- /dev/null +++ b/qtwebengine-fix-arm-build.patch @@ -0,0 +1,14 @@ +diff --git a/src/core/CMakeLists.txt b/src/core/CMakeLists.txt +index fe4f2c3f1..729d4d3e9 100644 +--- a/src/core/CMakeLists.txt ++++ b/src/core/CMakeLists.txt +@@ -544,6 +544,10 @@ foreach(arch ${archs}) + ) + endif() + endif() ++ if(cpu MATCHES "arm.*") ++ # https://bugreports.qt.io/browse/QTBUG-129985 ++ list(APPEND gnArgArg build_webnn_with_xnnpack=false) ++ endif() + unset(cpu) + endif() diff --git a/qtwebengine-fix-build.patch b/qtwebengine-fix-build.patch index d9e3d01..20233bc 100644 --- a/qtwebengine-fix-build.patch +++ b/qtwebengine-fix-build.patch @@ -1,5 +1,5 @@ diff --git a/src/3rdparty/chromium/base/debug/profiler.h b/src/3rdparty/chromium/base/debug/profiler.h -index 035affc7c..d8e1a5346 100644 +index 035affc..d8e1a53 100644 --- a/src/3rdparty/chromium/base/debug/profiler.h +++ b/src/3rdparty/chromium/base/debug/profiler.h @@ -5,6 +5,7 @@ @@ -11,7 +11,7 @@ index 035affc7c..d8e1a5346 100644 #include diff --git a/src/3rdparty/chromium/cc/trees/target_property.cc b/src/3rdparty/chromium/cc/trees/target_property.cc -index 7d73467a9..be4febd9a 100644 +index 7d73467..be4febd 100644 --- a/src/3rdparty/chromium/cc/trees/target_property.cc +++ b/src/3rdparty/chromium/cc/trees/target_property.cc @@ -8,6 +8,8 @@ @@ -24,7 +24,7 @@ index 7d73467a9..be4febd9a 100644 static_assert(TargetProperty::LAST_TARGET_PROPERTY < diff --git a/src/3rdparty/chromium/device/base/synchronization/one_writer_seqlock.cc b/src/3rdparty/chromium/device/base/synchronization/one_writer_seqlock.cc -index c62a00ee0..af54520b7 100644 +index c62a00e..af54520 100644 --- a/src/3rdparty/chromium/device/base/synchronization/one_writer_seqlock.cc +++ b/src/3rdparty/chromium/device/base/synchronization/one_writer_seqlock.cc @@ -6,6 +6,8 @@ @@ -37,7 +37,7 @@ index c62a00ee0..af54520b7 100644 OneWriterSeqLock::OneWriterSeqLock() : sequence_(0) {} diff --git a/src/3rdparty/chromium/extensions/common/constants.h b/src/3rdparty/chromium/extensions/common/constants.h -index adbcfa540..5923bd2fe 100644 +index b5823c7..c152482 100644 --- a/src/3rdparty/chromium/extensions/common/constants.h +++ b/src/3rdparty/chromium/extensions/common/constants.h @@ -13,6 +13,8 @@ @@ -50,7 +50,7 @@ index adbcfa540..5923bd2fe 100644 // Scheme we serve extension content from. diff --git a/src/3rdparty/chromium/gpu/config/gpu_util.h b/src/3rdparty/chromium/gpu/config/gpu_util.h -index 8edbfbe7d..467ebd65e 100644 +index 8edbfbe..467ebd6 100644 --- a/src/3rdparty/chromium/gpu/config/gpu_util.h +++ b/src/3rdparty/chromium/gpu/config/gpu_util.h @@ -5,6 +5,8 @@ @@ -63,11 +63,11 @@ index 8edbfbe7d..467ebd65e 100644 #include "gpu/config/gpu_feature_info.h" #include "gpu/gpu_export.h" diff --git a/src/3rdparty/chromium/net/base/parse_number.h b/src/3rdparty/chromium/net/base/parse_number.h -index f923b18a7..8f3c6ef78 100644 +index f70619a..5c4eee7 100644 --- a/src/3rdparty/chromium/net/base/parse_number.h +++ b/src/3rdparty/chromium/net/base/parse_number.h @@ -10,6 +10,8 @@ - #include "base/strings/string_piece.h" + #include "net/base/net_export.h" +#include @@ -76,7 +76,7 @@ index f923b18a7..8f3c6ef78 100644 // network protocols. // diff --git a/src/3rdparty/chromium/ppapi/utility/completion_callback_factory_thread_traits.h b/src/3rdparty/chromium/ppapi/utility/completion_callback_factory_thread_traits.h -index 7c0dcdecb..97054d476 100644 +index 7c0dcde..97054d4 100644 --- a/src/3rdparty/chromium/ppapi/utility/completion_callback_factory_thread_traits.h +++ b/src/3rdparty/chromium/ppapi/utility/completion_callback_factory_thread_traits.h @@ -38,6 +38,10 @@ namespace pp { @@ -100,10 +100,10 @@ index 7c0dcdecb..97054d476 100644 /// The non-thread-safe version of thread traits. Using this class as the diff --git a/src/3rdparty/chromium/third_party/dawn/src/dawn/native/CacheKey.h b/src/3rdparty/chromium/third_party/dawn/src/dawn/native/CacheKey.h -index 6cec3b6b8..541bba5b1 100644 +index a65ea9a..ba967c0 100644 --- a/src/3rdparty/chromium/third_party/dawn/src/dawn/native/CacheKey.h +++ b/src/3rdparty/chromium/third_party/dawn/src/dawn/native/CacheKey.h -@@ -15,6 +15,7 @@ +@@ -28,6 +28,7 @@ #ifndef SRC_DAWN_NATIVE_CACHEKEY_H_ #define SRC_DAWN_NATIVE_CACHEKEY_H_ @@ -112,19 +112,19 @@ index 6cec3b6b8..541bba5b1 100644 #include "dawn/native/stream/ByteVectorSink.h" diff --git a/src/3rdparty/chromium/third_party/libgav1/src/src/utils/threadpool.cc b/src/3rdparty/chromium/third_party/libgav1/src/src/utils/threadpool.cc -index e171db6c7..dfbd126b4 100644 +index 6fa2e88..6b942ab 100644 --- a/src/3rdparty/chromium/third_party/libgav1/src/src/utils/threadpool.cc +++ b/src/3rdparty/chromium/third_party/libgav1/src/src/utils/threadpool.cc -@@ -30,6 +30,7 @@ - #include +@@ -31,6 +31,7 @@ #include + #include #include +#include #include #include diff --git a/src/3rdparty/chromium/third_party/perfetto/src/trace_processor/importers/proto/proto_importer_module.h b/src/3rdparty/chromium/third_party/perfetto/src/trace_processor/importers/proto/proto_importer_module.h -index cc2c3a2b3..8eb694e73 100644 +index cc2c3a2..8eb694e 100644 --- a/src/3rdparty/chromium/third_party/perfetto/src/trace_processor/importers/proto/proto_importer_module.h +++ b/src/3rdparty/chromium/third_party/perfetto/src/trace_processor/importers/proto/proto_importer_module.h @@ -22,6 +22,8 @@ @@ -137,12 +137,12 @@ index cc2c3a2b3..8eb694e73 100644 namespace protos { diff --git a/src/3rdparty/chromium/third_party/skia/src/utils/SkParseColor.cpp b/src/3rdparty/chromium/third_party/skia/src/utils/SkParseColor.cpp -index 0101632c5..3f04a2dd2 100644 +index ae6a412..5fe0370 100644 --- a/src/3rdparty/chromium/third_party/skia/src/utils/SkParseColor.cpp +++ b/src/3rdparty/chromium/third_party/skia/src/utils/SkParseColor.cpp @@ -15,6 +15,10 @@ + #include #include - #include +#include +#include @@ -152,20 +152,20 @@ index 0101632c5..3f04a2dd2 100644 "aliceblue", "antiquewhite", diff --git a/src/3rdparty/chromium/third_party/vulkan_memory_allocator/include/vk_mem_alloc.h b/src/3rdparty/chromium/third_party/vulkan_memory_allocator/include/vk_mem_alloc.h -index b26de34cc..caa0df9f9 100644 +index 0bbfeed..91f19f8 100644 --- a/src/3rdparty/chromium/third_party/vulkan_memory_allocator/include/vk_mem_alloc.h +++ b/src/3rdparty/chromium/third_party/vulkan_memory_allocator/include/vk_mem_alloc.h -@@ -105,6 +105,8 @@ Documentation of all members: vk_mem_alloc.h - - [Source repository on GitHub](https://github.com/GPUOpen-LibrariesAndSDKs/VulkanMemoryAllocator) +@@ -122,6 +122,8 @@ See documentation chapter: \ref statistics. */ + +#include + #ifdef __cplusplus extern "C" { #endif diff --git a/src/3rdparty/chromium/third_party/webrtc/modules/portal/xdg_session_details.h b/src/3rdparty/chromium/third_party/webrtc/modules/portal/xdg_session_details.h -index ab52508c2..050229a2f 100644 +index ab52508..050229a 100644 --- a/src/3rdparty/chromium/third_party/webrtc/modules/portal/xdg_session_details.h +++ b/src/3rdparty/chromium/third_party/webrtc/modules/portal/xdg_session_details.h @@ -13,6 +13,7 @@ @@ -177,7 +177,7 @@ index ab52508c2..050229a2f 100644 namespace webrtc { diff --git a/src/3rdparty/chromium/ui/events/gesture_event_details.h b/src/3rdparty/chromium/ui/events/gesture_event_details.h -index bdf840619..68f473f27 100644 +index 857da97..e48e24d 100644 --- a/src/3rdparty/chromium/ui/events/gesture_event_details.h +++ b/src/3rdparty/chromium/ui/events/gesture_event_details.h @@ -5,6 +5,7 @@ @@ -189,7 +189,7 @@ index bdf840619..68f473f27 100644 #include "base/check_op.h" diff --git a/src/3rdparty/chromium/ui/gfx/geometry/linear_gradient.h b/src/3rdparty/chromium/ui/gfx/geometry/linear_gradient.h -index d32766283..18b8a85e1 100644 +index 7239ed5..975b88c 100644 --- a/src/3rdparty/chromium/ui/gfx/geometry/linear_gradient.h +++ b/src/3rdparty/chromium/ui/gfx/geometry/linear_gradient.h @@ -7,6 +7,7 @@ @@ -201,7 +201,7 @@ index d32766283..18b8a85e1 100644 #include #include diff --git a/src/3rdparty/chromium/v8/src/base/macros.h b/src/3rdparty/chromium/v8/src/base/macros.h -index f81258363..ec7d67550 100644 +index 93a99ec..f6ddfe7 100644 --- a/src/3rdparty/chromium/v8/src/base/macros.h +++ b/src/3rdparty/chromium/v8/src/base/macros.h @@ -5,6 +5,7 @@ @@ -213,7 +213,7 @@ index f81258363..ec7d67550 100644 #include diff --git a/src/core/browsing_data_remover_delegate_qt.h b/src/core/browsing_data_remover_delegate_qt.h -index d33af4acb..ce864b6bd 100644 +index d33af4a..ce864b6 100644 --- a/src/core/browsing_data_remover_delegate_qt.h +++ b/src/core/browsing_data_remover_delegate_qt.h @@ -8,6 +8,8 @@ diff --git a/sources b/sources index 898ad3f..8032f82 100644 --- a/sources +++ b/sources @@ -1,2 +1,2 @@ -SHA512 (qtwebengine-everywhere-src-6.7.2-clean.tar.xz) = 86fb7bc6d791c5d06d9c8918d294d53c31b1c7c619b546712b9ce0d77ceb0e21d59e89f0f0fc9c6f4aedfc391cc6e2e7a57e06d297da0f76e270d199f1320c4c +SHA512 (qtwebengine-everywhere-src-6.8.0-clean.tar.xz) = 38bbe166051ed9945c2611c0bbe1ee203be65e523974935fa6b84f0d07a00e8b24b340df5eba911b06d07d0aa65a4e8d6e0fd7b39ff2593e091552842c0d620f SHA512 (pulseaudio-12.2-headers.tar.gz) = a5a9bcbb16030b3bc83cc0cc8f5e7f90e0723d3e83258a5c77eacb32eaa267118a73fa7814fbcc99a24e4907916a2b371ebb6dedc4f45541c3acf6c834fd35be From 829f2eb0960422f7e5ca394a4f3d3a2b513817bc Mon Sep 17 00:00:00 2001 From: Jan Grulich Date: Wed, 4 Dec 2024 08:21:39 +0100 Subject: [PATCH 33/76] 6.8.1 --- .gitignore | 1 + qt6-qtwebengine.spec | 6 +++++- sources | 2 +- 3 files changed, 7 insertions(+), 2 deletions(-) diff --git a/.gitignore b/.gitignore index 4cada5f..4643bb3 100644 --- a/.gitignore +++ b/.gitignore @@ -12,3 +12,4 @@ /qtwebengine-everywhere-src-6.7.1-clean.tar.xz /qtwebengine-everywhere-src-6.7.2-clean.tar.xz /qtwebengine-everywhere-src-6.8.0-clean.tar.xz +/qtwebengine-everywhere-src-6.8.1-clean.tar.xz diff --git a/qt6-qtwebengine.spec b/qt6-qtwebengine.spec index 46873b3..9e106bd 100644 --- a/qt6-qtwebengine.spec +++ b/qt6-qtwebengine.spec @@ -50,7 +50,7 @@ Summary: Qt6 - QtWebEngine components Name: qt6-qtwebengine -Version: 6.8.0 +Version: 6.8.1 Release: 1%{?dist} # See LICENSE.GPL LICENSE.LGPL LGPL_EXCEPTION.txt, for details @@ -619,6 +619,7 @@ done %{_qt6_libdir}/pkgconfig/Qt6WebEngineWidgets.pc %{_qt6_archdatadir}/mkspecs/modules/qt_lib_webengine*.pri %{_qt6_plugindir}/designer/libqwebengineview.so +%{_qt6_libdir}/qt6/sbom/%{qt_module}-%{version}.spdx %files devtools %{_qt6_datadir}/resources/qtwebengine_devtools_resources.pak @@ -671,6 +672,9 @@ done %endif %changelog +* Tue Dec 03 2024 Jan Grulich - 6.8.1-1 +- 6.8.1 + * Mon Oct 14 2024 Jan Grulich - 6.8.0-1 - 6.8.0 diff --git a/sources b/sources index 8032f82..f0b3e6e 100644 --- a/sources +++ b/sources @@ -1,2 +1,2 @@ -SHA512 (qtwebengine-everywhere-src-6.8.0-clean.tar.xz) = 38bbe166051ed9945c2611c0bbe1ee203be65e523974935fa6b84f0d07a00e8b24b340df5eba911b06d07d0aa65a4e8d6e0fd7b39ff2593e091552842c0d620f +SHA512 (qtwebengine-everywhere-src-6.8.1-clean.tar.xz) = 112537e9dc89d945543387ca8cd861c9957de9b6861b8c184232bae8deabb5fc1065d880ec06c5f4b9222a5063c14c0cb4441f40435bf16a7238dd064ffe4993 SHA512 (pulseaudio-12.2-headers.tar.gz) = a5a9bcbb16030b3bc83cc0cc8f5e7f90e0723d3e83258a5c77eacb32eaa267118a73fa7814fbcc99a24e4907916a2b371ebb6dedc4f45541c3acf6c834fd35be From 9617fe7533182034c9ca4e0ef20f84bc2f94b982 Mon Sep 17 00:00:00 2001 From: Jan Grulich Date: Thu, 5 Dec 2024 22:09:21 +0100 Subject: [PATCH 34/76] Move Software Bill of Materials from -devel --- qt6-qtwebengine.spec | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/qt6-qtwebengine.spec b/qt6-qtwebengine.spec index 9e106bd..9fa700c 100644 --- a/qt6-qtwebengine.spec +++ b/qt6-qtwebengine.spec @@ -51,7 +51,7 @@ Summary: Qt6 - QtWebEngine components Name: qt6-qtwebengine Version: 6.8.1 -Release: 1%{?dist} +Release: 2%{?dist} # See LICENSE.GPL LICENSE.LGPL LGPL_EXCEPTION.txt, for details # See also http://qt-project.org/doc/qt-5.0/qtdoc/licensing.html @@ -506,6 +506,7 @@ done %files %license LICENSE.* +%{_qt6_archdatadir}/sbom/%{qt_module}-%{version}.spdx %{_qt6_libdir}/libQt6WebEngineCore.so.* %{_qt6_libdir}/libQt6WebEngineQuick.so.* %{_qt6_libdir}/libQt6WebEngineQuickDelegatesQml.so.* @@ -619,7 +620,6 @@ done %{_qt6_libdir}/pkgconfig/Qt6WebEngineWidgets.pc %{_qt6_archdatadir}/mkspecs/modules/qt_lib_webengine*.pri %{_qt6_plugindir}/designer/libqwebengineview.so -%{_qt6_libdir}/qt6/sbom/%{qt_module}-%{version}.spdx %files devtools %{_qt6_datadir}/resources/qtwebengine_devtools_resources.pak @@ -672,7 +672,10 @@ done %endif %changelog -* Tue Dec 03 2024 Jan Grulich - 6.8.1-1 +* Thu Dec 05 2024 Jan Grulich - 6.8.1-2 +- Move Software Bill of Materials from -devel + +* Tue Dec 03 2024 Jan Grulich - 6.8.1-1 - 6.8.1 * Mon Oct 14 2024 Jan Grulich - 6.8.0-1 From 99ee61922b26e3af3521718666f18e55b70767f3 Mon Sep 17 00:00:00 2001 From: Pavel Solovev Date: Sun, 15 Dec 2024 09:38:53 +0000 Subject: [PATCH 35/76] Add optional deps libva for VA-API support qtwebsockets for websockets --- qt6-qtwebengine.spec | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/qt6-qtwebengine.spec b/qt6-qtwebengine.spec index 9fa700c..36e29ed 100644 --- a/qt6-qtwebengine.spec +++ b/qt6-qtwebengine.spec @@ -51,7 +51,7 @@ Summary: Qt6 - QtWebEngine components Name: qt6-qtwebengine Version: 6.8.1 -Release: 2%{?dist} +Release: 3%{?dist} # See LICENSE.GPL LICENSE.LGPL LGPL_EXCEPTION.txt, for details # See also http://qt-project.org/doc/qt-5.0/qtdoc/licensing.html @@ -111,6 +111,7 @@ BuildRequires: qt6-qtsvg-devel BuildRequires: qt6-qttools-static BuildRequires: qt6-qtquickcontrols2-devel BuildRequires: qt6-qtwebchannel-devel +BuildRequires: qt6-qtwebsockets-devel # for examples? BuildRequires: ninja-build BuildRequires: cmake @@ -198,6 +199,7 @@ BuildRequires: pkgconfig(libavcodec) BuildRequires: pkgconfig(libavformat) BuildRequires: pkgconfig(libavutil) BuildRequires: pkgconfig(openh264) +BuildRequires: pkgconfig(libva) %if 0%{?fedora} && 0%{?fedora} >= 39 BuildRequires: python3-zombie-imp @@ -672,6 +674,9 @@ done %endif %changelog +* Sun Dec 15 2024 Pavel Solovev - 6.8.1-3 +- Add optional deps + * Thu Dec 05 2024 Jan Grulich - 6.8.1-2 - Move Software Bill of Materials from -devel From 241b88a584247ca5a0a312c22bfe9432ce4e00cb Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Sat, 18 Jan 2025 21:45:24 +0000 Subject: [PATCH 36/76] Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild --- qt6-qtwebengine.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/qt6-qtwebengine.spec b/qt6-qtwebengine.spec index 36e29ed..956d20a 100644 --- a/qt6-qtwebengine.spec +++ b/qt6-qtwebengine.spec @@ -51,7 +51,7 @@ Summary: Qt6 - QtWebEngine components Name: qt6-qtwebengine Version: 6.8.1 -Release: 3%{?dist} +Release: 4%{?dist} # See LICENSE.GPL LICENSE.LGPL LGPL_EXCEPTION.txt, for details # See also http://qt-project.org/doc/qt-5.0/qtdoc/licensing.html @@ -674,6 +674,9 @@ done %endif %changelog +* Sat Jan 18 2025 Fedora Release Engineering - 6.8.1-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild + * Sun Dec 15 2024 Pavel Solovev - 6.8.1-3 - Add optional deps From f0bccee93591f8674ac5d12f6045be405d583151 Mon Sep 17 00:00:00 2001 From: Jan Grulich Date: Fri, 31 Jan 2025 18:46:13 +0100 Subject: [PATCH 37/76] 6.8.2 --- .gitignore | 1 + qt6-qtwebengine.spec | 7 +++++-- sources | 2 +- 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/.gitignore b/.gitignore index 4643bb3..3f65fc9 100644 --- a/.gitignore +++ b/.gitignore @@ -13,3 +13,4 @@ /qtwebengine-everywhere-src-6.7.2-clean.tar.xz /qtwebengine-everywhere-src-6.8.0-clean.tar.xz /qtwebengine-everywhere-src-6.8.1-clean.tar.xz +/qtwebengine-everywhere-src-6.8.2-clean.tar.xz diff --git a/qt6-qtwebengine.spec b/qt6-qtwebengine.spec index 956d20a..a0ce58d 100644 --- a/qt6-qtwebengine.spec +++ b/qt6-qtwebengine.spec @@ -50,8 +50,8 @@ Summary: Qt6 - QtWebEngine components Name: qt6-qtwebengine -Version: 6.8.1 -Release: 4%{?dist} +Version: 6.8.2 +Release: 1%{?dist} # See LICENSE.GPL LICENSE.LGPL LGPL_EXCEPTION.txt, for details # See also http://qt-project.org/doc/qt-5.0/qtdoc/licensing.html @@ -674,6 +674,9 @@ done %endif %changelog +* Fri Jan 31 2025 Jan Grulich - 6.8.2-1 +- 6.8.2 + * Sat Jan 18 2025 Fedora Release Engineering - 6.8.1-4 - Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild diff --git a/sources b/sources index f0b3e6e..b5e54a6 100644 --- a/sources +++ b/sources @@ -1,2 +1,2 @@ -SHA512 (qtwebengine-everywhere-src-6.8.1-clean.tar.xz) = 112537e9dc89d945543387ca8cd861c9957de9b6861b8c184232bae8deabb5fc1065d880ec06c5f4b9222a5063c14c0cb4441f40435bf16a7238dd064ffe4993 +SHA512 (qtwebengine-everywhere-src-6.8.2-clean.tar.xz) = 815e632075a7c5bd8950d887f56c66eac280dc02fed976907b8c377544563d19d1bef632336c2d170fdfb55cb271c8982dae3dffce2c2c44646d212125ebb3b3 SHA512 (pulseaudio-12.2-headers.tar.gz) = a5a9bcbb16030b3bc83cc0cc8f5e7f90e0723d3e83258a5c77eacb32eaa267118a73fa7814fbcc99a24e4907916a2b371ebb6dedc4f45541c3acf6c834fd35be From 44d23d4ca3e834721cbbe2d3dd6d81365c7a1a58 Mon Sep 17 00:00:00 2001 From: Jan Grulich Date: Sat, 1 Feb 2025 07:53:10 +0100 Subject: [PATCH 38/76] List SBOM for QtPdf in the files section --- qt6-qtwebengine.spec | 1 + 1 file changed, 1 insertion(+) diff --git a/qt6-qtwebengine.spec b/qt6-qtwebengine.spec index a0ce58d..fae3f6f 100644 --- a/qt6-qtwebengine.spec +++ b/qt6-qtwebengine.spec @@ -509,6 +509,7 @@ done %files %license LICENSE.* %{_qt6_archdatadir}/sbom/%{qt_module}-%{version}.spdx +%{_qt6_archdatadir}/sbom/qtpdf-%{version}.spdx %{_qt6_libdir}/libQt6WebEngineCore.so.* %{_qt6_libdir}/libQt6WebEngineQuick.so.* %{_qt6_libdir}/libQt6WebEngineQuickDelegatesQml.so.* From 89f26d90390a528dc76ff56fba0c44e3c8434466 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dan=20Hor=C3=A1k?= Date: Fri, 14 Feb 2025 12:26:12 +0100 Subject: [PATCH 39/76] enable ppc64le --- prepare-ppc64.sh | 52 + qt6-qtwebengine.spec | 13 +- qtwebengine-6.7-ppc64.patch | 12 + qtwebengine-chromium-ppc64.patch | 27909 +++++++++++++++++++++++++++++ series.ppc64 | 44 + 5 files changed, 28029 insertions(+), 1 deletion(-) create mode 100755 prepare-ppc64.sh create mode 100644 qtwebengine-6.7-ppc64.patch create mode 100644 qtwebengine-chromium-ppc64.patch create mode 100644 series.ppc64 diff --git a/prepare-ppc64.sh b/prepare-ppc64.sh new file mode 100755 index 0000000..2872e29 --- /dev/null +++ b/prepare-ppc64.sh @@ -0,0 +1,52 @@ +#! /bin/bash +# +# Prepare ppc64le patchset for qtwebengine from Chromium patches using +# - https://quickbuild.io/~raptor-engineering-public/+archive/ubuntu/chromium/ or +# - https://gitlab.raptorengineering.com/raptor-engineering-public/chromium/openpower-patches +# +# Usage +# - check the base Chromium release in CHROMIUM_VERSION +# - get the patches from the URLs above +# - run "prepare-ppc64.sh " +# + +patch_cleanup () +{ + file=$1 + patch=$2 + + [ -f $file ] || { echo "File $file doesn't exist"; exit 1; } + + remove=$(echo $patch | sed -e 's@\/@\\\/@g') + + echo "Removing changes for $patch from $file ..." + + sed -i -e "/Index: chromium-[0-9\.]*\/${remove}/,/^Index:/ { +/Index: chromium-[0-9\.]*\/${remove}/d; +/^[-@=+ ]/d; +/^$/d; +}" $file + +} + +dir=$1 + +[ -d $dir/ppc64le ] || { echo "Path $dir/ppc64le doesn't exist"; exit 1; } + +# remove patches for files not included in the bundled chromium +patch_cleanup $dir/ppc64le/third_party/0001-Add-PPC64-support-for-boringssl.patch third_party/boringssl/src/crypto/test/abi_test.h +patch_cleanup $dir/ppc64le/crashpad/0001-Implement-support-for-PPC64-on-Linux.patch third_party/crashpad/crashpad/minidump/test/minidump_context_test_util.cc +patch_cleanup $dir/ppc64le/crashpad/0001-Implement-support-for-PPC64-on-Linux.patch third_party/crashpad/crashpad/minidump/test/minidump_context_test_util.h +patch_cleanup $dir/ppc64le/crashpad/0001-Implement-support-for-PPC64-on-Linux.patch third_party/crashpad/crashpad/snapshot/test/test_cpu_context.cc +patch_cleanup $dir/ppc64le/crashpad/0001-Implement-support-for-PPC64-on-Linux.patch third_party/crashpad/crashpad/snapshot/test/test_cpu_context.h +patch_cleanup $dir/ppc64le/crashpad/0001-Implement-support-for-PPC64-on-Linux.patch third_party/crashpad/crashpad/test/linux/get_tls.cc +patch_cleanup $dir/ppc64le/crashpad/0001-Implement-support-for-PPC64-on-Linux.patch third_party/crashpad/crashpad/test/multiprocess_posix.cc + +# concatenate the patches from the series file to a single patchset +echo "Creating patchset ..." +cat series.ppc64 | while read line; do + case $line in + \#*) ;; + *) [ -z "$line" ] && continue; cat $dir/$line ;; + esac +done > qtwebengine-chromium-ppc64.patch diff --git a/qt6-qtwebengine.spec b/qt6-qtwebengine.spec index fae3f6f..8a35cf9 100644 --- a/qt6-qtwebengine.spec +++ b/qt6-qtwebengine.spec @@ -92,10 +92,14 @@ Patch110: qtwebengine-webrtc-system-openh264.patch Patch111: qtwebengine-blink-system-openh264.patch Patch112: qtwebengine-media-system-openh264.patch +## ppc64le port +Patch200: qtwebengine-6.7-ppc64.patch +Patch201: qtwebengine-chromium-ppc64.patch + # handled by qt6-srpm-macros, which defines %%qt6_qtwebengine_arches # FIXME use/update qt6_qtwebengine_arches # 32-bit arches not supported (https://bugreports.qt.io/browse/QTBUG-102143) -ExclusiveArch: aarch64 x86_64 +ExclusiveArch: aarch64 x86_64 ppc64le BuildRequires: cmake BuildRequires: make @@ -391,6 +395,13 @@ popd %patch -P111 -p1 -b .blink-system-openh264 %patch -P112 -p1 -b .media-system-openh264 +# ppc64le support +%patch -P200 -p1 +pushd src/3rdparty/chromium +%patch -P201 -p1 +popd + + # delete all "toolprefix = " lines from build/toolchain/linux/BUILD.gn, as we # never cross-compile in native Fedora RPMs, fixes ARM and aarch64 FTBFS sed -i -e '/toolprefix = /d' -e 's/\${toolprefix}//g' \ diff --git a/qtwebengine-6.7-ppc64.patch b/qtwebengine-6.7-ppc64.patch new file mode 100644 index 0000000..4079f06 --- /dev/null +++ b/qtwebengine-6.7-ppc64.patch @@ -0,0 +1,12 @@ +diff -up qtwebengine-everywhere-src-6.7.2/cmake/Functions.cmake.orig qtwebengine-everywhere-src-6.7.2/cmake/Functions.cmake +--- qtwebengine-everywhere-src-6.7.2/cmake/Functions.cmake.orig 2024-09-19 16:19:27.740234419 +0200 ++++ qtwebengine-everywhere-src-6.7.2/cmake/Functions.cmake 2024-09-19 16:28:30.744377245 +0200 +@@ -635,6 +635,8 @@ function(get_gn_arch result arch) + set(${result} "mips64el" PARENT_SCOPE) + elseif(arch STREQUAL "riscv64") + set(${result} "riscv64" PARENT_SCOPE) ++ elseif(arch STREQUAL "power64") ++ set(${result} "ppc64" PARENT_SCOPE) + else() + message(FATAL_ERROR "Unknown architecture: ${arch}") + endif() diff --git a/qtwebengine-chromium-ppc64.patch b/qtwebengine-chromium-ppc64.patch new file mode 100644 index 0000000..474ef7c --- /dev/null +++ b/qtwebengine-chromium-ppc64.patch @@ -0,0 +1,27909 @@ +From b3a14db7637232d30c878cc1f1ad6d8037e81379 Mon Sep 17 00:00:00 2001 +From: Shawn Anastasio +Date: Tue, 15 Jan 2019 22:42:21 -0600 +Subject: [PATCH] linux/seccomp-bpf: ppc64+glibc workaround in SIGSYS handler + +Workaround for an apparent issue with glibc negating syscall +parameters. Observed on a ppc64le machine with glibc. +More investigation required. +--- + sandbox/linux/seccomp-bpf/trap.cc | 14 ++++++++++++++ + 1 file changed, 14 insertions(+) + +Index: chromium-122.0.6261.128/sandbox/linux/seccomp-bpf/trap.cc +=================================================================== +--- chromium-122.0.6261.128.orig/sandbox/linux/seccomp-bpf/trap.cc ++++ chromium-122.0.6261.128/sandbox/linux/seccomp-bpf/trap.cc +@@ -231,6 +231,20 @@ void Trap::SigSys(int nr, LinuxSigInfo* + SetIsInSigHandler(); + } + ++#if defined(__powerpc64__) ++ // On ppc64+glibc, some syscalls seem to accidentally negate the first ++ // parameter which causes checks against it to fail. For now, manually ++ // negate them back. ++ // TODO(shawn@anastas.io): investigate this issue further ++ auto nr = SECCOMP_SYSCALL(ctx); ++ if (nr == __NR_openat || nr == __NR_mkdirat || nr == __NR_faccessat || nr == __NR_readlinkat || ++ nr == __NR_renameat || nr == __NR_renameat2 || nr == __NR_newfstatat || nr == __NR_unlinkat) { ++ if (static_cast(SECCOMP_PARM1(ctx)) > 0) { ++ SECCOMP_PARM1(ctx) = -SECCOMP_PARM1(ctx); ++ } ++ } ++#endif ++ + // Copy the seccomp-specific data into a arch_seccomp_data structure. This + // is what we are showing to TrapFnc callbacks that the system call + // evaluator registered with the sandbox. +From 0c65e40ae578b743b5f06956597ebc9700768d18 Mon Sep 17 00:00:00 2001 +From: Shawn Anastasio +Date: Thu, 9 Aug 2018 22:45:47 -0500 +Subject: [PATCH 1/1] sandbox: Enable seccomp_bpf for ppc64 + +--- + sandbox/features.gni | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +Index: chromium-122.0.6261.128/sandbox/features.gni +=================================================================== +--- chromium-122.0.6261.128.orig/sandbox/features.gni ++++ chromium-122.0.6261.128/sandbox/features.gni +@@ -9,7 +9,8 @@ + use_seccomp_bpf = (is_linux || is_chromeos || is_android) && + (current_cpu == "x86" || current_cpu == "x64" || + current_cpu == "arm" || current_cpu == "arm64" || +- current_cpu == "mipsel" || current_cpu == "mips64el") ++ current_cpu == "mipsel" || current_cpu == "mips64el" || ++ current_cpu == "ppc64") + + # SSBD (Speculative Store Bypass Disable) is a mitigation of Spectre Variant 4. + # As Spectre Variant 4 can be mitigated by site isolation, opt-out SSBD on site +From 7468b266532bd607eb1f5292d758256d800b2eee Mon Sep 17 00:00:00 2001 +From: Shawn Anastasio +Date: Fri, 10 Aug 2018 00:23:50 -0500 +Subject: [PATCH] services/service_manager/sandbox/linux: Fix TCGETS + declaration on PPC64 + +--- + .../sandbox/linux/bpf_renderer_policy_linux.cc | 5 +++++ + 1 file changed, 5 insertions(+) + +Index: chromium-122.0.6261.128/sandbox/policy/linux/bpf_renderer_policy_linux.cc +=================================================================== +--- chromium-122.0.6261.128.orig/sandbox/policy/linux/bpf_renderer_policy_linux.cc ++++ chromium-122.0.6261.128/sandbox/policy/linux/bpf_renderer_policy_linux.cc +@@ -15,6 +15,11 @@ + #include "sandbox/linux/system_headers/linux_syscalls.h" + #include "sandbox/policy/linux/sandbox_linux.h" + ++// On PPC64, TCGETS is defined in terms of struct termios, so we must include termios.h ++#ifdef __powerpc64__ ++#include ++#endif ++ + // TODO(vignatti): replace the local definitions below with #include + // once kernel version 4.6 becomes widely used. + #include +From c9043a422fb4a5a6c72aaa1b907cea5f6a3061dd Mon Sep 17 00:00:00 2001 +From: Shawn Anastasio +Date: Thu, 9 Aug 2018 19:10:24 -0500 +Subject: [PATCH 1/4] sandbox/linux/bpf_dsl: Update syscall ranges for ppc64 + +--- + sandbox/linux/bpf_dsl/linux_syscall_ranges.h | 7 +++++++ + 1 file changed, 7 insertions(+) + +Index: chromium-122.0.6261.128/sandbox/linux/bpf_dsl/linux_syscall_ranges.h +=================================================================== +--- chromium-122.0.6261.128.orig/sandbox/linux/bpf_dsl/linux_syscall_ranges.h ++++ chromium-122.0.6261.128/sandbox/linux/bpf_dsl/linux_syscall_ranges.h +@@ -56,6 +56,13 @@ + #define MAX_PUBLIC_SYSCALL __NR_syscalls + #define MAX_SYSCALL MAX_PUBLIC_SYSCALL + ++#elif defined(__powerpc64__) ++ ++#include ++#define MIN_SYSCALL 0u ++#define MAX_PUBLIC_SYSCALL 386u ++#define MAX_SYSCALL MAX_PUBLIC_SYSCALL ++ + #else + #error "Unsupported architecture" + #endif +From 036d209a3f1a771de9aed31dfbe804aaf91d1c27 Mon Sep 17 00:00:00 2001 +From: Shawn Anastasio +Date: Thu, 9 Aug 2018 23:35:21 -0500 +Subject: [PATCH] sandbox/linux: Implement partial support for ppc64 syscalls + and ucontext + +Unlike other architectures, the ppc64 files currently rely on applicable +headers being provided by the system. It is sufficient for standard +GNU/Linux environments, but may require expansion elsewhere. +--- + sandbox/linux/BUILD.gn | 2 ++ + sandbox/linux/system_headers/linux_syscalls.h | 4 ++++ + sandbox/linux/system_headers/linux_ucontext.h | 2 ++ + sandbox/linux/system_headers/ppc64_linux_syscalls.h | 12 ++++++++++++ + sandbox/linux/system_headers/ppc64_linux_ucontext.h | 12 ++++++++++++ + 5 files changed, 32 insertions(+) + create mode 100644 sandbox/linux/system_headers/ppc64_linux_syscalls.h + create mode 100644 sandbox/linux/system_headers/ppc64_linux_ucontext.h + +Index: chromium-122.0.6261.128/sandbox/linux/BUILD.gn +=================================================================== +--- chromium-122.0.6261.128.orig/sandbox/linux/BUILD.gn ++++ chromium-122.0.6261.128/sandbox/linux/BUILD.gn +@@ -383,6 +383,8 @@ component("sandbox_services") { + + source_set("sandbox_services_headers") { + sources = [ ++ "system_headers/ppc64_linux_syscalls.h", ++ "system_headers/ppc64_linux_ucontext.h", + "system_headers/arm64_linux_syscalls.h", + "system_headers/arm_linux_syscalls.h", + "system_headers/arm_linux_ucontext.h", +Index: chromium-122.0.6261.128/sandbox/linux/system_headers/linux_syscalls.h +=================================================================== +--- chromium-122.0.6261.128.orig/sandbox/linux/system_headers/linux_syscalls.h ++++ chromium-122.0.6261.128/sandbox/linux/system_headers/linux_syscalls.h +@@ -35,5 +35,9 @@ + #include "sandbox/linux/system_headers/arm64_linux_syscalls.h" + #endif + ++#if defined(__powerpc64__) ++#include "sandbox/linux/system_headers/ppc64_linux_syscalls.h" ++#endif ++ + #endif // SANDBOX_LINUX_SYSTEM_HEADERS_LINUX_SYSCALLS_H_ + +Index: chromium-122.0.6261.128/sandbox/linux/system_headers/ppc64_linux_syscalls.h +=================================================================== +--- /dev/null ++++ chromium-122.0.6261.128/sandbox/linux/system_headers/ppc64_linux_syscalls.h +@@ -0,0 +1,12 @@ ++// Copyright 2014 The Chromium Authors. All rights reserved. ++// Use of this source code is governed by a BSD-style license that can be ++// found in the LICENSE file. ++ ++#ifndef SANDBOX_LINUX_SYSTEM_HEADERS_PPC64_LINUX_SYSCALLS_H_ ++#define SANDBOX_LINUX_SYSTEM_HEADERS_PPC64_LINUX_SYSCALLS_H_ ++ ++#include ++ ++//TODO: is it necessary to redefine syscall numbers for PPC64? ++ ++#endif // SANDBOX_LINUX_SYSTEM_HEADERS_PPC64_LINUX_SYSCALLS_H_ +Index: chromium-122.0.6261.128/sandbox/linux/system_headers/ppc64_linux_ucontext.h +=================================================================== +--- /dev/null ++++ chromium-122.0.6261.128/sandbox/linux/system_headers/ppc64_linux_ucontext.h +@@ -0,0 +1,12 @@ ++// Copyright 2014 The Chromium Authors. All rights reserved. ++// Use of this source code is governed by a BSD-style license that can be ++// found in the LICENSE file. ++ ++#ifndef SANDBOX_LINUX_SYSTEM_HEADERS_PPC64_LINUX_UCONTEXT_H_ ++#define SANDBOX_LINUX_SYSTEM_HEADERS_PPC64_LINUX_UCONTEXT_H_ ++ ++#include ++ ++//TODO: is it necessary to redefine ucontext on PPC64? ++ ++#endif // SANDBOX_LINUX_SYSTEM_HEADERS_PPC64_LINUX_UCONTEXT_H_ +From c41cd6ac927f592b161abc04468d3c7a4be91995 Mon Sep 17 00:00:00 2001 +From: Shawn Anastasio +Date: Tue, 23 Oct 2018 15:49:31 -0500 +Subject: [PATCH] sandbox/linux: Update IsSyscallAllowed in broker_process.cc + +--- + sandbox/linux/syscall_broker/broker_process.cc | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +Index: chromium-122.0.6261.128/sandbox/linux/syscall_broker/broker_process.cc +=================================================================== +--- chromium-122.0.6261.128.orig/sandbox/linux/syscall_broker/broker_process.cc ++++ chromium-122.0.6261.128/sandbox/linux/syscall_broker/broker_process.cc +@@ -169,7 +169,7 @@ bool BrokerProcess::IsSyscallBrokerable( + #if defined(__NR_fstatat64) + case __NR_fstatat64: + #endif +-#if defined(__x86_64__) || defined(__aarch64__) ++#if defined(__x86_64__) || defined(__aarch64__) || defined(__powerpc64__) + case __NR_newfstatat: + #endif + return !fast_check || policy_->allowed_command_set.test(COMMAND_STAT); +From da52663deec77f705d7d58b18484c3e28e563f10 Mon Sep 17 00:00:00 2001 +From: Shawn Anastasio +Date: Tue, 18 Sep 2018 18:39:28 -0500 +Subject: [PATCH] sandbox/linux: Update syscall helpers/lists for ppc64 + +--- + .../seccomp-bpf-helpers/baseline_policy.cc | 8 +- + .../syscall_parameters_restrictions.cc | 2 +- + .../syscall_parameters_restrictions.h | 2 +- + .../linux/seccomp-bpf-helpers/syscall_sets.cc | 108 ++++++++++-------- + .../linux/seccomp-bpf-helpers/syscall_sets.h | 6 +- + sandbox/linux/services/syscall_wrappers.cc | 2 +- + 6 files changed, 73 insertions(+), 55 deletions(-) + +Index: chromium-122.0.6261.128/sandbox/linux/seccomp-bpf-helpers/baseline_policy.cc +=================================================================== +--- chromium-122.0.6261.128.orig/sandbox/linux/seccomp-bpf-helpers/baseline_policy.cc ++++ chromium-122.0.6261.128/sandbox/linux/seccomp-bpf-helpers/baseline_policy.cc +@@ -90,7 +90,8 @@ bool IsBaselinePolicyWatched(int sysno) + SyscallSets::IsPrctl(sysno) || + SyscallSets::IsProcessGroupOrSession(sysno) || + #if defined(__i386__) || \ +- (defined(ARCH_CPU_MIPS_FAMILY) && defined(ARCH_CPU_32_BITS)) ++ (defined(ARCH_CPU_MIPS_FAMILY) && defined(ARCH_CPU_32_BITS)) || \ ++ defined(__powerpc64__) + SyscallSets::IsSocketCall(sysno) || + #endif + #if defined(__arm__) +@@ -255,7 +256,7 @@ ResultExpr EvaluateSyscallImpl(int fs_de + } + + #if defined(__i386__) || defined(__x86_64__) || defined(__mips__) || \ +- defined(__aarch64__) ++ defined(__aarch64__) || defined(__powerpc64__) + if (sysno == __NR_mmap) + return RestrictMmapFlags(); + #endif +@@ -276,7 +277,7 @@ ResultExpr EvaluateSyscallImpl(int fs_de + return RestrictPrctl(); + + #if defined(__x86_64__) || defined(__arm__) || defined(__mips__) || \ +- defined(__aarch64__) ++ defined(__aarch64__) || defined(__powerpc64__) + if (sysno == __NR_socketpair) { + // Only allow AF_UNIX, PF_UNIX. Crash if anything else is seen. + static_assert(AF_UNIX == PF_UNIX, +@@ -340,7 +341,8 @@ ResultExpr EvaluateSyscallImpl(int fs_de + } + + #if defined(__i386__) || \ +- (defined(ARCH_CPU_MIPS_FAMILY) && defined(ARCH_CPU_32_BITS)) ++ (defined(ARCH_CPU_MIPS_FAMILY) && defined(ARCH_CPU_32_BITS)) || \ ++ defined(__powerpc64__) + if (SyscallSets::IsSocketCall(sysno)) + return RestrictSocketcallCommand(); + #endif +Index: chromium-122.0.6261.128/sandbox/linux/seccomp-bpf-helpers/syscall_parameters_restrictions.cc +=================================================================== +--- chromium-122.0.6261.128.orig/sandbox/linux/seccomp-bpf-helpers/syscall_parameters_restrictions.cc ++++ chromium-122.0.6261.128/sandbox/linux/seccomp-bpf-helpers/syscall_parameters_restrictions.cc +@@ -36,7 +36,7 @@ + #include "sandbox/linux/system_headers/linux_time.h" + + #if (BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)) && \ +- !defined(__arm__) && !defined(__aarch64__) && \ ++ !defined(__arm__) && !defined(__aarch64__) && !defined(__powerpc64__) && \ + !defined(PTRACE_GET_THREAD_AREA) + // Also include asm/ptrace-abi.h since ptrace.h in older libc (for instance + // the one in Ubuntu 16.04 LTS) is missing PTRACE_GET_THREAD_AREA. +@@ -45,6 +45,11 @@ + #include + #endif + ++// On PPC64, TCGETS is defined in terms of struct termios, so we must include termios.h ++#ifdef __powerpc64__ ++#include ++#endif ++ + #if BUILDFLAG(IS_ANDROID) + + #if !defined(F_DUPFD_CLOEXEC) +@@ -102,6 +107,15 @@ inline bool IsArchitectureMips() { + #endif + } + ++inline bool IsArchitecturePPC64() { ++#if defined(__powerpc64__) ++ return true; ++#else ++ return false; ++#endif ++} ++ ++ + // Ubuntu's version of glibc has a race condition in sem_post that can cause + // it to call futex(2) with bogus op arguments. To workaround this, we need + // to allow those futex(2) calls to fail with EINVAL, instead of crashing the +@@ -269,9 +283,11 @@ ResultExpr RestrictFcntlCommands() { + // operator. + // Glibc overrides the kernel's O_LARGEFILE value. Account for this. + uint64_t kOLargeFileFlag = O_LARGEFILE; +- if (IsArchitectureX86_64() || IsArchitectureI386() || IsArchitectureMips()) ++ if (IsArchitectureX86_64() || IsArchitectureI386() || IsArchitectureMips() \ ++ || IsArchitecturePPC64()) + kOLargeFileFlag = 0100000; + ++ + const Arg cmd(1); + const Arg long_arg(2); + +@@ -294,8 +310,17 @@ ResultExpr RestrictFcntlCommands() { + F_SETLKW, + F_GETLK, + F_DUPFD, +- F_DUPFD_CLOEXEC}, +- Allow()) ++ F_DUPFD_CLOEXEC ++#if defined(__powerpc64__) ++// On PPC64, F_SETLK, F_GETLK, F_SETLKW are defined as the 64-bit variants ++// but glibc will sometimes still use the 32-bit versions. Allow both. ++ , ++ 5, /* F_GETLK (32) */ ++ 6, /* F_SETLK (32) */ ++ 7 /* F_SETLKW (32) */ ++#endif ++ }, ++ Allow()) + .Case(F_SETFL, + If((long_arg & ~kAllowedMask) == 0, Allow()).Else(CrashSIGSYS())) + .Case(F_ADD_SEALS, +@@ -304,7 +329,7 @@ ResultExpr RestrictFcntlCommands() { + // clang-format on + } + +-#if defined(__i386__) || defined(__mips__) ++#if defined(__i386__) || defined(__mips__) || defined(__powerpc64__) + ResultExpr RestrictSocketcallCommand() { + // Unfortunately, we are unable to restrict the first parameter to + // socketpair(2). Whilst initially sounding bad, it's noteworthy that very +@@ -463,7 +488,7 @@ ResultExpr RestrictPtrace() { + #endif + return Switch(request) + .Cases({ +-#if !defined(__aarch64__) ++#if !defined(__aarch64__) && !defined(__powerpc64__) + PTRACE_GETREGS, PTRACE_GETFPREGS, PTRACE_GET_THREAD_AREA, + PTRACE_GETREGSET, + #endif +Index: chromium-122.0.6261.128/sandbox/linux/seccomp-bpf-helpers/syscall_parameters_restrictions.h +=================================================================== +--- chromium-122.0.6261.128.orig/sandbox/linux/seccomp-bpf-helpers/syscall_parameters_restrictions.h ++++ chromium-122.0.6261.128/sandbox/linux/seccomp-bpf-helpers/syscall_parameters_restrictions.h +@@ -52,7 +52,7 @@ SANDBOX_EXPORT bpf_dsl::ResultExpr Restr + // O_NONBLOCK | O_SYNC | O_LARGEFILE | O_CLOEXEC | O_NOATIME. + SANDBOX_EXPORT bpf_dsl::ResultExpr RestrictFcntlCommands(); + +-#if defined(__i386__) || defined(__mips__) ++#if defined(__i386__) || defined(__mips__) || defined(__powerpc64__) + // Restrict socketcall(2) to only allow socketpair(2), send(2), recv(2), + // sendto(2), recvfrom(2), shutdown(2), sendmsg(2) and recvmsg(2). + SANDBOX_EXPORT bpf_dsl::ResultExpr RestrictSocketcallCommand(); +Index: chromium-122.0.6261.128/sandbox/linux/seccomp-bpf-helpers/syscall_sets.cc +=================================================================== +--- chromium-122.0.6261.128.orig/sandbox/linux/seccomp-bpf-helpers/syscall_sets.cc ++++ chromium-122.0.6261.128/sandbox/linux/seccomp-bpf-helpers/syscall_sets.cc +@@ -29,7 +29,8 @@ bool SyscallSets::IsAllowedGettime(int s + switch (sysno) { + case __NR_gettimeofday: + #if defined(__i386__) || defined(__x86_64__) || \ +- (defined(ARCH_CPU_MIPS_FAMILY) && defined(ARCH_CPU_32_BITS)) ++ (defined(ARCH_CPU_MIPS_FAMILY) && defined(ARCH_CPU_32_BITS)) || \ ++ defined(__powerpc64__) + case __NR_time: + #endif + return true; +@@ -52,12 +53,14 @@ bool SyscallSets::IsAllowedGettime(int s + case __NR_clock_nanosleep_time64: // Parameters filtered by RestrictClockID(). + #endif + #if defined(__i386__) || \ +- (defined(ARCH_CPU_MIPS_FAMILY) && defined(ARCH_CPU_32_BITS)) ++ (defined(ARCH_CPU_MIPS_FAMILY) && defined(ARCH_CPU_32_BITS)) || \ ++ defined(__powerpc64__) + case __NR_ftime: // Obsolete. + #endif + case __NR_settimeofday: // Privileged. + #if defined(__i386__) || \ +- (defined(ARCH_CPU_MIPS_FAMILY) && defined(ARCH_CPU_32_BITS)) ++ (defined(ARCH_CPU_MIPS_FAMILY) && defined(ARCH_CPU_32_BITS)) || \ ++ defined(__powerpc64__) + case __NR_stime: + #endif + default: +@@ -136,7 +139,7 @@ bool SyscallSets::IsFileSystem(int sysno + case __NR_faccessat2: + case __NR_fchmodat: + case __NR_fchownat: // Should be called chownat ? +-#if defined(__x86_64__) || defined(__aarch64__) ++#if defined(__x86_64__) || defined(__aarch64__) || defined(__powerpc64__) + case __NR_newfstatat: // fstatat(). EPERM not a valid errno. + #elif defined(__i386__) || defined(__arm__) || \ + (defined(ARCH_CPU_MIPS_FAMILY) && defined(ARCH_CPU_32_BITS)) +@@ -155,7 +158,7 @@ bool SyscallSets::IsFileSystem(int sysno + case __NR_memfd_create: + case __NR_mkdirat: + case __NR_mknodat: +-#if defined(__i386__) ++#if defined(__i386__) || defined(__powerpc64__) + case __NR_oldlstat: + case __NR_oldstat: + #endif +@@ -169,7 +172,8 @@ bool SyscallSets::IsFileSystem(int sysno + #endif + case __NR_statfs: // EPERM not a valid errno. + #if defined(__i386__) || defined(__arm__) || \ +- (defined(ARCH_CPU_MIPS_FAMILY) && defined(ARCH_CPU_32_BITS)) ++ (defined(ARCH_CPU_MIPS_FAMILY) && defined(ARCH_CPU_32_BITS)) || \ ++ defined(__powerpc64__) + case __NR_statfs64: + #endif + case __NR_statx: // EPERM not a valid errno. +@@ -180,7 +184,8 @@ bool SyscallSets::IsFileSystem(int sysno + case __NR_truncate64: + #endif + case __NR_unlinkat: +-#if defined(__i386__) || defined(__x86_64__) || defined(__mips__) ++#if defined(__i386__) || defined(__x86_64__) || defined(__mips__) || \ ++ defined(__powerpc64__) + case __NR_utime: + #endif + case __NR_utimensat: // New. +@@ -220,7 +225,8 @@ bool SyscallSets::IsAllowedFileSystemAcc + #endif + return true; + // TODO(jln): these should be denied gracefully as well (moved below). +-#if defined(__i386__) || defined(__x86_64__) || defined(__mips__) ++#if defined(__i386__) || defined(__x86_64__) || defined(__mips__) || \ ++ defined(__powerpc64__) + case __NR_fadvise64: // EPERM not a valid errno. + #endif + #if defined(__i386__) +@@ -233,11 +239,12 @@ bool SyscallSets::IsAllowedFileSystemAcc + case __NR_flock: // EPERM not a valid errno. + case __NR_fstatfs: // Give information about the whole filesystem. + #if defined(__i386__) || defined(__arm__) || \ +- (defined(ARCH_CPU_MIPS_FAMILY) && defined(ARCH_CPU_32_BITS)) ++ (defined(ARCH_CPU_MIPS_FAMILY) && defined(ARCH_CPU_32_BITS)) || \ ++ defined(__powerpc64__) + case __NR_fstatfs64: + #endif + case __NR_fsync: // EPERM not a valid errno. +-#if defined(__i386__) ++#if defined(__i386__) || defined(__powerpc64__) + case __NR_oldfstat: + #endif + #if defined(__i386__) || defined(__x86_64__) || defined(__mips__) || \ +@@ -245,6 +252,8 @@ bool SyscallSets::IsAllowedFileSystemAcc + case __NR_sync_file_range: // EPERM not a valid errno. + #elif defined(__arm__) + case __NR_arm_sync_file_range: // EPERM not a valid errno. ++#elif defined(__powerpc64__) ++ case __NR_sync_file_range2: // EPERM not a valid errno. + #endif + default: + return false; +@@ -265,7 +274,8 @@ bool SyscallSets::IsDeniedFileSystemAcce + #endif + case __NR_getdents64: // EPERM not a valid errno. + #if defined(__i386__) || \ +- (defined(ARCH_CPU_MIPS_FAMILY) && defined(ARCH_CPU_32_BITS)) ++ (defined(ARCH_CPU_MIPS_FAMILY) && defined(ARCH_CPU_32_BITS)) || \ ++ defined(__powerpc64__) + case __NR_readdir: + #endif + return true; +@@ -306,7 +316,7 @@ bool SyscallSets::IsGetSimpleId(int sysn + bool SyscallSets::IsProcessPrivilegeChange(int sysno) { + switch (sysno) { + case __NR_capset: +-#if defined(__i386__) || defined(__x86_64__) ++#if defined(__i386__) || defined(__x86_64__) || defined(__powerpc64__) + case __NR_ioperm: // Intel privilege. + case __NR_iopl: // Intel privilege. + #endif +@@ -362,7 +372,8 @@ bool SyscallSets::IsAllowedSignalHandlin + // overflow. + case __NR_sigaltstack: + #if defined(__i386__) || defined(__arm__) || \ +- (defined(ARCH_CPU_MIPS_FAMILY) && defined(ARCH_CPU_32_BITS)) ++ (defined(ARCH_CPU_MIPS_FAMILY) && defined(ARCH_CPU_32_BITS)) || \ ++ defined(__powerpc64__) + case __NR_rt_sigtimedwait_time64: + case __NR_sigaction: + case __NR_sigprocmask: +@@ -378,7 +389,8 @@ bool SyscallSets::IsAllowedSignalHandlin + #endif + case __NR_signalfd4: + #if defined(__i386__) || defined(__arm__) || \ +- (defined(ARCH_CPU_MIPS_FAMILY) && defined(ARCH_CPU_32_BITS)) ++ (defined(ARCH_CPU_MIPS_FAMILY) && defined(ARCH_CPU_32_BITS)) || \ ++ defined(__powerpc64__) + case __NR_sigpending: + case __NR_sigsuspend: + #endif +@@ -402,7 +414,7 @@ bool SyscallSets::IsAllowedOperationOnFd + #endif + case __NR_dup3: + #if defined(__x86_64__) || defined(__arm__) || defined(__mips__) || \ +- defined(__aarch64__) ++ defined(__aarch64__) || defined(__powerpc64__) + case __NR_shutdown: + #endif + return true; +@@ -435,7 +447,7 @@ bool SyscallSets::IsAllowedProcessStartO + case __NR_exit_group: + case __NR_wait4: + case __NR_waitid: +-#if defined(__i386__) ++#if defined(__i386__) || defined(__powerpc64__) + case __NR_waitpid: + #endif + return true; +@@ -452,7 +464,7 @@ bool SyscallSets::IsAllowedProcessStartO + #endif + case __NR_set_tid_address: + case __NR_unshare: +-#if !defined(__mips__) && !defined(__aarch64__) ++#if !defined(__mips__) && !defined(__aarch64__) || defined(__powerpc64__) + case __NR_vfork: + #endif + default: +@@ -499,7 +511,7 @@ bool SyscallSets::IsAllowedEpoll(int sys + bool SyscallSets::IsDeniedGetOrModifySocket(int sysno) { + switch (sysno) { + #if defined(__x86_64__) || defined(__arm__) || defined(__mips__) || \ +- defined(__aarch64__) ++ defined(__aarch64__) || defined(__powerpc64__) + case __NR_accept: + case __NR_accept4: + case __NR_bind: +@@ -514,7 +526,8 @@ bool SyscallSets::IsDeniedGetOrModifySoc + } + + #if defined(__i386__) || \ +- (defined(ARCH_CPU_MIPS_FAMILY) && defined(ARCH_CPU_32_BITS)) ++ (defined(ARCH_CPU_MIPS_FAMILY) && defined(ARCH_CPU_32_BITS)) || \ ++ defined(__powerpc64__) + // Big multiplexing system call for sockets. + bool SyscallSets::IsSocketCall(int sysno) { + switch (sysno) { +@@ -528,7 +541,8 @@ bool SyscallSets::IsSocketCall(int sysno + } + #endif + +-#if defined(__x86_64__) || defined(__arm__) || defined(__mips__) ++#if defined(__x86_64__) || defined(__arm__) || defined(__mips__) || \ ++ defined(__powerpc64__) + bool SyscallSets::IsNetworkSocketInformation(int sysno) { + switch (sysno) { + case __NR_getpeername: +@@ -553,7 +567,7 @@ bool SyscallSets::IsAllowedAddressSpaceA + case __NR_mincore: + case __NR_mlockall: + #if defined(__i386__) || defined(__x86_64__) || defined(__mips__) || \ +- defined(__aarch64__) ++ defined(__aarch64__) || defined(__powerpc64__) + case __NR_mmap: + #endif + #if defined(__i386__) || defined(__arm__) || \ +@@ -583,7 +597,8 @@ bool SyscallSets::IsAllowedGeneralIo(int + switch (sysno) { + case __NR_lseek: + #if defined(__i386__) || defined(__arm__) || \ +- (defined(ARCH_CPU_MIPS_FAMILY) && defined(ARCH_CPU_32_BITS)) ++ (defined(ARCH_CPU_MIPS_FAMILY) && defined(ARCH_CPU_32_BITS)) || \ ++ defined(__powerpc64__) + case __NR__llseek: + #endif + #if !defined(__aarch64__) +@@ -603,26 +618,28 @@ bool SyscallSets::IsAllowedGeneralIo(int + case __NR_readv: + case __NR_pread64: + #if defined(__arm__) || \ +- (defined(ARCH_CPU_MIPS_FAMILY) && defined(ARCH_CPU_32_BITS)) ++ (defined(ARCH_CPU_MIPS_FAMILY) && defined(ARCH_CPU_32_BITS)) || \ ++ defined(__powerpc64__) + case __NR_recv: + #endif + #if defined(__x86_64__) || defined(__arm__) || defined(__mips__) || \ +- defined(__aarch64__) ++ defined(__aarch64__) || defined(__powerpc64__) + case __NR_recvfrom: // Could specify source. + case __NR_recvmsg: // Could specify source. + #endif +-#if defined(__i386__) || defined(__x86_64__) ++#if defined(__i386__) || defined(__x86_64__) || defined(__powerpc64__) + case __NR_select: + #endif +-#if defined(__i386__) || defined(__arm__) || defined(__mips__) ++#if defined(__i386__) || defined(__arm__) || defined(__mips__) || defined(__powerpc64__) + case __NR__newselect: + #endif + #if defined(__arm__) || \ +- (defined(ARCH_CPU_MIPS_FAMILY) && defined(ARCH_CPU_32_BITS)) ++ (defined(ARCH_CPU_MIPS_FAMILY) && defined(ARCH_CPU_32_BITS)) || \ ++ defined(__powerpc64__) + case __NR_send: + #endif + #if defined(__x86_64__) || defined(__arm__) || defined(__mips__) || \ +- defined(__aarch64__) ++ defined(__aarch64__) || defined(__powerpc64__) + case __NR_sendmsg: // Could specify destination. + case __NR_sendto: // Could specify destination. + #endif +@@ -678,7 +695,8 @@ bool SyscallSets::IsAllowedBasicSchedule + return true; + case __NR_getpriority: + #if defined(__i386__) || defined(__arm__) || \ +- (defined(ARCH_CPU_MIPS_FAMILY) && defined(ARCH_CPU_32_BITS)) ++ (defined(ARCH_CPU_MIPS_FAMILY) && defined(ARCH_CPU_32_BITS)) || \ ++ defined(__powerpc64__) + case __NR_nice: + #endif + case __NR_setpriority: +@@ -690,7 +708,8 @@ bool SyscallSets::IsAllowedBasicSchedule + bool SyscallSets::IsAdminOperation(int sysno) { + switch (sysno) { + #if defined(__i386__) || defined(__arm__) || \ +- (defined(ARCH_CPU_MIPS_FAMILY) && defined(ARCH_CPU_32_BITS)) ++ (defined(ARCH_CPU_MIPS_FAMILY) && defined(ARCH_CPU_32_BITS)) || \ ++ defined(__powerpc64__) + case __NR_bdflush: + #endif + case __NR_kexec_load: +@@ -706,7 +725,8 @@ bool SyscallSets::IsAdminOperation(int s + + bool SyscallSets::IsKernelModule(int sysno) { + switch (sysno) { +-#if defined(__i386__) || defined(__x86_64__) || defined(__mips__) ++#if defined(__i386__) || defined(__x86_64__) || defined(__mips__) || \ ++ defined(__powerpc64__) + case __NR_create_module: + case __NR_get_kernel_syms: // Should ENOSYS. + case __NR_query_module: +@@ -739,7 +759,8 @@ bool SyscallSets::IsFsControl(int sysno) + case __NR_swapoff: + case __NR_swapon: + #if defined(__i386__) || \ +- (defined(ARCH_CPU_MIPS_FAMILY) && defined(ARCH_CPU_32_BITS)) ++ (defined(ARCH_CPU_MIPS_FAMILY) && defined(ARCH_CPU_32_BITS)) || \ ++ defined(__powerpc64__) + case __NR_umount: + #endif + case __NR_umount2: +@@ -755,7 +776,7 @@ bool SyscallSets::IsNuma(int sysno) { + case __NR_getcpu: + case __NR_mbind: + #if defined(__i386__) || defined(__x86_64__) || defined(__mips__) || \ +- defined(__aarch64__) ++ defined(__aarch64__) || defined(__powerpc64__) + case __NR_migrate_pages: + #endif + case __NR_move_pages: +@@ -790,14 +811,15 @@ bool SyscallSets::IsGlobalProcessEnviron + switch (sysno) { + case __NR_acct: // Privileged. + #if defined(__i386__) || defined(__x86_64__) || defined(__mips__) || \ +- defined(__aarch64__) ++ defined(__aarch64__) || defined(__powerpc64__) + case __NR_getrlimit: + #endif +-#if defined(__i386__) || defined(__arm__) ++#if defined(__i386__) || defined(__arm__) || defined(__powerpc64__) + case __NR_ugetrlimit: + #endif + #if defined(__i386__) || \ +- (defined(ARCH_CPU_MIPS_FAMILY) && defined(ARCH_CPU_32_BITS)) ++ (defined(ARCH_CPU_MIPS_FAMILY) && defined(ARCH_CPU_32_BITS)) || \ ++ defined(__powerpc64__) + case __NR_ulimit: + #endif + case __NR_getrusage: +@@ -831,7 +853,7 @@ bool SyscallSets::IsGlobalSystemStatus(i + #endif + case __NR_sysinfo: + case __NR_uname: +-#if defined(__i386__) ++#if defined(__i386__) || defined(__powerpc64__) + case __NR_olduname: + case __NR_oldolduname: + #endif +@@ -915,7 +937,8 @@ bool SyscallSets::IsSystemVSemaphores(in + + #if defined(__i386__) || defined(__x86_64__) || defined(__arm__) || \ + defined(__aarch64__) || \ +- (defined(ARCH_CPU_MIPS_FAMILY) && defined(ARCH_CPU_64_BITS)) ++ (defined(ARCH_CPU_MIPS_FAMILY) && defined(ARCH_CPU_64_BITS)) || \ ++ defined(__powerpc64__) + // These give a lot of ambient authority and bypass the setuid sandbox. + bool SyscallSets::IsSystemVSharedMemory(int sysno) { + switch (sysno) { +@@ -946,7 +969,8 @@ bool SyscallSets::IsSystemVMessageQueue( + #endif + + #if defined(__i386__) || \ +- (defined(ARCH_CPU_MIPS_FAMILY) && defined(ARCH_CPU_32_BITS)) ++ (defined(ARCH_CPU_MIPS_FAMILY) && defined(ARCH_CPU_32_BITS)) || \ ++ defined(__powerpc64__) + // Big system V multiplexing system call. + bool SyscallSets::IsSystemVIpc(int sysno) { + switch (sysno) { +@@ -966,7 +990,8 @@ bool SyscallSets::IsAnySystemV(int sysno + return IsSystemVMessageQueue(sysno) || IsSystemVSemaphores(sysno) || + IsSystemVSharedMemory(sysno); + #elif defined(__i386__) || \ +- (defined(ARCH_CPU_MIPS_FAMILY) && defined(ARCH_CPU_32_BITS)) ++ (defined(ARCH_CPU_MIPS_FAMILY) && defined(ARCH_CPU_32_BITS)) || \ ++ defined(__powerpc64__) + return IsSystemVIpc(sysno); + #endif + } +@@ -1023,7 +1048,8 @@ bool SyscallSets::IsFaNotify(int sysno) + bool SyscallSets::IsTimer(int sysno) { + switch (sysno) { + case __NR_getitimer: +-#if defined(__i386__) || defined(__x86_64__) || defined(__mips__) ++#if defined(__i386__) || defined(__x86_64__) || defined(__mips__) || \ ++ defined(__powerpc64__) + case __NR_alarm: + #endif + case __NR_setitimer: +@@ -1102,18 +1128,22 @@ bool SyscallSets::IsMisc(int sysno) { + case __NR_syncfs: + case __NR_vhangup: + // The system calls below are not implemented. +-#if defined(__i386__) || defined(__x86_64__) || defined(__mips__) ++#if defined(__i386__) || defined(__x86_64__) || defined(__mips__) || \ ++ defined(__powerpc64__) + case __NR_afs_syscall: + #endif + #if defined(__i386__) || \ +- (defined(ARCH_CPU_MIPS_FAMILY) && defined(ARCH_CPU_32_BITS)) ++ (defined(ARCH_CPU_MIPS_FAMILY) && defined(ARCH_CPU_32_BITS)) || \ ++ defined(__powerpc64__) + case __NR_break: + #endif +-#if defined(__i386__) || defined(__x86_64__) || defined(__mips__) ++#if defined(__i386__) || defined(__x86_64__) || defined(__mips__) || \ ++ defined(__powerpc64__) + case __NR_getpmsg: + #endif + #if defined(__i386__) || \ +- (defined(ARCH_CPU_MIPS_FAMILY) && defined(ARCH_CPU_32_BITS)) ++ (defined(ARCH_CPU_MIPS_FAMILY) && defined(ARCH_CPU_32_BITS)) || \ ++ defined(__powerpc64__) + case __NR_gtty: + case __NR_idle: + case __NR_lock: +@@ -1121,20 +1151,22 @@ bool SyscallSets::IsMisc(int sysno) { + case __NR_prof: + case __NR_profil: + #endif +-#if defined(__i386__) || defined(__x86_64__) || defined(__mips__) ++#if defined(__i386__) || defined(__x86_64__) || defined(__mips__) || \ ++ defined(__powerpc64__) + case __NR_putpmsg: + #endif + #if defined(__x86_64__) + case __NR_security: + #endif + #if defined(__i386__) || \ +- (defined(ARCH_CPU_MIPS_FAMILY) && defined(ARCH_CPU_32_BITS)) ++ (defined(ARCH_CPU_MIPS_FAMILY) && defined(ARCH_CPU_32_BITS)) || \ ++ defined(__powerpc64__) + case __NR_stty: + #endif +-#if defined(__x86_64__) ++#if defined(__x86_64__) || defined(__powerpc64__) + case __NR_tuxcall: + #endif +-#if !defined(__aarch64__) ++#if !defined(__aarch64__) && !defined(__powerpc64__) + case __NR_vserver: + #endif + return true; +Index: chromium-122.0.6261.128/sandbox/linux/seccomp-bpf-helpers/syscall_sets.h +=================================================================== +--- chromium-122.0.6261.128.orig/sandbox/linux/seccomp-bpf-helpers/syscall_sets.h ++++ chromium-122.0.6261.128/sandbox/linux/seccomp-bpf-helpers/syscall_sets.h +@@ -46,13 +46,14 @@ class SANDBOX_EXPORT SyscallSets { + static bool IsDeniedGetOrModifySocket(int sysno); + + #if defined(__i386__) || \ +- (defined(ARCH_CPU_MIPS_FAMILY) && defined(ARCH_CPU_32_BITS)) ++ (defined(ARCH_CPU_MIPS_FAMILY) && defined(ARCH_CPU_32_BITS)) || \ ++ defined(__powerpc64__) + // Big multiplexing system call for sockets. + static bool IsSocketCall(int sysno); + #endif + + #if defined(__x86_64__) || defined(__arm__) || defined(__mips__) || \ +- defined(__aarch64__) ++ defined(__aarch64__) || defined(__powerpc64__) + static bool IsNetworkSocketInformation(int sysno); + #endif + +@@ -84,7 +85,8 @@ class SANDBOX_EXPORT SyscallSets { + #endif + #if defined(__i386__) || defined(__x86_64__) || defined(__arm__) || \ + defined(__aarch64__) || \ +- (defined(ARCH_CPU_MIPS_FAMILY) && defined(ARCH_CPU_64_BITS)) ++ (defined(ARCH_CPU_MIPS_FAMILY) && defined(ARCH_CPU_64_BITS)) || \ ++ defined(__powerpc64__) + // These give a lot of ambient authority and bypass the setuid sandbox. + static bool IsSystemVSharedMemory(int sysno); + #endif +@@ -95,7 +97,8 @@ class SANDBOX_EXPORT SyscallSets { + #endif + + #if defined(__i386__) || \ +- (defined(ARCH_CPU_MIPS_FAMILY) && defined(ARCH_CPU_32_BITS)) ++ (defined(ARCH_CPU_MIPS_FAMILY) && defined(ARCH_CPU_32_BITS)) || \ ++ defined(__powerpc64__) + // Big system V multiplexing system call. + static bool IsSystemVIpc(int sysno); + #endif +Index: chromium-122.0.6261.128/sandbox/linux/services/syscall_wrappers.cc +=================================================================== +--- chromium-122.0.6261.128.orig/sandbox/linux/services/syscall_wrappers.cc ++++ chromium-122.0.6261.128/sandbox/linux/services/syscall_wrappers.cc +@@ -61,7 +61,7 @@ long sys_clone(unsigned long flags, + #if defined(ARCH_CPU_X86_64) + return syscall(__NR_clone, flags, child_stack, ptid, ctid, tls); + #elif defined(ARCH_CPU_X86) || defined(ARCH_CPU_ARM_FAMILY) || \ +- defined(ARCH_CPU_MIPS_FAMILY) ++ defined(ARCH_CPU_MIPS_FAMILY) || defined(ARCH_CPU_PPC64_FAMILY) + // CONFIG_CLONE_BACKWARDS defined. + return syscall(__NR_clone, flags, child_stack, ptid, tls, ctid); + #endif +From 3c4705bfdda45feb860a1f121631773e5fe8e53f Mon Sep 17 00:00:00 2001 +From: Shawn Anastasio +Date: Thu, 9 Aug 2018 19:11:26 -0500 +Subject: [PATCH 1/4] sandbox/linux/bpf_dsl: Modify seccomp_macros to add + support for ppc64 + +--- + sandbox/linux/bpf_dsl/seccomp_macros.h | 43 ++++++++++++++++++++++++++ + 1 file changed, 43 insertions(+) + +Index: chromium-122.0.6261.128/sandbox/linux/bpf_dsl/seccomp_macros.h +=================================================================== +--- chromium-122.0.6261.128.orig/sandbox/linux/bpf_dsl/seccomp_macros.h ++++ chromium-122.0.6261.128/sandbox/linux/bpf_dsl/seccomp_macros.h +@@ -14,6 +14,9 @@ + #if defined(__mips__) + // sys/user.h in eglibc misses size_t definition + #include ++#elif defined(__powerpc64__) ++// Manually define greg_t on ppc64 ++typedef unsigned long long greg_t; + #endif + #endif + +@@ -343,6 +346,51 @@ struct regs_struct { + #define SECCOMP_PT_PARM4(_regs) (_regs).regs[3] + #define SECCOMP_PT_PARM5(_regs) (_regs).regs[4] + #define SECCOMP_PT_PARM6(_regs) (_regs).regs[5] ++ ++#elif defined(__powerpc64__) ++#include ++ ++typedef struct pt_regs regs_struct; ++ ++#ifdef ARCH_CPU_LITTLE_ENDIAN ++#define SECCOMP_ARCH AUDIT_ARCH_PPC64LE ++#else ++#define SECCOMP_ARCH AUDIT_ARCH_PPC64 ++#endif ++ ++#define SECCOMP_REG(_ctx, _reg) ((_ctx)->uc_mcontext.regs->gpr[_reg]) ++ ++#define SECCOMP_RESULT(_ctx) SECCOMP_REG(_ctx, 3) ++#define SECCOMP_SYSCALL(_ctx) SECCOMP_REG(_ctx, 0) ++#define SECCOMP_IP(_ctx) (_ctx)->uc_mcontext.regs->nip ++#define SECCOMP_PARM1(_ctx) SECCOMP_REG(_ctx, 3) ++#define SECCOMP_PARM2(_ctx) SECCOMP_REG(_ctx, 4) ++#define SECCOMP_PARM3(_ctx) SECCOMP_REG(_ctx, 5) ++#define SECCOMP_PARM4(_ctx) SECCOMP_REG(_ctx, 6) ++#define SECCOMP_PARM5(_ctx) SECCOMP_REG(_ctx, 7) ++#define SECCOMP_PARM6(_ctx) SECCOMP_REG(_ctx, 8) ++ ++#define SECCOMP_NR_IDX (offsetof(struct arch_seccomp_data, nr)) ++#define SECCOMP_ARCH_IDX (offsetof(struct arch_seccomp_data, arch)) ++#define SECCOMP_IP_MSB_IDX \ ++ (offsetof(struct arch_seccomp_data, instruction_pointer) + 4) ++#define SECCOMP_IP_LSB_IDX \ ++ (offsetof(struct arch_seccomp_data, instruction_pointer) + 0) ++#define SECCOMP_ARG_MSB_IDX(nr) \ ++ (offsetof(struct arch_seccomp_data, args) + 8 * (nr) + 4) ++#define SECCOMP_ARG_LSB_IDX(nr) \ ++ (offsetof(struct arch_seccomp_data, args) + 8 * (nr) + 0) ++ ++#define SECCOMP_PT_RESULT(_regs) (_regs).gpr[3] ++#define SECCOMP_PT_SYSCALL(_regs) (_regs).gpr[0] ++#define SECCOMP_PT_IP(_regs) (_regs).nip ++#define SECCOMP_PT_PARM1(_regs) (_regs).gpr[3] ++#define SECCOMP_PT_PARM2(_regs) (_regs).gpr[4] ++#define SECCOMP_PT_PARM3(_regs) (_regs).gpr[5] ++#define SECCOMP_PT_PARM4(_regs) (_regs).gpr[6] ++#define SECCOMP_PT_PARM5(_regs) (_regs).gpr[7] ++#define SECCOMP_PT_PARM6(_regs) (_regs).gpr[8] ++ + #else + #error Unsupported target platform + +From cca78240860abb63bbcfe94d1e5f04a1f23c527d Mon Sep 17 00:00:00 2001 +From: Shawn Anastasio +Date: Thu, 9 Aug 2018 19:11:56 -0500 +Subject: [PATCH 3/4] sandbox/linux/system_headers: Update linux seccomp header + for ppc64 + +--- + sandbox/linux/system_headers/linux_seccomp.h | 10 ++++++++++ + 1 file changed, 10 insertions(+) + +Index: chromium-122.0.6261.128/sandbox/linux/system_headers/linux_seccomp.h +=================================================================== +--- chromium-122.0.6261.128.orig/sandbox/linux/system_headers/linux_seccomp.h ++++ chromium-122.0.6261.128/sandbox/linux/system_headers/linux_seccomp.h +@@ -38,6 +38,9 @@ + #ifndef EM_AARCH64 + #define EM_AARCH64 183 + #endif ++#ifndef EM_PPC64 ++#define EM_PPC64 21 ++#endif + + #ifndef __AUDIT_ARCH_64BIT + #define __AUDIT_ARCH_64BIT 0x80000000 +@@ -70,6 +73,12 @@ + #ifndef AUDIT_ARCH_AARCH64 + #define AUDIT_ARCH_AARCH64 (EM_AARCH64 | __AUDIT_ARCH_64BIT | __AUDIT_ARCH_LE) + #endif ++#ifndef AUDIT_ARCH_PPC64 ++#define AUDIT_ARCH_PPC64 (EM_PPC64 | __AUDIT_ARCH_64BIT) ++#endif ++#ifndef AUDIT_ARCH_PPC64LE ++#define AUDIT_ARCH_PPC64LE (EM_PPC64 | __AUDIT_ARCH_64BIT | __AUDIT_ARCH_LE) ++#endif + + // For prctl.h + #ifndef PR_SET_SECCOMP +From 298df3dc44f7121cd8cb9a06b29fa3b16c959b8d Mon Sep 17 00:00:00 2001 +From: Shawn Anastasio +Date: Thu, 9 Aug 2018 19:13:25 -0500 +Subject: [PATCH 4/4] sandbox/linux/system_headers: Update linux signal header + for ppc64 + +--- + sandbox/linux/system_headers/linux_signal.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +Index: chromium-122.0.6261.128/sandbox/linux/system_headers/linux_signal.h +=================================================================== +--- chromium-122.0.6261.128.orig/sandbox/linux/system_headers/linux_signal.h ++++ chromium-122.0.6261.128/sandbox/linux/system_headers/linux_signal.h +@@ -13,7 +13,7 @@ + // (not undefined, but defined different values and in different memory + // layouts). So, fill the gap here. + #if defined(__i386__) || defined(__x86_64__) || defined(__arm__) || \ +- defined(__aarch64__) ++ defined(__aarch64__) || defined(__powerpc64__) + + #define LINUX_SIGHUP 1 + #define LINUX_SIGINT 2 +From 1d44643a7c7cf650efd1093d22cd5bf859fdcb51 Mon Sep 17 00:00:00 2001 +From: Shawn Anastasio +Date: Thu, 9 Aug 2018 20:52:13 -0500 +Subject: [PATCH] sandbox/linux/seccomp-bpf: Add ppc64 syscall stub + +--- + sandbox/linux/seccomp-bpf/syscall.cc | 53 ++++++++++++++++++++++++++-- + 1 file changed, 51 insertions(+), 2 deletions(-) + +Index: chromium-122.0.6261.128/sandbox/linux/seccomp-bpf/syscall.cc +=================================================================== +--- chromium-122.0.6261.128.orig/sandbox/linux/seccomp-bpf/syscall.cc ++++ chromium-122.0.6261.128/sandbox/linux/seccomp-bpf/syscall.cc +@@ -18,7 +18,7 @@ namespace sandbox { + namespace { + + #if defined(ARCH_CPU_X86_FAMILY) || defined(ARCH_CPU_ARM_FAMILY) || \ +- defined(ARCH_CPU_MIPS_FAMILY) ++ defined(ARCH_CPU_MIPS_FAMILY) || defined (ARCH_CPU_PPC64_FAMILY) + // Number that's not currently used by any Linux kernel ABIs. + const int kInvalidSyscallNumber = 0x351d3; + #else +@@ -308,10 +308,54 @@ asm(// We need to be able to tell the ke + "2:ret\n" + ".cfi_endproc\n" + ".size SyscallAsm, .-SyscallAsm\n" ++#elif defined(__powerpc64__) ++ ".text\n" ++ ".align 4\n" ++ ".type SyscallAsm @function\n" ++ "SyscallAsm:\n" ++ ".cfi_startproc\n" ++ ++ // Check if r3 is negative ++ "cmpdi 3, 0\n" ++ "bgt 2f\n" ++ ++ // Load address of 3f into r3 and return ++ "mflr 10\n" ++ "bl 1f\n" ++ "1: mflr 3\n" ++ "mtlr 10\n" ++ "addi 3, 3, 4*13\n" ++ "blr\n" ++ ++ // Load arguments from array into r3-8 ++ // save param 3 in r10 ++ "2:\n" ++ "mr 0, 3\n" ++ "ld 3, 0(4)\n" ++ "ld 5, 16(4)\n" ++ "ld 6, 24(4)\n" ++ "ld 7, 32(4)\n" ++ "ld 8, 40(4)\n" ++ "ld 4, 8(4)\n" ++ "li 9, 0\n" ++ ++ // Enter kernel ++ "sc\n" ++ ++ // Magic return address ++ "3:\n" ++ // Like MIPS, ppc64 return values are always positive. ++ // Check for error in cr0.SO and negate upon error ++ "bc 4, 3, 4f\n" ++ "neg 3, 3\n" ++ "4: blr\n" ++ ++ ".cfi_endproc\n" ++ ".size SyscallAsm, .-SyscallAsm\n" + #endif + ); // asm + +-#if defined(__x86_64__) ++#if defined(__x86_64__) || defined(__powerpc64__) + extern "C" { + intptr_t SyscallAsm(intptr_t nr, const intptr_t args[6]); + } +@@ -425,6 +469,8 @@ intptr_t Syscall::Call(int nr, + ret = inout; + } + ++#elif defined(__powerpc64__) ++ intptr_t ret = SyscallAsm(nr, args); + #else + #error "Unimplemented architecture" + #endif +@@ -441,8 +487,18 @@ void Syscall::PutValueInUcontext(intptr_ + // needs to be changed back. + ret_val = -ret_val; + SECCOMP_PARM4(ctx) = 1; +- } else ++ } else { + SECCOMP_PARM4(ctx) = 0; ++ } ++#endif ++#if defined(__powerpc64__) ++ // Same as MIPS, need to invert ret and set error register (cr0.SO) ++ if (ret_val <= -1 && ret_val >= -4095) { ++ ret_val = -ret_val; ++ ctx->uc_mcontext.regs->ccr |= (1 << 28); ++ } else { ++ ctx->uc_mcontext.regs->ccr &= ~(1 << 28); ++ } + #endif + SECCOMP_RESULT(ctx) = static_cast(ret_val); + } +From 6a852c4135864ba87b3cbdd0880d7cfecf7cd654 Mon Sep 17 00:00:00 2001 +From: Shawn Anastasio +Date: Thu, 13 Sep 2018 15:12:22 -0500 +Subject: [PATCH 5/6] sandbox/linux: update unit test for ppc64 + +--- + sandbox/linux/seccomp-bpf-helpers/baseline_policy_unittest.cc | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +Index: chromium-122.0.6261.128/sandbox/linux/seccomp-bpf-helpers/baseline_policy_unittest.cc +=================================================================== +--- chromium-122.0.6261.128.orig/sandbox/linux/seccomp-bpf-helpers/baseline_policy_unittest.cc ++++ chromium-122.0.6261.128/sandbox/linux/seccomp-bpf-helpers/baseline_policy_unittest.cc +@@ -345,8 +345,10 @@ TEST_BASELINE_SIGSYS(__NR_timer_create) + + #if !defined(__aarch64__) + TEST_BASELINE_SIGSYS(__NR_inotify_init) ++#if !defined(__powerpc64__) + TEST_BASELINE_SIGSYS(__NR_vserver) + #endif ++#endif + + #if defined(LIBC_GLIBC) && !BUILDFLAG(IS_CHROMEOS_ASH) + BPF_TEST_C(BaselinePolicy, FutexEINVAL, BaselinePolicy) { +Index: chromium-122.0.6261.128/sandbox/linux/seccomp-bpf-helpers/syscall_sets.cc +=================================================================== +--- chromium-122.0.6261.128.orig/sandbox/linux/seccomp-bpf-helpers/syscall_sets.cc ++++ chromium-122.0.6261.128/sandbox/linux/seccomp-bpf-helpers/syscall_sets.cc +@@ -374,7 +374,9 @@ bool SyscallSets::IsAllowedSignalHandlin + #if defined(__i386__) || defined(__arm__) || \ + (defined(ARCH_CPU_MIPS_FAMILY) && defined(ARCH_CPU_32_BITS)) || \ + defined(__powerpc64__) ++#if !defined(__powerpc64__) + case __NR_rt_sigtimedwait_time64: ++#endif + case __NR_sigaction: + case __NR_sigprocmask: + case __NR_sigreturn: +Index: chromium-122.0.6261.128/sandbox/linux/system_headers/linux_stat.h +=================================================================== +--- chromium-122.0.6261.128.orig/sandbox/linux/system_headers/linux_stat.h ++++ chromium-122.0.6261.128/sandbox/linux/system_headers/linux_stat.h +@@ -173,6 +173,28 @@ struct kernel_stat { + unsigned int __unused4; + unsigned int __unused5; + }; ++#elif defined(__powerpc64__) ++struct kernel_stat { ++ unsigned long st_dev; ++ ino_t st_ino; ++ unsigned long st_nlink; ++ mode_t st_mode; ++ uid_t st_uid; ++ gid_t st_gid; ++ unsigned long st_rdev; ++ long st_size; ++ unsigned long st_blksize; ++ unsigned long st_blocks; ++ // unsigned long st_atime; ++ unsigned long st_atime_nsec; ++ //unsigned long st_mtime; ++ unsigned long st_mtime_nsec; ++ //unsigned long st_ctime; ++ unsigned long st_ctime_nsec; ++ unsigned long __unused4; ++ unsigned long __unused5; ++ unsigned long __unused6; ++}; + #endif + + #if !defined(AT_EMPTY_PATH) +Index: chromium-122.0.6261.128/sandbox/linux/services/credentials.cc +=================================================================== +--- chromium-122.0.6261.128.orig/sandbox/linux/services/credentials.cc ++++ chromium-122.0.6261.128/sandbox/linux/services/credentials.cc +@@ -80,7 +80,7 @@ bool ChrootToSafeEmptyDir() { + pid_t pid = -1; + alignas(16) char stack_buf[PTHREAD_STACK_MIN]; + #if defined(ARCH_CPU_X86_FAMILY) || defined(ARCH_CPU_ARM_FAMILY) || \ +- defined(ARCH_CPU_MIPS_FAMILY) ++ defined(ARCH_CPU_MIPS_FAMILY) || defined(ARCH_CPU_PPC64_FAMILY) + // The stack grows downward. + void* stack = stack_buf + sizeof(stack_buf); + #else +Index: chromium-122.0.6261.128/sandbox/policy/linux/bpf_utility_policy_linux.cc +=================================================================== +--- chromium-122.0.6261.128.orig/sandbox/policy/linux/bpf_utility_policy_linux.cc ++++ chromium-122.0.6261.128/sandbox/policy/linux/bpf_utility_policy_linux.cc +@@ -34,7 +34,7 @@ ResultExpr UtilityProcessPolicy::Evaluat + case __NR_fdatasync: + case __NR_fsync: + #if defined(__i386__) || defined(__x86_64__) || defined(__mips__) || \ +- defined(__aarch64__) ++ defined(__aarch64__) || defined(__powerpc64__) + case __NR_getrlimit: + #endif + #if defined(__i386__) || defined(__arm__) +Index: chromium-122.0.6261.128/sandbox/policy/linux/bpf_renderer_policy_linux.cc +=================================================================== +--- chromium-122.0.6261.128.orig/sandbox/policy/linux/bpf_renderer_policy_linux.cc ++++ chromium-122.0.6261.128/sandbox/policy/linux/bpf_renderer_policy_linux.cc +@@ -87,7 +87,7 @@ ResultExpr RendererProcessPolicy::Evalua + case __NR_ftruncate64: + #endif + #if defined(__i386__) || defined(__x86_64__) || defined(__mips__) || \ +- defined(__aarch64__) ++ defined(__aarch64__) || defined(__powerpc64__) + case __NR_getrlimit: + case __NR_setrlimit: + // We allow setrlimit to dynamically adjust the address space limit as +Index: chromium-122.0.6261.128/sandbox/linux/bpf_dsl/linux_syscall_ranges.h +=================================================================== +--- chromium-122.0.6261.128.orig/sandbox/linux/bpf_dsl/linux_syscall_ranges.h ++++ chromium-122.0.6261.128/sandbox/linux/bpf_dsl/linux_syscall_ranges.h +@@ -58,9 +58,9 @@ + + #elif defined(__powerpc64__) + +-#include ++#include + #define MIN_SYSCALL 0u +-#define MAX_PUBLIC_SYSCALL 386u ++#define MAX_PUBLIC_SYSCALL __NR_syscalls + #define MAX_SYSCALL MAX_PUBLIC_SYSCALL + + #else +Index: chromium-122.0.6261.128/sandbox/linux/services/credentials.cc +=================================================================== +--- chromium-122.0.6261.128.orig/sandbox/linux/services/credentials.cc ++++ chromium-122.0.6261.128/sandbox/linux/services/credentials.cc +@@ -89,7 +89,9 @@ bool ChrootToSafeEmptyDir() { + + int clone_flags = CLONE_FS | LINUX_SIGCHLD; + void* tls = nullptr; +-#if (defined(ARCH_CPU_X86_64) || defined(ARCH_CPU_ARM_FAMILY)) && \ ++// RAJA this might be it... ++#if (defined(ARCH_CPU_X86_64) || defined(ARCH_CPU_ARM_FAMILY) || \ ++ defined(ARCH_CPU_PPC64_FAMILY)) && \ + !defined(MEMORY_SANITIZER) + // Use CLONE_VM | CLONE_VFORK as an optimization to avoid copying page tables. + // Since clone writes to the new child's TLS before returning, we must set a +@@ -97,6 +99,11 @@ bool ChrootToSafeEmptyDir() { + // glibc performs syscalls by calling a function pointer in TLS, so we do not + // attempt this optimization. + // TODO(crbug.com/1247458) Broken in MSan builds after LLVM f1bb30a4956f. ++ // ++ // NOTE: Without CLONE_VM, fontconfig will attempt to reload configuration ++ // in every thread. Since the rendered threads are sandboxed without ++ // filesystem access (e.g. to /etc/fonts/fonts.conf) this will cause font ++ // configuraiton loading failures and no fonts will be displayed! + clone_flags |= CLONE_VM | CLONE_VFORK | CLONE_SETTLS; + + // PTHREAD_STACK_MIN can be dynamic in glibc2.34+, so it is not possible to +Index: chromium-122.0.6261.128/sandbox/linux/seccomp-bpf-helpers/sigsys_handlers.cc +=================================================================== +--- chromium-122.0.6261.128.orig/sandbox/linux/seccomp-bpf-helpers/sigsys_handlers.cc ++++ chromium-122.0.6261.128/sandbox/linux/seccomp-bpf-helpers/sigsys_handlers.cc +@@ -357,7 +357,16 @@ intptr_t SIGSYSFstatatHandler(const stru + if (args.nr == __NR_fstatat_default) { + if (*reinterpret_cast(args.args[1]) == '\0' && + args.args[3] == static_cast(AT_EMPTY_PATH)) { +- return syscall(__NR_fstat_default, static_cast(args.args[0]), ++ int fd = static_cast(args.args[0]); ++#if defined(__powerpc64__) ++ // On ppc64+glibc, some syscalls seem to accidentally negate the first ++ // parameter which causes checks against it to fail. For now, manually ++ // negate them back. ++ // TODO: Investigate the root cause and fix in glibc ++ if (fd < 0) ++ fd = -fd; ++#endif ++ return syscall(__NR_fstat_default, fd, + reinterpret_cast(args.args[2])); + } + return -reinterpret_cast(fs_denied_errno); +Index: chromium-122.0.6261.128/third_party/angle/src/libANGLE/Constants.h +=================================================================== +--- chromium-122.0.6261.128.orig/third_party/angle/src/libANGLE/Constants.h ++++ chromium-122.0.6261.128/third_party/angle/src/libANGLE/Constants.h +@@ -9,6 +9,7 @@ + #ifndef LIBANGLE_CONSTANTS_H_ + #define LIBANGLE_CONSTANTS_H_ + ++#include + #include "common/platform.h" + + #include +Index: chromium-122.0.6261.128/third_party/boringssl/src/cmake/perlasm.cmake +=================================================================== +--- chromium-122.0.6261.128.orig/third_party/boringssl/src/cmake/perlasm.cmake ++++ chromium-122.0.6261.128/third_party/boringssl/src/cmake/perlasm.cmake +@@ -17,6 +17,7 @@ function(add_perlasm_target dest src) + DEPENDS + ${src} + ${PROJECT_SOURCE_DIR}/crypto/perlasm/arm-xlate.pl ++ ${PROJECT_SOURCE_DIR}/crypto/perlasm/ppc-xlate.pl + ${PROJECT_SOURCE_DIR}/crypto/perlasm/x86_64-xlate.pl + ${PROJECT_SOURCE_DIR}/crypto/perlasm/x86asm.pl + ${PROJECT_SOURCE_DIR}/crypto/perlasm/x86gas.pl +@@ -40,6 +41,9 @@ function(perlasm var arch dest src) + add_perlasm_target("${dest}-apple.S" ${src} ios32 ${ARGN}) + add_perlasm_target("${dest}-linux.S" ${src} linux32 ${ARGN}) + append_to_parent_scope("${var}_ASM" "${dest}-apple.S" "${dest}-linux.S") ++ elseif(arch STREQUAL "ppc64le") ++ add_perlasm_target("${dest}-linux.S" ${src} linux64le) ++ append_to_parent_scope("${var}_ASM" "${dest}-linux.S") + elseif(arch STREQUAL "x86") + add_perlasm_target("${dest}-apple.S" ${src} macosx -fPIC -DOPENSSL_IA32_SSE2 ${ARGN}) + add_perlasm_target("${dest}-linux.S" ${src} elf -fPIC -DOPENSSL_IA32_SSE2 ${ARGN}) +Index: chromium-122.0.6261.128/third_party/boringssl/src/crypto/CMakeLists.txt +=================================================================== +--- chromium-122.0.6261.128.orig/third_party/boringssl/src/crypto/CMakeLists.txt ++++ chromium-122.0.6261.128/third_party/boringssl/src/crypto/CMakeLists.txt +@@ -26,6 +26,7 @@ perlasm(CRYPTO_SOURCES aarch64 cipher_ex + perlasm(CRYPTO_SOURCES aarch64 test/trampoline-armv8 test/asm/trampoline-armv8.pl) + perlasm(CRYPTO_SOURCES arm chacha/chacha-armv4 chacha/asm/chacha-armv4.pl) + perlasm(CRYPTO_SOURCES arm test/trampoline-armv4 test/asm/trampoline-armv4.pl) ++perlasm(CRYPTO_SOURCES ppc64le test/trampoline-ppc test/asm/trampoline-ppc.pl) + perlasm(CRYPTO_SOURCES x86 chacha/chacha-x86 chacha/asm/chacha-x86.pl) + perlasm(CRYPTO_SOURCES x86 test/trampoline-x86 test/asm/trampoline-x86.pl) + perlasm(CRYPTO_SOURCES x86_64 chacha/chacha-x86_64 chacha/asm/chacha-x86_64.pl) +@@ -137,6 +138,7 @@ add_library( + cpu_arm_freebsd.c + cpu_arm_linux.c + cpu_intel.c ++ cpu_ppc64le.c + crypto.c + curve25519/curve25519.c + curve25519/curve25519_64_adx.c +Index: chromium-122.0.6261.128/third_party/boringssl/src/crypto/abi_self_test.cc +=================================================================== +--- chromium-122.0.6261.128.orig/third_party/boringssl/src/crypto/abi_self_test.cc ++++ chromium-122.0.6261.128/third_party/boringssl/src/crypto/abi_self_test.cc +@@ -521,3 +521,289 @@ TEST(ABITest, AArch64) { + CHECK_ABI_NO_UNWIND(abi_test_clobber_v15_upper); + } + #endif // OPENSSL_AARCH64 && SUPPORTS_ABI_TEST ++ ++#if defined(OPENSSL_PPC64LE) && defined(SUPPORTS_ABI_TEST) ++extern "C" { ++void abi_test_clobber_r0(void); ++// r1 is the stack pointer. ++void abi_test_clobber_r2(void); ++void abi_test_clobber_r3(void); ++void abi_test_clobber_r4(void); ++void abi_test_clobber_r5(void); ++void abi_test_clobber_r6(void); ++void abi_test_clobber_r7(void); ++void abi_test_clobber_r8(void); ++void abi_test_clobber_r9(void); ++void abi_test_clobber_r10(void); ++void abi_test_clobber_r11(void); ++void abi_test_clobber_r12(void); ++// r13 is the thread pointer. ++void abi_test_clobber_r14(void); ++void abi_test_clobber_r15(void); ++void abi_test_clobber_r16(void); ++void abi_test_clobber_r17(void); ++void abi_test_clobber_r18(void); ++void abi_test_clobber_r19(void); ++void abi_test_clobber_r20(void); ++void abi_test_clobber_r21(void); ++void abi_test_clobber_r22(void); ++void abi_test_clobber_r23(void); ++void abi_test_clobber_r24(void); ++void abi_test_clobber_r25(void); ++void abi_test_clobber_r26(void); ++void abi_test_clobber_r27(void); ++void abi_test_clobber_r28(void); ++void abi_test_clobber_r29(void); ++void abi_test_clobber_r30(void); ++void abi_test_clobber_r31(void); ++ ++void abi_test_clobber_f0(void); ++void abi_test_clobber_f1(void); ++void abi_test_clobber_f2(void); ++void abi_test_clobber_f3(void); ++void abi_test_clobber_f4(void); ++void abi_test_clobber_f5(void); ++void abi_test_clobber_f6(void); ++void abi_test_clobber_f7(void); ++void abi_test_clobber_f8(void); ++void abi_test_clobber_f9(void); ++void abi_test_clobber_f10(void); ++void abi_test_clobber_f11(void); ++void abi_test_clobber_f12(void); ++void abi_test_clobber_f13(void); ++void abi_test_clobber_f14(void); ++void abi_test_clobber_f15(void); ++void abi_test_clobber_f16(void); ++void abi_test_clobber_f17(void); ++void abi_test_clobber_f18(void); ++void abi_test_clobber_f19(void); ++void abi_test_clobber_f20(void); ++void abi_test_clobber_f21(void); ++void abi_test_clobber_f22(void); ++void abi_test_clobber_f23(void); ++void abi_test_clobber_f24(void); ++void abi_test_clobber_f25(void); ++void abi_test_clobber_f26(void); ++void abi_test_clobber_f27(void); ++void abi_test_clobber_f28(void); ++void abi_test_clobber_f29(void); ++void abi_test_clobber_f30(void); ++void abi_test_clobber_f31(void); ++ ++void abi_test_clobber_v0(void); ++void abi_test_clobber_v1(void); ++void abi_test_clobber_v2(void); ++void abi_test_clobber_v3(void); ++void abi_test_clobber_v4(void); ++void abi_test_clobber_v5(void); ++void abi_test_clobber_v6(void); ++void abi_test_clobber_v7(void); ++void abi_test_clobber_v8(void); ++void abi_test_clobber_v9(void); ++void abi_test_clobber_v10(void); ++void abi_test_clobber_v11(void); ++void abi_test_clobber_v12(void); ++void abi_test_clobber_v13(void); ++void abi_test_clobber_v14(void); ++void abi_test_clobber_v15(void); ++void abi_test_clobber_v16(void); ++void abi_test_clobber_v17(void); ++void abi_test_clobber_v18(void); ++void abi_test_clobber_v19(void); ++void abi_test_clobber_v20(void); ++void abi_test_clobber_v21(void); ++void abi_test_clobber_v22(void); ++void abi_test_clobber_v23(void); ++void abi_test_clobber_v24(void); ++void abi_test_clobber_v25(void); ++void abi_test_clobber_v26(void); ++void abi_test_clobber_v27(void); ++void abi_test_clobber_v28(void); ++void abi_test_clobber_v29(void); ++void abi_test_clobber_v30(void); ++void abi_test_clobber_v31(void); ++ ++void abi_test_clobber_cr0(void); ++void abi_test_clobber_cr1(void); ++void abi_test_clobber_cr2(void); ++void abi_test_clobber_cr3(void); ++void abi_test_clobber_cr4(void); ++void abi_test_clobber_cr5(void); ++void abi_test_clobber_cr6(void); ++void abi_test_clobber_cr7(void); ++ ++void abi_test_clobber_ctr(void); ++void abi_test_clobber_lr(void); ++ ++} // extern "C" ++ ++TEST(ABITest, PPC64LE) { ++ // abi_test_trampoline hides unsaved registers from the caller, so we can ++ // safely call the abi_test_clobber_* functions below. ++ abi_test::internal::CallerState state; ++ RAND_bytes(reinterpret_cast(&state), sizeof(state)); ++ CHECK_ABI_NO_UNWIND(abi_test_trampoline, ++ reinterpret_cast(abi_test_clobber_r14), ++ &state, nullptr, 0, 0 /* no breakpoint */); ++ ++ CHECK_ABI_NO_UNWIND(abi_test_clobber_r0); ++ CHECK_ABI_NO_UNWIND(abi_test_clobber_r2); ++ CHECK_ABI_NO_UNWIND(abi_test_clobber_r3); ++ CHECK_ABI_NO_UNWIND(abi_test_clobber_r4); ++ CHECK_ABI_NO_UNWIND(abi_test_clobber_r5); ++ CHECK_ABI_NO_UNWIND(abi_test_clobber_r6); ++ CHECK_ABI_NO_UNWIND(abi_test_clobber_r7); ++ CHECK_ABI_NO_UNWIND(abi_test_clobber_r8); ++ CHECK_ABI_NO_UNWIND(abi_test_clobber_r9); ++ CHECK_ABI_NO_UNWIND(abi_test_clobber_r10); ++ CHECK_ABI_NO_UNWIND(abi_test_clobber_r11); ++ CHECK_ABI_NO_UNWIND(abi_test_clobber_r12); ++ EXPECT_NONFATAL_FAILURE(CHECK_ABI_NO_UNWIND(abi_test_clobber_r14), ++ "r14 was not restored after return"); ++ EXPECT_NONFATAL_FAILURE(CHECK_ABI_NO_UNWIND(abi_test_clobber_r15), ++ "r15 was not restored after return"); ++ EXPECT_NONFATAL_FAILURE(CHECK_ABI_NO_UNWIND(abi_test_clobber_r16), ++ "r16 was not restored after return"); ++ EXPECT_NONFATAL_FAILURE(CHECK_ABI_NO_UNWIND(abi_test_clobber_r17), ++ "r17 was not restored after return"); ++ EXPECT_NONFATAL_FAILURE(CHECK_ABI_NO_UNWIND(abi_test_clobber_r18), ++ "r18 was not restored after return"); ++ EXPECT_NONFATAL_FAILURE(CHECK_ABI_NO_UNWIND(abi_test_clobber_r19), ++ "r19 was not restored after return"); ++ EXPECT_NONFATAL_FAILURE(CHECK_ABI_NO_UNWIND(abi_test_clobber_r20), ++ "r20 was not restored after return"); ++ EXPECT_NONFATAL_FAILURE(CHECK_ABI_NO_UNWIND(abi_test_clobber_r21), ++ "r21 was not restored after return"); ++ EXPECT_NONFATAL_FAILURE(CHECK_ABI_NO_UNWIND(abi_test_clobber_r22), ++ "r22 was not restored after return"); ++ EXPECT_NONFATAL_FAILURE(CHECK_ABI_NO_UNWIND(abi_test_clobber_r23), ++ "r23 was not restored after return"); ++ EXPECT_NONFATAL_FAILURE(CHECK_ABI_NO_UNWIND(abi_test_clobber_r24), ++ "r24 was not restored after return"); ++ EXPECT_NONFATAL_FAILURE(CHECK_ABI_NO_UNWIND(abi_test_clobber_r25), ++ "r25 was not restored after return"); ++ EXPECT_NONFATAL_FAILURE(CHECK_ABI_NO_UNWIND(abi_test_clobber_r26), ++ "r26 was not restored after return"); ++ EXPECT_NONFATAL_FAILURE(CHECK_ABI_NO_UNWIND(abi_test_clobber_r27), ++ "r27 was not restored after return"); ++ EXPECT_NONFATAL_FAILURE(CHECK_ABI_NO_UNWIND(abi_test_clobber_r28), ++ "r28 was not restored after return"); ++ EXPECT_NONFATAL_FAILURE(CHECK_ABI_NO_UNWIND(abi_test_clobber_r29), ++ "r29 was not restored after return"); ++ EXPECT_NONFATAL_FAILURE(CHECK_ABI_NO_UNWIND(abi_test_clobber_r30), ++ "r30 was not restored after return"); ++ EXPECT_NONFATAL_FAILURE(CHECK_ABI_NO_UNWIND(abi_test_clobber_r31), ++ "r31 was not restored after return"); ++ ++ CHECK_ABI_NO_UNWIND(abi_test_clobber_f0); ++ CHECK_ABI_NO_UNWIND(abi_test_clobber_f1); ++ CHECK_ABI_NO_UNWIND(abi_test_clobber_f2); ++ CHECK_ABI_NO_UNWIND(abi_test_clobber_f3); ++ CHECK_ABI_NO_UNWIND(abi_test_clobber_f4); ++ CHECK_ABI_NO_UNWIND(abi_test_clobber_f5); ++ CHECK_ABI_NO_UNWIND(abi_test_clobber_f6); ++ CHECK_ABI_NO_UNWIND(abi_test_clobber_f7); ++ CHECK_ABI_NO_UNWIND(abi_test_clobber_f8); ++ CHECK_ABI_NO_UNWIND(abi_test_clobber_f9); ++ CHECK_ABI_NO_UNWIND(abi_test_clobber_f10); ++ CHECK_ABI_NO_UNWIND(abi_test_clobber_f11); ++ CHECK_ABI_NO_UNWIND(abi_test_clobber_f12); ++ CHECK_ABI_NO_UNWIND(abi_test_clobber_f13); ++ EXPECT_NONFATAL_FAILURE(CHECK_ABI_NO_UNWIND(abi_test_clobber_f14), ++ "f14 was not restored after return"); ++ EXPECT_NONFATAL_FAILURE(CHECK_ABI_NO_UNWIND(abi_test_clobber_f15), ++ "f15 was not restored after return"); ++ EXPECT_NONFATAL_FAILURE(CHECK_ABI_NO_UNWIND(abi_test_clobber_f16), ++ "f16 was not restored after return"); ++ EXPECT_NONFATAL_FAILURE(CHECK_ABI_NO_UNWIND(abi_test_clobber_f17), ++ "f17 was not restored after return"); ++ EXPECT_NONFATAL_FAILURE(CHECK_ABI_NO_UNWIND(abi_test_clobber_f18), ++ "f18 was not restored after return"); ++ EXPECT_NONFATAL_FAILURE(CHECK_ABI_NO_UNWIND(abi_test_clobber_f19), ++ "f19 was not restored after return"); ++ EXPECT_NONFATAL_FAILURE(CHECK_ABI_NO_UNWIND(abi_test_clobber_f20), ++ "f20 was not restored after return"); ++ EXPECT_NONFATAL_FAILURE(CHECK_ABI_NO_UNWIND(abi_test_clobber_f21), ++ "f21 was not restored after return"); ++ EXPECT_NONFATAL_FAILURE(CHECK_ABI_NO_UNWIND(abi_test_clobber_f22), ++ "f22 was not restored after return"); ++ EXPECT_NONFATAL_FAILURE(CHECK_ABI_NO_UNWIND(abi_test_clobber_f23), ++ "f23 was not restored after return"); ++ EXPECT_NONFATAL_FAILURE(CHECK_ABI_NO_UNWIND(abi_test_clobber_f24), ++ "f24 was not restored after return"); ++ EXPECT_NONFATAL_FAILURE(CHECK_ABI_NO_UNWIND(abi_test_clobber_f25), ++ "f25 was not restored after return"); ++ EXPECT_NONFATAL_FAILURE(CHECK_ABI_NO_UNWIND(abi_test_clobber_f26), ++ "f26 was not restored after return"); ++ EXPECT_NONFATAL_FAILURE(CHECK_ABI_NO_UNWIND(abi_test_clobber_f27), ++ "f27 was not restored after return"); ++ EXPECT_NONFATAL_FAILURE(CHECK_ABI_NO_UNWIND(abi_test_clobber_f28), ++ "f28 was not restored after return"); ++ EXPECT_NONFATAL_FAILURE(CHECK_ABI_NO_UNWIND(abi_test_clobber_f29), ++ "f29 was not restored after return"); ++ EXPECT_NONFATAL_FAILURE(CHECK_ABI_NO_UNWIND(abi_test_clobber_f30), ++ "f30 was not restored after return"); ++ EXPECT_NONFATAL_FAILURE(CHECK_ABI_NO_UNWIND(abi_test_clobber_f31), ++ "f31 was not restored after return"); ++ ++ CHECK_ABI_NO_UNWIND(abi_test_clobber_v0); ++ CHECK_ABI_NO_UNWIND(abi_test_clobber_v1); ++ CHECK_ABI_NO_UNWIND(abi_test_clobber_v2); ++ CHECK_ABI_NO_UNWIND(abi_test_clobber_v3); ++ CHECK_ABI_NO_UNWIND(abi_test_clobber_v4); ++ CHECK_ABI_NO_UNWIND(abi_test_clobber_v5); ++ CHECK_ABI_NO_UNWIND(abi_test_clobber_v6); ++ CHECK_ABI_NO_UNWIND(abi_test_clobber_v7); ++ CHECK_ABI_NO_UNWIND(abi_test_clobber_v8); ++ CHECK_ABI_NO_UNWIND(abi_test_clobber_v9); ++ CHECK_ABI_NO_UNWIND(abi_test_clobber_v10); ++ CHECK_ABI_NO_UNWIND(abi_test_clobber_v11); ++ CHECK_ABI_NO_UNWIND(abi_test_clobber_v12); ++ CHECK_ABI_NO_UNWIND(abi_test_clobber_v13); ++ CHECK_ABI_NO_UNWIND(abi_test_clobber_v14); ++ CHECK_ABI_NO_UNWIND(abi_test_clobber_v15); ++ CHECK_ABI_NO_UNWIND(abi_test_clobber_v16); ++ CHECK_ABI_NO_UNWIND(abi_test_clobber_v17); ++ CHECK_ABI_NO_UNWIND(abi_test_clobber_v18); ++ CHECK_ABI_NO_UNWIND(abi_test_clobber_v19); ++ EXPECT_NONFATAL_FAILURE(CHECK_ABI_NO_UNWIND(abi_test_clobber_v20), ++ "v20 was not restored after return"); ++ EXPECT_NONFATAL_FAILURE(CHECK_ABI_NO_UNWIND(abi_test_clobber_v21), ++ "v21 was not restored after return"); ++ EXPECT_NONFATAL_FAILURE(CHECK_ABI_NO_UNWIND(abi_test_clobber_v22), ++ "v22 was not restored after return"); ++ EXPECT_NONFATAL_FAILURE(CHECK_ABI_NO_UNWIND(abi_test_clobber_v23), ++ "v23 was not restored after return"); ++ EXPECT_NONFATAL_FAILURE(CHECK_ABI_NO_UNWIND(abi_test_clobber_v24), ++ "v24 was not restored after return"); ++ EXPECT_NONFATAL_FAILURE(CHECK_ABI_NO_UNWIND(abi_test_clobber_v25), ++ "v25 was not restored after return"); ++ EXPECT_NONFATAL_FAILURE(CHECK_ABI_NO_UNWIND(abi_test_clobber_v26), ++ "v26 was not restored after return"); ++ EXPECT_NONFATAL_FAILURE(CHECK_ABI_NO_UNWIND(abi_test_clobber_v27), ++ "v27 was not restored after return"); ++ EXPECT_NONFATAL_FAILURE(CHECK_ABI_NO_UNWIND(abi_test_clobber_v28), ++ "v28 was not restored after return"); ++ EXPECT_NONFATAL_FAILURE(CHECK_ABI_NO_UNWIND(abi_test_clobber_v29), ++ "v29 was not restored after return"); ++ EXPECT_NONFATAL_FAILURE(CHECK_ABI_NO_UNWIND(abi_test_clobber_v30), ++ "v30 was not restored after return"); ++ EXPECT_NONFATAL_FAILURE(CHECK_ABI_NO_UNWIND(abi_test_clobber_v31), ++ "v31 was not restored after return"); ++ ++ CHECK_ABI_NO_UNWIND(abi_test_clobber_cr0); ++ CHECK_ABI_NO_UNWIND(abi_test_clobber_cr1); ++ EXPECT_NONFATAL_FAILURE(CHECK_ABI_NO_UNWIND(abi_test_clobber_cr2), ++ "cr was not restored after return"); ++ EXPECT_NONFATAL_FAILURE(CHECK_ABI_NO_UNWIND(abi_test_clobber_cr3), ++ "cr was not restored after return"); ++ EXPECT_NONFATAL_FAILURE(CHECK_ABI_NO_UNWIND(abi_test_clobber_cr4), ++ "cr was not restored after return"); ++ CHECK_ABI_NO_UNWIND(abi_test_clobber_cr5); ++ CHECK_ABI_NO_UNWIND(abi_test_clobber_cr6); ++ CHECK_ABI_NO_UNWIND(abi_test_clobber_cr7); ++ ++ CHECK_ABI_NO_UNWIND(abi_test_clobber_ctr); ++ CHECK_ABI_NO_UNWIND(abi_test_clobber_lr); ++} ++#endif // OPENSSL_PPC64LE && SUPPORTS_ABI_TEST +Index: chromium-122.0.6261.128/third_party/boringssl/src/crypto/cpu_ppc64le.c +=================================================================== +--- /dev/null ++++ chromium-122.0.6261.128/third_party/boringssl/src/crypto/cpu_ppc64le.c +@@ -0,0 +1,38 @@ ++/* Copyright (c) 2016, Google Inc. ++ * ++ * Permission to use, copy, modify, and/or distribute this software for any ++ * purpose with or without fee is hereby granted, provided that the above ++ * copyright notice and this permission notice appear in all copies. ++ * ++ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES ++ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF ++ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY ++ * SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES ++ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION ++ * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN ++ * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ ++ ++#include ++ ++#if defined(OPENSSL_PPC64LE) ++ ++#include ++ ++#include "internal.h" ++ ++ ++#if !defined(PPC_FEATURE2_HAS_VCRYPTO) ++// PPC_FEATURE2_HAS_VCRYPTO was taken from section 4.1.2.3 of the “OpenPOWER ++// ABI for Linux Supplement”. ++#define PPC_FEATURE2_HAS_VCRYPTO 0x02000000 ++#endif ++ ++void OPENSSL_cpuid_setup(void) { ++ OPENSSL_ppc64le_hwcap2 = getauxval(AT_HWCAP2); ++} ++ ++int CRYPTO_is_PPC64LE_vcrypto_capable(void) { ++ return (OPENSSL_ppc64le_hwcap2 & PPC_FEATURE2_HAS_VCRYPTO) != 0; ++} ++ ++#endif // OPENSSL_PPC64LE +Index: chromium-122.0.6261.128/third_party/boringssl/src/crypto/crypto.c +=================================================================== +--- chromium-122.0.6261.128.orig/third_party/boringssl/src/crypto/crypto.c ++++ chromium-122.0.6261.128/third_party/boringssl/src/crypto/crypto.c +@@ -25,10 +25,12 @@ static_assert(sizeof(ossl_ssize_t) == si + "ossl_ssize_t should be the same size as size_t"); + + #if !defined(OPENSSL_NO_ASM) && !defined(OPENSSL_STATIC_ARMCAP) && \ +- (defined(OPENSSL_X86) || defined(OPENSSL_X86_64) || \ +- defined(OPENSSL_ARM) || defined(OPENSSL_AARCH64)) +-// x86, x86_64, and the ARMs need to record the result of a cpuid/getauxval call +-// for the asm to work correctly, unless compiled without asm code. ++ (defined(OPENSSL_X86) || defined(OPENSSL_X86_64) || \ ++ defined(OPENSSL_ARM) || defined(OPENSSL_AARCH64) || \ ++ defined(OPENSSL_PPC64LE)) ++// x86, x86_64, the ARMs and ppc64le need to record the result of a ++// cpuid/getauxval call for the asm to work correctly, unless compiled without ++// asm code. + #define NEED_CPUID + + #else +@@ -39,7 +41,8 @@ static_assert(sizeof(ossl_ssize_t) == si + #define BORINGSSL_NO_STATIC_INITIALIZER + #endif + +-#endif // !NO_ASM && !STATIC_ARMCAP && (X86 || X86_64 || ARM || AARCH64) ++#endif // !NO_ASM && !STATIC_ARMCAP && ++ // (X86 || X86_64 || ARM || AARCH64 || PPC64LE) + + + // Our assembly does not use the GOT to reference symbols, which means +@@ -83,6 +86,10 @@ uint32_t OPENSSL_get_ia32cap(int idx) { + return OPENSSL_ia32cap_P[idx]; + } + ++#elif defined(OPENSSL_PPC64LE) ++ ++HIDDEN unsigned long OPENSSL_ppc64le_hwcap2 = 0; ++ + #elif defined(OPENSSL_ARM) || defined(OPENSSL_AARCH64) + + #include +Index: chromium-122.0.6261.128/third_party/boringssl/src/crypto/fipsmodule/CMakeLists.txt +=================================================================== +--- chromium-122.0.6261.128.orig/third_party/boringssl/src/crypto/fipsmodule/CMakeLists.txt ++++ chromium-122.0.6261.128/third_party/boringssl/src/crypto/fipsmodule/CMakeLists.txt +@@ -19,6 +19,8 @@ perlasm(BCM_SOURCES arm sha1-armv4-large + perlasm(BCM_SOURCES arm sha256-armv4 sha/asm/sha256-armv4.pl) + perlasm(BCM_SOURCES arm sha512-armv4 sha/asm/sha512-armv4.pl) + perlasm(BCM_SOURCES arm vpaes-armv7 aes/asm/vpaes-armv7.pl) ++perlasm(BCM_SOURCES ppc64le aesp8-ppc aes/asm/aesp8-ppc.pl) ++perlasm(BCM_SOURCES ppc64le ghashp8-ppc modes/asm/ghashp8-ppc.pl) + perlasm(BCM_SOURCES x86 aesni-x86 aes/asm/aesni-x86.pl) + perlasm(BCM_SOURCES x86 bn-586 bn/asm/bn-586.pl) + perlasm(BCM_SOURCES x86 co-586 bn/asm/co-586.pl) +Index: chromium-122.0.6261.128/third_party/boringssl/src/crypto/fipsmodule/aes/asm/aesp8-ppc.pl +=================================================================== +--- /dev/null ++++ chromium-122.0.6261.128/third_party/boringssl/src/crypto/fipsmodule/aes/asm/aesp8-ppc.pl +@@ -0,0 +1,3809 @@ ++#! /usr/bin/env perl ++# Copyright 2014-2018 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 ++ ++# ++# ==================================================================== ++# Written by Andy Polyakov for the OpenSSL ++# project. The module is, however, dual licensed under OpenSSL and ++# CRYPTOGAMS licenses depending on where you obtain it. For further ++# details see http://www.openssl.org/~appro/cryptogams/. ++# ==================================================================== ++# ++# This module implements support for AES instructions as per PowerISA ++# specification version 2.07, first implemented by POWER8 processor. ++# The module is endian-agnostic in sense that it supports both big- ++# and little-endian cases. Data alignment in parallelizable modes is ++# handled with VSX loads and stores, which implies MSR.VSX flag being ++# set. It should also be noted that ISA specification doesn't prohibit ++# alignment exceptions for these instructions on page boundaries. ++# Initially alignment was handled in pure AltiVec/VMX way [when data ++# is aligned programmatically, which in turn guarantees exception- ++# free execution], but it turned to hamper performance when vcipher ++# instructions are interleaved. It's reckoned that eventual ++# misalignment penalties at page boundaries are in average lower ++# than additional overhead in pure AltiVec approach. ++# ++# May 2016 ++# ++# Add XTS subroutine, 9x on little- and 12x improvement on big-endian ++# systems were measured. ++# ++###################################################################### ++# Current large-block performance in cycles per byte processed with ++# 128-bit key (less is better). ++# ++# CBC en-/decrypt CTR XTS ++# POWER8[le] 3.96/0.72 0.74 1.1 ++# POWER8[be] 3.75/0.65 0.66 1.0 ++# POWER9[le] 4.02/0.86 0.84 1.05 ++# POWER9[be] 3.99/0.78 0.79 0.97 ++ ++$flavour = shift; ++$output = shift; ++ ++if ($flavour =~ /64/) { ++ $SIZE_T =8; ++ $LRSAVE =2*$SIZE_T; ++ $STU ="stdu"; ++ $POP ="ld"; ++ $PUSH ="std"; ++ $UCMP ="cmpld"; ++ $SHL ="sldi"; ++} elsif ($flavour =~ /32/) { ++ $SIZE_T =4; ++ $LRSAVE =$SIZE_T; ++ $STU ="stwu"; ++ $POP ="lwz"; ++ $PUSH ="stw"; ++ $UCMP ="cmplw"; ++ $SHL ="slwi"; ++} else { die "nonsense $flavour"; } ++ ++$LITTLE_ENDIAN = ($flavour=~/le$/) ? $SIZE_T : 0; ++ ++$0 =~ m/(.*[\/\\])[^\/\\]+$/; $dir=$1; ++( $xlate="${dir}ppc-xlate.pl" and -f $xlate ) or ++( $xlate="${dir}../../../perlasm/ppc-xlate.pl" and -f $xlate) or ++die "can't locate ppc-xlate.pl"; ++ ++open OUT,"| $^X \"$xlate\" $flavour \"$output\"" || die "can't call $xlate: $!"; ++*STDOUT=*OUT; ++ ++$FRAME=8*$SIZE_T; ++$prefix="aes_hw"; ++ ++$sp="r1"; ++$vrsave="r12"; ++ ++######################################################################### ++{{{ # Key setup procedures # ++my ($inp,$bits,$out,$ptr,$cnt,$rounds)=map("r$_",(3..8)); ++my ($zero,$in0,$in1,$key,$rcon,$mask,$tmp)=map("v$_",(0..6)); ++my ($stage,$outperm,$outmask,$outhead,$outtail)=map("v$_",(7..11)); ++ ++$code.=<<___; ++.machine "any" ++ ++.text ++ ++.align 7 ++Lrcon: ++.long 0x01000000, 0x01000000, 0x01000000, 0x01000000 ?rev ++.long 0x1b000000, 0x1b000000, 0x1b000000, 0x1b000000 ?rev ++.long 0x0d0e0f0c, 0x0d0e0f0c, 0x0d0e0f0c, 0x0d0e0f0c ?rev ++.long 0,0,0,0 ?asis ++Lconsts: ++ mflr r0 ++ bcl 20,31,\$+4 ++ mflr $ptr #vvvvv "distance between . and rcon ++ addi $ptr,$ptr,-0x48 ++ mtlr r0 ++ blr ++ .long 0 ++ .byte 0,12,0x14,0,0,0,0,0 ++.asciz "AES for PowerISA 2.07, CRYPTOGAMS by " ++ ++.globl .${prefix}_set_encrypt_key ++.align 5 ++.${prefix}_set_encrypt_key: ++Lset_encrypt_key: ++ mflr r11 ++ $PUSH r11,$LRSAVE($sp) ++ ++ li $ptr,-1 ++ ${UCMP}i $inp,0 ++ beq- Lenc_key_abort # if ($inp==0) return -1; ++ ${UCMP}i $out,0 ++ beq- Lenc_key_abort # if ($out==0) return -1; ++ li $ptr,-2 ++ cmpwi $bits,128 ++ blt- Lenc_key_abort ++ cmpwi $bits,256 ++ bgt- Lenc_key_abort ++ andi. r0,$bits,0x3f ++ bne- Lenc_key_abort ++ ++ lis r0,0xfff0 ++ mfspr $vrsave,256 ++ mtspr 256,r0 ++ ++ bl Lconsts ++ mtlr r11 ++ ++ neg r9,$inp ++ lvx $in0,0,$inp ++ addi $inp,$inp,15 # 15 is not typo ++ lvsr $key,0,r9 # borrow $key ++ li r8,0x20 ++ cmpwi $bits,192 ++ lvx $in1,0,$inp ++ le?vspltisb $mask,0x0f # borrow $mask ++ lvx $rcon,0,$ptr ++ le?vxor $key,$key,$mask # adjust for byte swap ++ lvx $mask,r8,$ptr ++ addi $ptr,$ptr,0x10 ++ vperm $in0,$in0,$in1,$key # align [and byte swap in LE] ++ li $cnt,8 ++ vxor $zero,$zero,$zero ++ mtctr $cnt ++ ++ ?lvsr $outperm,0,$out ++ vspltisb $outmask,-1 ++ lvx $outhead,0,$out ++ ?vperm $outmask,$zero,$outmask,$outperm ++ ++ blt Loop128 ++ addi $inp,$inp,8 ++ beq L192 ++ addi $inp,$inp,8 ++ b L256 ++ ++.align 4 ++Loop128: ++ vperm $key,$in0,$in0,$mask # rotate-n-splat ++ vsldoi $tmp,$zero,$in0,12 # >>32 ++ vperm $outtail,$in0,$in0,$outperm # rotate ++ vsel $stage,$outhead,$outtail,$outmask ++ vmr $outhead,$outtail ++ vcipherlast $key,$key,$rcon ++ stvx $stage,0,$out ++ addi $out,$out,16 ++ ++ vxor $in0,$in0,$tmp ++ vsldoi $tmp,$zero,$tmp,12 # >>32 ++ vxor $in0,$in0,$tmp ++ vsldoi $tmp,$zero,$tmp,12 # >>32 ++ vxor $in0,$in0,$tmp ++ vadduwm $rcon,$rcon,$rcon ++ vxor $in0,$in0,$key ++ bdnz Loop128 ++ ++ lvx $rcon,0,$ptr # last two round keys ++ ++ vperm $key,$in0,$in0,$mask # rotate-n-splat ++ vsldoi $tmp,$zero,$in0,12 # >>32 ++ vperm $outtail,$in0,$in0,$outperm # rotate ++ vsel $stage,$outhead,$outtail,$outmask ++ vmr $outhead,$outtail ++ vcipherlast $key,$key,$rcon ++ stvx $stage,0,$out ++ addi $out,$out,16 ++ ++ vxor $in0,$in0,$tmp ++ vsldoi $tmp,$zero,$tmp,12 # >>32 ++ vxor $in0,$in0,$tmp ++ vsldoi $tmp,$zero,$tmp,12 # >>32 ++ vxor $in0,$in0,$tmp ++ vadduwm $rcon,$rcon,$rcon ++ vxor $in0,$in0,$key ++ ++ vperm $key,$in0,$in0,$mask # rotate-n-splat ++ vsldoi $tmp,$zero,$in0,12 # >>32 ++ vperm $outtail,$in0,$in0,$outperm # rotate ++ vsel $stage,$outhead,$outtail,$outmask ++ vmr $outhead,$outtail ++ vcipherlast $key,$key,$rcon ++ stvx $stage,0,$out ++ addi $out,$out,16 ++ ++ vxor $in0,$in0,$tmp ++ vsldoi $tmp,$zero,$tmp,12 # >>32 ++ vxor $in0,$in0,$tmp ++ vsldoi $tmp,$zero,$tmp,12 # >>32 ++ vxor $in0,$in0,$tmp ++ vxor $in0,$in0,$key ++ vperm $outtail,$in0,$in0,$outperm # rotate ++ vsel $stage,$outhead,$outtail,$outmask ++ vmr $outhead,$outtail ++ stvx $stage,0,$out ++ ++ addi $inp,$out,15 # 15 is not typo ++ addi $out,$out,0x50 ++ ++ li $rounds,10 ++ b Ldone ++ ++.align 4 ++L192: ++ lvx $tmp,0,$inp ++ li $cnt,4 ++ vperm $outtail,$in0,$in0,$outperm # rotate ++ vsel $stage,$outhead,$outtail,$outmask ++ vmr $outhead,$outtail ++ stvx $stage,0,$out ++ addi $out,$out,16 ++ vperm $in1,$in1,$tmp,$key # align [and byte swap in LE] ++ vspltisb $key,8 # borrow $key ++ mtctr $cnt ++ vsububm $mask,$mask,$key # adjust the mask ++ ++Loop192: ++ vperm $key,$in1,$in1,$mask # roate-n-splat ++ vsldoi $tmp,$zero,$in0,12 # >>32 ++ vcipherlast $key,$key,$rcon ++ ++ vxor $in0,$in0,$tmp ++ vsldoi $tmp,$zero,$tmp,12 # >>32 ++ vxor $in0,$in0,$tmp ++ vsldoi $tmp,$zero,$tmp,12 # >>32 ++ vxor $in0,$in0,$tmp ++ ++ vsldoi $stage,$zero,$in1,8 ++ vspltw $tmp,$in0,3 ++ vxor $tmp,$tmp,$in1 ++ vsldoi $in1,$zero,$in1,12 # >>32 ++ vadduwm $rcon,$rcon,$rcon ++ vxor $in1,$in1,$tmp ++ vxor $in0,$in0,$key ++ vxor $in1,$in1,$key ++ vsldoi $stage,$stage,$in0,8 ++ ++ vperm $key,$in1,$in1,$mask # rotate-n-splat ++ vsldoi $tmp,$zero,$in0,12 # >>32 ++ vperm $outtail,$stage,$stage,$outperm # rotate ++ vsel $stage,$outhead,$outtail,$outmask ++ vmr $outhead,$outtail ++ vcipherlast $key,$key,$rcon ++ stvx $stage,0,$out ++ addi $out,$out,16 ++ ++ vsldoi $stage,$in0,$in1,8 ++ vxor $in0,$in0,$tmp ++ vsldoi $tmp,$zero,$tmp,12 # >>32 ++ vperm $outtail,$stage,$stage,$outperm # rotate ++ vsel $stage,$outhead,$outtail,$outmask ++ vmr $outhead,$outtail ++ vxor $in0,$in0,$tmp ++ vsldoi $tmp,$zero,$tmp,12 # >>32 ++ vxor $in0,$in0,$tmp ++ stvx $stage,0,$out ++ addi $out,$out,16 ++ ++ vspltw $tmp,$in0,3 ++ vxor $tmp,$tmp,$in1 ++ vsldoi $in1,$zero,$in1,12 # >>32 ++ vadduwm $rcon,$rcon,$rcon ++ vxor $in1,$in1,$tmp ++ vxor $in0,$in0,$key ++ vxor $in1,$in1,$key ++ vperm $outtail,$in0,$in0,$outperm # rotate ++ vsel $stage,$outhead,$outtail,$outmask ++ vmr $outhead,$outtail ++ stvx $stage,0,$out ++ addi $inp,$out,15 # 15 is not typo ++ addi $out,$out,16 ++ bdnz Loop192 ++ ++ li $rounds,12 ++ addi $out,$out,0x20 ++ b Ldone ++ ++.align 4 ++L256: ++ lvx $tmp,0,$inp ++ li $cnt,7 ++ li $rounds,14 ++ vperm $outtail,$in0,$in0,$outperm # rotate ++ vsel $stage,$outhead,$outtail,$outmask ++ vmr $outhead,$outtail ++ stvx $stage,0,$out ++ addi $out,$out,16 ++ vperm $in1,$in1,$tmp,$key # align [and byte swap in LE] ++ mtctr $cnt ++ ++Loop256: ++ vperm $key,$in1,$in1,$mask # rotate-n-splat ++ vsldoi $tmp,$zero,$in0,12 # >>32 ++ vperm $outtail,$in1,$in1,$outperm # rotate ++ vsel $stage,$outhead,$outtail,$outmask ++ vmr $outhead,$outtail ++ vcipherlast $key,$key,$rcon ++ stvx $stage,0,$out ++ addi $out,$out,16 ++ ++ vxor $in0,$in0,$tmp ++ vsldoi $tmp,$zero,$tmp,12 # >>32 ++ vxor $in0,$in0,$tmp ++ vsldoi $tmp,$zero,$tmp,12 # >>32 ++ vxor $in0,$in0,$tmp ++ vadduwm $rcon,$rcon,$rcon ++ vxor $in0,$in0,$key ++ vperm $outtail,$in0,$in0,$outperm # rotate ++ vsel $stage,$outhead,$outtail,$outmask ++ vmr $outhead,$outtail ++ stvx $stage,0,$out ++ addi $inp,$out,15 # 15 is not typo ++ addi $out,$out,16 ++ bdz Ldone ++ ++ vspltw $key,$in0,3 # just splat ++ vsldoi $tmp,$zero,$in1,12 # >>32 ++ vsbox $key,$key ++ ++ vxor $in1,$in1,$tmp ++ vsldoi $tmp,$zero,$tmp,12 # >>32 ++ vxor $in1,$in1,$tmp ++ vsldoi $tmp,$zero,$tmp,12 # >>32 ++ vxor $in1,$in1,$tmp ++ ++ vxor $in1,$in1,$key ++ b Loop256 ++ ++.align 4 ++Ldone: ++ lvx $in1,0,$inp # redundant in aligned case ++ vsel $in1,$outhead,$in1,$outmask ++ stvx $in1,0,$inp ++ li $ptr,0 ++ mtspr 256,$vrsave ++ stw $rounds,0($out) ++ ++Lenc_key_abort: ++ mr r3,$ptr ++ blr ++ .long 0 ++ .byte 0,12,0x14,1,0,0,3,0 ++ .long 0 ++.size .${prefix}_set_encrypt_key,.-.${prefix}_set_encrypt_key ++ ++.globl .${prefix}_set_decrypt_key ++.align 5 ++.${prefix}_set_decrypt_key: ++ $STU $sp,-$FRAME($sp) ++ mflr r10 ++ $PUSH r10,`$FRAME+$LRSAVE`($sp) ++ bl Lset_encrypt_key ++ mtlr r10 ++ ++ cmpwi r3,0 ++ bne- Ldec_key_abort ++ ++ slwi $cnt,$rounds,4 ++ subi $inp,$out,240 # first round key ++ srwi $rounds,$rounds,1 ++ add $out,$inp,$cnt # last round key ++ mtctr $rounds ++ ++Ldeckey: ++ lwz r0, 0($inp) ++ lwz r6, 4($inp) ++ lwz r7, 8($inp) ++ lwz r8, 12($inp) ++ addi $inp,$inp,16 ++ lwz r9, 0($out) ++ lwz r10,4($out) ++ lwz r11,8($out) ++ lwz r12,12($out) ++ stw r0, 0($out) ++ stw r6, 4($out) ++ stw r7, 8($out) ++ stw r8, 12($out) ++ subi $out,$out,16 ++ stw r9, -16($inp) ++ stw r10,-12($inp) ++ stw r11,-8($inp) ++ stw r12,-4($inp) ++ bdnz Ldeckey ++ ++ xor r3,r3,r3 # return value ++Ldec_key_abort: ++ addi $sp,$sp,$FRAME ++ blr ++ .long 0 ++ .byte 0,12,4,1,0x80,0,3,0 ++ .long 0 ++.size .${prefix}_set_decrypt_key,.-.${prefix}_set_decrypt_key ++___ ++}}} ++######################################################################### ++{{{ # Single block en- and decrypt procedures # ++sub gen_block () { ++my $dir = shift; ++my $n = $dir eq "de" ? "n" : ""; ++my ($inp,$out,$key,$rounds,$idx)=map("r$_",(3..7)); ++ ++$code.=<<___; ++.globl .${prefix}_${dir}crypt ++.align 5 ++.${prefix}_${dir}crypt: ++ lwz $rounds,240($key) ++ lis r0,0xfc00 ++ mfspr $vrsave,256 ++ li $idx,15 # 15 is not typo ++ mtspr 256,r0 ++ ++ lvx v0,0,$inp ++ neg r11,$out ++ lvx v1,$idx,$inp ++ lvsl v2,0,$inp # inpperm ++ le?vspltisb v4,0x0f ++ ?lvsl v3,0,r11 # outperm ++ le?vxor v2,v2,v4 ++ li $idx,16 ++ vperm v0,v0,v1,v2 # align [and byte swap in LE] ++ lvx v1,0,$key ++ ?lvsl v5,0,$key # keyperm ++ srwi $rounds,$rounds,1 ++ lvx v2,$idx,$key ++ addi $idx,$idx,16 ++ subi $rounds,$rounds,1 ++ ?vperm v1,v1,v2,v5 # align round key ++ ++ vxor v0,v0,v1 ++ lvx v1,$idx,$key ++ addi $idx,$idx,16 ++ mtctr $rounds ++ ++Loop_${dir}c: ++ ?vperm v2,v2,v1,v5 ++ v${n}cipher v0,v0,v2 ++ lvx v2,$idx,$key ++ addi $idx,$idx,16 ++ ?vperm v1,v1,v2,v5 ++ v${n}cipher v0,v0,v1 ++ lvx v1,$idx,$key ++ addi $idx,$idx,16 ++ bdnz Loop_${dir}c ++ ++ ?vperm v2,v2,v1,v5 ++ v${n}cipher v0,v0,v2 ++ lvx v2,$idx,$key ++ ?vperm v1,v1,v2,v5 ++ v${n}cipherlast v0,v0,v1 ++ ++ vspltisb v2,-1 ++ vxor v1,v1,v1 ++ li $idx,15 # 15 is not typo ++ ?vperm v2,v1,v2,v3 # outmask ++ le?vxor v3,v3,v4 ++ lvx v1,0,$out # outhead ++ vperm v0,v0,v0,v3 # rotate [and byte swap in LE] ++ vsel v1,v1,v0,v2 ++ lvx v4,$idx,$out ++ stvx v1,0,$out ++ vsel v0,v0,v4,v2 ++ stvx v0,$idx,$out ++ ++ mtspr 256,$vrsave ++ blr ++ .long 0 ++ .byte 0,12,0x14,0,0,0,3,0 ++ .long 0 ++.size .${prefix}_${dir}crypt,.-.${prefix}_${dir}crypt ++___ ++} ++&gen_block("en"); ++&gen_block("de"); ++}}} ++######################################################################### ++{{{ # CBC en- and decrypt procedures # ++my ($inp,$out,$len,$key,$ivp,$enc,$rounds,$idx)=map("r$_",(3..10)); ++my ($rndkey0,$rndkey1,$inout,$tmp)= map("v$_",(0..3)); ++my ($ivec,$inptail,$inpperm,$outhead,$outperm,$outmask,$keyperm)= ++ map("v$_",(4..10)); ++$code.=<<___; ++.globl .${prefix}_cbc_encrypt ++.align 5 ++.${prefix}_cbc_encrypt: ++ ${UCMP}i $len,16 ++ bltlr- ++ ++ cmpwi $enc,0 # test direction ++ lis r0,0xffe0 ++ mfspr $vrsave,256 ++ mtspr 256,r0 ++ ++ li $idx,15 ++ vxor $rndkey0,$rndkey0,$rndkey0 ++ le?vspltisb $tmp,0x0f ++ ++ lvx $ivec,0,$ivp # load [unaligned] iv ++ lvsl $inpperm,0,$ivp ++ lvx $inptail,$idx,$ivp ++ le?vxor $inpperm,$inpperm,$tmp ++ vperm $ivec,$ivec,$inptail,$inpperm ++ ++ neg r11,$inp ++ ?lvsl $keyperm,0,$key # prepare for unaligned key ++ lwz $rounds,240($key) ++ ++ lvsr $inpperm,0,r11 # prepare for unaligned load ++ lvx $inptail,0,$inp ++ addi $inp,$inp,15 # 15 is not typo ++ le?vxor $inpperm,$inpperm,$tmp ++ ++ ?lvsr $outperm,0,$out # prepare for unaligned store ++ vspltisb $outmask,-1 ++ lvx $outhead,0,$out ++ ?vperm $outmask,$rndkey0,$outmask,$outperm ++ le?vxor $outperm,$outperm,$tmp ++ ++ srwi $rounds,$rounds,1 ++ li $idx,16 ++ subi $rounds,$rounds,1 ++ beq Lcbc_dec ++ ++Lcbc_enc: ++ vmr $inout,$inptail ++ lvx $inptail,0,$inp ++ addi $inp,$inp,16 ++ mtctr $rounds ++ subi $len,$len,16 # len-=16 ++ ++ lvx $rndkey0,0,$key ++ vperm $inout,$inout,$inptail,$inpperm ++ lvx $rndkey1,$idx,$key ++ addi $idx,$idx,16 ++ ?vperm $rndkey0,$rndkey0,$rndkey1,$keyperm ++ vxor $inout,$inout,$rndkey0 ++ lvx $rndkey0,$idx,$key ++ addi $idx,$idx,16 ++ vxor $inout,$inout,$ivec ++ ++Loop_cbc_enc: ++ ?vperm $rndkey1,$rndkey1,$rndkey0,$keyperm ++ vcipher $inout,$inout,$rndkey1 ++ lvx $rndkey1,$idx,$key ++ addi $idx,$idx,16 ++ ?vperm $rndkey0,$rndkey0,$rndkey1,$keyperm ++ vcipher $inout,$inout,$rndkey0 ++ lvx $rndkey0,$idx,$key ++ addi $idx,$idx,16 ++ bdnz Loop_cbc_enc ++ ++ ?vperm $rndkey1,$rndkey1,$rndkey0,$keyperm ++ vcipher $inout,$inout,$rndkey1 ++ lvx $rndkey1,$idx,$key ++ li $idx,16 ++ ?vperm $rndkey0,$rndkey0,$rndkey1,$keyperm ++ vcipherlast $ivec,$inout,$rndkey0 ++ ${UCMP}i $len,16 ++ ++ vperm $tmp,$ivec,$ivec,$outperm ++ vsel $inout,$outhead,$tmp,$outmask ++ vmr $outhead,$tmp ++ stvx $inout,0,$out ++ addi $out,$out,16 ++ bge Lcbc_enc ++ ++ b Lcbc_done ++ ++.align 4 ++Lcbc_dec: ++ ${UCMP}i $len,128 ++ bge _aesp8_cbc_decrypt8x ++ vmr $tmp,$inptail ++ lvx $inptail,0,$inp ++ addi $inp,$inp,16 ++ mtctr $rounds ++ subi $len,$len,16 # len-=16 ++ ++ lvx $rndkey0,0,$key ++ vperm $tmp,$tmp,$inptail,$inpperm ++ lvx $rndkey1,$idx,$key ++ addi $idx,$idx,16 ++ ?vperm $rndkey0,$rndkey0,$rndkey1,$keyperm ++ vxor $inout,$tmp,$rndkey0 ++ lvx $rndkey0,$idx,$key ++ addi $idx,$idx,16 ++ ++Loop_cbc_dec: ++ ?vperm $rndkey1,$rndkey1,$rndkey0,$keyperm ++ vncipher $inout,$inout,$rndkey1 ++ lvx $rndkey1,$idx,$key ++ addi $idx,$idx,16 ++ ?vperm $rndkey0,$rndkey0,$rndkey1,$keyperm ++ vncipher $inout,$inout,$rndkey0 ++ lvx $rndkey0,$idx,$key ++ addi $idx,$idx,16 ++ bdnz Loop_cbc_dec ++ ++ ?vperm $rndkey1,$rndkey1,$rndkey0,$keyperm ++ vncipher $inout,$inout,$rndkey1 ++ lvx $rndkey1,$idx,$key ++ li $idx,16 ++ ?vperm $rndkey0,$rndkey0,$rndkey1,$keyperm ++ vncipherlast $inout,$inout,$rndkey0 ++ ${UCMP}i $len,16 ++ ++ vxor $inout,$inout,$ivec ++ vmr $ivec,$tmp ++ vperm $tmp,$inout,$inout,$outperm ++ vsel $inout,$outhead,$tmp,$outmask ++ vmr $outhead,$tmp ++ stvx $inout,0,$out ++ addi $out,$out,16 ++ bge Lcbc_dec ++ ++Lcbc_done: ++ addi $out,$out,-1 ++ lvx $inout,0,$out # redundant in aligned case ++ vsel $inout,$outhead,$inout,$outmask ++ stvx $inout,0,$out ++ ++ neg $enc,$ivp # write [unaligned] iv ++ li $idx,15 # 15 is not typo ++ vxor $rndkey0,$rndkey0,$rndkey0 ++ vspltisb $outmask,-1 ++ le?vspltisb $tmp,0x0f ++ ?lvsl $outperm,0,$enc ++ ?vperm $outmask,$rndkey0,$outmask,$outperm ++ le?vxor $outperm,$outperm,$tmp ++ lvx $outhead,0,$ivp ++ vperm $ivec,$ivec,$ivec,$outperm ++ vsel $inout,$outhead,$ivec,$outmask ++ lvx $inptail,$idx,$ivp ++ stvx $inout,0,$ivp ++ vsel $inout,$ivec,$inptail,$outmask ++ stvx $inout,$idx,$ivp ++ ++ mtspr 256,$vrsave ++ blr ++ .long 0 ++ .byte 0,12,0x14,0,0,0,6,0 ++ .long 0 ++___ ++######################################################################### ++{{ # Optimized CBC decrypt procedure # ++my $key_="r11"; ++my ($x00,$x10,$x20,$x30,$x40,$x50,$x60,$x70)=map("r$_",(0,8,26..31)); ++ $x00=0 if ($flavour =~ /osx/); ++my ($in0, $in1, $in2, $in3, $in4, $in5, $in6, $in7 )=map("v$_",(0..3,10..13)); ++my ($out0,$out1,$out2,$out3,$out4,$out5,$out6,$out7)=map("v$_",(14..21)); ++my $rndkey0="v23"; # v24-v25 rotating buffer for first found keys ++ # v26-v31 last 6 round keys ++my ($tmp,$keyperm)=($in3,$in4); # aliases with "caller", redundant assignment ++ ++$code.=<<___; ++.align 5 ++_aesp8_cbc_decrypt8x: ++ $STU $sp,-`($FRAME+21*16+6*$SIZE_T)`($sp) ++ li r10,`$FRAME+8*16+15` ++ li r11,`$FRAME+8*16+31` ++ stvx v20,r10,$sp # ABI says so ++ addi r10,r10,32 ++ stvx v21,r11,$sp ++ addi r11,r11,32 ++ stvx v22,r10,$sp ++ addi r10,r10,32 ++ stvx v23,r11,$sp ++ addi r11,r11,32 ++ stvx v24,r10,$sp ++ addi r10,r10,32 ++ stvx v25,r11,$sp ++ addi r11,r11,32 ++ stvx v26,r10,$sp ++ addi r10,r10,32 ++ stvx v27,r11,$sp ++ addi r11,r11,32 ++ stvx v28,r10,$sp ++ addi r10,r10,32 ++ stvx v29,r11,$sp ++ addi r11,r11,32 ++ stvx v30,r10,$sp ++ stvx v31,r11,$sp ++ li r0,-1 ++ stw $vrsave,`$FRAME+21*16-4`($sp) # save vrsave ++ li $x10,0x10 ++ $PUSH r26,`$FRAME+21*16+0*$SIZE_T`($sp) ++ li $x20,0x20 ++ $PUSH r27,`$FRAME+21*16+1*$SIZE_T`($sp) ++ li $x30,0x30 ++ $PUSH r28,`$FRAME+21*16+2*$SIZE_T`($sp) ++ li $x40,0x40 ++ $PUSH r29,`$FRAME+21*16+3*$SIZE_T`($sp) ++ li $x50,0x50 ++ $PUSH r30,`$FRAME+21*16+4*$SIZE_T`($sp) ++ li $x60,0x60 ++ $PUSH r31,`$FRAME+21*16+5*$SIZE_T`($sp) ++ li $x70,0x70 ++ mtspr 256,r0 ++ ++ subi $rounds,$rounds,3 # -4 in total ++ subi $len,$len,128 # bias ++ ++ lvx $rndkey0,$x00,$key # load key schedule ++ lvx v30,$x10,$key ++ addi $key,$key,0x20 ++ lvx v31,$x00,$key ++ ?vperm $rndkey0,$rndkey0,v30,$keyperm ++ addi $key_,$sp,`$FRAME+15` ++ mtctr $rounds ++ ++Load_cbc_dec_key: ++ ?vperm v24,v30,v31,$keyperm ++ lvx v30,$x10,$key ++ addi $key,$key,0x20 ++ stvx v24,$x00,$key_ # off-load round[1] ++ ?vperm v25,v31,v30,$keyperm ++ lvx v31,$x00,$key ++ stvx v25,$x10,$key_ # off-load round[2] ++ addi $key_,$key_,0x20 ++ bdnz Load_cbc_dec_key ++ ++ lvx v26,$x10,$key ++ ?vperm v24,v30,v31,$keyperm ++ lvx v27,$x20,$key ++ stvx v24,$x00,$key_ # off-load round[3] ++ ?vperm v25,v31,v26,$keyperm ++ lvx v28,$x30,$key ++ stvx v25,$x10,$key_ # off-load round[4] ++ addi $key_,$sp,`$FRAME+15` # rewind $key_ ++ ?vperm v26,v26,v27,$keyperm ++ lvx v29,$x40,$key ++ ?vperm v27,v27,v28,$keyperm ++ lvx v30,$x50,$key ++ ?vperm v28,v28,v29,$keyperm ++ lvx v31,$x60,$key ++ ?vperm v29,v29,v30,$keyperm ++ lvx $out0,$x70,$key # borrow $out0 ++ ?vperm v30,v30,v31,$keyperm ++ lvx v24,$x00,$key_ # pre-load round[1] ++ ?vperm v31,v31,$out0,$keyperm ++ lvx v25,$x10,$key_ # pre-load round[2] ++ ++ #lvx $inptail,0,$inp # "caller" already did this ++ #addi $inp,$inp,15 # 15 is not typo ++ subi $inp,$inp,15 # undo "caller" ++ ++ le?li $idx,8 ++ lvx_u $in0,$x00,$inp # load first 8 "words" ++ le?lvsl $inpperm,0,$idx ++ le?vspltisb $tmp,0x0f ++ lvx_u $in1,$x10,$inp ++ le?vxor $inpperm,$inpperm,$tmp # transform for lvx_u/stvx_u ++ lvx_u $in2,$x20,$inp ++ le?vperm $in0,$in0,$in0,$inpperm ++ lvx_u $in3,$x30,$inp ++ le?vperm $in1,$in1,$in1,$inpperm ++ lvx_u $in4,$x40,$inp ++ le?vperm $in2,$in2,$in2,$inpperm ++ vxor $out0,$in0,$rndkey0 ++ lvx_u $in5,$x50,$inp ++ le?vperm $in3,$in3,$in3,$inpperm ++ vxor $out1,$in1,$rndkey0 ++ lvx_u $in6,$x60,$inp ++ le?vperm $in4,$in4,$in4,$inpperm ++ vxor $out2,$in2,$rndkey0 ++ lvx_u $in7,$x70,$inp ++ addi $inp,$inp,0x80 ++ le?vperm $in5,$in5,$in5,$inpperm ++ vxor $out3,$in3,$rndkey0 ++ le?vperm $in6,$in6,$in6,$inpperm ++ vxor $out4,$in4,$rndkey0 ++ le?vperm $in7,$in7,$in7,$inpperm ++ vxor $out5,$in5,$rndkey0 ++ vxor $out6,$in6,$rndkey0 ++ vxor $out7,$in7,$rndkey0 ++ ++ mtctr $rounds ++ b Loop_cbc_dec8x ++.align 5 ++Loop_cbc_dec8x: ++ vncipher $out0,$out0,v24 ++ vncipher $out1,$out1,v24 ++ vncipher $out2,$out2,v24 ++ vncipher $out3,$out3,v24 ++ vncipher $out4,$out4,v24 ++ vncipher $out5,$out5,v24 ++ vncipher $out6,$out6,v24 ++ vncipher $out7,$out7,v24 ++ lvx v24,$x20,$key_ # round[3] ++ addi $key_,$key_,0x20 ++ ++ vncipher $out0,$out0,v25 ++ vncipher $out1,$out1,v25 ++ vncipher $out2,$out2,v25 ++ vncipher $out3,$out3,v25 ++ vncipher $out4,$out4,v25 ++ vncipher $out5,$out5,v25 ++ vncipher $out6,$out6,v25 ++ vncipher $out7,$out7,v25 ++ lvx v25,$x10,$key_ # round[4] ++ bdnz Loop_cbc_dec8x ++ ++ subic $len,$len,128 # $len-=128 ++ vncipher $out0,$out0,v24 ++ vncipher $out1,$out1,v24 ++ vncipher $out2,$out2,v24 ++ vncipher $out3,$out3,v24 ++ vncipher $out4,$out4,v24 ++ vncipher $out5,$out5,v24 ++ vncipher $out6,$out6,v24 ++ vncipher $out7,$out7,v24 ++ ++ subfe. r0,r0,r0 # borrow?-1:0 ++ vncipher $out0,$out0,v25 ++ vncipher $out1,$out1,v25 ++ vncipher $out2,$out2,v25 ++ vncipher $out3,$out3,v25 ++ vncipher $out4,$out4,v25 ++ vncipher $out5,$out5,v25 ++ vncipher $out6,$out6,v25 ++ vncipher $out7,$out7,v25 ++ ++ and r0,r0,$len ++ vncipher $out0,$out0,v26 ++ vncipher $out1,$out1,v26 ++ vncipher $out2,$out2,v26 ++ vncipher $out3,$out3,v26 ++ vncipher $out4,$out4,v26 ++ vncipher $out5,$out5,v26 ++ vncipher $out6,$out6,v26 ++ vncipher $out7,$out7,v26 ++ ++ add $inp,$inp,r0 # $inp is adjusted in such ++ # way that at exit from the ++ # loop inX-in7 are loaded ++ # with last "words" ++ vncipher $out0,$out0,v27 ++ vncipher $out1,$out1,v27 ++ vncipher $out2,$out2,v27 ++ vncipher $out3,$out3,v27 ++ vncipher $out4,$out4,v27 ++ vncipher $out5,$out5,v27 ++ vncipher $out6,$out6,v27 ++ vncipher $out7,$out7,v27 ++ ++ addi $key_,$sp,`$FRAME+15` # rewind $key_ ++ vncipher $out0,$out0,v28 ++ vncipher $out1,$out1,v28 ++ vncipher $out2,$out2,v28 ++ vncipher $out3,$out3,v28 ++ vncipher $out4,$out4,v28 ++ vncipher $out5,$out5,v28 ++ vncipher $out6,$out6,v28 ++ vncipher $out7,$out7,v28 ++ lvx v24,$x00,$key_ # re-pre-load round[1] ++ ++ vncipher $out0,$out0,v29 ++ vncipher $out1,$out1,v29 ++ vncipher $out2,$out2,v29 ++ vncipher $out3,$out3,v29 ++ vncipher $out4,$out4,v29 ++ vncipher $out5,$out5,v29 ++ vncipher $out6,$out6,v29 ++ vncipher $out7,$out7,v29 ++ lvx v25,$x10,$key_ # re-pre-load round[2] ++ ++ vncipher $out0,$out0,v30 ++ vxor $ivec,$ivec,v31 # xor with last round key ++ vncipher $out1,$out1,v30 ++ vxor $in0,$in0,v31 ++ vncipher $out2,$out2,v30 ++ vxor $in1,$in1,v31 ++ vncipher $out3,$out3,v30 ++ vxor $in2,$in2,v31 ++ vncipher $out4,$out4,v30 ++ vxor $in3,$in3,v31 ++ vncipher $out5,$out5,v30 ++ vxor $in4,$in4,v31 ++ vncipher $out6,$out6,v30 ++ vxor $in5,$in5,v31 ++ vncipher $out7,$out7,v30 ++ vxor $in6,$in6,v31 ++ ++ vncipherlast $out0,$out0,$ivec ++ vncipherlast $out1,$out1,$in0 ++ lvx_u $in0,$x00,$inp # load next input block ++ vncipherlast $out2,$out2,$in1 ++ lvx_u $in1,$x10,$inp ++ vncipherlast $out3,$out3,$in2 ++ le?vperm $in0,$in0,$in0,$inpperm ++ lvx_u $in2,$x20,$inp ++ vncipherlast $out4,$out4,$in3 ++ le?vperm $in1,$in1,$in1,$inpperm ++ lvx_u $in3,$x30,$inp ++ vncipherlast $out5,$out5,$in4 ++ le?vperm $in2,$in2,$in2,$inpperm ++ lvx_u $in4,$x40,$inp ++ vncipherlast $out6,$out6,$in5 ++ le?vperm $in3,$in3,$in3,$inpperm ++ lvx_u $in5,$x50,$inp ++ vncipherlast $out7,$out7,$in6 ++ le?vperm $in4,$in4,$in4,$inpperm ++ lvx_u $in6,$x60,$inp ++ vmr $ivec,$in7 ++ le?vperm $in5,$in5,$in5,$inpperm ++ lvx_u $in7,$x70,$inp ++ addi $inp,$inp,0x80 ++ ++ le?vperm $out0,$out0,$out0,$inpperm ++ le?vperm $out1,$out1,$out1,$inpperm ++ stvx_u $out0,$x00,$out ++ le?vperm $in6,$in6,$in6,$inpperm ++ vxor $out0,$in0,$rndkey0 ++ le?vperm $out2,$out2,$out2,$inpperm ++ stvx_u $out1,$x10,$out ++ le?vperm $in7,$in7,$in7,$inpperm ++ vxor $out1,$in1,$rndkey0 ++ le?vperm $out3,$out3,$out3,$inpperm ++ stvx_u $out2,$x20,$out ++ vxor $out2,$in2,$rndkey0 ++ le?vperm $out4,$out4,$out4,$inpperm ++ stvx_u $out3,$x30,$out ++ vxor $out3,$in3,$rndkey0 ++ le?vperm $out5,$out5,$out5,$inpperm ++ stvx_u $out4,$x40,$out ++ vxor $out4,$in4,$rndkey0 ++ le?vperm $out6,$out6,$out6,$inpperm ++ stvx_u $out5,$x50,$out ++ vxor $out5,$in5,$rndkey0 ++ le?vperm $out7,$out7,$out7,$inpperm ++ stvx_u $out6,$x60,$out ++ vxor $out6,$in6,$rndkey0 ++ stvx_u $out7,$x70,$out ++ addi $out,$out,0x80 ++ vxor $out7,$in7,$rndkey0 ++ ++ mtctr $rounds ++ beq Loop_cbc_dec8x # did $len-=128 borrow? ++ ++ addic. $len,$len,128 ++ beq Lcbc_dec8x_done ++ nop ++ nop ++ ++Loop_cbc_dec8x_tail: # up to 7 "words" tail... ++ vncipher $out1,$out1,v24 ++ vncipher $out2,$out2,v24 ++ vncipher $out3,$out3,v24 ++ vncipher $out4,$out4,v24 ++ vncipher $out5,$out5,v24 ++ vncipher $out6,$out6,v24 ++ vncipher $out7,$out7,v24 ++ lvx v24,$x20,$key_ # round[3] ++ addi $key_,$key_,0x20 ++ ++ vncipher $out1,$out1,v25 ++ vncipher $out2,$out2,v25 ++ vncipher $out3,$out3,v25 ++ vncipher $out4,$out4,v25 ++ vncipher $out5,$out5,v25 ++ vncipher $out6,$out6,v25 ++ vncipher $out7,$out7,v25 ++ lvx v25,$x10,$key_ # round[4] ++ bdnz Loop_cbc_dec8x_tail ++ ++ vncipher $out1,$out1,v24 ++ vncipher $out2,$out2,v24 ++ vncipher $out3,$out3,v24 ++ vncipher $out4,$out4,v24 ++ vncipher $out5,$out5,v24 ++ vncipher $out6,$out6,v24 ++ vncipher $out7,$out7,v24 ++ ++ vncipher $out1,$out1,v25 ++ vncipher $out2,$out2,v25 ++ vncipher $out3,$out3,v25 ++ vncipher $out4,$out4,v25 ++ vncipher $out5,$out5,v25 ++ vncipher $out6,$out6,v25 ++ vncipher $out7,$out7,v25 ++ ++ vncipher $out1,$out1,v26 ++ vncipher $out2,$out2,v26 ++ vncipher $out3,$out3,v26 ++ vncipher $out4,$out4,v26 ++ vncipher $out5,$out5,v26 ++ vncipher $out6,$out6,v26 ++ vncipher $out7,$out7,v26 ++ ++ vncipher $out1,$out1,v27 ++ vncipher $out2,$out2,v27 ++ vncipher $out3,$out3,v27 ++ vncipher $out4,$out4,v27 ++ vncipher $out5,$out5,v27 ++ vncipher $out6,$out6,v27 ++ vncipher $out7,$out7,v27 ++ ++ vncipher $out1,$out1,v28 ++ vncipher $out2,$out2,v28 ++ vncipher $out3,$out3,v28 ++ vncipher $out4,$out4,v28 ++ vncipher $out5,$out5,v28 ++ vncipher $out6,$out6,v28 ++ vncipher $out7,$out7,v28 ++ ++ vncipher $out1,$out1,v29 ++ vncipher $out2,$out2,v29 ++ vncipher $out3,$out3,v29 ++ vncipher $out4,$out4,v29 ++ vncipher $out5,$out5,v29 ++ vncipher $out6,$out6,v29 ++ vncipher $out7,$out7,v29 ++ ++ vncipher $out1,$out1,v30 ++ vxor $ivec,$ivec,v31 # last round key ++ vncipher $out2,$out2,v30 ++ vxor $in1,$in1,v31 ++ vncipher $out3,$out3,v30 ++ vxor $in2,$in2,v31 ++ vncipher $out4,$out4,v30 ++ vxor $in3,$in3,v31 ++ vncipher $out5,$out5,v30 ++ vxor $in4,$in4,v31 ++ vncipher $out6,$out6,v30 ++ vxor $in5,$in5,v31 ++ vncipher $out7,$out7,v30 ++ vxor $in6,$in6,v31 ++ ++ cmplwi $len,32 # switch($len) ++ blt Lcbc_dec8x_one ++ nop ++ beq Lcbc_dec8x_two ++ cmplwi $len,64 ++ blt Lcbc_dec8x_three ++ nop ++ beq Lcbc_dec8x_four ++ cmplwi $len,96 ++ blt Lcbc_dec8x_five ++ nop ++ beq Lcbc_dec8x_six ++ ++Lcbc_dec8x_seven: ++ vncipherlast $out1,$out1,$ivec ++ vncipherlast $out2,$out2,$in1 ++ vncipherlast $out3,$out3,$in2 ++ vncipherlast $out4,$out4,$in3 ++ vncipherlast $out5,$out5,$in4 ++ vncipherlast $out6,$out6,$in5 ++ vncipherlast $out7,$out7,$in6 ++ vmr $ivec,$in7 ++ ++ le?vperm $out1,$out1,$out1,$inpperm ++ le?vperm $out2,$out2,$out2,$inpperm ++ stvx_u $out1,$x00,$out ++ le?vperm $out3,$out3,$out3,$inpperm ++ stvx_u $out2,$x10,$out ++ le?vperm $out4,$out4,$out4,$inpperm ++ stvx_u $out3,$x20,$out ++ le?vperm $out5,$out5,$out5,$inpperm ++ stvx_u $out4,$x30,$out ++ le?vperm $out6,$out6,$out6,$inpperm ++ stvx_u $out5,$x40,$out ++ le?vperm $out7,$out7,$out7,$inpperm ++ stvx_u $out6,$x50,$out ++ stvx_u $out7,$x60,$out ++ addi $out,$out,0x70 ++ b Lcbc_dec8x_done ++ ++.align 5 ++Lcbc_dec8x_six: ++ vncipherlast $out2,$out2,$ivec ++ vncipherlast $out3,$out3,$in2 ++ vncipherlast $out4,$out4,$in3 ++ vncipherlast $out5,$out5,$in4 ++ vncipherlast $out6,$out6,$in5 ++ vncipherlast $out7,$out7,$in6 ++ vmr $ivec,$in7 ++ ++ le?vperm $out2,$out2,$out2,$inpperm ++ le?vperm $out3,$out3,$out3,$inpperm ++ stvx_u $out2,$x00,$out ++ le?vperm $out4,$out4,$out4,$inpperm ++ stvx_u $out3,$x10,$out ++ le?vperm $out5,$out5,$out5,$inpperm ++ stvx_u $out4,$x20,$out ++ le?vperm $out6,$out6,$out6,$inpperm ++ stvx_u $out5,$x30,$out ++ le?vperm $out7,$out7,$out7,$inpperm ++ stvx_u $out6,$x40,$out ++ stvx_u $out7,$x50,$out ++ addi $out,$out,0x60 ++ b Lcbc_dec8x_done ++ ++.align 5 ++Lcbc_dec8x_five: ++ vncipherlast $out3,$out3,$ivec ++ vncipherlast $out4,$out4,$in3 ++ vncipherlast $out5,$out5,$in4 ++ vncipherlast $out6,$out6,$in5 ++ vncipherlast $out7,$out7,$in6 ++ vmr $ivec,$in7 ++ ++ le?vperm $out3,$out3,$out3,$inpperm ++ le?vperm $out4,$out4,$out4,$inpperm ++ stvx_u $out3,$x00,$out ++ le?vperm $out5,$out5,$out5,$inpperm ++ stvx_u $out4,$x10,$out ++ le?vperm $out6,$out6,$out6,$inpperm ++ stvx_u $out5,$x20,$out ++ le?vperm $out7,$out7,$out7,$inpperm ++ stvx_u $out6,$x30,$out ++ stvx_u $out7,$x40,$out ++ addi $out,$out,0x50 ++ b Lcbc_dec8x_done ++ ++.align 5 ++Lcbc_dec8x_four: ++ vncipherlast $out4,$out4,$ivec ++ vncipherlast $out5,$out5,$in4 ++ vncipherlast $out6,$out6,$in5 ++ vncipherlast $out7,$out7,$in6 ++ vmr $ivec,$in7 ++ ++ le?vperm $out4,$out4,$out4,$inpperm ++ le?vperm $out5,$out5,$out5,$inpperm ++ stvx_u $out4,$x00,$out ++ le?vperm $out6,$out6,$out6,$inpperm ++ stvx_u $out5,$x10,$out ++ le?vperm $out7,$out7,$out7,$inpperm ++ stvx_u $out6,$x20,$out ++ stvx_u $out7,$x30,$out ++ addi $out,$out,0x40 ++ b Lcbc_dec8x_done ++ ++.align 5 ++Lcbc_dec8x_three: ++ vncipherlast $out5,$out5,$ivec ++ vncipherlast $out6,$out6,$in5 ++ vncipherlast $out7,$out7,$in6 ++ vmr $ivec,$in7 ++ ++ le?vperm $out5,$out5,$out5,$inpperm ++ le?vperm $out6,$out6,$out6,$inpperm ++ stvx_u $out5,$x00,$out ++ le?vperm $out7,$out7,$out7,$inpperm ++ stvx_u $out6,$x10,$out ++ stvx_u $out7,$x20,$out ++ addi $out,$out,0x30 ++ b Lcbc_dec8x_done ++ ++.align 5 ++Lcbc_dec8x_two: ++ vncipherlast $out6,$out6,$ivec ++ vncipherlast $out7,$out7,$in6 ++ vmr $ivec,$in7 ++ ++ le?vperm $out6,$out6,$out6,$inpperm ++ le?vperm $out7,$out7,$out7,$inpperm ++ stvx_u $out6,$x00,$out ++ stvx_u $out7,$x10,$out ++ addi $out,$out,0x20 ++ b Lcbc_dec8x_done ++ ++.align 5 ++Lcbc_dec8x_one: ++ vncipherlast $out7,$out7,$ivec ++ vmr $ivec,$in7 ++ ++ le?vperm $out7,$out7,$out7,$inpperm ++ stvx_u $out7,0,$out ++ addi $out,$out,0x10 ++ ++Lcbc_dec8x_done: ++ le?vperm $ivec,$ivec,$ivec,$inpperm ++ stvx_u $ivec,0,$ivp # write [unaligned] iv ++ ++ li r10,`$FRAME+15` ++ li r11,`$FRAME+31` ++ stvx $inpperm,r10,$sp # wipe copies of round keys ++ addi r10,r10,32 ++ stvx $inpperm,r11,$sp ++ addi r11,r11,32 ++ stvx $inpperm,r10,$sp ++ addi r10,r10,32 ++ stvx $inpperm,r11,$sp ++ addi r11,r11,32 ++ stvx $inpperm,r10,$sp ++ addi r10,r10,32 ++ stvx $inpperm,r11,$sp ++ addi r11,r11,32 ++ stvx $inpperm,r10,$sp ++ addi r10,r10,32 ++ stvx $inpperm,r11,$sp ++ addi r11,r11,32 ++ ++ mtspr 256,$vrsave ++ lvx v20,r10,$sp # ABI says so ++ addi r10,r10,32 ++ lvx v21,r11,$sp ++ addi r11,r11,32 ++ lvx v22,r10,$sp ++ addi r10,r10,32 ++ lvx v23,r11,$sp ++ addi r11,r11,32 ++ lvx v24,r10,$sp ++ addi r10,r10,32 ++ lvx v25,r11,$sp ++ addi r11,r11,32 ++ lvx v26,r10,$sp ++ addi r10,r10,32 ++ lvx v27,r11,$sp ++ addi r11,r11,32 ++ lvx v28,r10,$sp ++ addi r10,r10,32 ++ lvx v29,r11,$sp ++ addi r11,r11,32 ++ lvx v30,r10,$sp ++ lvx v31,r11,$sp ++ $POP r26,`$FRAME+21*16+0*$SIZE_T`($sp) ++ $POP r27,`$FRAME+21*16+1*$SIZE_T`($sp) ++ $POP r28,`$FRAME+21*16+2*$SIZE_T`($sp) ++ $POP r29,`$FRAME+21*16+3*$SIZE_T`($sp) ++ $POP r30,`$FRAME+21*16+4*$SIZE_T`($sp) ++ $POP r31,`$FRAME+21*16+5*$SIZE_T`($sp) ++ addi $sp,$sp,`$FRAME+21*16+6*$SIZE_T` ++ blr ++ .long 0 ++ .byte 0,12,0x04,0,0x80,6,6,0 ++ .long 0 ++.size .${prefix}_cbc_encrypt,.-.${prefix}_cbc_encrypt ++___ ++}} }}} ++ ++######################################################################### ++{{{ # CTR procedure[s] # ++my ($inp,$out,$len,$key,$ivp,$x10,$rounds,$idx)=map("r$_",(3..10)); ++my ($rndkey0,$rndkey1,$inout,$tmp)= map("v$_",(0..3)); ++my ($ivec,$inptail,$inpperm,$outhead,$outperm,$outmask,$keyperm,$one)= ++ map("v$_",(4..11)); ++my $dat=$tmp; ++ ++$code.=<<___; ++.globl .${prefix}_ctr32_encrypt_blocks ++.align 5 ++.${prefix}_ctr32_encrypt_blocks: ++ ${UCMP}i $len,1 ++ bltlr- ++ ++ lis r0,0xfff0 ++ mfspr $vrsave,256 ++ mtspr 256,r0 ++ ++ li $idx,15 ++ vxor $rndkey0,$rndkey0,$rndkey0 ++ le?vspltisb $tmp,0x0f ++ ++ lvx $ivec,0,$ivp # load [unaligned] iv ++ lvsl $inpperm,0,$ivp ++ lvx $inptail,$idx,$ivp ++ vspltisb $one,1 ++ le?vxor $inpperm,$inpperm,$tmp ++ vperm $ivec,$ivec,$inptail,$inpperm ++ vsldoi $one,$rndkey0,$one,1 ++ ++ neg r11,$inp ++ ?lvsl $keyperm,0,$key # prepare for unaligned key ++ lwz $rounds,240($key) ++ ++ lvsr $inpperm,0,r11 # prepare for unaligned load ++ lvx $inptail,0,$inp ++ addi $inp,$inp,15 # 15 is not typo ++ le?vxor $inpperm,$inpperm,$tmp ++ ++ srwi $rounds,$rounds,1 ++ li $idx,16 ++ subi $rounds,$rounds,1 ++ ++ ${UCMP}i $len,8 ++ bge _aesp8_ctr32_encrypt8x ++ ++ ?lvsr $outperm,0,$out # prepare for unaligned store ++ vspltisb $outmask,-1 ++ lvx $outhead,0,$out ++ ?vperm $outmask,$rndkey0,$outmask,$outperm ++ le?vxor $outperm,$outperm,$tmp ++ ++ lvx $rndkey0,0,$key ++ mtctr $rounds ++ lvx $rndkey1,$idx,$key ++ addi $idx,$idx,16 ++ ?vperm $rndkey0,$rndkey0,$rndkey1,$keyperm ++ vxor $inout,$ivec,$rndkey0 ++ lvx $rndkey0,$idx,$key ++ addi $idx,$idx,16 ++ b Loop_ctr32_enc ++ ++.align 5 ++Loop_ctr32_enc: ++ ?vperm $rndkey1,$rndkey1,$rndkey0,$keyperm ++ vcipher $inout,$inout,$rndkey1 ++ lvx $rndkey1,$idx,$key ++ addi $idx,$idx,16 ++ ?vperm $rndkey0,$rndkey0,$rndkey1,$keyperm ++ vcipher $inout,$inout,$rndkey0 ++ lvx $rndkey0,$idx,$key ++ addi $idx,$idx,16 ++ bdnz Loop_ctr32_enc ++ ++ vadduwm $ivec,$ivec,$one ++ vmr $dat,$inptail ++ lvx $inptail,0,$inp ++ addi $inp,$inp,16 ++ subic. $len,$len,1 # blocks-- ++ ++ ?vperm $rndkey1,$rndkey1,$rndkey0,$keyperm ++ vcipher $inout,$inout,$rndkey1 ++ lvx $rndkey1,$idx,$key ++ vperm $dat,$dat,$inptail,$inpperm ++ li $idx,16 ++ ?vperm $rndkey1,$rndkey0,$rndkey1,$keyperm ++ lvx $rndkey0,0,$key ++ vxor $dat,$dat,$rndkey1 # last round key ++ vcipherlast $inout,$inout,$dat ++ ++ lvx $rndkey1,$idx,$key ++ addi $idx,$idx,16 ++ vperm $inout,$inout,$inout,$outperm ++ vsel $dat,$outhead,$inout,$outmask ++ mtctr $rounds ++ ?vperm $rndkey0,$rndkey0,$rndkey1,$keyperm ++ vmr $outhead,$inout ++ vxor $inout,$ivec,$rndkey0 ++ lvx $rndkey0,$idx,$key ++ addi $idx,$idx,16 ++ stvx $dat,0,$out ++ addi $out,$out,16 ++ bne Loop_ctr32_enc ++ ++ addi $out,$out,-1 ++ lvx $inout,0,$out # redundant in aligned case ++ vsel $inout,$outhead,$inout,$outmask ++ stvx $inout,0,$out ++ ++ mtspr 256,$vrsave ++ blr ++ .long 0 ++ .byte 0,12,0x14,0,0,0,6,0 ++ .long 0 ++___ ++######################################################################### ++{{ # Optimized CTR procedure # ++my $key_="r11"; ++my ($x00,$x10,$x20,$x30,$x40,$x50,$x60,$x70)=map("r$_",(0,8,26..31)); ++ $x00=0 if ($flavour =~ /osx/); ++my ($in0, $in1, $in2, $in3, $in4, $in5, $in6, $in7 )=map("v$_",(0..3,10,12..14)); ++my ($out0,$out1,$out2,$out3,$out4,$out5,$out6,$out7)=map("v$_",(15..22)); ++my $rndkey0="v23"; # v24-v25 rotating buffer for first found keys ++ # v26-v31 last 6 round keys ++my ($tmp,$keyperm)=($in3,$in4); # aliases with "caller", redundant assignment ++my ($two,$three,$four)=($outhead,$outperm,$outmask); ++ ++$code.=<<___; ++.align 5 ++_aesp8_ctr32_encrypt8x: ++ $STU $sp,-`($FRAME+21*16+6*$SIZE_T)`($sp) ++ li r10,`$FRAME+8*16+15` ++ li r11,`$FRAME+8*16+31` ++ stvx v20,r10,$sp # ABI says so ++ addi r10,r10,32 ++ stvx v21,r11,$sp ++ addi r11,r11,32 ++ stvx v22,r10,$sp ++ addi r10,r10,32 ++ stvx v23,r11,$sp ++ addi r11,r11,32 ++ stvx v24,r10,$sp ++ addi r10,r10,32 ++ stvx v25,r11,$sp ++ addi r11,r11,32 ++ stvx v26,r10,$sp ++ addi r10,r10,32 ++ stvx v27,r11,$sp ++ addi r11,r11,32 ++ stvx v28,r10,$sp ++ addi r10,r10,32 ++ stvx v29,r11,$sp ++ addi r11,r11,32 ++ stvx v30,r10,$sp ++ stvx v31,r11,$sp ++ li r0,-1 ++ stw $vrsave,`$FRAME+21*16-4`($sp) # save vrsave ++ li $x10,0x10 ++ $PUSH r26,`$FRAME+21*16+0*$SIZE_T`($sp) ++ li $x20,0x20 ++ $PUSH r27,`$FRAME+21*16+1*$SIZE_T`($sp) ++ li $x30,0x30 ++ $PUSH r28,`$FRAME+21*16+2*$SIZE_T`($sp) ++ li $x40,0x40 ++ $PUSH r29,`$FRAME+21*16+3*$SIZE_T`($sp) ++ li $x50,0x50 ++ $PUSH r30,`$FRAME+21*16+4*$SIZE_T`($sp) ++ li $x60,0x60 ++ $PUSH r31,`$FRAME+21*16+5*$SIZE_T`($sp) ++ li $x70,0x70 ++ mtspr 256,r0 ++ ++ subi $rounds,$rounds,3 # -4 in total ++ ++ lvx $rndkey0,$x00,$key # load key schedule ++ lvx v30,$x10,$key ++ addi $key,$key,0x20 ++ lvx v31,$x00,$key ++ ?vperm $rndkey0,$rndkey0,v30,$keyperm ++ addi $key_,$sp,`$FRAME+15` ++ mtctr $rounds ++ ++Load_ctr32_enc_key: ++ ?vperm v24,v30,v31,$keyperm ++ lvx v30,$x10,$key ++ addi $key,$key,0x20 ++ stvx v24,$x00,$key_ # off-load round[1] ++ ?vperm v25,v31,v30,$keyperm ++ lvx v31,$x00,$key ++ stvx v25,$x10,$key_ # off-load round[2] ++ addi $key_,$key_,0x20 ++ bdnz Load_ctr32_enc_key ++ ++ lvx v26,$x10,$key ++ ?vperm v24,v30,v31,$keyperm ++ lvx v27,$x20,$key ++ stvx v24,$x00,$key_ # off-load round[3] ++ ?vperm v25,v31,v26,$keyperm ++ lvx v28,$x30,$key ++ stvx v25,$x10,$key_ # off-load round[4] ++ addi $key_,$sp,`$FRAME+15` # rewind $key_ ++ ?vperm v26,v26,v27,$keyperm ++ lvx v29,$x40,$key ++ ?vperm v27,v27,v28,$keyperm ++ lvx v30,$x50,$key ++ ?vperm v28,v28,v29,$keyperm ++ lvx v31,$x60,$key ++ ?vperm v29,v29,v30,$keyperm ++ lvx $out0,$x70,$key # borrow $out0 ++ ?vperm v30,v30,v31,$keyperm ++ lvx v24,$x00,$key_ # pre-load round[1] ++ ?vperm v31,v31,$out0,$keyperm ++ lvx v25,$x10,$key_ # pre-load round[2] ++ ++ vadduwm $two,$one,$one ++ subi $inp,$inp,15 # undo "caller" ++ $SHL $len,$len,4 ++ ++ vadduwm $out1,$ivec,$one # counter values ... ++ vadduwm $out2,$ivec,$two ++ vxor $out0,$ivec,$rndkey0 # ... xored with rndkey[0] ++ le?li $idx,8 ++ vadduwm $out3,$out1,$two ++ vxor $out1,$out1,$rndkey0 ++ le?lvsl $inpperm,0,$idx ++ vadduwm $out4,$out2,$two ++ vxor $out2,$out2,$rndkey0 ++ le?vspltisb $tmp,0x0f ++ vadduwm $out5,$out3,$two ++ vxor $out3,$out3,$rndkey0 ++ le?vxor $inpperm,$inpperm,$tmp # transform for lvx_u/stvx_u ++ vadduwm $out6,$out4,$two ++ vxor $out4,$out4,$rndkey0 ++ vadduwm $out7,$out5,$two ++ vxor $out5,$out5,$rndkey0 ++ vadduwm $ivec,$out6,$two # next counter value ++ vxor $out6,$out6,$rndkey0 ++ vxor $out7,$out7,$rndkey0 ++ ++ mtctr $rounds ++ b Loop_ctr32_enc8x ++.align 5 ++Loop_ctr32_enc8x: ++ vcipher $out0,$out0,v24 ++ vcipher $out1,$out1,v24 ++ vcipher $out2,$out2,v24 ++ vcipher $out3,$out3,v24 ++ vcipher $out4,$out4,v24 ++ vcipher $out5,$out5,v24 ++ vcipher $out6,$out6,v24 ++ vcipher $out7,$out7,v24 ++Loop_ctr32_enc8x_middle: ++ lvx v24,$x20,$key_ # round[3] ++ addi $key_,$key_,0x20 ++ ++ vcipher $out0,$out0,v25 ++ vcipher $out1,$out1,v25 ++ vcipher $out2,$out2,v25 ++ vcipher $out3,$out3,v25 ++ vcipher $out4,$out4,v25 ++ vcipher $out5,$out5,v25 ++ vcipher $out6,$out6,v25 ++ vcipher $out7,$out7,v25 ++ lvx v25,$x10,$key_ # round[4] ++ bdnz Loop_ctr32_enc8x ++ ++ subic r11,$len,256 # $len-256, borrow $key_ ++ vcipher $out0,$out0,v24 ++ vcipher $out1,$out1,v24 ++ vcipher $out2,$out2,v24 ++ vcipher $out3,$out3,v24 ++ vcipher $out4,$out4,v24 ++ vcipher $out5,$out5,v24 ++ vcipher $out6,$out6,v24 ++ vcipher $out7,$out7,v24 ++ ++ subfe r0,r0,r0 # borrow?-1:0 ++ vcipher $out0,$out0,v25 ++ vcipher $out1,$out1,v25 ++ vcipher $out2,$out2,v25 ++ vcipher $out3,$out3,v25 ++ vcipher $out4,$out4,v25 ++ vcipher $out5,$out5,v25 ++ vcipher $out6,$out6,v25 ++ vcipher $out7,$out7,v25 ++ ++ and r0,r0,r11 ++ addi $key_,$sp,`$FRAME+15` # rewind $key_ ++ vcipher $out0,$out0,v26 ++ vcipher $out1,$out1,v26 ++ vcipher $out2,$out2,v26 ++ vcipher $out3,$out3,v26 ++ vcipher $out4,$out4,v26 ++ vcipher $out5,$out5,v26 ++ vcipher $out6,$out6,v26 ++ vcipher $out7,$out7,v26 ++ lvx v24,$x00,$key_ # re-pre-load round[1] ++ ++ subic $len,$len,129 # $len-=129 ++ vcipher $out0,$out0,v27 ++ addi $len,$len,1 # $len-=128 really ++ vcipher $out1,$out1,v27 ++ vcipher $out2,$out2,v27 ++ vcipher $out3,$out3,v27 ++ vcipher $out4,$out4,v27 ++ vcipher $out5,$out5,v27 ++ vcipher $out6,$out6,v27 ++ vcipher $out7,$out7,v27 ++ lvx v25,$x10,$key_ # re-pre-load round[2] ++ ++ vcipher $out0,$out0,v28 ++ lvx_u $in0,$x00,$inp # load input ++ vcipher $out1,$out1,v28 ++ lvx_u $in1,$x10,$inp ++ vcipher $out2,$out2,v28 ++ lvx_u $in2,$x20,$inp ++ vcipher $out3,$out3,v28 ++ lvx_u $in3,$x30,$inp ++ vcipher $out4,$out4,v28 ++ lvx_u $in4,$x40,$inp ++ vcipher $out5,$out5,v28 ++ lvx_u $in5,$x50,$inp ++ vcipher $out6,$out6,v28 ++ lvx_u $in6,$x60,$inp ++ vcipher $out7,$out7,v28 ++ lvx_u $in7,$x70,$inp ++ addi $inp,$inp,0x80 ++ ++ vcipher $out0,$out0,v29 ++ le?vperm $in0,$in0,$in0,$inpperm ++ vcipher $out1,$out1,v29 ++ le?vperm $in1,$in1,$in1,$inpperm ++ vcipher $out2,$out2,v29 ++ le?vperm $in2,$in2,$in2,$inpperm ++ vcipher $out3,$out3,v29 ++ le?vperm $in3,$in3,$in3,$inpperm ++ vcipher $out4,$out4,v29 ++ le?vperm $in4,$in4,$in4,$inpperm ++ vcipher $out5,$out5,v29 ++ le?vperm $in5,$in5,$in5,$inpperm ++ vcipher $out6,$out6,v29 ++ le?vperm $in6,$in6,$in6,$inpperm ++ vcipher $out7,$out7,v29 ++ le?vperm $in7,$in7,$in7,$inpperm ++ ++ add $inp,$inp,r0 # $inp is adjusted in such ++ # way that at exit from the ++ # loop inX-in7 are loaded ++ # with last "words" ++ subfe. r0,r0,r0 # borrow?-1:0 ++ vcipher $out0,$out0,v30 ++ vxor $in0,$in0,v31 # xor with last round key ++ vcipher $out1,$out1,v30 ++ vxor $in1,$in1,v31 ++ vcipher $out2,$out2,v30 ++ vxor $in2,$in2,v31 ++ vcipher $out3,$out3,v30 ++ vxor $in3,$in3,v31 ++ vcipher $out4,$out4,v30 ++ vxor $in4,$in4,v31 ++ vcipher $out5,$out5,v30 ++ vxor $in5,$in5,v31 ++ vcipher $out6,$out6,v30 ++ vxor $in6,$in6,v31 ++ vcipher $out7,$out7,v30 ++ vxor $in7,$in7,v31 ++ ++ bne Lctr32_enc8x_break # did $len-129 borrow? ++ ++ vcipherlast $in0,$out0,$in0 ++ vcipherlast $in1,$out1,$in1 ++ vadduwm $out1,$ivec,$one # counter values ... ++ vcipherlast $in2,$out2,$in2 ++ vadduwm $out2,$ivec,$two ++ vxor $out0,$ivec,$rndkey0 # ... xored with rndkey[0] ++ vcipherlast $in3,$out3,$in3 ++ vadduwm $out3,$out1,$two ++ vxor $out1,$out1,$rndkey0 ++ vcipherlast $in4,$out4,$in4 ++ vadduwm $out4,$out2,$two ++ vxor $out2,$out2,$rndkey0 ++ vcipherlast $in5,$out5,$in5 ++ vadduwm $out5,$out3,$two ++ vxor $out3,$out3,$rndkey0 ++ vcipherlast $in6,$out6,$in6 ++ vadduwm $out6,$out4,$two ++ vxor $out4,$out4,$rndkey0 ++ vcipherlast $in7,$out7,$in7 ++ vadduwm $out7,$out5,$two ++ vxor $out5,$out5,$rndkey0 ++ le?vperm $in0,$in0,$in0,$inpperm ++ vadduwm $ivec,$out6,$two # next counter value ++ vxor $out6,$out6,$rndkey0 ++ le?vperm $in1,$in1,$in1,$inpperm ++ vxor $out7,$out7,$rndkey0 ++ mtctr $rounds ++ ++ vcipher $out0,$out0,v24 ++ stvx_u $in0,$x00,$out ++ le?vperm $in2,$in2,$in2,$inpperm ++ vcipher $out1,$out1,v24 ++ stvx_u $in1,$x10,$out ++ le?vperm $in3,$in3,$in3,$inpperm ++ vcipher $out2,$out2,v24 ++ stvx_u $in2,$x20,$out ++ le?vperm $in4,$in4,$in4,$inpperm ++ vcipher $out3,$out3,v24 ++ stvx_u $in3,$x30,$out ++ le?vperm $in5,$in5,$in5,$inpperm ++ vcipher $out4,$out4,v24 ++ stvx_u $in4,$x40,$out ++ le?vperm $in6,$in6,$in6,$inpperm ++ vcipher $out5,$out5,v24 ++ stvx_u $in5,$x50,$out ++ le?vperm $in7,$in7,$in7,$inpperm ++ vcipher $out6,$out6,v24 ++ stvx_u $in6,$x60,$out ++ vcipher $out7,$out7,v24 ++ stvx_u $in7,$x70,$out ++ addi $out,$out,0x80 ++ ++ b Loop_ctr32_enc8x_middle ++ ++.align 5 ++Lctr32_enc8x_break: ++ cmpwi $len,-0x60 ++ blt Lctr32_enc8x_one ++ nop ++ beq Lctr32_enc8x_two ++ cmpwi $len,-0x40 ++ blt Lctr32_enc8x_three ++ nop ++ beq Lctr32_enc8x_four ++ cmpwi $len,-0x20 ++ blt Lctr32_enc8x_five ++ nop ++ beq Lctr32_enc8x_six ++ cmpwi $len,0x00 ++ blt Lctr32_enc8x_seven ++ ++Lctr32_enc8x_eight: ++ vcipherlast $out0,$out0,$in0 ++ vcipherlast $out1,$out1,$in1 ++ vcipherlast $out2,$out2,$in2 ++ vcipherlast $out3,$out3,$in3 ++ vcipherlast $out4,$out4,$in4 ++ vcipherlast $out5,$out5,$in5 ++ vcipherlast $out6,$out6,$in6 ++ vcipherlast $out7,$out7,$in7 ++ ++ le?vperm $out0,$out0,$out0,$inpperm ++ le?vperm $out1,$out1,$out1,$inpperm ++ stvx_u $out0,$x00,$out ++ le?vperm $out2,$out2,$out2,$inpperm ++ stvx_u $out1,$x10,$out ++ le?vperm $out3,$out3,$out3,$inpperm ++ stvx_u $out2,$x20,$out ++ le?vperm $out4,$out4,$out4,$inpperm ++ stvx_u $out3,$x30,$out ++ le?vperm $out5,$out5,$out5,$inpperm ++ stvx_u $out4,$x40,$out ++ le?vperm $out6,$out6,$out6,$inpperm ++ stvx_u $out5,$x50,$out ++ le?vperm $out7,$out7,$out7,$inpperm ++ stvx_u $out6,$x60,$out ++ stvx_u $out7,$x70,$out ++ addi $out,$out,0x80 ++ b Lctr32_enc8x_done ++ ++.align 5 ++Lctr32_enc8x_seven: ++ vcipherlast $out0,$out0,$in1 ++ vcipherlast $out1,$out1,$in2 ++ vcipherlast $out2,$out2,$in3 ++ vcipherlast $out3,$out3,$in4 ++ vcipherlast $out4,$out4,$in5 ++ vcipherlast $out5,$out5,$in6 ++ vcipherlast $out6,$out6,$in7 ++ ++ le?vperm $out0,$out0,$out0,$inpperm ++ le?vperm $out1,$out1,$out1,$inpperm ++ stvx_u $out0,$x00,$out ++ le?vperm $out2,$out2,$out2,$inpperm ++ stvx_u $out1,$x10,$out ++ le?vperm $out3,$out3,$out3,$inpperm ++ stvx_u $out2,$x20,$out ++ le?vperm $out4,$out4,$out4,$inpperm ++ stvx_u $out3,$x30,$out ++ le?vperm $out5,$out5,$out5,$inpperm ++ stvx_u $out4,$x40,$out ++ le?vperm $out6,$out6,$out6,$inpperm ++ stvx_u $out5,$x50,$out ++ stvx_u $out6,$x60,$out ++ addi $out,$out,0x70 ++ b Lctr32_enc8x_done ++ ++.align 5 ++Lctr32_enc8x_six: ++ vcipherlast $out0,$out0,$in2 ++ vcipherlast $out1,$out1,$in3 ++ vcipherlast $out2,$out2,$in4 ++ vcipherlast $out3,$out3,$in5 ++ vcipherlast $out4,$out4,$in6 ++ vcipherlast $out5,$out5,$in7 ++ ++ le?vperm $out0,$out0,$out0,$inpperm ++ le?vperm $out1,$out1,$out1,$inpperm ++ stvx_u $out0,$x00,$out ++ le?vperm $out2,$out2,$out2,$inpperm ++ stvx_u $out1,$x10,$out ++ le?vperm $out3,$out3,$out3,$inpperm ++ stvx_u $out2,$x20,$out ++ le?vperm $out4,$out4,$out4,$inpperm ++ stvx_u $out3,$x30,$out ++ le?vperm $out5,$out5,$out5,$inpperm ++ stvx_u $out4,$x40,$out ++ stvx_u $out5,$x50,$out ++ addi $out,$out,0x60 ++ b Lctr32_enc8x_done ++ ++.align 5 ++Lctr32_enc8x_five: ++ vcipherlast $out0,$out0,$in3 ++ vcipherlast $out1,$out1,$in4 ++ vcipherlast $out2,$out2,$in5 ++ vcipherlast $out3,$out3,$in6 ++ vcipherlast $out4,$out4,$in7 ++ ++ le?vperm $out0,$out0,$out0,$inpperm ++ le?vperm $out1,$out1,$out1,$inpperm ++ stvx_u $out0,$x00,$out ++ le?vperm $out2,$out2,$out2,$inpperm ++ stvx_u $out1,$x10,$out ++ le?vperm $out3,$out3,$out3,$inpperm ++ stvx_u $out2,$x20,$out ++ le?vperm $out4,$out4,$out4,$inpperm ++ stvx_u $out3,$x30,$out ++ stvx_u $out4,$x40,$out ++ addi $out,$out,0x50 ++ b Lctr32_enc8x_done ++ ++.align 5 ++Lctr32_enc8x_four: ++ vcipherlast $out0,$out0,$in4 ++ vcipherlast $out1,$out1,$in5 ++ vcipherlast $out2,$out2,$in6 ++ vcipherlast $out3,$out3,$in7 ++ ++ le?vperm $out0,$out0,$out0,$inpperm ++ le?vperm $out1,$out1,$out1,$inpperm ++ stvx_u $out0,$x00,$out ++ le?vperm $out2,$out2,$out2,$inpperm ++ stvx_u $out1,$x10,$out ++ le?vperm $out3,$out3,$out3,$inpperm ++ stvx_u $out2,$x20,$out ++ stvx_u $out3,$x30,$out ++ addi $out,$out,0x40 ++ b Lctr32_enc8x_done ++ ++.align 5 ++Lctr32_enc8x_three: ++ vcipherlast $out0,$out0,$in5 ++ vcipherlast $out1,$out1,$in6 ++ vcipherlast $out2,$out2,$in7 ++ ++ le?vperm $out0,$out0,$out0,$inpperm ++ le?vperm $out1,$out1,$out1,$inpperm ++ stvx_u $out0,$x00,$out ++ le?vperm $out2,$out2,$out2,$inpperm ++ stvx_u $out1,$x10,$out ++ stvx_u $out2,$x20,$out ++ addi $out,$out,0x30 ++ b Lctr32_enc8x_done ++ ++.align 5 ++Lctr32_enc8x_two: ++ vcipherlast $out0,$out0,$in6 ++ vcipherlast $out1,$out1,$in7 ++ ++ le?vperm $out0,$out0,$out0,$inpperm ++ le?vperm $out1,$out1,$out1,$inpperm ++ stvx_u $out0,$x00,$out ++ stvx_u $out1,$x10,$out ++ addi $out,$out,0x20 ++ b Lctr32_enc8x_done ++ ++.align 5 ++Lctr32_enc8x_one: ++ vcipherlast $out0,$out0,$in7 ++ ++ le?vperm $out0,$out0,$out0,$inpperm ++ stvx_u $out0,0,$out ++ addi $out,$out,0x10 ++ ++Lctr32_enc8x_done: ++ li r10,`$FRAME+15` ++ li r11,`$FRAME+31` ++ stvx $inpperm,r10,$sp # wipe copies of round keys ++ addi r10,r10,32 ++ stvx $inpperm,r11,$sp ++ addi r11,r11,32 ++ stvx $inpperm,r10,$sp ++ addi r10,r10,32 ++ stvx $inpperm,r11,$sp ++ addi r11,r11,32 ++ stvx $inpperm,r10,$sp ++ addi r10,r10,32 ++ stvx $inpperm,r11,$sp ++ addi r11,r11,32 ++ stvx $inpperm,r10,$sp ++ addi r10,r10,32 ++ stvx $inpperm,r11,$sp ++ addi r11,r11,32 ++ ++ mtspr 256,$vrsave ++ lvx v20,r10,$sp # ABI says so ++ addi r10,r10,32 ++ lvx v21,r11,$sp ++ addi r11,r11,32 ++ lvx v22,r10,$sp ++ addi r10,r10,32 ++ lvx v23,r11,$sp ++ addi r11,r11,32 ++ lvx v24,r10,$sp ++ addi r10,r10,32 ++ lvx v25,r11,$sp ++ addi r11,r11,32 ++ lvx v26,r10,$sp ++ addi r10,r10,32 ++ lvx v27,r11,$sp ++ addi r11,r11,32 ++ lvx v28,r10,$sp ++ addi r10,r10,32 ++ lvx v29,r11,$sp ++ addi r11,r11,32 ++ lvx v30,r10,$sp ++ lvx v31,r11,$sp ++ $POP r26,`$FRAME+21*16+0*$SIZE_T`($sp) ++ $POP r27,`$FRAME+21*16+1*$SIZE_T`($sp) ++ $POP r28,`$FRAME+21*16+2*$SIZE_T`($sp) ++ $POP r29,`$FRAME+21*16+3*$SIZE_T`($sp) ++ $POP r30,`$FRAME+21*16+4*$SIZE_T`($sp) ++ $POP r31,`$FRAME+21*16+5*$SIZE_T`($sp) ++ addi $sp,$sp,`$FRAME+21*16+6*$SIZE_T` ++ blr ++ .long 0 ++ .byte 0,12,0x04,0,0x80,6,6,0 ++ .long 0 ++.size .${prefix}_ctr32_encrypt_blocks,.-.${prefix}_ctr32_encrypt_blocks ++___ ++}} }}} ++ ++######################################################################### ++{{{ # XTS procedures # ++# int aes_p8_xts_[en|de]crypt(const char *inp, char *out, size_t len, # ++# const AES_KEY *key1, const AES_KEY *key2, # ++# [const] unsigned char iv[16]); # ++# If $key2 is NULL, then a "tweak chaining" mode is engaged, in which # ++# input tweak value is assumed to be encrypted already, and last tweak # ++# value, one suitable for consecutive call on same chunk of data, is # ++# written back to original buffer. In addition, in "tweak chaining" # ++# mode only complete input blocks are processed. # ++ ++my ($inp,$out,$len,$key1,$key2,$ivp,$rounds,$idx) = map("r$_",(3..10)); ++my ($rndkey0,$rndkey1,$inout) = map("v$_",(0..2)); ++my ($output,$inptail,$inpperm,$leperm,$keyperm) = map("v$_",(3..7)); ++my ($tweak,$seven,$eighty7,$tmp,$tweak1) = map("v$_",(8..12)); ++my $taillen = $key2; ++ ++ ($inp,$idx) = ($idx,$inp); # reassign ++ ++$code.=<<___; ++.globl .${prefix}_xts_encrypt ++.align 5 ++.${prefix}_xts_encrypt: ++ mr $inp,r3 # reassign ++ li r3,-1 ++ ${UCMP}i $len,16 ++ bltlr- ++ ++ lis r0,0xfff0 ++ mfspr r12,256 # save vrsave ++ li r11,0 ++ mtspr 256,r0 ++ ++ vspltisb $seven,0x07 # 0x070707..07 ++ le?lvsl $leperm,r11,r11 ++ le?vspltisb $tmp,0x0f ++ le?vxor $leperm,$leperm,$seven ++ ++ li $idx,15 ++ lvx $tweak,0,$ivp # load [unaligned] iv ++ lvsl $inpperm,0,$ivp ++ lvx $inptail,$idx,$ivp ++ le?vxor $inpperm,$inpperm,$tmp ++ vperm $tweak,$tweak,$inptail,$inpperm ++ ++ neg r11,$inp ++ lvsr $inpperm,0,r11 # prepare for unaligned load ++ lvx $inout,0,$inp ++ addi $inp,$inp,15 # 15 is not typo ++ le?vxor $inpperm,$inpperm,$tmp ++ ++ ${UCMP}i $key2,0 # key2==NULL? ++ beq Lxts_enc_no_key2 ++ ++ ?lvsl $keyperm,0,$key2 # prepare for unaligned key ++ lwz $rounds,240($key2) ++ srwi $rounds,$rounds,1 ++ subi $rounds,$rounds,1 ++ li $idx,16 ++ ++ lvx $rndkey0,0,$key2 ++ lvx $rndkey1,$idx,$key2 ++ addi $idx,$idx,16 ++ ?vperm $rndkey0,$rndkey0,$rndkey1,$keyperm ++ vxor $tweak,$tweak,$rndkey0 ++ lvx $rndkey0,$idx,$key2 ++ addi $idx,$idx,16 ++ mtctr $rounds ++ ++Ltweak_xts_enc: ++ ?vperm $rndkey1,$rndkey1,$rndkey0,$keyperm ++ vcipher $tweak,$tweak,$rndkey1 ++ lvx $rndkey1,$idx,$key2 ++ addi $idx,$idx,16 ++ ?vperm $rndkey0,$rndkey0,$rndkey1,$keyperm ++ vcipher $tweak,$tweak,$rndkey0 ++ lvx $rndkey0,$idx,$key2 ++ addi $idx,$idx,16 ++ bdnz Ltweak_xts_enc ++ ++ ?vperm $rndkey1,$rndkey1,$rndkey0,$keyperm ++ vcipher $tweak,$tweak,$rndkey1 ++ lvx $rndkey1,$idx,$key2 ++ ?vperm $rndkey0,$rndkey0,$rndkey1,$keyperm ++ vcipherlast $tweak,$tweak,$rndkey0 ++ ++ li $ivp,0 # don't chain the tweak ++ b Lxts_enc ++ ++Lxts_enc_no_key2: ++ li $idx,-16 ++ and $len,$len,$idx # in "tweak chaining" ++ # mode only complete ++ # blocks are processed ++Lxts_enc: ++ lvx $inptail,0,$inp ++ addi $inp,$inp,16 ++ ++ ?lvsl $keyperm,0,$key1 # prepare for unaligned key ++ lwz $rounds,240($key1) ++ srwi $rounds,$rounds,1 ++ subi $rounds,$rounds,1 ++ li $idx,16 ++ ++ vslb $eighty7,$seven,$seven # 0x808080..80 ++ vor $eighty7,$eighty7,$seven # 0x878787..87 ++ vspltisb $tmp,1 # 0x010101..01 ++ vsldoi $eighty7,$eighty7,$tmp,15 # 0x870101..01 ++ ++ ${UCMP}i $len,96 ++ bge _aesp8_xts_encrypt6x ++ ++ andi. $taillen,$len,15 ++ subic r0,$len,32 ++ subi $taillen,$taillen,16 ++ subfe r0,r0,r0 ++ and r0,r0,$taillen ++ add $inp,$inp,r0 ++ ++ lvx $rndkey0,0,$key1 ++ lvx $rndkey1,$idx,$key1 ++ addi $idx,$idx,16 ++ vperm $inout,$inout,$inptail,$inpperm ++ ?vperm $rndkey0,$rndkey0,$rndkey1,$keyperm ++ vxor $inout,$inout,$tweak ++ vxor $inout,$inout,$rndkey0 ++ lvx $rndkey0,$idx,$key1 ++ addi $idx,$idx,16 ++ mtctr $rounds ++ b Loop_xts_enc ++ ++.align 5 ++Loop_xts_enc: ++ ?vperm $rndkey1,$rndkey1,$rndkey0,$keyperm ++ vcipher $inout,$inout,$rndkey1 ++ lvx $rndkey1,$idx,$key1 ++ addi $idx,$idx,16 ++ ?vperm $rndkey0,$rndkey0,$rndkey1,$keyperm ++ vcipher $inout,$inout,$rndkey0 ++ lvx $rndkey0,$idx,$key1 ++ addi $idx,$idx,16 ++ bdnz Loop_xts_enc ++ ++ ?vperm $rndkey1,$rndkey1,$rndkey0,$keyperm ++ vcipher $inout,$inout,$rndkey1 ++ lvx $rndkey1,$idx,$key1 ++ li $idx,16 ++ ?vperm $rndkey0,$rndkey0,$rndkey1,$keyperm ++ vxor $rndkey0,$rndkey0,$tweak ++ vcipherlast $output,$inout,$rndkey0 ++ ++ le?vperm $tmp,$output,$output,$leperm ++ be?nop ++ le?stvx_u $tmp,0,$out ++ be?stvx_u $output,0,$out ++ addi $out,$out,16 ++ ++ subic. $len,$len,16 ++ beq Lxts_enc_done ++ ++ vmr $inout,$inptail ++ lvx $inptail,0,$inp ++ addi $inp,$inp,16 ++ lvx $rndkey0,0,$key1 ++ lvx $rndkey1,$idx,$key1 ++ addi $idx,$idx,16 ++ ++ subic r0,$len,32 ++ subfe r0,r0,r0 ++ and r0,r0,$taillen ++ add $inp,$inp,r0 ++ ++ vsrab $tmp,$tweak,$seven # next tweak value ++ vaddubm $tweak,$tweak,$tweak ++ vsldoi $tmp,$tmp,$tmp,15 ++ vand $tmp,$tmp,$eighty7 ++ vxor $tweak,$tweak,$tmp ++ ++ vperm $inout,$inout,$inptail,$inpperm ++ ?vperm $rndkey0,$rndkey0,$rndkey1,$keyperm ++ vxor $inout,$inout,$tweak ++ vxor $output,$output,$rndkey0 # just in case $len<16 ++ vxor $inout,$inout,$rndkey0 ++ lvx $rndkey0,$idx,$key1 ++ addi $idx,$idx,16 ++ ++ mtctr $rounds ++ ${UCMP}i $len,16 ++ bge Loop_xts_enc ++ ++ vxor $output,$output,$tweak ++ lvsr $inpperm,0,$len # $inpperm is no longer needed ++ vxor $inptail,$inptail,$inptail # $inptail is no longer needed ++ vspltisb $tmp,-1 ++ vperm $inptail,$inptail,$tmp,$inpperm ++ vsel $inout,$inout,$output,$inptail ++ ++ subi r11,$out,17 ++ subi $out,$out,16 ++ mtctr $len ++ li $len,16 ++Loop_xts_enc_steal: ++ lbzu r0,1(r11) ++ stb r0,16(r11) ++ bdnz Loop_xts_enc_steal ++ ++ mtctr $rounds ++ b Loop_xts_enc # one more time... ++ ++Lxts_enc_done: ++ ${UCMP}i $ivp,0 ++ beq Lxts_enc_ret ++ ++ vsrab $tmp,$tweak,$seven # next tweak value ++ vaddubm $tweak,$tweak,$tweak ++ vsldoi $tmp,$tmp,$tmp,15 ++ vand $tmp,$tmp,$eighty7 ++ vxor $tweak,$tweak,$tmp ++ ++ le?vperm $tweak,$tweak,$tweak,$leperm ++ stvx_u $tweak,0,$ivp ++ ++Lxts_enc_ret: ++ mtspr 256,r12 # restore vrsave ++ li r3,0 ++ blr ++ .long 0 ++ .byte 0,12,0x04,0,0x80,6,6,0 ++ .long 0 ++.size .${prefix}_xts_encrypt,.-.${prefix}_xts_encrypt ++ ++.globl .${prefix}_xts_decrypt ++.align 5 ++.${prefix}_xts_decrypt: ++ mr $inp,r3 # reassign ++ li r3,-1 ++ ${UCMP}i $len,16 ++ bltlr- ++ ++ lis r0,0xfff8 ++ mfspr r12,256 # save vrsave ++ li r11,0 ++ mtspr 256,r0 ++ ++ andi. r0,$len,15 ++ neg r0,r0 ++ andi. r0,r0,16 ++ sub $len,$len,r0 ++ ++ vspltisb $seven,0x07 # 0x070707..07 ++ le?lvsl $leperm,r11,r11 ++ le?vspltisb $tmp,0x0f ++ le?vxor $leperm,$leperm,$seven ++ ++ li $idx,15 ++ lvx $tweak,0,$ivp # load [unaligned] iv ++ lvsl $inpperm,0,$ivp ++ lvx $inptail,$idx,$ivp ++ le?vxor $inpperm,$inpperm,$tmp ++ vperm $tweak,$tweak,$inptail,$inpperm ++ ++ neg r11,$inp ++ lvsr $inpperm,0,r11 # prepare for unaligned load ++ lvx $inout,0,$inp ++ addi $inp,$inp,15 # 15 is not typo ++ le?vxor $inpperm,$inpperm,$tmp ++ ++ ${UCMP}i $key2,0 # key2==NULL? ++ beq Lxts_dec_no_key2 ++ ++ ?lvsl $keyperm,0,$key2 # prepare for unaligned key ++ lwz $rounds,240($key2) ++ srwi $rounds,$rounds,1 ++ subi $rounds,$rounds,1 ++ li $idx,16 ++ ++ lvx $rndkey0,0,$key2 ++ lvx $rndkey1,$idx,$key2 ++ addi $idx,$idx,16 ++ ?vperm $rndkey0,$rndkey0,$rndkey1,$keyperm ++ vxor $tweak,$tweak,$rndkey0 ++ lvx $rndkey0,$idx,$key2 ++ addi $idx,$idx,16 ++ mtctr $rounds ++ ++Ltweak_xts_dec: ++ ?vperm $rndkey1,$rndkey1,$rndkey0,$keyperm ++ vcipher $tweak,$tweak,$rndkey1 ++ lvx $rndkey1,$idx,$key2 ++ addi $idx,$idx,16 ++ ?vperm $rndkey0,$rndkey0,$rndkey1,$keyperm ++ vcipher $tweak,$tweak,$rndkey0 ++ lvx $rndkey0,$idx,$key2 ++ addi $idx,$idx,16 ++ bdnz Ltweak_xts_dec ++ ++ ?vperm $rndkey1,$rndkey1,$rndkey0,$keyperm ++ vcipher $tweak,$tweak,$rndkey1 ++ lvx $rndkey1,$idx,$key2 ++ ?vperm $rndkey0,$rndkey0,$rndkey1,$keyperm ++ vcipherlast $tweak,$tweak,$rndkey0 ++ ++ li $ivp,0 # don't chain the tweak ++ b Lxts_dec ++ ++Lxts_dec_no_key2: ++ neg $idx,$len ++ andi. $idx,$idx,15 ++ add $len,$len,$idx # in "tweak chaining" ++ # mode only complete ++ # blocks are processed ++Lxts_dec: ++ lvx $inptail,0,$inp ++ addi $inp,$inp,16 ++ ++ ?lvsl $keyperm,0,$key1 # prepare for unaligned key ++ lwz $rounds,240($key1) ++ srwi $rounds,$rounds,1 ++ subi $rounds,$rounds,1 ++ li $idx,16 ++ ++ vslb $eighty7,$seven,$seven # 0x808080..80 ++ vor $eighty7,$eighty7,$seven # 0x878787..87 ++ vspltisb $tmp,1 # 0x010101..01 ++ vsldoi $eighty7,$eighty7,$tmp,15 # 0x870101..01 ++ ++ ${UCMP}i $len,96 ++ bge _aesp8_xts_decrypt6x ++ ++ lvx $rndkey0,0,$key1 ++ lvx $rndkey1,$idx,$key1 ++ addi $idx,$idx,16 ++ vperm $inout,$inout,$inptail,$inpperm ++ ?vperm $rndkey0,$rndkey0,$rndkey1,$keyperm ++ vxor $inout,$inout,$tweak ++ vxor $inout,$inout,$rndkey0 ++ lvx $rndkey0,$idx,$key1 ++ addi $idx,$idx,16 ++ mtctr $rounds ++ ++ ${UCMP}i $len,16 ++ blt Ltail_xts_dec ++ be?b Loop_xts_dec ++ ++.align 5 ++Loop_xts_dec: ++ ?vperm $rndkey1,$rndkey1,$rndkey0,$keyperm ++ vncipher $inout,$inout,$rndkey1 ++ lvx $rndkey1,$idx,$key1 ++ addi $idx,$idx,16 ++ ?vperm $rndkey0,$rndkey0,$rndkey1,$keyperm ++ vncipher $inout,$inout,$rndkey0 ++ lvx $rndkey0,$idx,$key1 ++ addi $idx,$idx,16 ++ bdnz Loop_xts_dec ++ ++ ?vperm $rndkey1,$rndkey1,$rndkey0,$keyperm ++ vncipher $inout,$inout,$rndkey1 ++ lvx $rndkey1,$idx,$key1 ++ li $idx,16 ++ ?vperm $rndkey0,$rndkey0,$rndkey1,$keyperm ++ vxor $rndkey0,$rndkey0,$tweak ++ vncipherlast $output,$inout,$rndkey0 ++ ++ le?vperm $tmp,$output,$output,$leperm ++ be?nop ++ le?stvx_u $tmp,0,$out ++ be?stvx_u $output,0,$out ++ addi $out,$out,16 ++ ++ subic. $len,$len,16 ++ beq Lxts_dec_done ++ ++ vmr $inout,$inptail ++ lvx $inptail,0,$inp ++ addi $inp,$inp,16 ++ lvx $rndkey0,0,$key1 ++ lvx $rndkey1,$idx,$key1 ++ addi $idx,$idx,16 ++ ++ vsrab $tmp,$tweak,$seven # next tweak value ++ vaddubm $tweak,$tweak,$tweak ++ vsldoi $tmp,$tmp,$tmp,15 ++ vand $tmp,$tmp,$eighty7 ++ vxor $tweak,$tweak,$tmp ++ ++ vperm $inout,$inout,$inptail,$inpperm ++ ?vperm $rndkey0,$rndkey0,$rndkey1,$keyperm ++ vxor $inout,$inout,$tweak ++ vxor $inout,$inout,$rndkey0 ++ lvx $rndkey0,$idx,$key1 ++ addi $idx,$idx,16 ++ ++ mtctr $rounds ++ ${UCMP}i $len,16 ++ bge Loop_xts_dec ++ ++Ltail_xts_dec: ++ vsrab $tmp,$tweak,$seven # next tweak value ++ vaddubm $tweak1,$tweak,$tweak ++ vsldoi $tmp,$tmp,$tmp,15 ++ vand $tmp,$tmp,$eighty7 ++ vxor $tweak1,$tweak1,$tmp ++ ++ subi $inp,$inp,16 ++ add $inp,$inp,$len ++ ++ vxor $inout,$inout,$tweak # :-( ++ vxor $inout,$inout,$tweak1 # :-) ++ ++Loop_xts_dec_short: ++ ?vperm $rndkey1,$rndkey1,$rndkey0,$keyperm ++ vncipher $inout,$inout,$rndkey1 ++ lvx $rndkey1,$idx,$key1 ++ addi $idx,$idx,16 ++ ?vperm $rndkey0,$rndkey0,$rndkey1,$keyperm ++ vncipher $inout,$inout,$rndkey0 ++ lvx $rndkey0,$idx,$key1 ++ addi $idx,$idx,16 ++ bdnz Loop_xts_dec_short ++ ++ ?vperm $rndkey1,$rndkey1,$rndkey0,$keyperm ++ vncipher $inout,$inout,$rndkey1 ++ lvx $rndkey1,$idx,$key1 ++ li $idx,16 ++ ?vperm $rndkey0,$rndkey0,$rndkey1,$keyperm ++ vxor $rndkey0,$rndkey0,$tweak1 ++ vncipherlast $output,$inout,$rndkey0 ++ ++ le?vperm $tmp,$output,$output,$leperm ++ be?nop ++ le?stvx_u $tmp,0,$out ++ be?stvx_u $output,0,$out ++ ++ vmr $inout,$inptail ++ lvx $inptail,0,$inp ++ #addi $inp,$inp,16 ++ lvx $rndkey0,0,$key1 ++ lvx $rndkey1,$idx,$key1 ++ addi $idx,$idx,16 ++ vperm $inout,$inout,$inptail,$inpperm ++ ?vperm $rndkey0,$rndkey0,$rndkey1,$keyperm ++ ++ lvsr $inpperm,0,$len # $inpperm is no longer needed ++ vxor $inptail,$inptail,$inptail # $inptail is no longer needed ++ vspltisb $tmp,-1 ++ vperm $inptail,$inptail,$tmp,$inpperm ++ vsel $inout,$inout,$output,$inptail ++ ++ vxor $rndkey0,$rndkey0,$tweak ++ vxor $inout,$inout,$rndkey0 ++ lvx $rndkey0,$idx,$key1 ++ addi $idx,$idx,16 ++ ++ subi r11,$out,1 ++ mtctr $len ++ li $len,16 ++Loop_xts_dec_steal: ++ lbzu r0,1(r11) ++ stb r0,16(r11) ++ bdnz Loop_xts_dec_steal ++ ++ mtctr $rounds ++ b Loop_xts_dec # one more time... ++ ++Lxts_dec_done: ++ ${UCMP}i $ivp,0 ++ beq Lxts_dec_ret ++ ++ vsrab $tmp,$tweak,$seven # next tweak value ++ vaddubm $tweak,$tweak,$tweak ++ vsldoi $tmp,$tmp,$tmp,15 ++ vand $tmp,$tmp,$eighty7 ++ vxor $tweak,$tweak,$tmp ++ ++ le?vperm $tweak,$tweak,$tweak,$leperm ++ stvx_u $tweak,0,$ivp ++ ++Lxts_dec_ret: ++ mtspr 256,r12 # restore vrsave ++ li r3,0 ++ blr ++ .long 0 ++ .byte 0,12,0x04,0,0x80,6,6,0 ++ .long 0 ++.size .${prefix}_xts_decrypt,.-.${prefix}_xts_decrypt ++___ ++######################################################################### ++{{ # Optimized XTS procedures # ++my $key_=$key2; ++my ($x00,$x10,$x20,$x30,$x40,$x50,$x60,$x70)=map("r$_",(0,3,26..31)); ++ $x00=0 if ($flavour =~ /osx/); ++my ($in0, $in1, $in2, $in3, $in4, $in5 )=map("v$_",(0..5)); ++my ($out0, $out1, $out2, $out3, $out4, $out5)=map("v$_",(7,12..16)); ++my ($twk0, $twk1, $twk2, $twk3, $twk4, $twk5)=map("v$_",(17..22)); ++my $rndkey0="v23"; # v24-v25 rotating buffer for first found keys ++ # v26-v31 last 6 round keys ++my ($keyperm)=($out0); # aliases with "caller", redundant assignment ++my $taillen=$x70; ++ ++$code.=<<___; ++.align 5 ++_aesp8_xts_encrypt6x: ++ $STU $sp,-`($FRAME+21*16+6*$SIZE_T)`($sp) ++ mflr r11 ++ li r7,`$FRAME+8*16+15` ++ li r3,`$FRAME+8*16+31` ++ $PUSH r11,`$FRAME+21*16+6*$SIZE_T+$LRSAVE`($sp) ++ stvx v20,r7,$sp # ABI says so ++ addi r7,r7,32 ++ stvx v21,r3,$sp ++ addi r3,r3,32 ++ stvx v22,r7,$sp ++ addi r7,r7,32 ++ stvx v23,r3,$sp ++ addi r3,r3,32 ++ stvx v24,r7,$sp ++ addi r7,r7,32 ++ stvx v25,r3,$sp ++ addi r3,r3,32 ++ stvx v26,r7,$sp ++ addi r7,r7,32 ++ stvx v27,r3,$sp ++ addi r3,r3,32 ++ stvx v28,r7,$sp ++ addi r7,r7,32 ++ stvx v29,r3,$sp ++ addi r3,r3,32 ++ stvx v30,r7,$sp ++ stvx v31,r3,$sp ++ li r0,-1 ++ stw $vrsave,`$FRAME+21*16-4`($sp) # save vrsave ++ li $x10,0x10 ++ $PUSH r26,`$FRAME+21*16+0*$SIZE_T`($sp) ++ li $x20,0x20 ++ $PUSH r27,`$FRAME+21*16+1*$SIZE_T`($sp) ++ li $x30,0x30 ++ $PUSH r28,`$FRAME+21*16+2*$SIZE_T`($sp) ++ li $x40,0x40 ++ $PUSH r29,`$FRAME+21*16+3*$SIZE_T`($sp) ++ li $x50,0x50 ++ $PUSH r30,`$FRAME+21*16+4*$SIZE_T`($sp) ++ li $x60,0x60 ++ $PUSH r31,`$FRAME+21*16+5*$SIZE_T`($sp) ++ li $x70,0x70 ++ mtspr 256,r0 ++ ++ subi $rounds,$rounds,3 # -4 in total ++ ++ lvx $rndkey0,$x00,$key1 # load key schedule ++ lvx v30,$x10,$key1 ++ addi $key1,$key1,0x20 ++ lvx v31,$x00,$key1 ++ ?vperm $rndkey0,$rndkey0,v30,$keyperm ++ addi $key_,$sp,`$FRAME+15` ++ mtctr $rounds ++ ++Load_xts_enc_key: ++ ?vperm v24,v30,v31,$keyperm ++ lvx v30,$x10,$key1 ++ addi $key1,$key1,0x20 ++ stvx v24,$x00,$key_ # off-load round[1] ++ ?vperm v25,v31,v30,$keyperm ++ lvx v31,$x00,$key1 ++ stvx v25,$x10,$key_ # off-load round[2] ++ addi $key_,$key_,0x20 ++ bdnz Load_xts_enc_key ++ ++ lvx v26,$x10,$key1 ++ ?vperm v24,v30,v31,$keyperm ++ lvx v27,$x20,$key1 ++ stvx v24,$x00,$key_ # off-load round[3] ++ ?vperm v25,v31,v26,$keyperm ++ lvx v28,$x30,$key1 ++ stvx v25,$x10,$key_ # off-load round[4] ++ addi $key_,$sp,`$FRAME+15` # rewind $key_ ++ ?vperm v26,v26,v27,$keyperm ++ lvx v29,$x40,$key1 ++ ?vperm v27,v27,v28,$keyperm ++ lvx v30,$x50,$key1 ++ ?vperm v28,v28,v29,$keyperm ++ lvx v31,$x60,$key1 ++ ?vperm v29,v29,v30,$keyperm ++ lvx $twk5,$x70,$key1 # borrow $twk5 ++ ?vperm v30,v30,v31,$keyperm ++ lvx v24,$x00,$key_ # pre-load round[1] ++ ?vperm v31,v31,$twk5,$keyperm ++ lvx v25,$x10,$key_ # pre-load round[2] ++ ++ vperm $in0,$inout,$inptail,$inpperm ++ subi $inp,$inp,31 # undo "caller" ++ vxor $twk0,$tweak,$rndkey0 ++ vsrab $tmp,$tweak,$seven # next tweak value ++ vaddubm $tweak,$tweak,$tweak ++ vsldoi $tmp,$tmp,$tmp,15 ++ vand $tmp,$tmp,$eighty7 ++ vxor $out0,$in0,$twk0 ++ vxor $tweak,$tweak,$tmp ++ ++ lvx_u $in1,$x10,$inp ++ vxor $twk1,$tweak,$rndkey0 ++ vsrab $tmp,$tweak,$seven # next tweak value ++ vaddubm $tweak,$tweak,$tweak ++ vsldoi $tmp,$tmp,$tmp,15 ++ le?vperm $in1,$in1,$in1,$leperm ++ vand $tmp,$tmp,$eighty7 ++ vxor $out1,$in1,$twk1 ++ vxor $tweak,$tweak,$tmp ++ ++ lvx_u $in2,$x20,$inp ++ andi. $taillen,$len,15 ++ vxor $twk2,$tweak,$rndkey0 ++ vsrab $tmp,$tweak,$seven # next tweak value ++ vaddubm $tweak,$tweak,$tweak ++ vsldoi $tmp,$tmp,$tmp,15 ++ le?vperm $in2,$in2,$in2,$leperm ++ vand $tmp,$tmp,$eighty7 ++ vxor $out2,$in2,$twk2 ++ vxor $tweak,$tweak,$tmp ++ ++ lvx_u $in3,$x30,$inp ++ sub $len,$len,$taillen ++ vxor $twk3,$tweak,$rndkey0 ++ vsrab $tmp,$tweak,$seven # next tweak value ++ vaddubm $tweak,$tweak,$tweak ++ vsldoi $tmp,$tmp,$tmp,15 ++ le?vperm $in3,$in3,$in3,$leperm ++ vand $tmp,$tmp,$eighty7 ++ vxor $out3,$in3,$twk3 ++ vxor $tweak,$tweak,$tmp ++ ++ lvx_u $in4,$x40,$inp ++ subi $len,$len,0x60 ++ vxor $twk4,$tweak,$rndkey0 ++ vsrab $tmp,$tweak,$seven # next tweak value ++ vaddubm $tweak,$tweak,$tweak ++ vsldoi $tmp,$tmp,$tmp,15 ++ le?vperm $in4,$in4,$in4,$leperm ++ vand $tmp,$tmp,$eighty7 ++ vxor $out4,$in4,$twk4 ++ vxor $tweak,$tweak,$tmp ++ ++ lvx_u $in5,$x50,$inp ++ addi $inp,$inp,0x60 ++ vxor $twk5,$tweak,$rndkey0 ++ vsrab $tmp,$tweak,$seven # next tweak value ++ vaddubm $tweak,$tweak,$tweak ++ vsldoi $tmp,$tmp,$tmp,15 ++ le?vperm $in5,$in5,$in5,$leperm ++ vand $tmp,$tmp,$eighty7 ++ vxor $out5,$in5,$twk5 ++ vxor $tweak,$tweak,$tmp ++ ++ vxor v31,v31,$rndkey0 ++ mtctr $rounds ++ b Loop_xts_enc6x ++ ++.align 5 ++Loop_xts_enc6x: ++ vcipher $out0,$out0,v24 ++ vcipher $out1,$out1,v24 ++ vcipher $out2,$out2,v24 ++ vcipher $out3,$out3,v24 ++ vcipher $out4,$out4,v24 ++ vcipher $out5,$out5,v24 ++ lvx v24,$x20,$key_ # round[3] ++ addi $key_,$key_,0x20 ++ ++ vcipher $out0,$out0,v25 ++ vcipher $out1,$out1,v25 ++ vcipher $out2,$out2,v25 ++ vcipher $out3,$out3,v25 ++ vcipher $out4,$out4,v25 ++ vcipher $out5,$out5,v25 ++ lvx v25,$x10,$key_ # round[4] ++ bdnz Loop_xts_enc6x ++ ++ subic $len,$len,96 # $len-=96 ++ vxor $in0,$twk0,v31 # xor with last round key ++ vcipher $out0,$out0,v24 ++ vcipher $out1,$out1,v24 ++ vsrab $tmp,$tweak,$seven # next tweak value ++ vxor $twk0,$tweak,$rndkey0 ++ vaddubm $tweak,$tweak,$tweak ++ vcipher $out2,$out2,v24 ++ vcipher $out3,$out3,v24 ++ vsldoi $tmp,$tmp,$tmp,15 ++ vcipher $out4,$out4,v24 ++ vcipher $out5,$out5,v24 ++ ++ subfe. r0,r0,r0 # borrow?-1:0 ++ vand $tmp,$tmp,$eighty7 ++ vcipher $out0,$out0,v25 ++ vcipher $out1,$out1,v25 ++ vxor $tweak,$tweak,$tmp ++ vcipher $out2,$out2,v25 ++ vcipher $out3,$out3,v25 ++ vxor $in1,$twk1,v31 ++ vsrab $tmp,$tweak,$seven # next tweak value ++ vxor $twk1,$tweak,$rndkey0 ++ vcipher $out4,$out4,v25 ++ vcipher $out5,$out5,v25 ++ ++ and r0,r0,$len ++ vaddubm $tweak,$tweak,$tweak ++ vsldoi $tmp,$tmp,$tmp,15 ++ vcipher $out0,$out0,v26 ++ vcipher $out1,$out1,v26 ++ vand $tmp,$tmp,$eighty7 ++ vcipher $out2,$out2,v26 ++ vcipher $out3,$out3,v26 ++ vxor $tweak,$tweak,$tmp ++ vcipher $out4,$out4,v26 ++ vcipher $out5,$out5,v26 ++ ++ add $inp,$inp,r0 # $inp is adjusted in such ++ # way that at exit from the ++ # loop inX-in5 are loaded ++ # with last "words" ++ vxor $in2,$twk2,v31 ++ vsrab $tmp,$tweak,$seven # next tweak value ++ vxor $twk2,$tweak,$rndkey0 ++ vaddubm $tweak,$tweak,$tweak ++ vcipher $out0,$out0,v27 ++ vcipher $out1,$out1,v27 ++ vsldoi $tmp,$tmp,$tmp,15 ++ vcipher $out2,$out2,v27 ++ vcipher $out3,$out3,v27 ++ vand $tmp,$tmp,$eighty7 ++ vcipher $out4,$out4,v27 ++ vcipher $out5,$out5,v27 ++ ++ addi $key_,$sp,`$FRAME+15` # rewind $key_ ++ vxor $tweak,$tweak,$tmp ++ vcipher $out0,$out0,v28 ++ vcipher $out1,$out1,v28 ++ vxor $in3,$twk3,v31 ++ vsrab $tmp,$tweak,$seven # next tweak value ++ vxor $twk3,$tweak,$rndkey0 ++ vcipher $out2,$out2,v28 ++ vcipher $out3,$out3,v28 ++ vaddubm $tweak,$tweak,$tweak ++ vsldoi $tmp,$tmp,$tmp,15 ++ vcipher $out4,$out4,v28 ++ vcipher $out5,$out5,v28 ++ lvx v24,$x00,$key_ # re-pre-load round[1] ++ vand $tmp,$tmp,$eighty7 ++ ++ vcipher $out0,$out0,v29 ++ vcipher $out1,$out1,v29 ++ vxor $tweak,$tweak,$tmp ++ vcipher $out2,$out2,v29 ++ vcipher $out3,$out3,v29 ++ vxor $in4,$twk4,v31 ++ vsrab $tmp,$tweak,$seven # next tweak value ++ vxor $twk4,$tweak,$rndkey0 ++ vcipher $out4,$out4,v29 ++ vcipher $out5,$out5,v29 ++ lvx v25,$x10,$key_ # re-pre-load round[2] ++ vaddubm $tweak,$tweak,$tweak ++ vsldoi $tmp,$tmp,$tmp,15 ++ ++ vcipher $out0,$out0,v30 ++ vcipher $out1,$out1,v30 ++ vand $tmp,$tmp,$eighty7 ++ vcipher $out2,$out2,v30 ++ vcipher $out3,$out3,v30 ++ vxor $tweak,$tweak,$tmp ++ vcipher $out4,$out4,v30 ++ vcipher $out5,$out5,v30 ++ vxor $in5,$twk5,v31 ++ vsrab $tmp,$tweak,$seven # next tweak value ++ vxor $twk5,$tweak,$rndkey0 ++ ++ vcipherlast $out0,$out0,$in0 ++ lvx_u $in0,$x00,$inp # load next input block ++ vaddubm $tweak,$tweak,$tweak ++ vsldoi $tmp,$tmp,$tmp,15 ++ vcipherlast $out1,$out1,$in1 ++ lvx_u $in1,$x10,$inp ++ vcipherlast $out2,$out2,$in2 ++ le?vperm $in0,$in0,$in0,$leperm ++ lvx_u $in2,$x20,$inp ++ vand $tmp,$tmp,$eighty7 ++ vcipherlast $out3,$out3,$in3 ++ le?vperm $in1,$in1,$in1,$leperm ++ lvx_u $in3,$x30,$inp ++ vcipherlast $out4,$out4,$in4 ++ le?vperm $in2,$in2,$in2,$leperm ++ lvx_u $in4,$x40,$inp ++ vxor $tweak,$tweak,$tmp ++ vcipherlast $tmp,$out5,$in5 # last block might be needed ++ # in stealing mode ++ le?vperm $in3,$in3,$in3,$leperm ++ lvx_u $in5,$x50,$inp ++ addi $inp,$inp,0x60 ++ le?vperm $in4,$in4,$in4,$leperm ++ le?vperm $in5,$in5,$in5,$leperm ++ ++ le?vperm $out0,$out0,$out0,$leperm ++ le?vperm $out1,$out1,$out1,$leperm ++ stvx_u $out0,$x00,$out # store output ++ vxor $out0,$in0,$twk0 ++ le?vperm $out2,$out2,$out2,$leperm ++ stvx_u $out1,$x10,$out ++ vxor $out1,$in1,$twk1 ++ le?vperm $out3,$out3,$out3,$leperm ++ stvx_u $out2,$x20,$out ++ vxor $out2,$in2,$twk2 ++ le?vperm $out4,$out4,$out4,$leperm ++ stvx_u $out3,$x30,$out ++ vxor $out3,$in3,$twk3 ++ le?vperm $out5,$tmp,$tmp,$leperm ++ stvx_u $out4,$x40,$out ++ vxor $out4,$in4,$twk4 ++ le?stvx_u $out5,$x50,$out ++ be?stvx_u $tmp, $x50,$out ++ vxor $out5,$in5,$twk5 ++ addi $out,$out,0x60 ++ ++ mtctr $rounds ++ beq Loop_xts_enc6x # did $len-=96 borrow? ++ ++ addic. $len,$len,0x60 ++ beq Lxts_enc6x_zero ++ cmpwi $len,0x20 ++ blt Lxts_enc6x_one ++ nop ++ beq Lxts_enc6x_two ++ cmpwi $len,0x40 ++ blt Lxts_enc6x_three ++ nop ++ beq Lxts_enc6x_four ++ ++Lxts_enc6x_five: ++ vxor $out0,$in1,$twk0 ++ vxor $out1,$in2,$twk1 ++ vxor $out2,$in3,$twk2 ++ vxor $out3,$in4,$twk3 ++ vxor $out4,$in5,$twk4 ++ ++ bl _aesp8_xts_enc5x ++ ++ le?vperm $out0,$out0,$out0,$leperm ++ vmr $twk0,$twk5 # unused tweak ++ le?vperm $out1,$out1,$out1,$leperm ++ stvx_u $out0,$x00,$out # store output ++ le?vperm $out2,$out2,$out2,$leperm ++ stvx_u $out1,$x10,$out ++ le?vperm $out3,$out3,$out3,$leperm ++ stvx_u $out2,$x20,$out ++ vxor $tmp,$out4,$twk5 # last block prep for stealing ++ le?vperm $out4,$out4,$out4,$leperm ++ stvx_u $out3,$x30,$out ++ stvx_u $out4,$x40,$out ++ addi $out,$out,0x50 ++ bne Lxts_enc6x_steal ++ b Lxts_enc6x_done ++ ++.align 4 ++Lxts_enc6x_four: ++ vxor $out0,$in2,$twk0 ++ vxor $out1,$in3,$twk1 ++ vxor $out2,$in4,$twk2 ++ vxor $out3,$in5,$twk3 ++ vxor $out4,$out4,$out4 ++ ++ bl _aesp8_xts_enc5x ++ ++ le?vperm $out0,$out0,$out0,$leperm ++ vmr $twk0,$twk4 # unused tweak ++ le?vperm $out1,$out1,$out1,$leperm ++ stvx_u $out0,$x00,$out # store output ++ le?vperm $out2,$out2,$out2,$leperm ++ stvx_u $out1,$x10,$out ++ vxor $tmp,$out3,$twk4 # last block prep for stealing ++ le?vperm $out3,$out3,$out3,$leperm ++ stvx_u $out2,$x20,$out ++ stvx_u $out3,$x30,$out ++ addi $out,$out,0x40 ++ bne Lxts_enc6x_steal ++ b Lxts_enc6x_done ++ ++.align 4 ++Lxts_enc6x_three: ++ vxor $out0,$in3,$twk0 ++ vxor $out1,$in4,$twk1 ++ vxor $out2,$in5,$twk2 ++ vxor $out3,$out3,$out3 ++ vxor $out4,$out4,$out4 ++ ++ bl _aesp8_xts_enc5x ++ ++ le?vperm $out0,$out0,$out0,$leperm ++ vmr $twk0,$twk3 # unused tweak ++ le?vperm $out1,$out1,$out1,$leperm ++ stvx_u $out0,$x00,$out # store output ++ vxor $tmp,$out2,$twk3 # last block prep for stealing ++ le?vperm $out2,$out2,$out2,$leperm ++ stvx_u $out1,$x10,$out ++ stvx_u $out2,$x20,$out ++ addi $out,$out,0x30 ++ bne Lxts_enc6x_steal ++ b Lxts_enc6x_done ++ ++.align 4 ++Lxts_enc6x_two: ++ vxor $out0,$in4,$twk0 ++ vxor $out1,$in5,$twk1 ++ vxor $out2,$out2,$out2 ++ vxor $out3,$out3,$out3 ++ vxor $out4,$out4,$out4 ++ ++ bl _aesp8_xts_enc5x ++ ++ le?vperm $out0,$out0,$out0,$leperm ++ vmr $twk0,$twk2 # unused tweak ++ vxor $tmp,$out1,$twk2 # last block prep for stealing ++ le?vperm $out1,$out1,$out1,$leperm ++ stvx_u $out0,$x00,$out # store output ++ stvx_u $out1,$x10,$out ++ addi $out,$out,0x20 ++ bne Lxts_enc6x_steal ++ b Lxts_enc6x_done ++ ++.align 4 ++Lxts_enc6x_one: ++ vxor $out0,$in5,$twk0 ++ nop ++Loop_xts_enc1x: ++ vcipher $out0,$out0,v24 ++ lvx v24,$x20,$key_ # round[3] ++ addi $key_,$key_,0x20 ++ ++ vcipher $out0,$out0,v25 ++ lvx v25,$x10,$key_ # round[4] ++ bdnz Loop_xts_enc1x ++ ++ add $inp,$inp,$taillen ++ cmpwi $taillen,0 ++ vcipher $out0,$out0,v24 ++ ++ subi $inp,$inp,16 ++ vcipher $out0,$out0,v25 ++ ++ lvsr $inpperm,0,$taillen ++ vcipher $out0,$out0,v26 ++ ++ lvx_u $in0,0,$inp ++ vcipher $out0,$out0,v27 ++ ++ addi $key_,$sp,`$FRAME+15` # rewind $key_ ++ vcipher $out0,$out0,v28 ++ lvx v24,$x00,$key_ # re-pre-load round[1] ++ ++ vcipher $out0,$out0,v29 ++ lvx v25,$x10,$key_ # re-pre-load round[2] ++ vxor $twk0,$twk0,v31 ++ ++ le?vperm $in0,$in0,$in0,$leperm ++ vcipher $out0,$out0,v30 ++ ++ vperm $in0,$in0,$in0,$inpperm ++ vcipherlast $out0,$out0,$twk0 ++ ++ vmr $twk0,$twk1 # unused tweak ++ vxor $tmp,$out0,$twk1 # last block prep for stealing ++ le?vperm $out0,$out0,$out0,$leperm ++ stvx_u $out0,$x00,$out # store output ++ addi $out,$out,0x10 ++ bne Lxts_enc6x_steal ++ b Lxts_enc6x_done ++ ++.align 4 ++Lxts_enc6x_zero: ++ cmpwi $taillen,0 ++ beq Lxts_enc6x_done ++ ++ add $inp,$inp,$taillen ++ subi $inp,$inp,16 ++ lvx_u $in0,0,$inp ++ lvsr $inpperm,0,$taillen # $in5 is no more ++ le?vperm $in0,$in0,$in0,$leperm ++ vperm $in0,$in0,$in0,$inpperm ++ vxor $tmp,$tmp,$twk0 ++Lxts_enc6x_steal: ++ vxor $in0,$in0,$twk0 ++ vxor $out0,$out0,$out0 ++ vspltisb $out1,-1 ++ vperm $out0,$out0,$out1,$inpperm ++ vsel $out0,$in0,$tmp,$out0 # $tmp is last block, remember? ++ ++ subi r30,$out,17 ++ subi $out,$out,16 ++ mtctr $taillen ++Loop_xts_enc6x_steal: ++ lbzu r0,1(r30) ++ stb r0,16(r30) ++ bdnz Loop_xts_enc6x_steal ++ ++ li $taillen,0 ++ mtctr $rounds ++ b Loop_xts_enc1x # one more time... ++ ++.align 4 ++Lxts_enc6x_done: ++ ${UCMP}i $ivp,0 ++ beq Lxts_enc6x_ret ++ ++ vxor $tweak,$twk0,$rndkey0 ++ le?vperm $tweak,$tweak,$tweak,$leperm ++ stvx_u $tweak,0,$ivp ++ ++Lxts_enc6x_ret: ++ mtlr r11 ++ li r10,`$FRAME+15` ++ li r11,`$FRAME+31` ++ stvx $seven,r10,$sp # wipe copies of round keys ++ addi r10,r10,32 ++ stvx $seven,r11,$sp ++ addi r11,r11,32 ++ stvx $seven,r10,$sp ++ addi r10,r10,32 ++ stvx $seven,r11,$sp ++ addi r11,r11,32 ++ stvx $seven,r10,$sp ++ addi r10,r10,32 ++ stvx $seven,r11,$sp ++ addi r11,r11,32 ++ stvx $seven,r10,$sp ++ addi r10,r10,32 ++ stvx $seven,r11,$sp ++ addi r11,r11,32 ++ ++ mtspr 256,$vrsave ++ lvx v20,r10,$sp # ABI says so ++ addi r10,r10,32 ++ lvx v21,r11,$sp ++ addi r11,r11,32 ++ lvx v22,r10,$sp ++ addi r10,r10,32 ++ lvx v23,r11,$sp ++ addi r11,r11,32 ++ lvx v24,r10,$sp ++ addi r10,r10,32 ++ lvx v25,r11,$sp ++ addi r11,r11,32 ++ lvx v26,r10,$sp ++ addi r10,r10,32 ++ lvx v27,r11,$sp ++ addi r11,r11,32 ++ lvx v28,r10,$sp ++ addi r10,r10,32 ++ lvx v29,r11,$sp ++ addi r11,r11,32 ++ lvx v30,r10,$sp ++ lvx v31,r11,$sp ++ $POP r26,`$FRAME+21*16+0*$SIZE_T`($sp) ++ $POP r27,`$FRAME+21*16+1*$SIZE_T`($sp) ++ $POP r28,`$FRAME+21*16+2*$SIZE_T`($sp) ++ $POP r29,`$FRAME+21*16+3*$SIZE_T`($sp) ++ $POP r30,`$FRAME+21*16+4*$SIZE_T`($sp) ++ $POP r31,`$FRAME+21*16+5*$SIZE_T`($sp) ++ addi $sp,$sp,`$FRAME+21*16+6*$SIZE_T` ++ blr ++ .long 0 ++ .byte 0,12,0x04,1,0x80,6,6,0 ++ .long 0 ++ ++.align 5 ++_aesp8_xts_enc5x: ++ vcipher $out0,$out0,v24 ++ vcipher $out1,$out1,v24 ++ vcipher $out2,$out2,v24 ++ vcipher $out3,$out3,v24 ++ vcipher $out4,$out4,v24 ++ lvx v24,$x20,$key_ # round[3] ++ addi $key_,$key_,0x20 ++ ++ vcipher $out0,$out0,v25 ++ vcipher $out1,$out1,v25 ++ vcipher $out2,$out2,v25 ++ vcipher $out3,$out3,v25 ++ vcipher $out4,$out4,v25 ++ lvx v25,$x10,$key_ # round[4] ++ bdnz _aesp8_xts_enc5x ++ ++ add $inp,$inp,$taillen ++ cmpwi $taillen,0 ++ vcipher $out0,$out0,v24 ++ vcipher $out1,$out1,v24 ++ vcipher $out2,$out2,v24 ++ vcipher $out3,$out3,v24 ++ vcipher $out4,$out4,v24 ++ ++ subi $inp,$inp,16 ++ vcipher $out0,$out0,v25 ++ vcipher $out1,$out1,v25 ++ vcipher $out2,$out2,v25 ++ vcipher $out3,$out3,v25 ++ vcipher $out4,$out4,v25 ++ vxor $twk0,$twk0,v31 ++ ++ vcipher $out0,$out0,v26 ++ lvsr $inpperm,0,$taillen # $in5 is no more ++ vcipher $out1,$out1,v26 ++ vcipher $out2,$out2,v26 ++ vcipher $out3,$out3,v26 ++ vcipher $out4,$out4,v26 ++ vxor $in1,$twk1,v31 ++ ++ vcipher $out0,$out0,v27 ++ lvx_u $in0,0,$inp ++ vcipher $out1,$out1,v27 ++ vcipher $out2,$out2,v27 ++ vcipher $out3,$out3,v27 ++ vcipher $out4,$out4,v27 ++ vxor $in2,$twk2,v31 ++ ++ addi $key_,$sp,`$FRAME+15` # rewind $key_ ++ vcipher $out0,$out0,v28 ++ vcipher $out1,$out1,v28 ++ vcipher $out2,$out2,v28 ++ vcipher $out3,$out3,v28 ++ vcipher $out4,$out4,v28 ++ lvx v24,$x00,$key_ # re-pre-load round[1] ++ vxor $in3,$twk3,v31 ++ ++ vcipher $out0,$out0,v29 ++ le?vperm $in0,$in0,$in0,$leperm ++ vcipher $out1,$out1,v29 ++ vcipher $out2,$out2,v29 ++ vcipher $out3,$out3,v29 ++ vcipher $out4,$out4,v29 ++ lvx v25,$x10,$key_ # re-pre-load round[2] ++ vxor $in4,$twk4,v31 ++ ++ vcipher $out0,$out0,v30 ++ vperm $in0,$in0,$in0,$inpperm ++ vcipher $out1,$out1,v30 ++ vcipher $out2,$out2,v30 ++ vcipher $out3,$out3,v30 ++ vcipher $out4,$out4,v30 ++ ++ vcipherlast $out0,$out0,$twk0 ++ vcipherlast $out1,$out1,$in1 ++ vcipherlast $out2,$out2,$in2 ++ vcipherlast $out3,$out3,$in3 ++ vcipherlast $out4,$out4,$in4 ++ blr ++ .long 0 ++ .byte 0,12,0x14,0,0,0,0,0 ++ ++.align 5 ++_aesp8_xts_decrypt6x: ++ $STU $sp,-`($FRAME+21*16+6*$SIZE_T)`($sp) ++ mflr r11 ++ li r7,`$FRAME+8*16+15` ++ li r3,`$FRAME+8*16+31` ++ $PUSH r11,`$FRAME+21*16+6*$SIZE_T+$LRSAVE`($sp) ++ stvx v20,r7,$sp # ABI says so ++ addi r7,r7,32 ++ stvx v21,r3,$sp ++ addi r3,r3,32 ++ stvx v22,r7,$sp ++ addi r7,r7,32 ++ stvx v23,r3,$sp ++ addi r3,r3,32 ++ stvx v24,r7,$sp ++ addi r7,r7,32 ++ stvx v25,r3,$sp ++ addi r3,r3,32 ++ stvx v26,r7,$sp ++ addi r7,r7,32 ++ stvx v27,r3,$sp ++ addi r3,r3,32 ++ stvx v28,r7,$sp ++ addi r7,r7,32 ++ stvx v29,r3,$sp ++ addi r3,r3,32 ++ stvx v30,r7,$sp ++ stvx v31,r3,$sp ++ li r0,-1 ++ stw $vrsave,`$FRAME+21*16-4`($sp) # save vrsave ++ li $x10,0x10 ++ $PUSH r26,`$FRAME+21*16+0*$SIZE_T`($sp) ++ li $x20,0x20 ++ $PUSH r27,`$FRAME+21*16+1*$SIZE_T`($sp) ++ li $x30,0x30 ++ $PUSH r28,`$FRAME+21*16+2*$SIZE_T`($sp) ++ li $x40,0x40 ++ $PUSH r29,`$FRAME+21*16+3*$SIZE_T`($sp) ++ li $x50,0x50 ++ $PUSH r30,`$FRAME+21*16+4*$SIZE_T`($sp) ++ li $x60,0x60 ++ $PUSH r31,`$FRAME+21*16+5*$SIZE_T`($sp) ++ li $x70,0x70 ++ mtspr 256,r0 ++ ++ subi $rounds,$rounds,3 # -4 in total ++ ++ lvx $rndkey0,$x00,$key1 # load key schedule ++ lvx v30,$x10,$key1 ++ addi $key1,$key1,0x20 ++ lvx v31,$x00,$key1 ++ ?vperm $rndkey0,$rndkey0,v30,$keyperm ++ addi $key_,$sp,`$FRAME+15` ++ mtctr $rounds ++ ++Load_xts_dec_key: ++ ?vperm v24,v30,v31,$keyperm ++ lvx v30,$x10,$key1 ++ addi $key1,$key1,0x20 ++ stvx v24,$x00,$key_ # off-load round[1] ++ ?vperm v25,v31,v30,$keyperm ++ lvx v31,$x00,$key1 ++ stvx v25,$x10,$key_ # off-load round[2] ++ addi $key_,$key_,0x20 ++ bdnz Load_xts_dec_key ++ ++ lvx v26,$x10,$key1 ++ ?vperm v24,v30,v31,$keyperm ++ lvx v27,$x20,$key1 ++ stvx v24,$x00,$key_ # off-load round[3] ++ ?vperm v25,v31,v26,$keyperm ++ lvx v28,$x30,$key1 ++ stvx v25,$x10,$key_ # off-load round[4] ++ addi $key_,$sp,`$FRAME+15` # rewind $key_ ++ ?vperm v26,v26,v27,$keyperm ++ lvx v29,$x40,$key1 ++ ?vperm v27,v27,v28,$keyperm ++ lvx v30,$x50,$key1 ++ ?vperm v28,v28,v29,$keyperm ++ lvx v31,$x60,$key1 ++ ?vperm v29,v29,v30,$keyperm ++ lvx $twk5,$x70,$key1 # borrow $twk5 ++ ?vperm v30,v30,v31,$keyperm ++ lvx v24,$x00,$key_ # pre-load round[1] ++ ?vperm v31,v31,$twk5,$keyperm ++ lvx v25,$x10,$key_ # pre-load round[2] ++ ++ vperm $in0,$inout,$inptail,$inpperm ++ subi $inp,$inp,31 # undo "caller" ++ vxor $twk0,$tweak,$rndkey0 ++ vsrab $tmp,$tweak,$seven # next tweak value ++ vaddubm $tweak,$tweak,$tweak ++ vsldoi $tmp,$tmp,$tmp,15 ++ vand $tmp,$tmp,$eighty7 ++ vxor $out0,$in0,$twk0 ++ vxor $tweak,$tweak,$tmp ++ ++ lvx_u $in1,$x10,$inp ++ vxor $twk1,$tweak,$rndkey0 ++ vsrab $tmp,$tweak,$seven # next tweak value ++ vaddubm $tweak,$tweak,$tweak ++ vsldoi $tmp,$tmp,$tmp,15 ++ le?vperm $in1,$in1,$in1,$leperm ++ vand $tmp,$tmp,$eighty7 ++ vxor $out1,$in1,$twk1 ++ vxor $tweak,$tweak,$tmp ++ ++ lvx_u $in2,$x20,$inp ++ andi. $taillen,$len,15 ++ vxor $twk2,$tweak,$rndkey0 ++ vsrab $tmp,$tweak,$seven # next tweak value ++ vaddubm $tweak,$tweak,$tweak ++ vsldoi $tmp,$tmp,$tmp,15 ++ le?vperm $in2,$in2,$in2,$leperm ++ vand $tmp,$tmp,$eighty7 ++ vxor $out2,$in2,$twk2 ++ vxor $tweak,$tweak,$tmp ++ ++ lvx_u $in3,$x30,$inp ++ sub $len,$len,$taillen ++ vxor $twk3,$tweak,$rndkey0 ++ vsrab $tmp,$tweak,$seven # next tweak value ++ vaddubm $tweak,$tweak,$tweak ++ vsldoi $tmp,$tmp,$tmp,15 ++ le?vperm $in3,$in3,$in3,$leperm ++ vand $tmp,$tmp,$eighty7 ++ vxor $out3,$in3,$twk3 ++ vxor $tweak,$tweak,$tmp ++ ++ lvx_u $in4,$x40,$inp ++ subi $len,$len,0x60 ++ vxor $twk4,$tweak,$rndkey0 ++ vsrab $tmp,$tweak,$seven # next tweak value ++ vaddubm $tweak,$tweak,$tweak ++ vsldoi $tmp,$tmp,$tmp,15 ++ le?vperm $in4,$in4,$in4,$leperm ++ vand $tmp,$tmp,$eighty7 ++ vxor $out4,$in4,$twk4 ++ vxor $tweak,$tweak,$tmp ++ ++ lvx_u $in5,$x50,$inp ++ addi $inp,$inp,0x60 ++ vxor $twk5,$tweak,$rndkey0 ++ vsrab $tmp,$tweak,$seven # next tweak value ++ vaddubm $tweak,$tweak,$tweak ++ vsldoi $tmp,$tmp,$tmp,15 ++ le?vperm $in5,$in5,$in5,$leperm ++ vand $tmp,$tmp,$eighty7 ++ vxor $out5,$in5,$twk5 ++ vxor $tweak,$tweak,$tmp ++ ++ vxor v31,v31,$rndkey0 ++ mtctr $rounds ++ b Loop_xts_dec6x ++ ++.align 5 ++Loop_xts_dec6x: ++ vncipher $out0,$out0,v24 ++ vncipher $out1,$out1,v24 ++ vncipher $out2,$out2,v24 ++ vncipher $out3,$out3,v24 ++ vncipher $out4,$out4,v24 ++ vncipher $out5,$out5,v24 ++ lvx v24,$x20,$key_ # round[3] ++ addi $key_,$key_,0x20 ++ ++ vncipher $out0,$out0,v25 ++ vncipher $out1,$out1,v25 ++ vncipher $out2,$out2,v25 ++ vncipher $out3,$out3,v25 ++ vncipher $out4,$out4,v25 ++ vncipher $out5,$out5,v25 ++ lvx v25,$x10,$key_ # round[4] ++ bdnz Loop_xts_dec6x ++ ++ subic $len,$len,96 # $len-=96 ++ vxor $in0,$twk0,v31 # xor with last round key ++ vncipher $out0,$out0,v24 ++ vncipher $out1,$out1,v24 ++ vsrab $tmp,$tweak,$seven # next tweak value ++ vxor $twk0,$tweak,$rndkey0 ++ vaddubm $tweak,$tweak,$tweak ++ vncipher $out2,$out2,v24 ++ vncipher $out3,$out3,v24 ++ vsldoi $tmp,$tmp,$tmp,15 ++ vncipher $out4,$out4,v24 ++ vncipher $out5,$out5,v24 ++ ++ subfe. r0,r0,r0 # borrow?-1:0 ++ vand $tmp,$tmp,$eighty7 ++ vncipher $out0,$out0,v25 ++ vncipher $out1,$out1,v25 ++ vxor $tweak,$tweak,$tmp ++ vncipher $out2,$out2,v25 ++ vncipher $out3,$out3,v25 ++ vxor $in1,$twk1,v31 ++ vsrab $tmp,$tweak,$seven # next tweak value ++ vxor $twk1,$tweak,$rndkey0 ++ vncipher $out4,$out4,v25 ++ vncipher $out5,$out5,v25 ++ ++ and r0,r0,$len ++ vaddubm $tweak,$tweak,$tweak ++ vsldoi $tmp,$tmp,$tmp,15 ++ vncipher $out0,$out0,v26 ++ vncipher $out1,$out1,v26 ++ vand $tmp,$tmp,$eighty7 ++ vncipher $out2,$out2,v26 ++ vncipher $out3,$out3,v26 ++ vxor $tweak,$tweak,$tmp ++ vncipher $out4,$out4,v26 ++ vncipher $out5,$out5,v26 ++ ++ add $inp,$inp,r0 # $inp is adjusted in such ++ # way that at exit from the ++ # loop inX-in5 are loaded ++ # with last "words" ++ vxor $in2,$twk2,v31 ++ vsrab $tmp,$tweak,$seven # next tweak value ++ vxor $twk2,$tweak,$rndkey0 ++ vaddubm $tweak,$tweak,$tweak ++ vncipher $out0,$out0,v27 ++ vncipher $out1,$out1,v27 ++ vsldoi $tmp,$tmp,$tmp,15 ++ vncipher $out2,$out2,v27 ++ vncipher $out3,$out3,v27 ++ vand $tmp,$tmp,$eighty7 ++ vncipher $out4,$out4,v27 ++ vncipher $out5,$out5,v27 ++ ++ addi $key_,$sp,`$FRAME+15` # rewind $key_ ++ vxor $tweak,$tweak,$tmp ++ vncipher $out0,$out0,v28 ++ vncipher $out1,$out1,v28 ++ vxor $in3,$twk3,v31 ++ vsrab $tmp,$tweak,$seven # next tweak value ++ vxor $twk3,$tweak,$rndkey0 ++ vncipher $out2,$out2,v28 ++ vncipher $out3,$out3,v28 ++ vaddubm $tweak,$tweak,$tweak ++ vsldoi $tmp,$tmp,$tmp,15 ++ vncipher $out4,$out4,v28 ++ vncipher $out5,$out5,v28 ++ lvx v24,$x00,$key_ # re-pre-load round[1] ++ vand $tmp,$tmp,$eighty7 ++ ++ vncipher $out0,$out0,v29 ++ vncipher $out1,$out1,v29 ++ vxor $tweak,$tweak,$tmp ++ vncipher $out2,$out2,v29 ++ vncipher $out3,$out3,v29 ++ vxor $in4,$twk4,v31 ++ vsrab $tmp,$tweak,$seven # next tweak value ++ vxor $twk4,$tweak,$rndkey0 ++ vncipher $out4,$out4,v29 ++ vncipher $out5,$out5,v29 ++ lvx v25,$x10,$key_ # re-pre-load round[2] ++ vaddubm $tweak,$tweak,$tweak ++ vsldoi $tmp,$tmp,$tmp,15 ++ ++ vncipher $out0,$out0,v30 ++ vncipher $out1,$out1,v30 ++ vand $tmp,$tmp,$eighty7 ++ vncipher $out2,$out2,v30 ++ vncipher $out3,$out3,v30 ++ vxor $tweak,$tweak,$tmp ++ vncipher $out4,$out4,v30 ++ vncipher $out5,$out5,v30 ++ vxor $in5,$twk5,v31 ++ vsrab $tmp,$tweak,$seven # next tweak value ++ vxor $twk5,$tweak,$rndkey0 ++ ++ vncipherlast $out0,$out0,$in0 ++ lvx_u $in0,$x00,$inp # load next input block ++ vaddubm $tweak,$tweak,$tweak ++ vsldoi $tmp,$tmp,$tmp,15 ++ vncipherlast $out1,$out1,$in1 ++ lvx_u $in1,$x10,$inp ++ vncipherlast $out2,$out2,$in2 ++ le?vperm $in0,$in0,$in0,$leperm ++ lvx_u $in2,$x20,$inp ++ vand $tmp,$tmp,$eighty7 ++ vncipherlast $out3,$out3,$in3 ++ le?vperm $in1,$in1,$in1,$leperm ++ lvx_u $in3,$x30,$inp ++ vncipherlast $out4,$out4,$in4 ++ le?vperm $in2,$in2,$in2,$leperm ++ lvx_u $in4,$x40,$inp ++ vxor $tweak,$tweak,$tmp ++ vncipherlast $out5,$out5,$in5 ++ le?vperm $in3,$in3,$in3,$leperm ++ lvx_u $in5,$x50,$inp ++ addi $inp,$inp,0x60 ++ le?vperm $in4,$in4,$in4,$leperm ++ le?vperm $in5,$in5,$in5,$leperm ++ ++ le?vperm $out0,$out0,$out0,$leperm ++ le?vperm $out1,$out1,$out1,$leperm ++ stvx_u $out0,$x00,$out # store output ++ vxor $out0,$in0,$twk0 ++ le?vperm $out2,$out2,$out2,$leperm ++ stvx_u $out1,$x10,$out ++ vxor $out1,$in1,$twk1 ++ le?vperm $out3,$out3,$out3,$leperm ++ stvx_u $out2,$x20,$out ++ vxor $out2,$in2,$twk2 ++ le?vperm $out4,$out4,$out4,$leperm ++ stvx_u $out3,$x30,$out ++ vxor $out3,$in3,$twk3 ++ le?vperm $out5,$out5,$out5,$leperm ++ stvx_u $out4,$x40,$out ++ vxor $out4,$in4,$twk4 ++ stvx_u $out5,$x50,$out ++ vxor $out5,$in5,$twk5 ++ addi $out,$out,0x60 ++ ++ mtctr $rounds ++ beq Loop_xts_dec6x # did $len-=96 borrow? ++ ++ addic. $len,$len,0x60 ++ beq Lxts_dec6x_zero ++ cmpwi $len,0x20 ++ blt Lxts_dec6x_one ++ nop ++ beq Lxts_dec6x_two ++ cmpwi $len,0x40 ++ blt Lxts_dec6x_three ++ nop ++ beq Lxts_dec6x_four ++ ++Lxts_dec6x_five: ++ vxor $out0,$in1,$twk0 ++ vxor $out1,$in2,$twk1 ++ vxor $out2,$in3,$twk2 ++ vxor $out3,$in4,$twk3 ++ vxor $out4,$in5,$twk4 ++ ++ bl _aesp8_xts_dec5x ++ ++ le?vperm $out0,$out0,$out0,$leperm ++ vmr $twk0,$twk5 # unused tweak ++ vxor $twk1,$tweak,$rndkey0 ++ le?vperm $out1,$out1,$out1,$leperm ++ stvx_u $out0,$x00,$out # store output ++ vxor $out0,$in0,$twk1 ++ le?vperm $out2,$out2,$out2,$leperm ++ stvx_u $out1,$x10,$out ++ le?vperm $out3,$out3,$out3,$leperm ++ stvx_u $out2,$x20,$out ++ le?vperm $out4,$out4,$out4,$leperm ++ stvx_u $out3,$x30,$out ++ stvx_u $out4,$x40,$out ++ addi $out,$out,0x50 ++ bne Lxts_dec6x_steal ++ b Lxts_dec6x_done ++ ++.align 4 ++Lxts_dec6x_four: ++ vxor $out0,$in2,$twk0 ++ vxor $out1,$in3,$twk1 ++ vxor $out2,$in4,$twk2 ++ vxor $out3,$in5,$twk3 ++ vxor $out4,$out4,$out4 ++ ++ bl _aesp8_xts_dec5x ++ ++ le?vperm $out0,$out0,$out0,$leperm ++ vmr $twk0,$twk4 # unused tweak ++ vmr $twk1,$twk5 ++ le?vperm $out1,$out1,$out1,$leperm ++ stvx_u $out0,$x00,$out # store output ++ vxor $out0,$in0,$twk5 ++ le?vperm $out2,$out2,$out2,$leperm ++ stvx_u $out1,$x10,$out ++ le?vperm $out3,$out3,$out3,$leperm ++ stvx_u $out2,$x20,$out ++ stvx_u $out3,$x30,$out ++ addi $out,$out,0x40 ++ bne Lxts_dec6x_steal ++ b Lxts_dec6x_done ++ ++.align 4 ++Lxts_dec6x_three: ++ vxor $out0,$in3,$twk0 ++ vxor $out1,$in4,$twk1 ++ vxor $out2,$in5,$twk2 ++ vxor $out3,$out3,$out3 ++ vxor $out4,$out4,$out4 ++ ++ bl _aesp8_xts_dec5x ++ ++ le?vperm $out0,$out0,$out0,$leperm ++ vmr $twk0,$twk3 # unused tweak ++ vmr $twk1,$twk4 ++ le?vperm $out1,$out1,$out1,$leperm ++ stvx_u $out0,$x00,$out # store output ++ vxor $out0,$in0,$twk4 ++ le?vperm $out2,$out2,$out2,$leperm ++ stvx_u $out1,$x10,$out ++ stvx_u $out2,$x20,$out ++ addi $out,$out,0x30 ++ bne Lxts_dec6x_steal ++ b Lxts_dec6x_done ++ ++.align 4 ++Lxts_dec6x_two: ++ vxor $out0,$in4,$twk0 ++ vxor $out1,$in5,$twk1 ++ vxor $out2,$out2,$out2 ++ vxor $out3,$out3,$out3 ++ vxor $out4,$out4,$out4 ++ ++ bl _aesp8_xts_dec5x ++ ++ le?vperm $out0,$out0,$out0,$leperm ++ vmr $twk0,$twk2 # unused tweak ++ vmr $twk1,$twk3 ++ le?vperm $out1,$out1,$out1,$leperm ++ stvx_u $out0,$x00,$out # store output ++ vxor $out0,$in0,$twk3 ++ stvx_u $out1,$x10,$out ++ addi $out,$out,0x20 ++ bne Lxts_dec6x_steal ++ b Lxts_dec6x_done ++ ++.align 4 ++Lxts_dec6x_one: ++ vxor $out0,$in5,$twk0 ++ nop ++Loop_xts_dec1x: ++ vncipher $out0,$out0,v24 ++ lvx v24,$x20,$key_ # round[3] ++ addi $key_,$key_,0x20 ++ ++ vncipher $out0,$out0,v25 ++ lvx v25,$x10,$key_ # round[4] ++ bdnz Loop_xts_dec1x ++ ++ subi r0,$taillen,1 ++ vncipher $out0,$out0,v24 ++ ++ andi. r0,r0,16 ++ cmpwi $taillen,0 ++ vncipher $out0,$out0,v25 ++ ++ sub $inp,$inp,r0 ++ vncipher $out0,$out0,v26 ++ ++ lvx_u $in0,0,$inp ++ vncipher $out0,$out0,v27 ++ ++ addi $key_,$sp,`$FRAME+15` # rewind $key_ ++ vncipher $out0,$out0,v28 ++ lvx v24,$x00,$key_ # re-pre-load round[1] ++ ++ vncipher $out0,$out0,v29 ++ lvx v25,$x10,$key_ # re-pre-load round[2] ++ vxor $twk0,$twk0,v31 ++ ++ le?vperm $in0,$in0,$in0,$leperm ++ vncipher $out0,$out0,v30 ++ ++ mtctr $rounds ++ vncipherlast $out0,$out0,$twk0 ++ ++ vmr $twk0,$twk1 # unused tweak ++ vmr $twk1,$twk2 ++ le?vperm $out0,$out0,$out0,$leperm ++ stvx_u $out0,$x00,$out # store output ++ addi $out,$out,0x10 ++ vxor $out0,$in0,$twk2 ++ bne Lxts_dec6x_steal ++ b Lxts_dec6x_done ++ ++.align 4 ++Lxts_dec6x_zero: ++ cmpwi $taillen,0 ++ beq Lxts_dec6x_done ++ ++ lvx_u $in0,0,$inp ++ le?vperm $in0,$in0,$in0,$leperm ++ vxor $out0,$in0,$twk1 ++Lxts_dec6x_steal: ++ vncipher $out0,$out0,v24 ++ lvx v24,$x20,$key_ # round[3] ++ addi $key_,$key_,0x20 ++ ++ vncipher $out0,$out0,v25 ++ lvx v25,$x10,$key_ # round[4] ++ bdnz Lxts_dec6x_steal ++ ++ add $inp,$inp,$taillen ++ vncipher $out0,$out0,v24 ++ ++ cmpwi $taillen,0 ++ vncipher $out0,$out0,v25 ++ ++ lvx_u $in0,0,$inp ++ vncipher $out0,$out0,v26 ++ ++ lvsr $inpperm,0,$taillen # $in5 is no more ++ vncipher $out0,$out0,v27 ++ ++ addi $key_,$sp,`$FRAME+15` # rewind $key_ ++ vncipher $out0,$out0,v28 ++ lvx v24,$x00,$key_ # re-pre-load round[1] ++ ++ vncipher $out0,$out0,v29 ++ lvx v25,$x10,$key_ # re-pre-load round[2] ++ vxor $twk1,$twk1,v31 ++ ++ le?vperm $in0,$in0,$in0,$leperm ++ vncipher $out0,$out0,v30 ++ ++ vperm $in0,$in0,$in0,$inpperm ++ vncipherlast $tmp,$out0,$twk1 ++ ++ le?vperm $out0,$tmp,$tmp,$leperm ++ le?stvx_u $out0,0,$out ++ be?stvx_u $tmp,0,$out ++ ++ vxor $out0,$out0,$out0 ++ vspltisb $out1,-1 ++ vperm $out0,$out0,$out1,$inpperm ++ vsel $out0,$in0,$tmp,$out0 ++ vxor $out0,$out0,$twk0 ++ ++ subi r30,$out,1 ++ mtctr $taillen ++Loop_xts_dec6x_steal: ++ lbzu r0,1(r30) ++ stb r0,16(r30) ++ bdnz Loop_xts_dec6x_steal ++ ++ li $taillen,0 ++ mtctr $rounds ++ b Loop_xts_dec1x # one more time... ++ ++.align 4 ++Lxts_dec6x_done: ++ ${UCMP}i $ivp,0 ++ beq Lxts_dec6x_ret ++ ++ vxor $tweak,$twk0,$rndkey0 ++ le?vperm $tweak,$tweak,$tweak,$leperm ++ stvx_u $tweak,0,$ivp ++ ++Lxts_dec6x_ret: ++ mtlr r11 ++ li r10,`$FRAME+15` ++ li r11,`$FRAME+31` ++ stvx $seven,r10,$sp # wipe copies of round keys ++ addi r10,r10,32 ++ stvx $seven,r11,$sp ++ addi r11,r11,32 ++ stvx $seven,r10,$sp ++ addi r10,r10,32 ++ stvx $seven,r11,$sp ++ addi r11,r11,32 ++ stvx $seven,r10,$sp ++ addi r10,r10,32 ++ stvx $seven,r11,$sp ++ addi r11,r11,32 ++ stvx $seven,r10,$sp ++ addi r10,r10,32 ++ stvx $seven,r11,$sp ++ addi r11,r11,32 ++ ++ mtspr 256,$vrsave ++ lvx v20,r10,$sp # ABI says so ++ addi r10,r10,32 ++ lvx v21,r11,$sp ++ addi r11,r11,32 ++ lvx v22,r10,$sp ++ addi r10,r10,32 ++ lvx v23,r11,$sp ++ addi r11,r11,32 ++ lvx v24,r10,$sp ++ addi r10,r10,32 ++ lvx v25,r11,$sp ++ addi r11,r11,32 ++ lvx v26,r10,$sp ++ addi r10,r10,32 ++ lvx v27,r11,$sp ++ addi r11,r11,32 ++ lvx v28,r10,$sp ++ addi r10,r10,32 ++ lvx v29,r11,$sp ++ addi r11,r11,32 ++ lvx v30,r10,$sp ++ lvx v31,r11,$sp ++ $POP r26,`$FRAME+21*16+0*$SIZE_T`($sp) ++ $POP r27,`$FRAME+21*16+1*$SIZE_T`($sp) ++ $POP r28,`$FRAME+21*16+2*$SIZE_T`($sp) ++ $POP r29,`$FRAME+21*16+3*$SIZE_T`($sp) ++ $POP r30,`$FRAME+21*16+4*$SIZE_T`($sp) ++ $POP r31,`$FRAME+21*16+5*$SIZE_T`($sp) ++ addi $sp,$sp,`$FRAME+21*16+6*$SIZE_T` ++ blr ++ .long 0 ++ .byte 0,12,0x04,1,0x80,6,6,0 ++ .long 0 ++ ++.align 5 ++_aesp8_xts_dec5x: ++ vncipher $out0,$out0,v24 ++ vncipher $out1,$out1,v24 ++ vncipher $out2,$out2,v24 ++ vncipher $out3,$out3,v24 ++ vncipher $out4,$out4,v24 ++ lvx v24,$x20,$key_ # round[3] ++ addi $key_,$key_,0x20 ++ ++ vncipher $out0,$out0,v25 ++ vncipher $out1,$out1,v25 ++ vncipher $out2,$out2,v25 ++ vncipher $out3,$out3,v25 ++ vncipher $out4,$out4,v25 ++ lvx v25,$x10,$key_ # round[4] ++ bdnz _aesp8_xts_dec5x ++ ++ subi r0,$taillen,1 ++ vncipher $out0,$out0,v24 ++ vncipher $out1,$out1,v24 ++ vncipher $out2,$out2,v24 ++ vncipher $out3,$out3,v24 ++ vncipher $out4,$out4,v24 ++ ++ andi. r0,r0,16 ++ cmpwi $taillen,0 ++ vncipher $out0,$out0,v25 ++ vncipher $out1,$out1,v25 ++ vncipher $out2,$out2,v25 ++ vncipher $out3,$out3,v25 ++ vncipher $out4,$out4,v25 ++ vxor $twk0,$twk0,v31 ++ ++ sub $inp,$inp,r0 ++ vncipher $out0,$out0,v26 ++ vncipher $out1,$out1,v26 ++ vncipher $out2,$out2,v26 ++ vncipher $out3,$out3,v26 ++ vncipher $out4,$out4,v26 ++ vxor $in1,$twk1,v31 ++ ++ vncipher $out0,$out0,v27 ++ lvx_u $in0,0,$inp ++ vncipher $out1,$out1,v27 ++ vncipher $out2,$out2,v27 ++ vncipher $out3,$out3,v27 ++ vncipher $out4,$out4,v27 ++ vxor $in2,$twk2,v31 ++ ++ addi $key_,$sp,`$FRAME+15` # rewind $key_ ++ vncipher $out0,$out0,v28 ++ vncipher $out1,$out1,v28 ++ vncipher $out2,$out2,v28 ++ vncipher $out3,$out3,v28 ++ vncipher $out4,$out4,v28 ++ lvx v24,$x00,$key_ # re-pre-load round[1] ++ vxor $in3,$twk3,v31 ++ ++ vncipher $out0,$out0,v29 ++ le?vperm $in0,$in0,$in0,$leperm ++ vncipher $out1,$out1,v29 ++ vncipher $out2,$out2,v29 ++ vncipher $out3,$out3,v29 ++ vncipher $out4,$out4,v29 ++ lvx v25,$x10,$key_ # re-pre-load round[2] ++ vxor $in4,$twk4,v31 ++ ++ vncipher $out0,$out0,v30 ++ vncipher $out1,$out1,v30 ++ vncipher $out2,$out2,v30 ++ vncipher $out3,$out3,v30 ++ vncipher $out4,$out4,v30 ++ ++ vncipherlast $out0,$out0,$twk0 ++ vncipherlast $out1,$out1,$in1 ++ vncipherlast $out2,$out2,$in2 ++ vncipherlast $out3,$out3,$in3 ++ vncipherlast $out4,$out4,$in4 ++ mtctr $rounds ++ blr ++ .long 0 ++ .byte 0,12,0x14,0,0,0,0,0 ++___ ++}} }}} ++ ++my $consts=1; ++foreach(split("\n",$code)) { ++ s/\`([^\`]*)\`/eval($1)/geo; ++ ++ # constants table endian-specific conversion ++ if ($consts && m/\.(long|byte)\s+(.+)\s+(\?[a-z]*)$/o) { ++ my $conv=$3; ++ my @bytes=(); ++ ++ # convert to endian-agnostic format ++ if ($1 eq "long") { ++ foreach (split(/,\s*/,$2)) { ++ my $l = /^0/?oct:int; ++ push @bytes,($l>>24)&0xff,($l>>16)&0xff,($l>>8)&0xff,$l&0xff; ++ } ++ } else { ++ @bytes = map(/^0/?oct:int,split(/,\s*/,$2)); ++ } ++ ++ # little-endian conversion ++ if ($flavour =~ /le$/o) { ++ SWITCH: for($conv) { ++ /\?inv/ && do { @bytes=map($_^0xf,@bytes); last; }; ++ /\?rev/ && do { @bytes=reverse(@bytes); last; }; ++ } ++ } ++ ++ #emit ++ print ".byte\t",join(',',map (sprintf("0x%02x",$_),@bytes)),"\n"; ++ next; ++ } ++ $consts=0 if (m/Lconsts:/o); # end of table ++ ++ # instructions prefixed with '?' are endian-specific and need ++ # to be adjusted accordingly... ++ if ($flavour =~ /le$/o) { # little-endian ++ s/le\?//o or ++ s/be\?/#be#/o or ++ s/\?lvsr/lvsl/o or ++ s/\?lvsl/lvsr/o or ++ s/\?(vperm\s+v[0-9]+,\s*)(v[0-9]+,\s*)(v[0-9]+,\s*)(v[0-9]+)/$1$3$2$4/o or ++ s/\?(vsldoi\s+v[0-9]+,\s*)(v[0-9]+,)\s*(v[0-9]+,\s*)([0-9]+)/$1$3$2 16-$4/o or ++ s/\?(vspltw\s+v[0-9]+,\s*)(v[0-9]+,)\s*([0-9])/$1$2 3-$3/o; ++ } else { # big-endian ++ s/le\?/#le#/o or ++ s/be\?//o or ++ s/\?([a-z]+)/$1/o; ++ } ++ ++ print $_,"\n"; ++} ++ ++close STDOUT or die "error closing STDOUT: $!"; +Index: chromium-122.0.6261.128/third_party/boringssl/src/crypto/fipsmodule/aes/internal.h +=================================================================== +--- chromium-122.0.6261.128.orig/third_party/boringssl/src/crypto/fipsmodule/aes/internal.h ++++ chromium-122.0.6261.128/third_party/boringssl/src/crypto/fipsmodule/aes/internal.h +@@ -59,6 +59,12 @@ OPENSSL_INLINE int vpaes_capable(void) { + OPENSSL_INLINE int vpaes_capable(void) { return CRYPTO_is_NEON_capable(); } + #endif + ++#elif defined(OPENSSL_PPC64LE) ++#define HWAES ++ ++OPENSSL_INLINE int hwaes_capable(void) { ++ return CRYPTO_is_PPC64LE_vcrypto_capable(); ++} + #endif + + #endif // !NO_ASM +Index: chromium-122.0.6261.128/third_party/boringssl/src/crypto/fipsmodule/bcm.c +=================================================================== +--- chromium-122.0.6261.128.orig/third_party/boringssl/src/crypto/fipsmodule/bcm.c ++++ chromium-122.0.6261.128/third_party/boringssl/src/crypto/fipsmodule/bcm.c +@@ -102,6 +102,7 @@ + #include "self_check/fips.c" + #include "self_check/self_check.c" + #include "service_indicator/service_indicator.c" ++#include "sha/sha1-altivec.c" + #include "sha/sha1.c" + #include "sha/sha256.c" + #include "sha/sha512.c" +Index: chromium-122.0.6261.128/third_party/boringssl/src/crypto/fipsmodule/bn/bn.c +=================================================================== +--- chromium-122.0.6261.128.orig/third_party/boringssl/src/crypto/fipsmodule/bn/bn.c ++++ chromium-122.0.6261.128/third_party/boringssl/src/crypto/fipsmodule/bn/bn.c +@@ -384,6 +384,23 @@ int bn_expand(BIGNUM *bn, size_t bits) { + } + + int bn_resize_words(BIGNUM *bn, size_t words) { ++#if defined(OPENSSL_PPC64LE) ++ // This is a workaround for a miscompilation bug in Clang 7.0.1 on POWER. ++ // The unittests catch the miscompilation, if it occurs, and it manifests ++ // as a crash in |bn_fits_in_words|. ++ // ++ // The bug only triggers if building in FIPS mode and with -O3. Clang 8.0.1 ++ // has the same bug but this workaround is not effective there---I've not ++ // been able to find a workaround for 8.0.1. ++ // ++ // At the time of writing (2019-08-08), Clang git does *not* have this bug ++ // and does not need this workaroud. The current git version should go on to ++ // be Clang 10 thus, once we can depend on that, this can be removed. ++ if (value_barrier_w((size_t)bn->width == words)) { ++ return 1; ++ } ++#endif ++ + if ((size_t)bn->width <= words) { + if (!bn_wexpand(bn, words)) { + return 0; +Index: chromium-122.0.6261.128/third_party/boringssl/src/crypto/fipsmodule/cipher/e_aes.c +=================================================================== +--- chromium-122.0.6261.128.orig/third_party/boringssl/src/crypto/fipsmodule/cipher/e_aes.c ++++ chromium-122.0.6261.128/third_party/boringssl/src/crypto/fipsmodule/cipher/e_aes.c +@@ -1455,6 +1455,8 @@ int EVP_has_aes_hardware(void) { + return hwaes_capable() && crypto_gcm_clmul_enabled(); + #elif defined(OPENSSL_ARM) || defined(OPENSSL_AARCH64) + return hwaes_capable() && CRYPTO_is_ARMv8_PMULL_capable(); ++#elif defined(OPENSSL_PPC64LE) ++ return CRYPTO_is_PPC64LE_vcrypto_capable(); + #else + return 0; + #endif +Index: chromium-122.0.6261.128/third_party/boringssl/src/crypto/fipsmodule/modes/asm/ghashp8-ppc.pl +=================================================================== +--- /dev/null ++++ chromium-122.0.6261.128/third_party/boringssl/src/crypto/fipsmodule/modes/asm/ghashp8-ppc.pl +@@ -0,0 +1,671 @@ ++#! /usr/bin/env perl ++# Copyright 2014-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 ++ ++# ++# ==================================================================== ++# Written by Andy Polyakov for the OpenSSL ++# project. The module is, however, dual licensed under OpenSSL and ++# CRYPTOGAMS licenses depending on where you obtain it. For further ++# details see http://www.openssl.org/~appro/cryptogams/. ++# ==================================================================== ++# ++# GHASH for for PowerISA v2.07. ++# ++# July 2014 ++# ++# Accurate performance measurements are problematic, because it's ++# always virtualized setup with possibly throttled processor. ++# Relative comparison is therefore more informative. This initial ++# version is ~2.1x slower than hardware-assisted AES-128-CTR, ~12x ++# faster than "4-bit" integer-only compiler-generated 64-bit code. ++# "Initial version" means that there is room for futher improvement. ++ ++# May 2016 ++# ++# 2x aggregated reduction improves performance by 50% (resulting ++# performance on POWER8 is 1 cycle per processed byte), and 4x ++# aggregated reduction - by 170% or 2.7x (resulting in 0.55 cpb). ++ ++$flavour=shift; ++$output =shift; ++ ++if ($flavour =~ /64/) { ++ $SIZE_T=8; ++ $LRSAVE=2*$SIZE_T; ++ $STU="stdu"; ++ $POP="ld"; ++ $PUSH="std"; ++ $UCMP="cmpld"; ++ $SHRI="srdi"; ++} elsif ($flavour =~ /32/) { ++ $SIZE_T=4; ++ $LRSAVE=$SIZE_T; ++ $STU="stwu"; ++ $POP="lwz"; ++ $PUSH="stw"; ++ $UCMP="cmplw"; ++ $SHRI="srwi"; ++} else { die "nonsense $flavour"; } ++ ++$sp="r1"; ++$FRAME=6*$SIZE_T+13*16; # 13*16 is for v20-v31 offload ++ ++$0 =~ m/(.*[\/\\])[^\/\\]+$/; $dir=$1; ++( $xlate="${dir}ppc-xlate.pl" and -f $xlate ) or ++( $xlate="${dir}../../../perlasm/ppc-xlate.pl" and -f $xlate) or ++die "can't locate ppc-xlate.pl"; ++ ++open OUT,"| $^X \"$xlate\" $flavour \"$output\"" || die "can't call $xlate: $!"; ++*STDOUT=*OUT; ++ ++my ($Xip,$Htbl,$inp,$len)=map("r$_",(3..6)); # argument block ++ ++my ($Xl,$Xm,$Xh,$IN)=map("v$_",(0..3)); ++my ($zero,$t0,$t1,$t2,$xC2,$H,$Hh,$Hl,$lemask)=map("v$_",(4..12)); ++my ($Xl1,$Xm1,$Xh1,$IN1,$H2,$H2h,$H2l)=map("v$_",(13..19)); ++my $vrsave="r12"; ++ ++$code=<<___; ++.machine "any" ++ ++.text ++ ++.globl .gcm_init_p8 ++.align 5 ++.gcm_init_p8: ++ li r0,-4096 ++ li r8,0x10 ++ mfspr $vrsave,256 ++ li r9,0x20 ++ mtspr 256,r0 ++ li r10,0x30 ++ lvx_u $H,0,r4 # load H ++ ++ vspltisb $xC2,-16 # 0xf0 ++ vspltisb $t0,1 # one ++ vaddubm $xC2,$xC2,$xC2 # 0xe0 ++ vxor $zero,$zero,$zero ++ vor $xC2,$xC2,$t0 # 0xe1 ++ vsldoi $xC2,$xC2,$zero,15 # 0xe1... ++ vsldoi $t1,$zero,$t0,1 # ...1 ++ vaddubm $xC2,$xC2,$xC2 # 0xc2... ++ vspltisb $t2,7 ++ vor $xC2,$xC2,$t1 # 0xc2....01 ++ vspltb $t1,$H,0 # most significant byte ++ vsl $H,$H,$t0 # H<<=1 ++ vsrab $t1,$t1,$t2 # broadcast carry bit ++ vand $t1,$t1,$xC2 ++ vxor $IN,$H,$t1 # twisted H ++ ++ vsldoi $H,$IN,$IN,8 # twist even more ... ++ vsldoi $xC2,$zero,$xC2,8 # 0xc2.0 ++ vsldoi $Hl,$zero,$H,8 # ... and split ++ vsldoi $Hh,$H,$zero,8 ++ ++ stvx_u $xC2,0,r3 # save pre-computed table ++ stvx_u $Hl,r8,r3 ++ li r8,0x40 ++ stvx_u $H, r9,r3 ++ li r9,0x50 ++ stvx_u $Hh,r10,r3 ++ li r10,0x60 ++ ++ vpmsumd $Xl,$IN,$Hl # H.lo·H.lo ++ vpmsumd $Xm,$IN,$H # H.hi·H.lo+H.lo·H.hi ++ vpmsumd $Xh,$IN,$Hh # H.hi·H.hi ++ ++ vpmsumd $t2,$Xl,$xC2 # 1st reduction phase ++ ++ vsldoi $t0,$Xm,$zero,8 ++ vsldoi $t1,$zero,$Xm,8 ++ vxor $Xl,$Xl,$t0 ++ vxor $Xh,$Xh,$t1 ++ ++ vsldoi $Xl,$Xl,$Xl,8 ++ vxor $Xl,$Xl,$t2 ++ ++ vsldoi $t1,$Xl,$Xl,8 # 2nd reduction phase ++ vpmsumd $Xl,$Xl,$xC2 ++ vxor $t1,$t1,$Xh ++ vxor $IN1,$Xl,$t1 ++ ++ vsldoi $H2,$IN1,$IN1,8 ++ vsldoi $H2l,$zero,$H2,8 ++ vsldoi $H2h,$H2,$zero,8 ++ ++ stvx_u $H2l,r8,r3 # save H^2 ++ li r8,0x70 ++ stvx_u $H2,r9,r3 ++ li r9,0x80 ++ stvx_u $H2h,r10,r3 ++ li r10,0x90 ++___ ++{ ++my ($t4,$t5,$t6) = ($Hl,$H,$Hh); ++$code.=<<___; ++ vpmsumd $Xl,$IN,$H2l # H.lo·H^2.lo ++ vpmsumd $Xl1,$IN1,$H2l # H^2.lo·H^2.lo ++ vpmsumd $Xm,$IN,$H2 # H.hi·H^2.lo+H.lo·H^2.hi ++ vpmsumd $Xm1,$IN1,$H2 # H^2.hi·H^2.lo+H^2.lo·H^2.hi ++ vpmsumd $Xh,$IN,$H2h # H.hi·H^2.hi ++ vpmsumd $Xh1,$IN1,$H2h # H^2.hi·H^2.hi ++ ++ vpmsumd $t2,$Xl,$xC2 # 1st reduction phase ++ vpmsumd $t6,$Xl1,$xC2 # 1st reduction phase ++ ++ vsldoi $t0,$Xm,$zero,8 ++ vsldoi $t1,$zero,$Xm,8 ++ vsldoi $t4,$Xm1,$zero,8 ++ vsldoi $t5,$zero,$Xm1,8 ++ vxor $Xl,$Xl,$t0 ++ vxor $Xh,$Xh,$t1 ++ vxor $Xl1,$Xl1,$t4 ++ vxor $Xh1,$Xh1,$t5 ++ ++ vsldoi $Xl,$Xl,$Xl,8 ++ vsldoi $Xl1,$Xl1,$Xl1,8 ++ vxor $Xl,$Xl,$t2 ++ vxor $Xl1,$Xl1,$t6 ++ ++ vsldoi $t1,$Xl,$Xl,8 # 2nd reduction phase ++ vsldoi $t5,$Xl1,$Xl1,8 # 2nd reduction phase ++ vpmsumd $Xl,$Xl,$xC2 ++ vpmsumd $Xl1,$Xl1,$xC2 ++ vxor $t1,$t1,$Xh ++ vxor $t5,$t5,$Xh1 ++ vxor $Xl,$Xl,$t1 ++ vxor $Xl1,$Xl1,$t5 ++ ++ vsldoi $H,$Xl,$Xl,8 ++ vsldoi $H2,$Xl1,$Xl1,8 ++ vsldoi $Hl,$zero,$H,8 ++ vsldoi $Hh,$H,$zero,8 ++ vsldoi $H2l,$zero,$H2,8 ++ vsldoi $H2h,$H2,$zero,8 ++ ++ stvx_u $Hl,r8,r3 # save H^3 ++ li r8,0xa0 ++ stvx_u $H,r9,r3 ++ li r9,0xb0 ++ stvx_u $Hh,r10,r3 ++ li r10,0xc0 ++ stvx_u $H2l,r8,r3 # save H^4 ++ stvx_u $H2,r9,r3 ++ stvx_u $H2h,r10,r3 ++ ++ mtspr 256,$vrsave ++ blr ++ .long 0 ++ .byte 0,12,0x14,0,0,0,2,0 ++ .long 0 ++.size .gcm_init_p8,.-.gcm_init_p8 ++___ ++} ++$code.=<<___; ++.globl .gcm_gmult_p8 ++.align 5 ++.gcm_gmult_p8: ++ lis r0,0xfff8 ++ li r8,0x10 ++ mfspr $vrsave,256 ++ li r9,0x20 ++ mtspr 256,r0 ++ li r10,0x30 ++ lvx_u $IN,0,$Xip # load Xi ++ ++ lvx_u $Hl,r8,$Htbl # load pre-computed table ++ le?lvsl $lemask,r0,r0 ++ lvx_u $H, r9,$Htbl ++ le?vspltisb $t0,0x07 ++ lvx_u $Hh,r10,$Htbl ++ le?vxor $lemask,$lemask,$t0 ++ lvx_u $xC2,0,$Htbl ++ le?vperm $IN,$IN,$IN,$lemask ++ vxor $zero,$zero,$zero ++ ++ vpmsumd $Xl,$IN,$Hl # H.lo·Xi.lo ++ vpmsumd $Xm,$IN,$H # H.hi·Xi.lo+H.lo·Xi.hi ++ vpmsumd $Xh,$IN,$Hh # H.hi·Xi.hi ++ ++ vpmsumd $t2,$Xl,$xC2 # 1st reduction phase ++ ++ vsldoi $t0,$Xm,$zero,8 ++ vsldoi $t1,$zero,$Xm,8 ++ vxor $Xl,$Xl,$t0 ++ vxor $Xh,$Xh,$t1 ++ ++ vsldoi $Xl,$Xl,$Xl,8 ++ vxor $Xl,$Xl,$t2 ++ ++ vsldoi $t1,$Xl,$Xl,8 # 2nd reduction phase ++ vpmsumd $Xl,$Xl,$xC2 ++ vxor $t1,$t1,$Xh ++ vxor $Xl,$Xl,$t1 ++ ++ le?vperm $Xl,$Xl,$Xl,$lemask ++ stvx_u $Xl,0,$Xip # write out Xi ++ ++ mtspr 256,$vrsave ++ blr ++ .long 0 ++ .byte 0,12,0x14,0,0,0,2,0 ++ .long 0 ++.size .gcm_gmult_p8,.-.gcm_gmult_p8 ++ ++.globl .gcm_ghash_p8 ++.align 5 ++.gcm_ghash_p8: ++ li r0,-4096 ++ li r8,0x10 ++ mfspr $vrsave,256 ++ li r9,0x20 ++ mtspr 256,r0 ++ li r10,0x30 ++ lvx_u $Xl,0,$Xip # load Xi ++ ++ lvx_u $Hl,r8,$Htbl # load pre-computed table ++ li r8,0x40 ++ le?lvsl $lemask,r0,r0 ++ lvx_u $H, r9,$Htbl ++ li r9,0x50 ++ le?vspltisb $t0,0x07 ++ lvx_u $Hh,r10,$Htbl ++ li r10,0x60 ++ le?vxor $lemask,$lemask,$t0 ++ lvx_u $xC2,0,$Htbl ++ le?vperm $Xl,$Xl,$Xl,$lemask ++ vxor $zero,$zero,$zero ++ ++ ${UCMP}i $len,64 ++ bge Lgcm_ghash_p8_4x ++ ++ lvx_u $IN,0,$inp ++ addi $inp,$inp,16 ++ subic. $len,$len,16 ++ le?vperm $IN,$IN,$IN,$lemask ++ vxor $IN,$IN,$Xl ++ beq Lshort ++ ++ lvx_u $H2l,r8,$Htbl # load H^2 ++ li r8,16 ++ lvx_u $H2, r9,$Htbl ++ add r9,$inp,$len # end of input ++ lvx_u $H2h,r10,$Htbl ++ be?b Loop_2x ++ ++.align 5 ++Loop_2x: ++ lvx_u $IN1,0,$inp ++ le?vperm $IN1,$IN1,$IN1,$lemask ++ ++ subic $len,$len,32 ++ vpmsumd $Xl,$IN,$H2l # H^2.lo·Xi.lo ++ vpmsumd $Xl1,$IN1,$Hl # H.lo·Xi+1.lo ++ subfe r0,r0,r0 # borrow?-1:0 ++ vpmsumd $Xm,$IN,$H2 # H^2.hi·Xi.lo+H^2.lo·Xi.hi ++ vpmsumd $Xm1,$IN1,$H # H.hi·Xi+1.lo+H.lo·Xi+1.hi ++ and r0,r0,$len ++ vpmsumd $Xh,$IN,$H2h # H^2.hi·Xi.hi ++ vpmsumd $Xh1,$IN1,$Hh # H.hi·Xi+1.hi ++ add $inp,$inp,r0 ++ ++ vxor $Xl,$Xl,$Xl1 ++ vxor $Xm,$Xm,$Xm1 ++ ++ vpmsumd $t2,$Xl,$xC2 # 1st reduction phase ++ ++ vsldoi $t0,$Xm,$zero,8 ++ vsldoi $t1,$zero,$Xm,8 ++ vxor $Xh,$Xh,$Xh1 ++ vxor $Xl,$Xl,$t0 ++ vxor $Xh,$Xh,$t1 ++ ++ vsldoi $Xl,$Xl,$Xl,8 ++ vxor $Xl,$Xl,$t2 ++ lvx_u $IN,r8,$inp ++ addi $inp,$inp,32 ++ ++ vsldoi $t1,$Xl,$Xl,8 # 2nd reduction phase ++ vpmsumd $Xl,$Xl,$xC2 ++ le?vperm $IN,$IN,$IN,$lemask ++ vxor $t1,$t1,$Xh ++ vxor $IN,$IN,$t1 ++ vxor $IN,$IN,$Xl ++ $UCMP r9,$inp ++ bgt Loop_2x # done yet? ++ ++ cmplwi $len,0 ++ bne Leven ++ ++Lshort: ++ vpmsumd $Xl,$IN,$Hl # H.lo·Xi.lo ++ vpmsumd $Xm,$IN,$H # H.hi·Xi.lo+H.lo·Xi.hi ++ vpmsumd $Xh,$IN,$Hh # H.hi·Xi.hi ++ ++ vpmsumd $t2,$Xl,$xC2 # 1st reduction phase ++ ++ vsldoi $t0,$Xm,$zero,8 ++ vsldoi $t1,$zero,$Xm,8 ++ vxor $Xl,$Xl,$t0 ++ vxor $Xh,$Xh,$t1 ++ ++ vsldoi $Xl,$Xl,$Xl,8 ++ vxor $Xl,$Xl,$t2 ++ ++ vsldoi $t1,$Xl,$Xl,8 # 2nd reduction phase ++ vpmsumd $Xl,$Xl,$xC2 ++ vxor $t1,$t1,$Xh ++ ++Leven: ++ vxor $Xl,$Xl,$t1 ++ le?vperm $Xl,$Xl,$Xl,$lemask ++ stvx_u $Xl,0,$Xip # write out Xi ++ ++ mtspr 256,$vrsave ++ blr ++ .long 0 ++ .byte 0,12,0x14,0,0,0,4,0 ++ .long 0 ++___ ++{ ++my ($Xl3,$Xm2,$IN2,$H3l,$H3,$H3h, ++ $Xh3,$Xm3,$IN3,$H4l,$H4,$H4h) = map("v$_",(20..31)); ++my $IN0=$IN; ++my ($H21l,$H21h,$loperm,$hiperm) = ($Hl,$Hh,$H2l,$H2h); ++ ++$code.=<<___; ++.align 5 ++.gcm_ghash_p8_4x: ++Lgcm_ghash_p8_4x: ++ $STU $sp,-$FRAME($sp) ++ li r10,`15+6*$SIZE_T` ++ li r11,`31+6*$SIZE_T` ++ stvx v20,r10,$sp ++ addi r10,r10,32 ++ stvx v21,r11,$sp ++ addi r11,r11,32 ++ stvx v22,r10,$sp ++ addi r10,r10,32 ++ stvx v23,r11,$sp ++ addi r11,r11,32 ++ stvx v24,r10,$sp ++ addi r10,r10,32 ++ stvx v25,r11,$sp ++ addi r11,r11,32 ++ stvx v26,r10,$sp ++ addi r10,r10,32 ++ stvx v27,r11,$sp ++ addi r11,r11,32 ++ stvx v28,r10,$sp ++ addi r10,r10,32 ++ stvx v29,r11,$sp ++ addi r11,r11,32 ++ stvx v30,r10,$sp ++ li r10,0x60 ++ stvx v31,r11,$sp ++ li r0,-1 ++ stw $vrsave,`$FRAME-4`($sp) # save vrsave ++ mtspr 256,r0 # preserve all AltiVec registers ++ ++ lvsl $t0,0,r8 # 0x0001..0e0f ++ #lvx_u $H2l,r8,$Htbl # load H^2 ++ li r8,0x70 ++ lvx_u $H2, r9,$Htbl ++ li r9,0x80 ++ vspltisb $t1,8 # 0x0808..0808 ++ #lvx_u $H2h,r10,$Htbl ++ li r10,0x90 ++ lvx_u $H3l,r8,$Htbl # load H^3 ++ li r8,0xa0 ++ lvx_u $H3, r9,$Htbl ++ li r9,0xb0 ++ lvx_u $H3h,r10,$Htbl ++ li r10,0xc0 ++ lvx_u $H4l,r8,$Htbl # load H^4 ++ li r8,0x10 ++ lvx_u $H4, r9,$Htbl ++ li r9,0x20 ++ lvx_u $H4h,r10,$Htbl ++ li r10,0x30 ++ ++ vsldoi $t2,$zero,$t1,8 # 0x0000..0808 ++ vaddubm $hiperm,$t0,$t2 # 0x0001..1617 ++ vaddubm $loperm,$t1,$hiperm # 0x0809..1e1f ++ ++ $SHRI $len,$len,4 # this allows to use sign bit ++ # as carry ++ lvx_u $IN0,0,$inp # load input ++ lvx_u $IN1,r8,$inp ++ subic. $len,$len,8 ++ lvx_u $IN2,r9,$inp ++ lvx_u $IN3,r10,$inp ++ addi $inp,$inp,0x40 ++ le?vperm $IN0,$IN0,$IN0,$lemask ++ le?vperm $IN1,$IN1,$IN1,$lemask ++ le?vperm $IN2,$IN2,$IN2,$lemask ++ le?vperm $IN3,$IN3,$IN3,$lemask ++ ++ vxor $Xh,$IN0,$Xl ++ ++ vpmsumd $Xl1,$IN1,$H3l ++ vpmsumd $Xm1,$IN1,$H3 ++ vpmsumd $Xh1,$IN1,$H3h ++ ++ vperm $H21l,$H2,$H,$hiperm ++ vperm $t0,$IN2,$IN3,$loperm ++ vperm $H21h,$H2,$H,$loperm ++ vperm $t1,$IN2,$IN3,$hiperm ++ vpmsumd $Xm2,$IN2,$H2 # H^2.lo·Xi+2.hi+H^2.hi·Xi+2.lo ++ vpmsumd $Xl3,$t0,$H21l # H^2.lo·Xi+2.lo+H.lo·Xi+3.lo ++ vpmsumd $Xm3,$IN3,$H # H.hi·Xi+3.lo +H.lo·Xi+3.hi ++ vpmsumd $Xh3,$t1,$H21h # H^2.hi·Xi+2.hi+H.hi·Xi+3.hi ++ ++ vxor $Xm2,$Xm2,$Xm1 ++ vxor $Xl3,$Xl3,$Xl1 ++ vxor $Xm3,$Xm3,$Xm2 ++ vxor $Xh3,$Xh3,$Xh1 ++ ++ blt Ltail_4x ++ ++Loop_4x: ++ lvx_u $IN0,0,$inp ++ lvx_u $IN1,r8,$inp ++ subic. $len,$len,4 ++ lvx_u $IN2,r9,$inp ++ lvx_u $IN3,r10,$inp ++ addi $inp,$inp,0x40 ++ le?vperm $IN1,$IN1,$IN1,$lemask ++ le?vperm $IN2,$IN2,$IN2,$lemask ++ le?vperm $IN3,$IN3,$IN3,$lemask ++ le?vperm $IN0,$IN0,$IN0,$lemask ++ ++ vpmsumd $Xl,$Xh,$H4l # H^4.lo·Xi.lo ++ vpmsumd $Xm,$Xh,$H4 # H^4.hi·Xi.lo+H^4.lo·Xi.hi ++ vpmsumd $Xh,$Xh,$H4h # H^4.hi·Xi.hi ++ vpmsumd $Xl1,$IN1,$H3l ++ vpmsumd $Xm1,$IN1,$H3 ++ vpmsumd $Xh1,$IN1,$H3h ++ ++ vxor $Xl,$Xl,$Xl3 ++ vxor $Xm,$Xm,$Xm3 ++ vxor $Xh,$Xh,$Xh3 ++ vperm $t0,$IN2,$IN3,$loperm ++ vperm $t1,$IN2,$IN3,$hiperm ++ ++ vpmsumd $t2,$Xl,$xC2 # 1st reduction phase ++ vpmsumd $Xl3,$t0,$H21l # H.lo·Xi+3.lo +H^2.lo·Xi+2.lo ++ vpmsumd $Xh3,$t1,$H21h # H.hi·Xi+3.hi +H^2.hi·Xi+2.hi ++ ++ vsldoi $t0,$Xm,$zero,8 ++ vsldoi $t1,$zero,$Xm,8 ++ vxor $Xl,$Xl,$t0 ++ vxor $Xh,$Xh,$t1 ++ ++ vsldoi $Xl,$Xl,$Xl,8 ++ vxor $Xl,$Xl,$t2 ++ ++ vsldoi $t1,$Xl,$Xl,8 # 2nd reduction phase ++ vpmsumd $Xm2,$IN2,$H2 # H^2.hi·Xi+2.lo+H^2.lo·Xi+2.hi ++ vpmsumd $Xm3,$IN3,$H # H.hi·Xi+3.lo +H.lo·Xi+3.hi ++ vpmsumd $Xl,$Xl,$xC2 ++ ++ vxor $Xl3,$Xl3,$Xl1 ++ vxor $Xh3,$Xh3,$Xh1 ++ vxor $Xh,$Xh,$IN0 ++ vxor $Xm2,$Xm2,$Xm1 ++ vxor $Xh,$Xh,$t1 ++ vxor $Xm3,$Xm3,$Xm2 ++ vxor $Xh,$Xh,$Xl ++ bge Loop_4x ++ ++Ltail_4x: ++ vpmsumd $Xl,$Xh,$H4l # H^4.lo·Xi.lo ++ vpmsumd $Xm,$Xh,$H4 # H^4.hi·Xi.lo+H^4.lo·Xi.hi ++ vpmsumd $Xh,$Xh,$H4h # H^4.hi·Xi.hi ++ ++ vxor $Xl,$Xl,$Xl3 ++ vxor $Xm,$Xm,$Xm3 ++ ++ vpmsumd $t2,$Xl,$xC2 # 1st reduction phase ++ ++ vsldoi $t0,$Xm,$zero,8 ++ vsldoi $t1,$zero,$Xm,8 ++ vxor $Xh,$Xh,$Xh3 ++ vxor $Xl,$Xl,$t0 ++ vxor $Xh,$Xh,$t1 ++ ++ vsldoi $Xl,$Xl,$Xl,8 ++ vxor $Xl,$Xl,$t2 ++ ++ vsldoi $t1,$Xl,$Xl,8 # 2nd reduction phase ++ vpmsumd $Xl,$Xl,$xC2 ++ vxor $t1,$t1,$Xh ++ vxor $Xl,$Xl,$t1 ++ ++ addic. $len,$len,4 ++ beq Ldone_4x ++ ++ lvx_u $IN0,0,$inp ++ ${UCMP}i $len,2 ++ li $len,-4 ++ blt Lone ++ lvx_u $IN1,r8,$inp ++ beq Ltwo ++ ++Lthree: ++ lvx_u $IN2,r9,$inp ++ le?vperm $IN0,$IN0,$IN0,$lemask ++ le?vperm $IN1,$IN1,$IN1,$lemask ++ le?vperm $IN2,$IN2,$IN2,$lemask ++ ++ vxor $Xh,$IN0,$Xl ++ vmr $H4l,$H3l ++ vmr $H4, $H3 ++ vmr $H4h,$H3h ++ ++ vperm $t0,$IN1,$IN2,$loperm ++ vperm $t1,$IN1,$IN2,$hiperm ++ vpmsumd $Xm2,$IN1,$H2 # H^2.lo·Xi+1.hi+H^2.hi·Xi+1.lo ++ vpmsumd $Xm3,$IN2,$H # H.hi·Xi+2.lo +H.lo·Xi+2.hi ++ vpmsumd $Xl3,$t0,$H21l # H^2.lo·Xi+1.lo+H.lo·Xi+2.lo ++ vpmsumd $Xh3,$t1,$H21h # H^2.hi·Xi+1.hi+H.hi·Xi+2.hi ++ ++ vxor $Xm3,$Xm3,$Xm2 ++ b Ltail_4x ++ ++.align 4 ++Ltwo: ++ le?vperm $IN0,$IN0,$IN0,$lemask ++ le?vperm $IN1,$IN1,$IN1,$lemask ++ ++ vxor $Xh,$IN0,$Xl ++ vperm $t0,$zero,$IN1,$loperm ++ vperm $t1,$zero,$IN1,$hiperm ++ ++ vsldoi $H4l,$zero,$H2,8 ++ vmr $H4, $H2 ++ vsldoi $H4h,$H2,$zero,8 ++ ++ vpmsumd $Xl3,$t0, $H21l # H.lo·Xi+1.lo ++ vpmsumd $Xm3,$IN1,$H # H.hi·Xi+1.lo+H.lo·Xi+2.hi ++ vpmsumd $Xh3,$t1, $H21h # H.hi·Xi+1.hi ++ ++ b Ltail_4x ++ ++.align 4 ++Lone: ++ le?vperm $IN0,$IN0,$IN0,$lemask ++ ++ vsldoi $H4l,$zero,$H,8 ++ vmr $H4, $H ++ vsldoi $H4h,$H,$zero,8 ++ ++ vxor $Xh,$IN0,$Xl ++ vxor $Xl3,$Xl3,$Xl3 ++ vxor $Xm3,$Xm3,$Xm3 ++ vxor $Xh3,$Xh3,$Xh3 ++ ++ b Ltail_4x ++ ++Ldone_4x: ++ le?vperm $Xl,$Xl,$Xl,$lemask ++ stvx_u $Xl,0,$Xip # write out Xi ++ ++ li r10,`15+6*$SIZE_T` ++ li r11,`31+6*$SIZE_T` ++ mtspr 256,$vrsave ++ lvx v20,r10,$sp ++ addi r10,r10,32 ++ lvx v21,r11,$sp ++ addi r11,r11,32 ++ lvx v22,r10,$sp ++ addi r10,r10,32 ++ lvx v23,r11,$sp ++ addi r11,r11,32 ++ lvx v24,r10,$sp ++ addi r10,r10,32 ++ lvx v25,r11,$sp ++ addi r11,r11,32 ++ lvx v26,r10,$sp ++ addi r10,r10,32 ++ lvx v27,r11,$sp ++ addi r11,r11,32 ++ lvx v28,r10,$sp ++ addi r10,r10,32 ++ lvx v29,r11,$sp ++ addi r11,r11,32 ++ lvx v30,r10,$sp ++ lvx v31,r11,$sp ++ addi $sp,$sp,$FRAME ++ blr ++ .long 0 ++ .byte 0,12,0x04,0,0x80,0,4,0 ++ .long 0 ++___ ++} ++$code.=<<___; ++.size .gcm_ghash_p8,.-.gcm_ghash_p8 ++ ++.asciz "GHASH for PowerISA 2.07, CRYPTOGAMS by " ++.align 2 ++___ ++ ++foreach (split("\n",$code)) { ++ s/\`([^\`]*)\`/eval $1/geo; ++ ++ if ($flavour =~ /le$/o) { # little-endian ++ s/le\?//o or ++ s/be\?/#be#/o; ++ } else { ++ s/le\?/#le#/o or ++ s/be\?//o; ++ } ++ print $_,"\n"; ++} ++ ++close STDOUT or die "error closing STDOUT: $!"; # enforce flush +Index: chromium-122.0.6261.128/third_party/boringssl/src/crypto/fipsmodule/modes/gcm.c +=================================================================== +--- chromium-122.0.6261.128.orig/third_party/boringssl/src/crypto/fipsmodule/modes/gcm.c ++++ chromium-122.0.6261.128/third_party/boringssl/src/crypto/fipsmodule/modes/gcm.c +@@ -228,6 +228,13 @@ void CRYPTO_ghash_init(gmult_func *out_m + *out_hash = gcm_ghash_neon; + return; + } ++#elif defined(GHASH_ASM_PPC64LE) ++ if (CRYPTO_is_PPC64LE_vcrypto_capable()) { ++ gcm_init_p8(out_table, H); ++ *out_mult = gcm_gmult_p8; ++ *out_hash = gcm_ghash_p8; ++ return; ++ } + #endif + + gcm_init_nohw(out_table, H); +Index: chromium-122.0.6261.128/third_party/boringssl/src/crypto/fipsmodule/modes/gcm_test.cc +=================================================================== +--- chromium-122.0.6261.128.orig/third_party/boringssl/src/crypto/fipsmodule/modes/gcm_test.cc ++++ chromium-122.0.6261.128/third_party/boringssl/src/crypto/fipsmodule/modes/gcm_test.cc +@@ -215,5 +215,15 @@ TEST(GCMTest, ABI) { + } + } + #endif ++ ++#if defined(GHASH_ASM_PPC64LE) ++ if (CRYPTO_is_PPC64LE_vcrypto_capable()) { ++ CHECK_ABI(gcm_init_p8, Htable, kH); ++ CHECK_ABI(gcm_gmult_p8, X, Htable); ++ for (size_t blocks : kBlockCounts) { ++ CHECK_ABI(gcm_ghash_p8, X, Htable, buf, 16 * blocks); ++ } ++ } ++#endif // GHASH_ASM_PPC64LE + } + #endif // SUPPORTS_ABI_TEST && !OPENSSL_NO_ASM +Index: chromium-122.0.6261.128/third_party/boringssl/src/crypto/fipsmodule/modes/internal.h +=================================================================== +--- chromium-122.0.6261.128.orig/third_party/boringssl/src/crypto/fipsmodule/modes/internal.h ++++ chromium-122.0.6261.128/third_party/boringssl/src/crypto/fipsmodule/modes/internal.h +@@ -325,6 +325,13 @@ void aes_gcm_dec_kernel(const uint8_t *i + const u128 Htable[16]); + #endif + ++#elif defined(OPENSSL_PPC64LE) ++#define GHASH_ASM_PPC64LE ++#define GCM_FUNCREF ++void gcm_init_p8(u128 Htable[16], const uint64_t Xi[2]); ++void gcm_gmult_p8(uint8_t Xi[16], const u128 Htable[16]); ++void gcm_ghash_p8(uint8_t Xi[16], const u128 Htable[16], const uint8_t *inp, ++ size_t len); + #endif + #endif // OPENSSL_NO_ASM + +Index: chromium-122.0.6261.128/third_party/boringssl/src/crypto/fipsmodule/rand/getrandom_fillin.h +=================================================================== +--- chromium-122.0.6261.128.orig/third_party/boringssl/src/crypto/fipsmodule/rand/getrandom_fillin.h ++++ chromium-122.0.6261.128/third_party/boringssl/src/crypto/fipsmodule/rand/getrandom_fillin.h +@@ -30,6 +30,8 @@ + #define EXPECTED_NR_getrandom 278 + #elif defined(OPENSSL_ARM) + #define EXPECTED_NR_getrandom 384 ++#elif defined(OPENSSL_PPC64LE) ++#define EXPECTED_NR_getrandom 359 + #elif defined(OPENSSL_RISCV64) + #define EXPECTED_NR_getrandom 278 + #endif +Index: chromium-122.0.6261.128/third_party/boringssl/src/crypto/fipsmodule/rand/rand.c +=================================================================== +--- chromium-122.0.6261.128.orig/third_party/boringssl/src/crypto/fipsmodule/rand/rand.c ++++ chromium-122.0.6261.128/third_party/boringssl/src/crypto/fipsmodule/rand/rand.c +@@ -431,6 +431,11 @@ void RAND_bytes_with_additional_data(uin + // Take a read lock around accesses to |state->drbg|. This is needed to + // avoid returning bad entropy if we race with + // |rand_thread_state_clear_all|. ++ // ++ // This lock must be taken after any calls to |CRYPTO_sysrand| to avoid a ++ // bug on ppc64le. glibc may implement pthread locks by wrapping user code ++ // in a hardware transaction, but, on some older versions of glibc and the ++ // kernel, syscalls made with |syscall| did not abort the transaction. + CRYPTO_MUTEX_lock_read(&state->clear_drbg_lock); + #endif + if (!CTR_DRBG_reseed(&state->drbg, seed, reseed_additional_data, +Index: chromium-122.0.6261.128/third_party/boringssl/src/crypto/fipsmodule/sha/internal.h +=================================================================== +--- chromium-122.0.6261.128.orig/third_party/boringssl/src/crypto/fipsmodule/sha/internal.h ++++ chromium-122.0.6261.128/third_party/boringssl/src/crypto/fipsmodule/sha/internal.h +@@ -23,17 +23,25 @@ + extern "C" { + #endif + ++#if defined(OPENSSL_PPC64LE) || \ ++ (!defined(OPENSSL_NO_ASM) && (defined(OPENSSL_X86) || defined(OPENSSL_ARM))) ++// POWER has an intrinsics-based implementation of SHA-1 and thus the functions ++// normally defined in assembly are available even with |OPENSSL_NO_ASM| in ++// this case. ++#define SHA1_ASM ++void sha1_block_data_order(uint32_t *state, const uint8_t *in, ++ size_t num_blocks); ++#endif ++ ++ + // Define SHA{n}[_{variant}]_ASM if sha{n}_block_data_order[_{variant}] is + // defined in assembly. + + #if !defined(OPENSSL_NO_ASM) && (defined(OPENSSL_X86) || defined(OPENSSL_ARM)) + +-#define SHA1_ASM + #define SHA256_ASM + #define SHA512_ASM + +-void sha1_block_data_order(uint32_t *state, const uint8_t *data, +- size_t num_blocks); + void sha256_block_data_order(uint32_t *state, const uint8_t *data, + size_t num_blocks); + void sha512_block_data_order(uint64_t *state, const uint8_t *data, +Index: chromium-122.0.6261.128/third_party/boringssl/src/crypto/fipsmodule/sha/sha1-altivec.c +=================================================================== +--- /dev/null ++++ chromium-122.0.6261.128/third_party/boringssl/src/crypto/fipsmodule/sha/sha1-altivec.c +@@ -0,0 +1,361 @@ ++/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) ++ * All rights reserved. ++ * ++ * This package is an SSL implementation written ++ * by Eric Young (eay@cryptsoft.com). ++ * The implementation was written so as to conform with Netscapes SSL. ++ * ++ * This library is free for commercial and non-commercial use as long as ++ * the following conditions are aheared to. The following conditions ++ * apply to all code found in this distribution, be it the RC4, RSA, ++ * lhash, DES, etc., code; not just the SSL code. The SSL documentation ++ * included with this distribution is covered by the same copyright terms ++ * except that the holder is Tim Hudson (tjh@cryptsoft.com). ++ * ++ * Copyright remains Eric Young's, and as such any Copyright notices in ++ * the code are not to be removed. ++ * If this package is used in a product, Eric Young should be given attribution ++ * as the author of the parts of the library used. ++ * This can be in the form of a textual message at program startup or ++ * in documentation (online or textual) provided with the package. ++ * ++ * Redistribution and use in source and binary forms, with or without ++ * modification, are permitted provided that the following conditions ++ * are met: ++ * 1. Redistributions of source code must retain the copyright ++ * notice, this list of conditions and the following disclaimer. ++ * 2. Redistributions in binary form must reproduce the above copyright ++ * notice, this list of conditions and the following disclaimer in the ++ * documentation and/or other materials provided with the distribution. ++ * 3. All advertising materials mentioning features or use of this software ++ * must display the following acknowledgement: ++ * "This product includes cryptographic software written by ++ * Eric Young (eay@cryptsoft.com)" ++ * The word 'cryptographic' can be left out if the rouines from the library ++ * being used are not cryptographic related :-). ++ * 4. If you include any Windows specific code (or a derivative thereof) from ++ * the apps directory (application code) you must include an acknowledgement: ++ * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" ++ * ++ * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND ++ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE ++ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ++ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE ++ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL ++ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS ++ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) ++ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT ++ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY ++ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF ++ * SUCH DAMAGE. ++ * ++ * The licence and distribution terms for any publically available version or ++ * derivative of this code cannot be changed. i.e. this code cannot simply be ++ * copied and put under another distribution licence ++ * [including the GNU Public Licence.] */ ++ ++// Altivec-optimized SHA1 in C. This is tested on ppc64le only. ++// ++// References: ++// https://software.intel.com/en-us/articles/improving-the-performance-of-the-secure-hash-algorithm-1 ++// http://arctic.org/~dean/crypto/sha1.html ++// ++// This code used the generic SHA-1 from OpenSSL as a basis and AltiVec ++// optimisations were added on top. ++ ++#include ++ ++#if defined(OPENSSL_PPC64LE) ++ ++#include ++ ++void sha1_block_data_order(uint32_t *state, const uint8_t *data, size_t num); ++ ++static uint32_t rotate(uint32_t a, int n) { return (a << n) | (a >> (32 - n)); } ++ ++typedef vector unsigned int vec_uint32_t; ++typedef vector unsigned char vec_uint8_t; ++ ++// Vector constants ++static const vec_uint8_t k_swap_endianness = {3, 2, 1, 0, 7, 6, 5, 4, ++ 11, 10, 9, 8, 15, 14, 13, 12}; ++ ++// Shift amounts for byte and bit shifts and rotations ++static const vec_uint8_t k_4_bytes = {32, 32, 32, 32, 32, 32, 32, 32, ++ 32, 32, 32, 32, 32, 32, 32, 32}; ++static const vec_uint8_t k_12_bytes = {96, 96, 96, 96, 96, 96, 96, 96, ++ 96, 96, 96, 96, 96, 96, 96, 96}; ++ ++#define K_00_19 0x5a827999UL ++#define K_20_39 0x6ed9eba1UL ++#define K_40_59 0x8f1bbcdcUL ++#define K_60_79 0xca62c1d6UL ++ ++// Vector versions of the above. ++static const vec_uint32_t K_00_19_x_4 = {K_00_19, K_00_19, K_00_19, K_00_19}; ++static const vec_uint32_t K_20_39_x_4 = {K_20_39, K_20_39, K_20_39, K_20_39}; ++static const vec_uint32_t K_40_59_x_4 = {K_40_59, K_40_59, K_40_59, K_40_59}; ++static const vec_uint32_t K_60_79_x_4 = {K_60_79, K_60_79, K_60_79, K_60_79}; ++ ++// vector message scheduling: compute message schedule for round i..i+3 where i ++// is divisible by 4. We return the schedule w[i..i+3] as a vector. In ++// addition, we also precompute sum w[i..+3] and an additive constant K. This ++// is done to offload some computation of f() in the integer execution units. ++// ++// Byte shifting code below may not be correct for big-endian systems. ++static vec_uint32_t sched_00_15(vec_uint32_t *pre_added, const void *data, ++ vec_uint32_t k) { ++ const vector unsigned char unaligned_data = ++ vec_vsx_ld(0, (const unsigned char*) data); ++ const vec_uint32_t v = (vec_uint32_t) unaligned_data; ++ const vec_uint32_t w = vec_perm(v, v, k_swap_endianness); ++ vec_st(w + k, 0, pre_added); ++ return w; ++} ++ ++// Compute w[i..i+3] using these steps for i in [16, 20, 24, 28] ++// ++// w'[i ] = (w[i-3] ^ w[i-8] ^ w[i-14] ^ w[i-16]) <<< 1 ++// w'[i+1] = (w[i-2] ^ w[i-7] ^ w[i-13] ^ w[i-15]) <<< 1 ++// w'[i+2] = (w[i-1] ^ w[i-6] ^ w[i-12] ^ w[i-14]) <<< 1 ++// w'[i+3] = ( 0 ^ w[i-5] ^ w[i-11] ^ w[i-13]) <<< 1 ++// ++// w[ i] = w'[ i] ++// w[i+1] = w'[i+1] ++// w[i+2] = w'[i+2] ++// w[i+3] = w'[i+3] ^ (w'[i] <<< 1) ++static vec_uint32_t sched_16_31(vec_uint32_t *pre_added, vec_uint32_t minus_4, ++ vec_uint32_t minus_8, vec_uint32_t minus_12, ++ vec_uint32_t minus_16, vec_uint32_t k) { ++ const vec_uint32_t minus_3 = vec_sro(minus_4, k_4_bytes); ++ const vec_uint32_t minus_14 = vec_sld((minus_12), (minus_16), 8); ++ const vec_uint32_t k_1_bit = vec_splat_u32(1); ++ const vec_uint32_t w_prime = ++ vec_rl(minus_3 ^ minus_8 ^ minus_14 ^ minus_16, k_1_bit); ++ const vec_uint32_t w = ++ w_prime ^ vec_rl(vec_slo(w_prime, k_12_bytes), k_1_bit); ++ vec_st(w + k, 0, pre_added); ++ return w; ++} ++ ++// Compute w[i..i+3] using this relation for i in [32, 36, 40 ... 76] ++// w[i] = (w[i-6] ^ w[i-16] ^ w[i-28] ^ w[i-32]), 2) <<< 2 ++static vec_uint32_t sched_32_79(vec_uint32_t *pre_added, vec_uint32_t minus_4, ++ vec_uint32_t minus_8, vec_uint32_t minus_16, ++ vec_uint32_t minus_28, vec_uint32_t minus_32, ++ vec_uint32_t k) { ++ const vec_uint32_t minus_6 = vec_sld(minus_4, minus_8, 8); ++ const vec_uint32_t k_2_bits = vec_splat_u32(2); ++ const vec_uint32_t w = ++ vec_rl(minus_6 ^ minus_16 ^ minus_28 ^ minus_32, k_2_bits); ++ vec_st(w + k, 0, pre_added); ++ return w; ++} ++ ++// As pointed out by Wei Dai , F() below can be simplified ++// to the code in F_00_19. Wei attributes these optimisations to Peter ++// Gutmann's SHS code, and he attributes it to Rich Schroeppel. #define ++// F(x,y,z) (((x) & (y)) | ((~(x)) & (z))) I've just become aware of another ++// tweak to be made, again from Wei Dai, in F_40_59, (x&a)|(y&a) -> (x|y)&a ++#define F_00_19(b, c, d) ((((c) ^ (d)) & (b)) ^ (d)) ++#define F_20_39(b, c, d) ((b) ^ (c) ^ (d)) ++#define F_40_59(b, c, d) (((b) & (c)) | (((b) | (c)) & (d))) ++#define F_60_79(b, c, d) F_20_39(b, c, d) ++ ++// We pre-added the K constants during message scheduling. ++#define BODY_00_19(i, a, b, c, d, e, f) \ ++ do { \ ++ (f) = w[i] + (e) + rotate((a), 5) + F_00_19((b), (c), (d)); \ ++ (b) = rotate((b), 30); \ ++ } while (0) ++ ++#define BODY_20_39(i, a, b, c, d, e, f) \ ++ do { \ ++ (f) = w[i] + (e) + rotate((a), 5) + F_20_39((b), (c), (d)); \ ++ (b) = rotate((b), 30); \ ++ } while (0) ++ ++#define BODY_40_59(i, a, b, c, d, e, f) \ ++ do { \ ++ (f) = w[i] + (e) + rotate((a), 5) + F_40_59((b), (c), (d)); \ ++ (b) = rotate((b), 30); \ ++ } while (0) ++ ++#define BODY_60_79(i, a, b, c, d, e, f) \ ++ do { \ ++ (f) = w[i] + (e) + rotate((a), 5) + F_60_79((b), (c), (d)); \ ++ (b) = rotate((b), 30); \ ++ } while (0) ++ ++void sha1_block_data_order(uint32_t *state, const uint8_t *data, size_t num) { ++ uint32_t A, B, C, D, E, T; ++ ++ A = state[0]; ++ B = state[1]; ++ C = state[2]; ++ D = state[3]; ++ E = state[4]; ++ ++ for (;;) { ++ vec_uint32_t vw[20]; ++ const uint32_t *w = (const uint32_t *)&vw; ++ ++ vec_uint32_t k = K_00_19_x_4; ++ const vec_uint32_t w0 = sched_00_15(vw + 0, data + 0, k); ++ BODY_00_19(0, A, B, C, D, E, T); ++ BODY_00_19(1, T, A, B, C, D, E); ++ BODY_00_19(2, E, T, A, B, C, D); ++ BODY_00_19(3, D, E, T, A, B, C); ++ ++ const vec_uint32_t w4 = sched_00_15(vw + 1, data + 16, k); ++ BODY_00_19(4, C, D, E, T, A, B); ++ BODY_00_19(5, B, C, D, E, T, A); ++ BODY_00_19(6, A, B, C, D, E, T); ++ BODY_00_19(7, T, A, B, C, D, E); ++ ++ const vec_uint32_t w8 = sched_00_15(vw + 2, data + 32, k); ++ BODY_00_19(8, E, T, A, B, C, D); ++ BODY_00_19(9, D, E, T, A, B, C); ++ BODY_00_19(10, C, D, E, T, A, B); ++ BODY_00_19(11, B, C, D, E, T, A); ++ ++ const vec_uint32_t w12 = sched_00_15(vw + 3, data + 48, k); ++ BODY_00_19(12, A, B, C, D, E, T); ++ BODY_00_19(13, T, A, B, C, D, E); ++ BODY_00_19(14, E, T, A, B, C, D); ++ BODY_00_19(15, D, E, T, A, B, C); ++ ++ const vec_uint32_t w16 = sched_16_31(vw + 4, w12, w8, w4, w0, k); ++ BODY_00_19(16, C, D, E, T, A, B); ++ BODY_00_19(17, B, C, D, E, T, A); ++ BODY_00_19(18, A, B, C, D, E, T); ++ BODY_00_19(19, T, A, B, C, D, E); ++ ++ k = K_20_39_x_4; ++ const vec_uint32_t w20 = sched_16_31(vw + 5, w16, w12, w8, w4, k); ++ BODY_20_39(20, E, T, A, B, C, D); ++ BODY_20_39(21, D, E, T, A, B, C); ++ BODY_20_39(22, C, D, E, T, A, B); ++ BODY_20_39(23, B, C, D, E, T, A); ++ ++ const vec_uint32_t w24 = sched_16_31(vw + 6, w20, w16, w12, w8, k); ++ BODY_20_39(24, A, B, C, D, E, T); ++ BODY_20_39(25, T, A, B, C, D, E); ++ BODY_20_39(26, E, T, A, B, C, D); ++ BODY_20_39(27, D, E, T, A, B, C); ++ ++ const vec_uint32_t w28 = sched_16_31(vw + 7, w24, w20, w16, w12, k); ++ BODY_20_39(28, C, D, E, T, A, B); ++ BODY_20_39(29, B, C, D, E, T, A); ++ BODY_20_39(30, A, B, C, D, E, T); ++ BODY_20_39(31, T, A, B, C, D, E); ++ ++ const vec_uint32_t w32 = sched_32_79(vw + 8, w28, w24, w16, w4, w0, k); ++ BODY_20_39(32, E, T, A, B, C, D); ++ BODY_20_39(33, D, E, T, A, B, C); ++ BODY_20_39(34, C, D, E, T, A, B); ++ BODY_20_39(35, B, C, D, E, T, A); ++ ++ const vec_uint32_t w36 = sched_32_79(vw + 9, w32, w28, w20, w8, w4, k); ++ BODY_20_39(36, A, B, C, D, E, T); ++ BODY_20_39(37, T, A, B, C, D, E); ++ BODY_20_39(38, E, T, A, B, C, D); ++ BODY_20_39(39, D, E, T, A, B, C); ++ ++ k = K_40_59_x_4; ++ const vec_uint32_t w40 = sched_32_79(vw + 10, w36, w32, w24, w12, w8, k); ++ BODY_40_59(40, C, D, E, T, A, B); ++ BODY_40_59(41, B, C, D, E, T, A); ++ BODY_40_59(42, A, B, C, D, E, T); ++ BODY_40_59(43, T, A, B, C, D, E); ++ ++ const vec_uint32_t w44 = sched_32_79(vw + 11, w40, w36, w28, w16, w12, k); ++ BODY_40_59(44, E, T, A, B, C, D); ++ BODY_40_59(45, D, E, T, A, B, C); ++ BODY_40_59(46, C, D, E, T, A, B); ++ BODY_40_59(47, B, C, D, E, T, A); ++ ++ const vec_uint32_t w48 = sched_32_79(vw + 12, w44, w40, w32, w20, w16, k); ++ BODY_40_59(48, A, B, C, D, E, T); ++ BODY_40_59(49, T, A, B, C, D, E); ++ BODY_40_59(50, E, T, A, B, C, D); ++ BODY_40_59(51, D, E, T, A, B, C); ++ ++ const vec_uint32_t w52 = sched_32_79(vw + 13, w48, w44, w36, w24, w20, k); ++ BODY_40_59(52, C, D, E, T, A, B); ++ BODY_40_59(53, B, C, D, E, T, A); ++ BODY_40_59(54, A, B, C, D, E, T); ++ BODY_40_59(55, T, A, B, C, D, E); ++ ++ const vec_uint32_t w56 = sched_32_79(vw + 14, w52, w48, w40, w28, w24, k); ++ BODY_40_59(56, E, T, A, B, C, D); ++ BODY_40_59(57, D, E, T, A, B, C); ++ BODY_40_59(58, C, D, E, T, A, B); ++ BODY_40_59(59, B, C, D, E, T, A); ++ ++ k = K_60_79_x_4; ++ const vec_uint32_t w60 = sched_32_79(vw + 15, w56, w52, w44, w32, w28, k); ++ BODY_60_79(60, A, B, C, D, E, T); ++ BODY_60_79(61, T, A, B, C, D, E); ++ BODY_60_79(62, E, T, A, B, C, D); ++ BODY_60_79(63, D, E, T, A, B, C); ++ ++ const vec_uint32_t w64 = sched_32_79(vw + 16, w60, w56, w48, w36, w32, k); ++ BODY_60_79(64, C, D, E, T, A, B); ++ BODY_60_79(65, B, C, D, E, T, A); ++ BODY_60_79(66, A, B, C, D, E, T); ++ BODY_60_79(67, T, A, B, C, D, E); ++ ++ const vec_uint32_t w68 = sched_32_79(vw + 17, w64, w60, w52, w40, w36, k); ++ BODY_60_79(68, E, T, A, B, C, D); ++ BODY_60_79(69, D, E, T, A, B, C); ++ BODY_60_79(70, C, D, E, T, A, B); ++ BODY_60_79(71, B, C, D, E, T, A); ++ ++ const vec_uint32_t w72 = sched_32_79(vw + 18, w68, w64, w56, w44, w40, k); ++ BODY_60_79(72, A, B, C, D, E, T); ++ BODY_60_79(73, T, A, B, C, D, E); ++ BODY_60_79(74, E, T, A, B, C, D); ++ BODY_60_79(75, D, E, T, A, B, C); ++ ++ // We don't use the last value ++ (void)sched_32_79(vw + 19, w72, w68, w60, w48, w44, k); ++ BODY_60_79(76, C, D, E, T, A, B); ++ BODY_60_79(77, B, C, D, E, T, A); ++ BODY_60_79(78, A, B, C, D, E, T); ++ BODY_60_79(79, T, A, B, C, D, E); ++ ++ const uint32_t mask = 0xffffffffUL; ++ state[0] = (state[0] + E) & mask; ++ state[1] = (state[1] + T) & mask; ++ state[2] = (state[2] + A) & mask; ++ state[3] = (state[3] + B) & mask; ++ state[4] = (state[4] + C) & mask; ++ ++ data += 64; ++ if (--num == 0) { ++ break; ++ } ++ ++ A = state[0]; ++ B = state[1]; ++ C = state[2]; ++ D = state[3]; ++ E = state[4]; ++ } ++} ++ ++#endif // OPENSSL_PPC64LE ++ ++#undef K_00_19 ++#undef K_20_39 ++#undef K_40_59 ++#undef K_60_79 ++#undef F_00_19 ++#undef F_20_39 ++#undef F_40_59 ++#undef F_60_79 ++#undef BODY_00_19 ++#undef BODY_20_39 ++#undef BODY_40_59 ++#undef BODY_60_79 +Index: chromium-122.0.6261.128/third_party/boringssl/src/crypto/internal.h +=================================================================== +--- chromium-122.0.6261.128.orig/third_party/boringssl/src/crypto/internal.h ++++ chromium-122.0.6261.128/third_party/boringssl/src/crypto/internal.h +@@ -181,7 +181,7 @@ extern "C" { + + + #if defined(OPENSSL_X86) || defined(OPENSSL_X86_64) || defined(OPENSSL_ARM) || \ +- defined(OPENSSL_AARCH64) ++ defined(OPENSSL_AARCH64) || defined(OPENSSL_PPC64LE) + // OPENSSL_cpuid_setup initializes the platform-specific feature cache. + void OPENSSL_cpuid_setup(void); + #endif +@@ -1606,6 +1606,16 @@ OPENSSL_INLINE int CRYPTO_is_ARMv8_SHA51 + + #endif // OPENSSL_ARM || OPENSSL_AARCH64 + ++#if defined(OPENSSL_PPC64LE) ++ ++// CRYPTO_is_PPC64LE_vcrypto_capable returns true iff the current CPU supports ++// the Vector.AES category of instructions. ++int CRYPTO_is_PPC64LE_vcrypto_capable(void); ++ ++extern unsigned long OPENSSL_ppc64le_hwcap2; ++ ++#endif // OPENSSL_PPC64LE ++ + #if defined(BORINGSSL_DISPATCH_TEST) + // Runtime CPU dispatch testing support + +Index: chromium-122.0.6261.128/third_party/boringssl/src/crypto/perlasm/ppc-xlate.pl +=================================================================== +--- /dev/null ++++ chromium-122.0.6261.128/third_party/boringssl/src/crypto/perlasm/ppc-xlate.pl +@@ -0,0 +1,320 @@ ++#! /usr/bin/env perl ++# Copyright 2006-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 ++ ++my $flavour = shift; ++my $output = shift; ++open STDOUT,">$output" || die "can't open $output: $!"; ++ ++my %GLOBALS; ++my %TYPES; ++my $dotinlocallabels=($flavour=~/linux/)?1:0; ++ ++################################################################ ++# directives which need special treatment on different platforms ++################################################################ ++my $type = sub { ++ my ($dir,$name,$type) = @_; ++ ++ $TYPES{$name} = $type; ++ if ($flavour =~ /linux/) { ++ $name =~ s|^\.||; ++ ".type $name,$type"; ++ } else { ++ ""; ++ } ++}; ++my $globl = sub { ++ my $junk = shift; ++ my $name = shift; ++ my $global = \$GLOBALS{$name}; ++ my $type = \$TYPES{$name}; ++ my $ret; ++ ++ $name =~ s|^\.||; ++ ++ SWITCH: for ($flavour) { ++ /aix/ && do { if (!$$type) { ++ $$type = "\@function"; ++ } ++ if ($$type =~ /function/) { ++ $name = ".$name"; ++ } ++ last; ++ }; ++ /osx/ && do { $name = "_$name"; ++ last; ++ }; ++ /linux.*(32|64le)/ ++ && do { $ret .= ".globl $name"; ++ if (!$$type) { ++ $ret .= "\n.type $name,\@function"; ++ $$type = "\@function"; ++ } ++ last; ++ }; ++ /linux.*64/ && do { $ret .= ".globl $name"; ++ if (!$$type) { ++ $ret .= "\n.type $name,\@function"; ++ $$type = "\@function"; ++ } ++ if ($$type =~ /function/) { ++ $ret .= "\n.section \".opd\",\"aw\""; ++ $ret .= "\n.align 3"; ++ $ret .= "\n$name:"; ++ $ret .= "\n.quad .$name,.TOC.\@tocbase,0"; ++ $ret .= "\n.previous"; ++ $name = ".$name"; ++ } ++ last; ++ }; ++ } ++ ++ $ret = ".globl $name" if (!$ret); ++ $$global = $name; ++ $ret; ++}; ++my $text = sub { ++ my $ret = ($flavour =~ /aix/) ? ".csect\t.text[PR],7" : ".text"; ++ $ret = ".abiversion 2\n".$ret if ($flavour =~ /linux.*64le/); ++ $ret; ++}; ++my $machine = sub { ++ my $junk = shift; ++ my $arch = shift; ++ if ($flavour =~ /osx/) ++ { $arch =~ s/\"//g; ++ $arch = ($flavour=~/64/) ? "ppc970-64" : "ppc970" if ($arch eq "any"); ++ } ++ ".machine $arch"; ++}; ++my $size = sub { ++ if ($flavour =~ /linux/) ++ { shift; ++ my $name = shift; ++ my $real = $GLOBALS{$name} ? \$GLOBALS{$name} : \$name; ++ my $ret = ".size $$real,.-$$real"; ++ $name =~ s|^\.||; ++ if ($$real ne $name) { ++ $ret .= "\n.size $name,.-$$real"; ++ } ++ $ret; ++ } ++ else ++ { ""; } ++}; ++my $asciz = sub { ++ shift; ++ my $line = join(",",@_); ++ if ($line =~ /^"(.*)"$/) ++ { ".byte " . join(",",unpack("C*",$1),0) . "\n.align 2"; } ++ else ++ { ""; } ++}; ++my $quad = sub { ++ shift; ++ my @ret; ++ my ($hi,$lo); ++ for (@_) { ++ if (/^0x([0-9a-f]*?)([0-9a-f]{1,8})$/io) ++ { $hi=$1?"0x$1":"0"; $lo="0x$2"; } ++ elsif (/^([0-9]+)$/o) ++ { $hi=$1>>32; $lo=$1&0xffffffff; } # error-prone with 32-bit perl ++ else ++ { $hi=undef; $lo=$_; } ++ ++ if (defined($hi)) ++ { push(@ret,$flavour=~/le$/o?".long\t$lo,$hi":".long\t$hi,$lo"); } ++ else ++ { push(@ret,".quad $lo"); } ++ } ++ join("\n",@ret); ++}; ++ ++################################################################ ++# simplified mnemonics not handled by at least one assembler ++################################################################ ++my $cmplw = sub { ++ my $f = shift; ++ my $cr = 0; $cr = shift if ($#_>1); ++ # Some out-of-date 32-bit GNU assembler just can't handle cmplw... ++ ($flavour =~ /linux.*32/) ? ++ " .long ".sprintf "0x%x",31<<26|$cr<<23|$_[0]<<16|$_[1]<<11|64 : ++ " cmplw ".join(',',$cr,@_); ++}; ++my $bdnz = sub { ++ my $f = shift; ++ my $bo = $f=~/[\+\-]/ ? 16+9 : 16; # optional "to be taken" hint ++ " bc $bo,0,".shift; ++} if ($flavour!~/linux/); ++my $bltlr = sub { ++ my $f = shift; ++ my $bo = $f=~/\-/ ? 12+2 : 12; # optional "not to be taken" hint ++ ($flavour =~ /linux/) ? # GNU as doesn't allow most recent hints ++ " .long ".sprintf "0x%x",19<<26|$bo<<21|16<<1 : ++ " bclr $bo,0"; ++}; ++my $bnelr = sub { ++ my $f = shift; ++ my $bo = $f=~/\-/ ? 4+2 : 4; # optional "not to be taken" hint ++ ($flavour =~ /linux/) ? # GNU as doesn't allow most recent hints ++ " .long ".sprintf "0x%x",19<<26|$bo<<21|2<<16|16<<1 : ++ " bclr $bo,2"; ++}; ++my $beqlr = sub { ++ my $f = shift; ++ my $bo = $f=~/-/ ? 12+2 : 12; # optional "not to be taken" hint ++ ($flavour =~ /linux/) ? # GNU as doesn't allow most recent hints ++ " .long ".sprintf "0x%X",19<<26|$bo<<21|2<<16|16<<1 : ++ " bclr $bo,2"; ++}; ++# GNU assembler can't handle extrdi rA,rS,16,48, or when sum of last two ++# arguments is 64, with "operand out of range" error. ++my $extrdi = sub { ++ my ($f,$ra,$rs,$n,$b) = @_; ++ $b = ($b+$n)&63; $n = 64-$n; ++ " rldicl $ra,$rs,$b,$n"; ++}; ++my $vmr = sub { ++ my ($f,$vx,$vy) = @_; ++ " vor $vx,$vy,$vy"; ++}; ++ ++# Some ABIs specify vrsave, special-purpose register #256, as reserved ++# for system use. ++my $no_vrsave = ($flavour =~ /aix|linux64le/); ++my $mtspr = sub { ++ my ($f,$idx,$ra) = @_; ++ if ($idx == 256 && $no_vrsave) { ++ " or $ra,$ra,$ra"; ++ } else { ++ " mtspr $idx,$ra"; ++ } ++}; ++my $mfspr = sub { ++ my ($f,$rd,$idx) = @_; ++ if ($idx == 256 && $no_vrsave) { ++ " li $rd,-1"; ++ } else { ++ " mfspr $rd,$idx"; ++ } ++}; ++ ++# PowerISA 2.06 stuff ++sub vsxmem_op { ++ my ($f, $vrt, $ra, $rb, $op) = @_; ++ " .long ".sprintf "0x%X",(31<<26)|($vrt<<21)|($ra<<16)|($rb<<11)|($op*2+1); ++} ++# made-up unaligned memory reference AltiVec/VMX instructions ++my $lvx_u = sub { vsxmem_op(@_, 844); }; # lxvd2x ++my $stvx_u = sub { vsxmem_op(@_, 972); }; # stxvd2x ++my $lvdx_u = sub { vsxmem_op(@_, 588); }; # lxsdx ++my $stvdx_u = sub { vsxmem_op(@_, 716); }; # stxsdx ++my $lvx_4w = sub { vsxmem_op(@_, 780); }; # lxvw4x ++my $stvx_4w = sub { vsxmem_op(@_, 908); }; # stxvw4x ++ ++# PowerISA 2.07 stuff ++sub vcrypto_op { ++ my ($f, $vrt, $vra, $vrb, $op) = @_; ++ " .long ".sprintf "0x%X",(4<<26)|($vrt<<21)|($vra<<16)|($vrb<<11)|$op; ++} ++my $vcipher = sub { vcrypto_op(@_, 1288); }; ++my $vcipherlast = sub { vcrypto_op(@_, 1289); }; ++my $vncipher = sub { vcrypto_op(@_, 1352); }; ++my $vncipherlast= sub { vcrypto_op(@_, 1353); }; ++my $vsbox = sub { vcrypto_op(@_, 0, 1480); }; ++my $vshasigmad = sub { my ($st,$six)=splice(@_,-2); vcrypto_op(@_, $st<<4|$six, 1730); }; ++my $vshasigmaw = sub { my ($st,$six)=splice(@_,-2); vcrypto_op(@_, $st<<4|$six, 1666); }; ++my $vpmsumb = sub { vcrypto_op(@_, 1032); }; ++my $vpmsumd = sub { vcrypto_op(@_, 1224); }; ++my $vpmsubh = sub { vcrypto_op(@_, 1096); }; ++my $vpmsumw = sub { vcrypto_op(@_, 1160); }; ++my $vaddudm = sub { vcrypto_op(@_, 192); }; ++ ++my $mtsle = sub { ++ my ($f, $arg) = @_; ++ " .long ".sprintf "0x%X",(31<<26)|($arg<<21)|(147*2); ++}; ++ ++# PowerISA 3.0 stuff ++my $maddhdu = sub { ++ my ($f, $rt, $ra, $rb, $rc) = @_; ++ " .long ".sprintf "0x%X",(4<<26)|($rt<<21)|($ra<<16)|($rb<<11)|($rc<<6)|49; ++}; ++my $maddld = sub { ++ my ($f, $rt, $ra, $rb, $rc) = @_; ++ " .long ".sprintf "0x%X",(4<<26)|($rt<<21)|($ra<<16)|($rb<<11)|($rc<<6)|51; ++}; ++ ++my $darn = sub { ++ my ($f, $rt, $l) = @_; ++ " .long ".sprintf "0x%X",(31<<26)|($rt<<21)|($l<<16)|(755<<1); ++}; ++ ++print <<___; ++// This file is generated from a similarly-named Perl script in the BoringSSL ++// source tree. Do not edit by hand. ++ ++#if defined(__has_feature) ++#if __has_feature(memory_sanitizer) && !defined(OPENSSL_NO_ASM) ++#define OPENSSL_NO_ASM ++#endif ++#endif ++ ++#if !defined(OPENSSL_NO_ASM) && defined(__powerpc64__) && defined(__ELF__) ++___ ++ ++while($line=<>) { ++ ++ $line =~ s|[#!;].*$||; # get rid of asm-style comments... ++ $line =~ s|/\*.*\*/||; # ... and C-style comments... ++ $line =~ s|^\s+||; # ... and skip white spaces in beginning... ++ $line =~ s|\s+$||; # ... and at the end ++ ++ { ++ $line =~ s|\.L(\w+)|L$1|g; # common denominator for Locallabel ++ $line =~ s|\bL(\w+)|\.L$1|g if ($dotinlocallabels); ++ } ++ ++ { ++ $line =~ s|(^[\.\w]+)\:\s*||; ++ my $label = $1; ++ if ($label) { ++ my $xlated = ($GLOBALS{$label} or $label); ++ print "$xlated:"; ++ if ($flavour =~ /linux.*64le/) { ++ if ($TYPES{$label} =~ /function/) { ++ printf "\n.localentry %s,0\n",$xlated; ++ } ++ } ++ } ++ } ++ ++ { ++ $line =~ s|^\s*(\.?)(\w+)([\.\+\-]?)\s*||; ++ my $c = $1; $c = "\t" if ($c eq ""); ++ my $mnemonic = $2; ++ my $f = $3; ++ my $opcode = eval("\$$mnemonic"); ++ $line =~ s/\b(c?[rf]|v|vs)([0-9]+)\b/$2/g if ($c ne "." and $flavour !~ /osx/); ++ if (ref($opcode) eq 'CODE') { $line = &$opcode($f,split(',',$line)); } ++ elsif ($mnemonic) { $line = $c.$mnemonic.$f."\t".$line; } ++ } ++ ++ print $line if ($line); ++ print "\n"; ++} ++ ++print <<___; ++#endif // !OPENSSL_NO_ASM && __powerpc64__ && __ELF__ ++#if defined(__ELF__) ++// See https://www.airs.com/blog/archives/518. ++.section .note.GNU-stack,"",\%progbits ++#endif ++___ ++ ++close STDOUT or die "error closing STDOUT: $!"; +Index: chromium-122.0.6261.128/third_party/boringssl/src/crypto/test/asm/trampoline-ppc.pl +=================================================================== +--- /dev/null ++++ chromium-122.0.6261.128/third_party/boringssl/src/crypto/test/asm/trampoline-ppc.pl +@@ -0,0 +1,262 @@ ++#!/usr/bin/env perl ++# Copyright (c) 2019, Google Inc. ++# ++# Permission to use, copy, modify, and/or distribute this software for any ++# purpose with or without fee is hereby granted, provided that the above ++# copyright notice and this permission notice appear in all copies. ++# ++# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES ++# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF ++# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY ++# SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES ++# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION ++# OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN ++# CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ++ ++# This file defines helper functions for crypto/test/abi_test.h on ppc64le. See ++# that header for details on how to use this. ++# ++# For convenience, this file is linked into libcrypto, where consuming builds ++# already support architecture-specific sources. The static linker should drop ++# this code in non-test binaries. This includes a shared library build of ++# libcrypto, provided --gc-sections or equivalent is used. ++# ++# References: ++# ++# ELFv2: http://openpowerfoundation.org/wp-content/uploads/resources/leabi/leabi-20170510.pdf ++ ++use strict; ++ ++my $flavour = shift; ++my $output = shift; ++if ($flavour =~ /\./) { $output = $flavour; undef $flavour; } ++ ++$0 =~ m/(.*[\/\\])[^\/\\]+$/; ++my $dir = $1; ++my $xlate; ++( $xlate="${dir}ppc-xlate.pl" and -f $xlate ) or ++( $xlate="${dir}../../perlasm/ppc-xlate.pl" and -f $xlate) or ++die "can't locate ppc-xlate.pl"; ++ ++open OUT, "| \"$^X\" \"$xlate\" $flavour \"$output\""; ++*STDOUT = *OUT; ++ ++unless ($flavour =~ /linux.*64le/) { ++ die "This file only supports the ELFv2 ABI, used by ppc64le"; ++} ++ ++my $code = ""; ++ ++sub load_or_store_regs { ++ # $op is "l" or "st". ++ my ($op, $base_reg, $base_offset) = @_; ++ # Vector registers. ++ foreach (20..31) { ++ my $offset = $base_offset + ($_ - 20) * 16; ++ # Vector registers only support indexed register addressing. ++ $code .= "\tli\tr11, $offset\n"; ++ $code .= "\t${op}vx\tv$_, r11, $base_reg\n"; ++ } ++ # Save general registers. ++ foreach (14..31) { ++ my $offset = $base_offset + 192 + ($_ - 14) * 8; ++ $code .= "\t${op}d\tr$_, $offset($base_reg)\n"; ++ } ++ # Save floating point registers. ++ foreach (14..31) { ++ my $offset = $base_offset + 336 + ($_ - 14) * 8; ++ $code .= "\t${op}fd\tf$_, $offset($base_reg)\n"; ++ } ++} ++ ++sub load_regs { ++ my ($base_reg, $base_offset) = @_; ++ load_or_store_regs("l", $base_reg, $base_offset); ++} ++ ++sub store_regs { ++ my ($base_reg, $base_offset) = @_; ++ load_or_store_regs("st", $base_reg, $base_offset); ++} ++ ++my ($func, $state, $argv, $argc) = ("r3", "r4", "r5", "r6"); ++$code .= <<____; ++.machine "any" ++.text ++ ++# abi_test_trampoline loads callee-saved registers from |state|, calls |func| ++# with |argv|, then saves the callee-saved registers into |state|. It returns ++# the result of |func|. The |unwind| argument is unused. ++# uint64_t abi_test_trampoline(void (*func)(...), CallerState *state, ++# const uint64_t *argv, size_t argc, ++# uint64_t unwind); ++.globl abi_test_trampoline ++.align 5 ++abi_test_trampoline: ++ # LR is saved into the caller's stack frame. ++ mflr r0 ++ std r0, 16(r1) ++ ++ # Allocate 66*8 = 528 bytes of stack frame. From the top of the stack ++ # to the bottom, the stack frame is: ++ # ++ # 0(r1) - Back chain pointer ++ # 8(r1) - CR save area ++ # 16(r1) - LR save area (for |func|) ++ # 24(r1) - TOC pointer save area ++ # 32(r1) - Saved copy of |state| ++ # 40(r1) - Padding ++ # 48(r1) - Vector register save area (v20-v31, 12 registers) ++ # 240(r1) - General register save area (r14-r31, 18 registers) ++ # 384(r1) - Floating point register save area (f14-f31, 18 registers) ++ # ++ # Note the layouts of the register save areas and CallerState match. ++ # ++ # In the ELFv2 ABI, the parameter save area is optional if the function ++ # is non-variadic and all parameters fit in registers. We only support ++ # such functions, so we omit it to test that |func| does not rely on it. ++ stdu r1, -528(r1) ++ ++ mfcr r0 ++ std r0, 8(r1) # Save CR ++ std r2, 24(r1) # Save TOC ++ std $state, 32(r1) # Save |state| ++____ ++# Save registers to the stack. ++store_regs("r1", 48); ++# Load registers from the caller. ++load_regs($state, 0); ++$code .= <<____; ++ # Load CR from |state|. ++ ld r0, 480($state) ++ mtcr r0 ++ ++ # Move parameters into temporary registers so they are not clobbered. ++ addi r11, $argv, -8 # Adjust for ldu below ++ mr r12, $func ++ ++ # Load parameters into registers. ++ cmpdi $argc, 0 ++ beq .Largs_done ++ mtctr $argc ++ ldu r3, 8(r11) ++ bdz .Largs_done ++ ldu r4, 8(r11) ++ bdz .Largs_done ++ ldu r5, 8(r11) ++ bdz .Largs_done ++ ldu r6, 8(r11) ++ bdz .Largs_done ++ ldu r7, 8(r11) ++ bdz .Largs_done ++ ldu r8, 8(r11) ++ bdz .Largs_done ++ ldu r9, 8(r11) ++ bdz .Largs_done ++ ldu r10, 8(r11) ++ ++.Largs_done: ++ li r2, 0 # Clear TOC to test |func|'s global entry point ++ mtctr r12 ++ bctrl ++ ld r2, 24(r1) # Restore TOC ++ ++ ld $state, 32(r1) # Reload |state| ++____ ++# Output resulting registers to the caller. ++store_regs($state, 0); ++# Restore registers from the stack. ++load_regs("r1", 48); ++$code .= <<____; ++ mfcr r0 ++ std r0, 480($state) # Output CR to caller ++ ld r0, 8(r1) ++ mtcrf 0b00111000, r0 # Restore CR2-CR4 ++ addi r1, r1, 528 ++ ld r0, 16(r1) # Restore LR ++ mtlr r0 ++ blr ++.size abi_test_trampoline,.-abi_test_trampoline ++____ ++ ++# abi_test_clobber_* clobbers the corresponding register. These are used to test ++# the ABI-testing framework. ++foreach (0..31) { ++ # r1 is the stack pointer. r13 is the thread pointer. ++ next if ($_ == 1 || $_ == 13); ++ $code .= <<____; ++.globl abi_test_clobber_r$_ ++.align 5 ++abi_test_clobber_r$_: ++ li r$_, 0 ++ blr ++.size abi_test_clobber_r$_,.-abi_test_clobber_r$_ ++____ ++} ++ ++foreach (0..31) { ++ $code .= <<____; ++.globl abi_test_clobber_f$_ ++.align 4 ++abi_test_clobber_f$_: ++ li r0, 0 ++ # Use the red zone. ++ std r0, -8(r1) ++ lfd f$_, -8(r1) ++ blr ++.size abi_test_clobber_f$_,.-abi_test_clobber_f$_ ++____ ++} ++ ++foreach (0..31) { ++ $code .= <<____; ++.globl abi_test_clobber_v$_ ++.align 4 ++abi_test_clobber_v$_: ++ vxor v$_, v$_, v$_ ++ blr ++.size abi_test_clobber_v$_,.-abi_test_clobber_v$_ ++____ ++} ++ ++foreach (0..7) { ++ # PPC orders CR fields in big-endian, so the mask is reversed from what one ++ # would expect. ++ my $mask = 1 << (7 - $_); ++ $code .= <<____; ++.globl abi_test_clobber_cr$_ ++.align 4 ++abi_test_clobber_cr$_: ++ # Flip the bits on cr$_ rather than setting to zero. With a four-bit ++ # register, zeroing it will do nothing 1 in 16 times. ++ mfcr r0 ++ not r0, r0 ++ mtcrf $mask, r0 ++ blr ++.size abi_test_clobber_cr$_,.-abi_test_clobber_cr$_ ++____ ++} ++ ++$code .= <<____; ++.globl abi_test_clobber_ctr ++.align 4 ++abi_test_clobber_ctr: ++ li r0, 0 ++ mtctr r0 ++ blr ++.size abi_test_clobber_ctr,.-abi_test_clobber_ctr ++ ++.globl abi_test_clobber_lr ++.align 4 ++abi_test_clobber_lr: ++ mflr r0 ++ mtctr r0 ++ li r0, 0 ++ mtlr r0 ++ bctr ++.size abi_test_clobber_lr,.-abi_test_clobber_lr ++ ++____ ++ ++print $code; ++close STDOUT or die "error closing STDOUT: $!"; +Index: chromium-122.0.6261.128/third_party/boringssl/src/include/openssl/target.h +=================================================================== +--- chromium-122.0.6261.128.orig/third_party/boringssl/src/include/openssl/target.h ++++ chromium-122.0.6261.128/third_party/boringssl/src/include/openssl/target.h +@@ -34,6 +34,9 @@ + #elif defined(__ARMEL__) || defined(_M_ARM) + #define OPENSSL_32_BIT + #define OPENSSL_ARM ++#elif (defined(__PPC64__) || defined(__powerpc64__)) && defined(_LITTLE_ENDIAN) ++#define OPENSSL_64_BIT ++#define OPENSSL_PPC64LE + #elif defined(__MIPSEL__) && !defined(__LP64__) + #define OPENSSL_32_BIT + #define OPENSSL_MIPS +Index: chromium-122.0.6261.128/third_party/boringssl/src/util/fipstools/acvp/modulewrapper/main.cc +=================================================================== +--- chromium-122.0.6261.128.orig/third_party/boringssl/src/util/fipstools/acvp/modulewrapper/main.cc ++++ chromium-122.0.6261.128/third_party/boringssl/src/util/fipstools/acvp/modulewrapper/main.cc +@@ -37,6 +37,8 @@ int main(int argc, char **argv) { + puts("ARM (32-bit)"); + #elif defined(OPENSSL_AARCH64) + puts("aarch64 (64-bit)"); ++#elif defined(OPENSSL_PPC64LE) ++ puts("PPC64LE (64-bit)"); + #else + #error "FIPS build not supported on this architecture" + #endif +Index: chromium-122.0.6261.128/third_party/boringssl/src/util/fipstools/delocate/delocate.go +=================================================================== +--- chromium-122.0.6261.128.orig/third_party/boringssl/src/util/fipstools/delocate/delocate.go ++++ chromium-122.0.6261.128/third_party/boringssl/src/util/fipstools/delocate/delocate.go +@@ -54,7 +54,8 @@ type stringWriter interface { + type processorType int + + const ( +- x86_64 processorType = iota + 1 ++ ppc64le processorType = iota + 1 ++ x86_64 + aarch64 + ) + +@@ -67,6 +68,8 @@ type delocation struct { + + // symbols is the set of symbols defined in the module. + symbols map[string]struct{} ++ // localEntrySymbols is the set of symbols with .localentry directives. ++ localEntrySymbols map[string]struct{} + // redirectors maps from out-call symbol name to the name of a + // redirector function for that symbol. E.g. “memcpy” -> + // “bcm_redirector_memcpy”. +@@ -75,6 +78,9 @@ type delocation struct { + // should be used to reference it. E.g. “P384_data_storage” -> + // “P384_data_storage”. + bssAccessorsNeeded map[string]string ++ // tocLoaders is a set of symbol names for which TOC helper functions ++ // are required. (ppc64le only.) ++ tocLoaders map[string]struct{} + // gotExternalsNeeded is a set of symbol names for which we need + // “delta” symbols: symbols that contain the offset from their location + // to the memory in question. +@@ -151,6 +157,8 @@ func (d *delocation) processInput(input + switch d.processor { + case x86_64: + statement, err = d.processIntelInstruction(statement, node.up) ++ case ppc64le: ++ statement, err = d.processPPCInstruction(statement, node.up) + case aarch64: + statement, err = d.processAarch64Instruction(statement, node.up) + default: +@@ -247,7 +255,7 @@ func (d *delocation) processDirective(st + d.writeNode(statement) + break + +- case ".debug", ".note": ++ case ".debug", ".note", ".toc": + d.writeNode(statement) + break + +@@ -336,6 +344,10 @@ func (d *delocation) processLabelContain + d.output.WriteString("\t" + name + "\t" + strings.Join(args, ", ") + "\n") + } + ++ if name == ".localentry" { ++ d.output.WriteString(localEntryName(args[0]) + ":\n") ++ } ++ + return statement, nil + } + +@@ -646,6 +658,191 @@ func (d *delocation) processAarch64Instr + return statement, nil + } + ++/* ppc64le ++ ++[PABI]: “64-Bit ELF V2 ABI Specification. Power Architecture.” March 21st, ++ 2017 ++ ++(Also useful is “Power ISA Version 2.07 B”. Note that version three of that ++document is /not/ good as that's POWER9 specific.) ++ ++ppc64le doesn't have IP-relative addressing and does a lot to work around this. ++Rather than reference a PLT and GOT direction, it has a single structure called ++the TOC (Table Of Contents). Within the TOC is the contents of .rodata, .data, ++.got, .plt, .bss, etc sections [PABI;3.3]. ++ ++A pointer to the TOC is maintained in r2 and the following pattern is used to ++load the address of an element into a register: ++ ++ addis
, 2, foo@toc@ha ++ addi
,
, foo@toc@l ++ ++The “addis” instruction shifts a signed constant left 16 bits and adds the ++result to its second argument, saving the result in the first argument. The ++“addi” instruction does the same, but without shifting. Thus the “@toc@ha" ++suffix on a symbol means “the top 16 bits of the TOC offset” and “@toc@l” means ++“the bottom 16 bits of the offset”. However, note that both values are signed, ++thus offsets in the top half of a 64KB chunk will have an @ha value that's one ++greater than expected and a negative @l value. ++ ++The TOC is specific to a “module” (basically an executable or shared object). ++This means that there's not a single TOC in a process and that r2 needs to ++change as control moves between modules. Thus functions have two entry points: ++the “global” entry point and the “local” entry point. Jumps from within the ++same module can use the local entry while jumps from other modules must use the ++global entry. The global entry establishes the correct value of r2 before ++running the function and the local entry skips that code. ++ ++The global entry point for a function is defined by its label. The local entry ++is a power-of-two number of bytes from the global entry, set by the ++“.localentry” directive. (ppc64le instructions are always 32 bits, so an offset ++of 1 or 2 bytes is treated as an offset of zero.) ++ ++In order to help the global entry code set r2 to point to the local TOC, r12 is ++set to the address of the global entry point when called [PABI;2.2.1.1]. Thus ++the global entry will typically use an addis+addi pair to add a known offset to ++r12 and store it in r2. For example: ++ ++foo: ++ addis 2, 12, .TOC. - foo@ha ++ addi 2, 2, .TOC. - foo@l ++ ++(It's worth noting that the '@' operator binds very loosely, so the 3rd ++arguments parse as (.TOC. - foo)@ha and (.TOC. - foo)@l.) ++ ++When calling a function, the compiler doesn't know whether that function is in ++the same module or not. Thus it doesn't know whether r12 needs to be set nor ++whether r2 will be clobbered on return. Rather than always assume the worst, ++the linker fixes stuff up once it knows that a call is going out of module: ++ ++Firstly, calling, say, memcpy (which we assume to be in a different module) ++won't actually jump directly to memcpy, or even a PLT resolution function. ++It'll call a synthesised function that: ++ a) saves r2 in the caller's stack frame ++ b) loads the address of memcpy@PLT into r12 ++ c) jumps to r12. ++ ++As this synthesised function loads memcpy@PLT, a call to memcpy from the ++compiled code just references “memcpy” directly, not “memcpy@PLT”. ++ ++Since it jumps directly to memcpy@PLT, it can't restore r2 on return. Thus ++calls must be followed by a nop. If the call ends up going out-of-module, the ++linker will rewrite that nop to load r2 from the stack. ++ ++Speaking of the stack, the stack pointer is kept in r1 and there's a 288-byte ++red-zone. The format of the stack frame is defined [PABI;2.2.2] and must be ++followed as called functions will write into their parent's stack frame. For ++example, the synthesised out-of-module trampolines will save r2 24 bytes into ++the caller's frame and all non-leaf functions save the return address 16 bytes ++into the caller's frame. ++ ++A final point worth noting: some RISC ISAs have r0 wired to zero: all reads ++result in zero and all writes are discarded. POWER does something a little like ++that, but r0 is only special in certain argument positions for certain ++instructions. You just have to read the manual to know which they are. ++ ++ ++Delocation is easier than Intel because there's just TOC references, but it's ++also harder because there's no IP-relative addressing. ++ ++Jumps are IP-relative however, and have a 24-bit immediate value. So we can ++jump to functions that set a register to the needed value. (r3 is the ++return-value register and so that's what is generally used here.) */ ++ ++// isPPC64LEAPair recognises an addis+addi pair that's adding the offset of ++// source to relative and writing the result to target. ++func (d *delocation) isPPC64LEAPair(statement *node32) (target, source, relative string, ok bool) { ++ instruction := skipWS(statement.up).up ++ assertNodeType(instruction, ruleInstructionName) ++ name1 := d.contents(instruction) ++ args1 := instructionArgs(instruction.next) ++ ++ statement = statement.next ++ instruction = skipWS(statement.up).up ++ assertNodeType(instruction, ruleInstructionName) ++ name2 := d.contents(instruction) ++ args2 := instructionArgs(instruction.next) ++ ++ if name1 != "addis" || ++ len(args1) != 3 || ++ name2 != "addi" || ++ len(args2) != 3 { ++ return "", "", "", false ++ } ++ ++ target = d.contents(args1[0]) ++ relative = d.contents(args1[1]) ++ source1 := d.contents(args1[2]) ++ source2 := d.contents(args2[2]) ++ ++ if !strings.HasSuffix(source1, "@ha") || ++ !strings.HasSuffix(source2, "@l") || ++ source1[:len(source1)-3] != source2[:len(source2)-2] || ++ d.contents(args2[0]) != target || ++ d.contents(args2[1]) != target { ++ return "", "", "", false ++ } ++ ++ source = source1[:len(source1)-3] ++ ok = true ++ return ++} ++ ++// establishTOC writes the global entry prelude for a function. The standard ++// prelude involves relocations so this version moves the relocation outside ++// the integrity-checked area. ++func establishTOC(w stringWriter) { ++ w.WriteString("999:\n") ++ w.WriteString("\taddis 2, 12, .LBORINGSSL_external_toc-999b@ha\n") ++ w.WriteString("\taddi 2, 2, .LBORINGSSL_external_toc-999b@l\n") ++ w.WriteString("\tld 12, 0(2)\n") ++ w.WriteString("\tadd 2, 2, 12\n") ++} ++ ++// loadTOCFuncName returns the name of a synthesized function that sets r3 to ++// the value of “symbol+offset”. ++func loadTOCFuncName(symbol, offset string) string { ++ symbol = strings.Replace(symbol, ".", "_dot_", -1) ++ ret := ".Lbcm_loadtoc_" + symbol ++ if len(offset) != 0 { ++ offset = strings.Replace(offset, "+", "_plus_", -1) ++ offset = strings.Replace(offset, "-", "_minus_", -1) ++ ret += "_" + offset ++ } ++ return ret ++} ++ ++func (d *delocation) loadFromTOC(w stringWriter, symbol, offset, dest string) wrapperFunc { ++ d.tocLoaders[symbol+"\x00"+offset] = struct{}{} ++ ++ return func(k func()) { ++ w.WriteString("\taddi 1, 1, -288\n") // Clear the red zone. ++ w.WriteString("\tmflr " + dest + "\n") // Stash the link register. ++ w.WriteString("\tstd " + dest + ", -8(1)\n") ++ // The TOC loader will use r3, so stash it if necessary. ++ if dest != "3" { ++ w.WriteString("\tstd 3, -16(1)\n") ++ } ++ ++ // Because loadTOCFuncName returns a “.L” name, we don't need a ++ // nop after this call. ++ w.WriteString("\tbl " + loadTOCFuncName(symbol, offset) + "\n") ++ ++ // Cycle registers around. We need r3 -> destReg, -8(1) -> ++ // lr and, optionally, -16(1) -> r3. ++ w.WriteString("\tstd 3, -24(1)\n") ++ w.WriteString("\tld 3, -8(1)\n") ++ w.WriteString("\tmtlr 3\n") ++ w.WriteString("\tld " + dest + ", -24(1)\n") ++ if dest != "3" { ++ w.WriteString("\tld 3, -16(1)\n") ++ } ++ w.WriteString("\taddi 1, 1, 288\n") ++ ++ k() ++ } ++} ++ + func (d *delocation) gatherOffsets(symRef *node32, offsets string) (*node32, string) { + for symRef != nil && symRef.pegRule == ruleOffset { + offset := d.contents(symRef) +@@ -700,6 +897,215 @@ func (d *delocation) parseMemRef(memRef + return + } + ++func (d *delocation) processPPCInstruction(statement, instruction *node32) (*node32, error) { ++ assertNodeType(instruction, ruleInstructionName) ++ instructionName := d.contents(instruction) ++ isBranch := instructionName[0] == 'b' ++ ++ argNodes := instructionArgs(instruction.next) ++ ++ var wrappers wrapperStack ++ var args []string ++ changed := false ++ ++Args: ++ for i, arg := range argNodes { ++ fullArg := arg ++ isIndirect := false ++ ++ if arg.pegRule == ruleIndirectionIndicator { ++ arg = arg.next ++ isIndirect = true ++ } ++ ++ switch arg.pegRule { ++ case ruleRegisterOrConstant, ruleLocalLabelRef: ++ args = append(args, d.contents(fullArg)) ++ ++ case ruleTOCRefLow: ++ return nil, errors.New("Found low TOC reference outside preamble pattern") ++ ++ case ruleTOCRefHigh: ++ target, _, relative, ok := d.isPPC64LEAPair(statement) ++ if !ok { ++ return nil, errors.New("Found high TOC reference outside preamble pattern") ++ } ++ ++ if relative != "12" { ++ return nil, fmt.Errorf("preamble is relative to %q, not r12", relative) ++ } ++ ++ if target != "2" { ++ return nil, fmt.Errorf("preamble is setting %q, not r2", target) ++ } ++ ++ statement = statement.next ++ establishTOC(d.output) ++ instructionName = "" ++ changed = true ++ break Args ++ ++ case ruleMemoryRef: ++ symbol, offset, section, didChange, symbolIsLocal, memRef := d.parseMemRef(arg.up) ++ changed = didChange ++ ++ if len(symbol) > 0 { ++ if _, localEntrySymbol := d.localEntrySymbols[symbol]; localEntrySymbol && isBranch { ++ symbol = localEntryName(symbol) ++ changed = true ++ } else if _, knownSymbol := d.symbols[symbol]; knownSymbol { ++ symbol = localTargetName(symbol) ++ changed = true ++ } else if !symbolIsLocal && !isSynthesized(symbol) && len(section) == 0 { ++ changed = true ++ d.redirectors[symbol] = redirectorName(symbol) ++ symbol = redirectorName(symbol) ++ // TODO(davidben): This should sanity-check the next ++ // instruction is a nop and ideally remove it. ++ wrappers = append(wrappers, func(k func()) { ++ k() ++ // Like the linker's PLT stubs, redirector functions ++ // expect callers to restore r2. ++ d.output.WriteString("\tld 2, 24(1)\n") ++ }) ++ } ++ } ++ ++ switch section { ++ case "": ++ ++ case "tls": ++ // This section identifier just tells the ++ // assembler to use r13, the pointer to the ++ // thread-local data [PABI;3.7.3.3]. ++ ++ case "toc@ha": ++ // Delete toc@ha instructions. Per ++ // [PABI;3.6.3], the linker is allowed to erase ++ // toc@ha instructions. We take advantage of ++ // this by unconditionally erasing the toc@ha ++ // instructions and doing the full lookup when ++ // processing toc@l. ++ // ++ // Note that any offset here applies before @ha ++ // and @l. That is, 42+foo@toc@ha is ++ // #ha(42+foo-.TOC.), not 42+#ha(foo-.TOC.). Any ++ // corresponding toc@l references are required ++ // by the ABI to have the same offset. The ++ // offset will be incorporated in full when ++ // those are processed. ++ if instructionName != "addis" || len(argNodes) != 3 || i != 2 || args[1] != "2" { ++ return nil, errors.New("can't process toc@ha reference") ++ } ++ changed = true ++ instructionName = "" ++ break Args ++ ++ case "toc@l": ++ // Per [PAB;3.6.3], this instruction must take ++ // as input a register which was the output of ++ // a toc@ha computation and compute the actual ++ // address of some symbol. The toc@ha ++ // computation was elided, so we ignore that ++ // input register and compute the address ++ // directly. ++ changed = true ++ ++ // For all supported toc@l instructions, the ++ // destination register is the first argument. ++ destReg := args[0] ++ ++ wrappers = append(wrappers, d.loadFromTOC(d.output, symbol, offset, destReg)) ++ switch instructionName { ++ case "addi": ++ // The original instruction was: ++ // addi destReg, tocHaReg, offset+symbol@toc@l ++ instructionName = "" ++ ++ case "ld", "lhz", "lwz": ++ // The original instruction was: ++ // l?? destReg, offset+symbol@toc@l(tocHaReg) ++ // ++ // We transform that into the ++ // equivalent dereference of destReg: ++ // l?? destReg, 0(destReg) ++ origInstructionName := instructionName ++ instructionName = "" ++ ++ assertNodeType(memRef, ruleBaseIndexScale) ++ assertNodeType(memRef.up, ruleRegisterOrConstant) ++ if memRef.next != nil || memRef.up.next != nil { ++ return nil, errors.New("expected single register in BaseIndexScale for ld argument") ++ } ++ ++ baseReg := destReg ++ if baseReg == "0" { ++ // Register zero is special as the base register for a load. ++ // Avoid it by spilling and using r3 instead. ++ baseReg = "3" ++ wrappers = append(wrappers, func(k func()) { ++ d.output.WriteString("\taddi 1, 1, -288\n") // Clear the red zone. ++ d.output.WriteString("\tstd " + baseReg + ", -8(1)\n") ++ d.output.WriteString("\tmr " + baseReg + ", " + destReg + "\n") ++ k() ++ d.output.WriteString("\tld " + baseReg + ", -8(1)\n") ++ d.output.WriteString("\taddi 1, 1, 288\n") // Clear the red zone. ++ }) ++ } ++ ++ wrappers = append(wrappers, func(k func()) { ++ d.output.WriteString("\t" + origInstructionName + " " + destReg + ", 0(" + baseReg + ")\n") ++ }) ++ default: ++ return nil, fmt.Errorf("can't process TOC argument to %q", instructionName) ++ } ++ ++ default: ++ return nil, fmt.Errorf("Unknown section type %q", section) ++ } ++ ++ argStr := "" ++ if isIndirect { ++ argStr += "*" ++ } ++ argStr += symbol ++ if len(offset) > 0 { ++ argStr += offset ++ } ++ if len(section) > 0 { ++ argStr += "@" ++ argStr += section ++ } ++ ++ for ; memRef != nil; memRef = memRef.next { ++ argStr += d.contents(memRef) ++ } ++ ++ args = append(args, argStr) ++ ++ default: ++ panic(fmt.Sprintf("unknown instruction argument type %q", rul3s[arg.pegRule])) ++ } ++ } ++ ++ if changed { ++ d.writeCommentedNode(statement) ++ ++ var replacement string ++ if len(instructionName) > 0 { ++ replacement = "\t" + instructionName + "\t" + strings.Join(args, ", ") + "\n" ++ } ++ ++ wrappers.do(func() { ++ d.output.WriteString(replacement) ++ }) ++ } else { ++ d.writeNode(statement) ++ } ++ ++ return statement, nil ++} ++ + /* Intel */ + + type instructionType int +@@ -1323,6 +1729,8 @@ func writeAarch64Function(w stringWriter + func transform(w stringWriter, inputs []inputFile) error { + // symbols contains all defined symbols. + symbols := make(map[string]struct{}) ++ // localEntrySymbols contains all symbols with a .localentry directive. ++ localEntrySymbols := make(map[string]struct{}) + // fileNumbers is the set of IDs seen in .file directives. + fileNumbers := make(map[int]struct{}) + // maxObservedFileNumber contains the largest seen file number in a +@@ -1346,6 +1754,25 @@ func transform(w stringWriter, inputs [] + }, ruleStatement, ruleLabel, ruleSymbolName) + + forEachPath(input.ast.up, func(node *node32) { ++ node = node.up ++ assertNodeType(node, ruleLabelContainingDirectiveName) ++ directive := input.contents[node.begin:node.end] ++ if directive != ".localentry" { ++ return ++ } ++ // Extract the first argument. ++ node = skipWS(node.next) ++ assertNodeType(node, ruleSymbolArgs) ++ node = node.up ++ assertNodeType(node, ruleSymbolArg) ++ symbol := input.contents[node.begin:node.end] ++ if _, ok := localEntrySymbols[symbol]; ok { ++ panic(fmt.Sprintf("Duplicate .localentry directive found: %q in %q", symbol, input.path)) ++ } ++ localEntrySymbols[symbol] = struct{}{} ++ }, ruleStatement, ruleLabelContainingDirective) ++ ++ forEachPath(input.ast.up, func(node *node32) { + assertNodeType(node, ruleLocationDirective) + directive := input.contents[node.begin:node.end] + if !strings.HasPrefix(directive, ".file") { +@@ -1393,11 +1820,13 @@ func transform(w stringWriter, inputs [] + + d := &delocation{ + symbols: symbols, ++ localEntrySymbols: localEntrySymbols, + processor: processor, + commentIndicator: commentIndicator, + output: w, + redirectors: make(map[string]string), + bssAccessorsNeeded: make(map[string]string), ++ tocLoaders: make(map[string]struct{}), + gotExternalsNeeded: make(map[string]struct{}), + gotOffsetsNeeded: make(map[string]struct{}), + gotOffOffsetsNeeded: make(map[string]struct{}), +@@ -1432,6 +1861,22 @@ func transform(w stringWriter, inputs [] + for _, name := range redirectorNames { + redirector := d.redirectors[name] + switch d.processor { ++ case ppc64le: ++ w.WriteString(".section \".toc\", \"aw\"\n") ++ w.WriteString(".Lredirector_toc_" + name + ":\n") ++ w.WriteString(".quad " + name + "\n") ++ w.WriteString(".text\n") ++ w.WriteString(".type " + redirector + ", @function\n") ++ w.WriteString(redirector + ":\n") ++ // |name| will clobber r2, so save it. This is matched by a restore in ++ // redirector calls. ++ w.WriteString("\tstd 2, 24(1)\n") ++ // Load and call |name|'s global entry point. ++ w.WriteString("\taddis 12, 2, .Lredirector_toc_" + name + "@toc@ha\n") ++ w.WriteString("\tld 12, .Lredirector_toc_" + name + "@toc@l(12)\n") ++ w.WriteString("\tmtctr 12\n") ++ w.WriteString("\tbctr\n") ++ + case aarch64: + writeAarch64Function(w, redirector, func(w stringWriter) { + w.WriteString("\tb " + name + "\n") +@@ -1456,6 +1901,13 @@ func transform(w stringWriter, inputs [] + target := d.bssAccessorsNeeded[name] + + switch d.processor { ++ case ppc64le: ++ w.WriteString(".type " + funcName + ", @function\n") ++ w.WriteString(funcName + ":\n") ++ w.WriteString("\taddis 3, 2, " + target + "@toc@ha\n") ++ w.WriteString("\taddi 3, 3, " + target + "@toc@l\n") ++ w.WriteString("\tblr\n") ++ + case x86_64: + w.WriteString(".type " + funcName + ", @function\n") + w.WriteString(funcName + ":\n") +@@ -1471,6 +1923,26 @@ func transform(w stringWriter, inputs [] + } + + switch d.processor { ++ case ppc64le: ++ loadTOCNames := sortedSet(d.tocLoaders) ++ for _, symbolAndOffset := range loadTOCNames { ++ parts := strings.SplitN(symbolAndOffset, "\x00", 2) ++ symbol, offset := parts[0], parts[1] ++ ++ funcName := loadTOCFuncName(symbol, offset) ++ ref := symbol + offset ++ ++ w.WriteString(".type " + funcName[2:] + ", @function\n") ++ w.WriteString(funcName[2:] + ":\n") ++ w.WriteString(funcName + ":\n") ++ w.WriteString("\taddis 3, 2, " + ref + "@toc@ha\n") ++ w.WriteString("\taddi 3, 3, " + ref + "@toc@l\n") ++ w.WriteString("\tblr\n") ++ } ++ ++ w.WriteString(".LBORINGSSL_external_toc:\n") ++ w.WriteString(".quad .TOC.-.LBORINGSSL_external_toc\n") ++ + case aarch64: + externalNames := sortedSet(d.gotExternalsNeeded) + for _, symbol := range externalNames { +@@ -1781,6 +2253,10 @@ func localTargetName(name string) string + return ".L" + name + "_local_target" + } + ++func localEntryName(name string) string { ++ return ".L" + name + "_local_entry" ++} ++ + func isSynthesized(symbol string) bool { + return strings.HasSuffix(symbol, "_bss_get") || + symbol == "OPENSSL_ia32cap_get" || +@@ -1836,6 +2312,8 @@ func detectProcessor(input inputFile) pr + switch instructionName { + case "movq", "call", "leaq": + return x86_64 ++ case "addis", "addi", "mflr": ++ return ppc64le + case "str", "bl", "ldr", "st1": + return aarch64 + } +Index: chromium-122.0.6261.128/third_party/boringssl/src/util/fipstools/delocate/delocate.peg +=================================================================== +--- chromium-122.0.6261.128.orig/third_party/boringssl/src/util/fipstools/delocate/delocate.peg ++++ chromium-122.0.6261.128/third_party/boringssl/src/util/fipstools/delocate/delocate.peg +@@ -12,7 +12,7 @@ + # OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN + # CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ + +-# This is a rough parser for x86-64 and aarch64 assembly designed to work with ++# This is a rough parser for x86-64 and ppc64le assembly designed to work with + # https://github.com/pointlander/peg. delocate.go has a go:generate line for + # rebuilding delocate.peg.go from this file. + +Index: chromium-122.0.6261.128/third_party/boringssl/src/util/fipstools/delocate/delocate_test.go +=================================================================== +--- chromium-122.0.6261.128.orig/third_party/boringssl/src/util/fipstools/delocate/delocate_test.go ++++ chromium-122.0.6261.128/third_party/boringssl/src/util/fipstools/delocate/delocate_test.go +@@ -39,6 +39,11 @@ func (test *delocateTest) Path(file stri + + var delocateTests = []delocateTest{ + {"generic-FileDirectives", []string{"in.s"}, "out.s"}, ++ {"ppc64le-GlobalEntry", []string{"in.s"}, "out.s"}, ++ {"ppc64le-LoadToR0", []string{"in.s"}, "out.s"}, ++ {"ppc64le-Sample2", []string{"in.s"}, "out.s"}, ++ {"ppc64le-Sample", []string{"in.s"}, "out.s"}, ++ {"ppc64le-TOCWithOffset", []string{"in.s"}, "out.s"}, + {"x86_64-Basic", []string{"in.s"}, "out.s"}, + {"x86_64-BSS", []string{"in.s"}, "out.s"}, + {"x86_64-GOTRewrite", []string{"in.s"}, "out.s"}, +Index: chromium-122.0.6261.128/third_party/boringssl/src/util/fipstools/delocate/testdata/ppc64le-GlobalEntry/in.s +=================================================================== +--- /dev/null ++++ chromium-122.0.6261.128/third_party/boringssl/src/util/fipstools/delocate/testdata/ppc64le-GlobalEntry/in.s +@@ -0,0 +1,9 @@ ++ .text ++foo: ++.LCF0: ++0: ++ addis 2,12,.TOC.-.LCF0@ha ++ addi 2,2,.TOC.-.LCF0@l ++ .localentry foo,.-foo ++.LVL0: ++ bl +Index: chromium-122.0.6261.128/third_party/boringssl/src/util/fipstools/delocate/testdata/ppc64le-GlobalEntry/out.s +=================================================================== +--- /dev/null ++++ chromium-122.0.6261.128/third_party/boringssl/src/util/fipstools/delocate/testdata/ppc64le-GlobalEntry/out.s +@@ -0,0 +1,62 @@ ++.text ++.file 1 "inserted_by_delocate.c" ++.loc 1 1 0 ++BORINGSSL_bcm_text_start: ++ .text ++.Lfoo_local_target: ++foo: ++.LCF0: ++ ++0: ++ ++999: ++ addis 2, 12, .LBORINGSSL_external_toc-999b@ha ++ addi 2, 2, .LBORINGSSL_external_toc-999b@l ++ ld 12, 0(2) ++ add 2, 2, 12 ++# WAS addi 2,2,.TOC.-.LCF0@l ++ .localentry foo,.-foo ++.Lfoo_local_entry: ++.LVL0: ++ ++ bl ++.text ++.loc 1 2 0 ++BORINGSSL_bcm_text_end: ++.LBORINGSSL_external_toc: ++.quad .TOC.-.LBORINGSSL_external_toc ++.type BORINGSSL_bcm_text_hash, @object ++.size BORINGSSL_bcm_text_hash, 32 ++BORINGSSL_bcm_text_hash: ++.byte 0xae ++.byte 0x2c ++.byte 0xea ++.byte 0x2a ++.byte 0xbd ++.byte 0xa6 ++.byte 0xf3 ++.byte 0xec ++.byte 0x97 ++.byte 0x7f ++.byte 0x9b ++.byte 0xf6 ++.byte 0x94 ++.byte 0x9a ++.byte 0xfc ++.byte 0x83 ++.byte 0x68 ++.byte 0x27 ++.byte 0xcb ++.byte 0xa0 ++.byte 0xa0 ++.byte 0x9f ++.byte 0x6b ++.byte 0x6f ++.byte 0xde ++.byte 0x52 ++.byte 0xcd ++.byte 0xe2 ++.byte 0xcd ++.byte 0xff ++.byte 0x31 ++.byte 0x80 +Index: chromium-122.0.6261.128/third_party/boringssl/src/util/fipstools/delocate/testdata/ppc64le-LoadToR0/in.s +=================================================================== +--- /dev/null ++++ chromium-122.0.6261.128/third_party/boringssl/src/util/fipstools/delocate/testdata/ppc64le-LoadToR0/in.s +@@ -0,0 +1,4 @@ ++ .text ++foo: ++ addis 22,2,bar@toc@ha ++ ld 0,bar@toc@l(22) +Index: chromium-122.0.6261.128/third_party/boringssl/src/util/fipstools/delocate/testdata/ppc64le-LoadToR0/out.s +=================================================================== +--- /dev/null ++++ chromium-122.0.6261.128/third_party/boringssl/src/util/fipstools/delocate/testdata/ppc64le-LoadToR0/out.s +@@ -0,0 +1,72 @@ ++.text ++.file 1 "inserted_by_delocate.c" ++.loc 1 1 0 ++BORINGSSL_bcm_text_start: ++ .text ++.Lfoo_local_target: ++foo: ++# WAS addis 22,2,bar@toc@ha ++# WAS ld 0,bar@toc@l(22) ++ addi 1, 1, -288 ++ mflr 0 ++ std 0, -8(1) ++ std 3, -16(1) ++ bl .Lbcm_loadtoc_bar ++ std 3, -24(1) ++ ld 3, -8(1) ++ mtlr 3 ++ ld 0, -24(1) ++ ld 3, -16(1) ++ addi 1, 1, 288 ++ addi 1, 1, -288 ++ std 3, -8(1) ++ mr 3, 0 ++ ld 0, 0(3) ++ ld 3, -8(1) ++ addi 1, 1, 288 ++.text ++.loc 1 2 0 ++BORINGSSL_bcm_text_end: ++.type bcm_loadtoc_bar, @function ++bcm_loadtoc_bar: ++.Lbcm_loadtoc_bar: ++ addis 3, 2, bar@toc@ha ++ addi 3, 3, bar@toc@l ++ blr ++.LBORINGSSL_external_toc: ++.quad .TOC.-.LBORINGSSL_external_toc ++.type BORINGSSL_bcm_text_hash, @object ++.size BORINGSSL_bcm_text_hash, 32 ++BORINGSSL_bcm_text_hash: ++.byte 0xae ++.byte 0x2c ++.byte 0xea ++.byte 0x2a ++.byte 0xbd ++.byte 0xa6 ++.byte 0xf3 ++.byte 0xec ++.byte 0x97 ++.byte 0x7f ++.byte 0x9b ++.byte 0xf6 ++.byte 0x94 ++.byte 0x9a ++.byte 0xfc ++.byte 0x83 ++.byte 0x68 ++.byte 0x27 ++.byte 0xcb ++.byte 0xa0 ++.byte 0xa0 ++.byte 0x9f ++.byte 0x6b ++.byte 0x6f ++.byte 0xde ++.byte 0x52 ++.byte 0xcd ++.byte 0xe2 ++.byte 0xcd ++.byte 0xff ++.byte 0x31 ++.byte 0x80 +Index: chromium-122.0.6261.128/third_party/boringssl/src/util/fipstools/delocate/testdata/ppc64le-Sample/in.s +=================================================================== +--- /dev/null ++++ chromium-122.0.6261.128/third_party/boringssl/src/util/fipstools/delocate/testdata/ppc64le-Sample/in.s +@@ -0,0 +1,161 @@ ++ .file "foo.c" ++ .abiversion 2 ++ .section ".toc","aw" ++ .section ".text" ++ .section .rodata ++ .align 3 ++ .type kString, @object ++ .size kString, 12 ++kString: ++ .string "hello world" ++ .globl kExportedString ++ .align 3 ++ .type kExportedString, @object ++ .size kExportedString, 26 ++kExportedString: ++ .string "hello world, more visibly" ++ .align 2 ++ .type kGiantArray, @object ++ .size kGiantArray, 400000 ++kGiantArray: ++ .long 1 ++ .long 0 ++ .zero 399992 ++ .lcomm bss,20,4 ++ .type bss, @object ++ .align 3 ++.LC1: ++ .string "kString is %p\n" ++ .align 3 ++.LC2: ++ .string "kExportedString is %p\n" ++ .align 3 ++.LC4: ++ .string "function is %p\n" ++ .align 3 ++.LC5: ++ .string "exported_function is %p\n" ++ .align 3 ++.LC7: ++ .string "&kString[5] is %p\n" ++ .align 3 ++.LC9: ++ .string "&kGiantArray[0x12345] is %p\n" ++ .section ".toc","aw" ++.LC0: ++ .quad stderr ++.LC3: ++ .quad kExportedString ++.LC6: ++ .quad exported_function ++.LC8: ++ .quad kString+5 ++.LC10: ++ .quad kGiantArray+298260 ++ .section ".text" ++ .align 2 ++ .type function, @function ++function: ++0: addis 2,12,.TOC.-0b@ha ++ addi 2,2,.TOC.-0b@l ++ .localentry function,.-function ++ mflr 0 ++ std 0,16(1) ++ std 31,-8(1) ++ stdu 1,-112(1) ++ mr 31,1 ++ addis 10,2,.LC0@toc@ha ++ ld 9,.LC0@toc@l(10) ++ ld 9,0(9) ++ mr 3,9 ++ addis 4,2,.LC1@toc@ha ++ addi 4,4,.LC1@toc@l ++ addis 5,2,kString@toc@ha ++ addi 5,5,kString@toc@l ++ bl fprintf ++ nop ++ addis 10,2,.LC0@toc@ha ++ ld 9,.LC0@toc@l(10) ++ ld 9,0(9) ++ mr 3,9 ++ addis 4,2,.LC2@toc@ha ++ addi 4,4,.LC2@toc@l ++ addis 9,2,.LC3@toc@ha ++ ld 5,.LC3@toc@l(9) ++ bl fprintf ++ nop ++ addis 10,2,.LC0@toc@ha ++ ld 9,.LC0@toc@l(10) ++ ld 9,0(9) ++ mr 3,9 ++ addis 4,2,.LC4@toc@ha ++ addi 4,4,.LC4@toc@l ++ addis 5,2,function@toc@ha ++ addi 5,5,function@toc@l ++ bl fprintf ++ nop ++ addis 10,2,.LC0@toc@ha ++ ld 9,.LC0@toc@l(10) ++ ld 9,0(9) ++ mr 3,9 ++ addis 4,2,.LC5@toc@ha ++ addi 4,4,.LC5@toc@l ++ addis 9,2,.LC6@toc@ha ++ ld 5,.LC6@toc@l(9) ++ bl fprintf ++ nop ++ addis 10,2,.LC0@toc@ha ++ ld 9,.LC0@toc@l(10) ++ ld 9,0(9) ++ mr 3,9 ++ addis 4,2,.LC7@toc@ha ++ addi 4,4,.LC7@toc@l ++ addis 9,2,.LC8@toc@ha ++ ld 5,.LC8@toc@l(9) ++ bl fprintf ++ nop ++ addis 10,2,.LC0@toc@ha ++ ld 9,.LC0@toc@l(10) ++ ld 9,0(9) ++ mr 3,9 ++ addis 4,2,.LC9@toc@ha ++ addi 4,4,.LC9@toc@l ++ addis 9,2,.LC10@toc@ha ++ ld 5,.LC10@toc@l(9) ++ bl fprintf ++ nop ++ bl exported_function ++ nop ++ mr 3,9 ++ addi 1,31,112 ++ ld 0,16(1) ++ mtlr 0 ++ ld 31,-8(1) ++ blr ++ .long 0 ++ .byte 0,0,0,1,128,1,0,1 ++ .size function,.-function ++ .align 2 ++ .globl exported_function ++ .type exported_function, @function ++exported_function: ++0: addis 2,12,.TOC.-0b@ha ++ addi 2,2,.TOC.-0b@l ++ .localentry exported_function,.-exported_function ++ mflr 0 ++ std 0,16(1) ++ std 31,-8(1) ++ stdu 1,-48(1) ++ mr 31,1 ++ bl function ++ mr 3,9 ++ addi 1,31,48 ++ ld 0,16(1) ++ mtlr 0 ++ ld 31,-8(1) ++ blr ++ .long 0 ++ .byte 0,0,0,1,128,1,0,1 ++ .size exported_function,.-exported_function ++ .ident "GCC: (Ubuntu 4.9.2-10ubuntu13) 4.9.2" ++ .section .note.GNU-stack,"",@progbits +Index: chromium-122.0.6261.128/third_party/boringssl/src/util/fipstools/delocate/testdata/ppc64le-Sample/out.s +=================================================================== +--- /dev/null ++++ chromium-122.0.6261.128/third_party/boringssl/src/util/fipstools/delocate/testdata/ppc64le-Sample/out.s +@@ -0,0 +1,552 @@ ++.text ++.file 1 "inserted_by_delocate.c" ++.loc 1 1 0 ++BORINGSSL_bcm_text_start: ++ .file "foo.c" ++ .abiversion 2 ++ .section ".toc","aw" ++# WAS .section ".text" ++.text ++# WAS .section .rodata ++.text ++ .align 3 ++ .type kString, @object ++ .size kString, 12 ++.LkString_local_target: ++kString: ++ .string "hello world" ++ .globl kExportedString ++ .align 3 ++ .type kExportedString, @object ++ .size kExportedString, 26 ++.LkExportedString_local_target: ++kExportedString: ++ .string "hello world, more visibly" ++ .align 2 ++ .type kGiantArray, @object ++ .size kGiantArray, 400000 ++.LkGiantArray_local_target: ++kGiantArray: ++ .long 1 ++ .long 0 ++ .zero 399992 ++ .lcomm bss,20,4 ++ .type bss, @object ++ .align 3 ++.LC1: ++ ++ .string "kString is %p\n" ++ .align 3 ++.LC2: ++ ++ .string "kExportedString is %p\n" ++ .align 3 ++.LC4: ++ ++ .string "function is %p\n" ++ .align 3 ++.LC5: ++ ++ .string "exported_function is %p\n" ++ .align 3 ++.LC7: ++ ++ .string "&kString[5] is %p\n" ++ .align 3 ++.LC9: ++ ++ .string "&kGiantArray[0x12345] is %p\n" ++ .section ".toc","aw" ++.LC0: ++ ++ .quad stderr ++.LC3: ++ ++ .quad kExportedString ++.LC6: ++ ++ .quad exported_function ++.LC8: ++ ++ .quad kString+5 ++.LC10: ++ ++ .quad kGiantArray+298260 ++# WAS .section ".text" ++.text ++ .align 2 ++ .type function, @function ++.Lfunction_local_target: ++function: ++0: ++999: ++ addis 2, 12, .LBORINGSSL_external_toc-999b@ha ++ addi 2, 2, .LBORINGSSL_external_toc-999b@l ++ ld 12, 0(2) ++ add 2, 2, 12 ++# WAS addi 2,2,.TOC.-0b@l ++ .localentry function,.-function ++.Lfunction_local_entry: ++ mflr 0 ++ std 0,16(1) ++ std 31,-8(1) ++ stdu 1,-112(1) ++ mr 31,1 ++# WAS addis 10,2,.LC0@toc@ha ++# WAS ld 9,.LC0@toc@l(10) ++ addi 1, 1, -288 ++ mflr 9 ++ std 9, -8(1) ++ std 3, -16(1) ++ bl .Lbcm_loadtoc__dot_LC0 ++ std 3, -24(1) ++ ld 3, -8(1) ++ mtlr 3 ++ ld 9, -24(1) ++ ld 3, -16(1) ++ addi 1, 1, 288 ++ ld 9, 0(9) ++ ld 9,0(9) ++ mr 3,9 ++# WAS addis 4,2,.LC1@toc@ha ++# WAS addi 4,4,.LC1@toc@l ++ addi 1, 1, -288 ++ mflr 4 ++ std 4, -8(1) ++ std 3, -16(1) ++ bl .Lbcm_loadtoc__dot_LC1 ++ std 3, -24(1) ++ ld 3, -8(1) ++ mtlr 3 ++ ld 4, -24(1) ++ ld 3, -16(1) ++ addi 1, 1, 288 ++# WAS addis 5,2,kString@toc@ha ++# WAS addi 5,5,kString@toc@l ++ addi 1, 1, -288 ++ mflr 5 ++ std 5, -8(1) ++ std 3, -16(1) ++ bl .Lbcm_loadtoc__dot_LkString_local_target ++ std 3, -24(1) ++ ld 3, -8(1) ++ mtlr 3 ++ ld 5, -24(1) ++ ld 3, -16(1) ++ addi 1, 1, 288 ++# WAS bl fprintf ++ bl bcm_redirector_fprintf ++ ld 2, 24(1) ++ nop ++# WAS addis 10,2,.LC0@toc@ha ++# WAS ld 9,.LC0@toc@l(10) ++ addi 1, 1, -288 ++ mflr 9 ++ std 9, -8(1) ++ std 3, -16(1) ++ bl .Lbcm_loadtoc__dot_LC0 ++ std 3, -24(1) ++ ld 3, -8(1) ++ mtlr 3 ++ ld 9, -24(1) ++ ld 3, -16(1) ++ addi 1, 1, 288 ++ ld 9, 0(9) ++ ld 9,0(9) ++ mr 3,9 ++# WAS addis 4,2,.LC2@toc@ha ++# WAS addi 4,4,.LC2@toc@l ++ addi 1, 1, -288 ++ mflr 4 ++ std 4, -8(1) ++ std 3, -16(1) ++ bl .Lbcm_loadtoc__dot_LC2 ++ std 3, -24(1) ++ ld 3, -8(1) ++ mtlr 3 ++ ld 4, -24(1) ++ ld 3, -16(1) ++ addi 1, 1, 288 ++# WAS addis 9,2,.LC3@toc@ha ++# WAS ld 5,.LC3@toc@l(9) ++ addi 1, 1, -288 ++ mflr 5 ++ std 5, -8(1) ++ std 3, -16(1) ++ bl .Lbcm_loadtoc__dot_LC3 ++ std 3, -24(1) ++ ld 3, -8(1) ++ mtlr 3 ++ ld 5, -24(1) ++ ld 3, -16(1) ++ addi 1, 1, 288 ++ ld 5, 0(5) ++# WAS bl fprintf ++ bl bcm_redirector_fprintf ++ ld 2, 24(1) ++ nop ++# WAS addis 10,2,.LC0@toc@ha ++# WAS ld 9,.LC0@toc@l(10) ++ addi 1, 1, -288 ++ mflr 9 ++ std 9, -8(1) ++ std 3, -16(1) ++ bl .Lbcm_loadtoc__dot_LC0 ++ std 3, -24(1) ++ ld 3, -8(1) ++ mtlr 3 ++ ld 9, -24(1) ++ ld 3, -16(1) ++ addi 1, 1, 288 ++ ld 9, 0(9) ++ ld 9,0(9) ++ mr 3,9 ++# WAS addis 4,2,.LC4@toc@ha ++# WAS addi 4,4,.LC4@toc@l ++ addi 1, 1, -288 ++ mflr 4 ++ std 4, -8(1) ++ std 3, -16(1) ++ bl .Lbcm_loadtoc__dot_LC4 ++ std 3, -24(1) ++ ld 3, -8(1) ++ mtlr 3 ++ ld 4, -24(1) ++ ld 3, -16(1) ++ addi 1, 1, 288 ++# WAS addis 5,2,function@toc@ha ++# WAS addi 5,5,function@toc@l ++ addi 1, 1, -288 ++ mflr 5 ++ std 5, -8(1) ++ std 3, -16(1) ++ bl .Lbcm_loadtoc__dot_Lfunction_local_target ++ std 3, -24(1) ++ ld 3, -8(1) ++ mtlr 3 ++ ld 5, -24(1) ++ ld 3, -16(1) ++ addi 1, 1, 288 ++# WAS bl fprintf ++ bl bcm_redirector_fprintf ++ ld 2, 24(1) ++ nop ++# WAS addis 10,2,.LC0@toc@ha ++# WAS ld 9,.LC0@toc@l(10) ++ addi 1, 1, -288 ++ mflr 9 ++ std 9, -8(1) ++ std 3, -16(1) ++ bl .Lbcm_loadtoc__dot_LC0 ++ std 3, -24(1) ++ ld 3, -8(1) ++ mtlr 3 ++ ld 9, -24(1) ++ ld 3, -16(1) ++ addi 1, 1, 288 ++ ld 9, 0(9) ++ ld 9,0(9) ++ mr 3,9 ++# WAS addis 4,2,.LC5@toc@ha ++# WAS addi 4,4,.LC5@toc@l ++ addi 1, 1, -288 ++ mflr 4 ++ std 4, -8(1) ++ std 3, -16(1) ++ bl .Lbcm_loadtoc__dot_LC5 ++ std 3, -24(1) ++ ld 3, -8(1) ++ mtlr 3 ++ ld 4, -24(1) ++ ld 3, -16(1) ++ addi 1, 1, 288 ++# WAS addis 9,2,.LC6@toc@ha ++# WAS ld 5,.LC6@toc@l(9) ++ addi 1, 1, -288 ++ mflr 5 ++ std 5, -8(1) ++ std 3, -16(1) ++ bl .Lbcm_loadtoc__dot_LC6 ++ std 3, -24(1) ++ ld 3, -8(1) ++ mtlr 3 ++ ld 5, -24(1) ++ ld 3, -16(1) ++ addi 1, 1, 288 ++ ld 5, 0(5) ++# WAS bl fprintf ++ bl bcm_redirector_fprintf ++ ld 2, 24(1) ++ nop ++# WAS addis 10,2,.LC0@toc@ha ++# WAS ld 9,.LC0@toc@l(10) ++ addi 1, 1, -288 ++ mflr 9 ++ std 9, -8(1) ++ std 3, -16(1) ++ bl .Lbcm_loadtoc__dot_LC0 ++ std 3, -24(1) ++ ld 3, -8(1) ++ mtlr 3 ++ ld 9, -24(1) ++ ld 3, -16(1) ++ addi 1, 1, 288 ++ ld 9, 0(9) ++ ld 9,0(9) ++ mr 3,9 ++# WAS addis 4,2,.LC7@toc@ha ++# WAS addi 4,4,.LC7@toc@l ++ addi 1, 1, -288 ++ mflr 4 ++ std 4, -8(1) ++ std 3, -16(1) ++ bl .Lbcm_loadtoc__dot_LC7 ++ std 3, -24(1) ++ ld 3, -8(1) ++ mtlr 3 ++ ld 4, -24(1) ++ ld 3, -16(1) ++ addi 1, 1, 288 ++# WAS addis 9,2,.LC8@toc@ha ++# WAS ld 5,.LC8@toc@l(9) ++ addi 1, 1, -288 ++ mflr 5 ++ std 5, -8(1) ++ std 3, -16(1) ++ bl .Lbcm_loadtoc__dot_LC8 ++ std 3, -24(1) ++ ld 3, -8(1) ++ mtlr 3 ++ ld 5, -24(1) ++ ld 3, -16(1) ++ addi 1, 1, 288 ++ ld 5, 0(5) ++# WAS bl fprintf ++ bl bcm_redirector_fprintf ++ ld 2, 24(1) ++ nop ++# WAS addis 10,2,.LC0@toc@ha ++# WAS ld 9,.LC0@toc@l(10) ++ addi 1, 1, -288 ++ mflr 9 ++ std 9, -8(1) ++ std 3, -16(1) ++ bl .Lbcm_loadtoc__dot_LC0 ++ std 3, -24(1) ++ ld 3, -8(1) ++ mtlr 3 ++ ld 9, -24(1) ++ ld 3, -16(1) ++ addi 1, 1, 288 ++ ld 9, 0(9) ++ ld 9,0(9) ++ mr 3,9 ++# WAS addis 4,2,.LC9@toc@ha ++# WAS addi 4,4,.LC9@toc@l ++ addi 1, 1, -288 ++ mflr 4 ++ std 4, -8(1) ++ std 3, -16(1) ++ bl .Lbcm_loadtoc__dot_LC9 ++ std 3, -24(1) ++ ld 3, -8(1) ++ mtlr 3 ++ ld 4, -24(1) ++ ld 3, -16(1) ++ addi 1, 1, 288 ++# WAS addis 9,2,.LC10@toc@ha ++# WAS ld 5,.LC10@toc@l(9) ++ addi 1, 1, -288 ++ mflr 5 ++ std 5, -8(1) ++ std 3, -16(1) ++ bl .Lbcm_loadtoc__dot_LC10 ++ std 3, -24(1) ++ ld 3, -8(1) ++ mtlr 3 ++ ld 5, -24(1) ++ ld 3, -16(1) ++ addi 1, 1, 288 ++ ld 5, 0(5) ++# WAS bl fprintf ++ bl bcm_redirector_fprintf ++ ld 2, 24(1) ++ nop ++# WAS bl exported_function ++ bl .Lexported_function_local_entry ++ nop ++ mr 3,9 ++ addi 1,31,112 ++ ld 0,16(1) ++ mtlr 0 ++ ld 31,-8(1) ++ blr ++ .long 0 ++ .byte 0,0,0,1,128,1,0,1 ++ .size function,.-function ++ .align 2 ++ .globl exported_function ++ .type exported_function, @function ++.Lexported_function_local_target: ++exported_function: ++0: ++999: ++ addis 2, 12, .LBORINGSSL_external_toc-999b@ha ++ addi 2, 2, .LBORINGSSL_external_toc-999b@l ++ ld 12, 0(2) ++ add 2, 2, 12 ++# WAS addi 2,2,.TOC.-0b@l ++ .localentry exported_function,.-exported_function ++.Lexported_function_local_entry: ++ mflr 0 ++ std 0,16(1) ++ std 31,-8(1) ++ stdu 1,-48(1) ++ mr 31,1 ++# WAS bl function ++ bl .Lfunction_local_entry ++ mr 3,9 ++ addi 1,31,48 ++ ld 0,16(1) ++ mtlr 0 ++ ld 31,-8(1) ++ blr ++ .long 0 ++ .byte 0,0,0,1,128,1,0,1 ++ .size exported_function,.-exported_function ++ .ident "GCC: (Ubuntu 4.9.2-10ubuntu13) 4.9.2" ++ .section .note.GNU-stack,"",@progbits ++.text ++.loc 1 2 0 ++BORINGSSL_bcm_text_end: ++.section ".toc", "aw" ++.Lredirector_toc_fprintf: ++.quad fprintf ++.text ++.type bcm_redirector_fprintf, @function ++bcm_redirector_fprintf: ++ std 2, 24(1) ++ addis 12, 2, .Lredirector_toc_fprintf@toc@ha ++ ld 12, .Lredirector_toc_fprintf@toc@l(12) ++ mtctr 12 ++ bctr ++.type bss_bss_get, @function ++bss_bss_get: ++ addis 3, 2, bss@toc@ha ++ addi 3, 3, bss@toc@l ++ blr ++.type bcm_loadtoc__dot_LC0, @function ++bcm_loadtoc__dot_LC0: ++.Lbcm_loadtoc__dot_LC0: ++ addis 3, 2, .LC0@toc@ha ++ addi 3, 3, .LC0@toc@l ++ blr ++.type bcm_loadtoc__dot_LC1, @function ++bcm_loadtoc__dot_LC1: ++.Lbcm_loadtoc__dot_LC1: ++ addis 3, 2, .LC1@toc@ha ++ addi 3, 3, .LC1@toc@l ++ blr ++.type bcm_loadtoc__dot_LC10, @function ++bcm_loadtoc__dot_LC10: ++.Lbcm_loadtoc__dot_LC10: ++ addis 3, 2, .LC10@toc@ha ++ addi 3, 3, .LC10@toc@l ++ blr ++.type bcm_loadtoc__dot_LC2, @function ++bcm_loadtoc__dot_LC2: ++.Lbcm_loadtoc__dot_LC2: ++ addis 3, 2, .LC2@toc@ha ++ addi 3, 3, .LC2@toc@l ++ blr ++.type bcm_loadtoc__dot_LC3, @function ++bcm_loadtoc__dot_LC3: ++.Lbcm_loadtoc__dot_LC3: ++ addis 3, 2, .LC3@toc@ha ++ addi 3, 3, .LC3@toc@l ++ blr ++.type bcm_loadtoc__dot_LC4, @function ++bcm_loadtoc__dot_LC4: ++.Lbcm_loadtoc__dot_LC4: ++ addis 3, 2, .LC4@toc@ha ++ addi 3, 3, .LC4@toc@l ++ blr ++.type bcm_loadtoc__dot_LC5, @function ++bcm_loadtoc__dot_LC5: ++.Lbcm_loadtoc__dot_LC5: ++ addis 3, 2, .LC5@toc@ha ++ addi 3, 3, .LC5@toc@l ++ blr ++.type bcm_loadtoc__dot_LC6, @function ++bcm_loadtoc__dot_LC6: ++.Lbcm_loadtoc__dot_LC6: ++ addis 3, 2, .LC6@toc@ha ++ addi 3, 3, .LC6@toc@l ++ blr ++.type bcm_loadtoc__dot_LC7, @function ++bcm_loadtoc__dot_LC7: ++.Lbcm_loadtoc__dot_LC7: ++ addis 3, 2, .LC7@toc@ha ++ addi 3, 3, .LC7@toc@l ++ blr ++.type bcm_loadtoc__dot_LC8, @function ++bcm_loadtoc__dot_LC8: ++.Lbcm_loadtoc__dot_LC8: ++ addis 3, 2, .LC8@toc@ha ++ addi 3, 3, .LC8@toc@l ++ blr ++.type bcm_loadtoc__dot_LC9, @function ++bcm_loadtoc__dot_LC9: ++.Lbcm_loadtoc__dot_LC9: ++ addis 3, 2, .LC9@toc@ha ++ addi 3, 3, .LC9@toc@l ++ blr ++.type bcm_loadtoc__dot_Lfunction_local_target, @function ++bcm_loadtoc__dot_Lfunction_local_target: ++.Lbcm_loadtoc__dot_Lfunction_local_target: ++ addis 3, 2, .Lfunction_local_target@toc@ha ++ addi 3, 3, .Lfunction_local_target@toc@l ++ blr ++.type bcm_loadtoc__dot_LkString_local_target, @function ++bcm_loadtoc__dot_LkString_local_target: ++.Lbcm_loadtoc__dot_LkString_local_target: ++ addis 3, 2, .LkString_local_target@toc@ha ++ addi 3, 3, .LkString_local_target@toc@l ++ blr ++.LBORINGSSL_external_toc: ++.quad .TOC.-.LBORINGSSL_external_toc ++.type BORINGSSL_bcm_text_hash, @object ++.size BORINGSSL_bcm_text_hash, 32 ++BORINGSSL_bcm_text_hash: ++.byte 0xae ++.byte 0x2c ++.byte 0xea ++.byte 0x2a ++.byte 0xbd ++.byte 0xa6 ++.byte 0xf3 ++.byte 0xec ++.byte 0x97 ++.byte 0x7f ++.byte 0x9b ++.byte 0xf6 ++.byte 0x94 ++.byte 0x9a ++.byte 0xfc ++.byte 0x83 ++.byte 0x68 ++.byte 0x27 ++.byte 0xcb ++.byte 0xa0 ++.byte 0xa0 ++.byte 0x9f ++.byte 0x6b ++.byte 0x6f ++.byte 0xde ++.byte 0x52 ++.byte 0xcd ++.byte 0xe2 ++.byte 0xcd ++.byte 0xff ++.byte 0x31 ++.byte 0x80 +Index: chromium-122.0.6261.128/third_party/boringssl/src/util/fipstools/delocate/testdata/ppc64le-Sample2/in.s +=================================================================== +--- /dev/null ++++ chromium-122.0.6261.128/third_party/boringssl/src/util/fipstools/delocate/testdata/ppc64le-Sample2/in.s +@@ -0,0 +1,226 @@ ++ .file "foo.c" ++ .abiversion 2 ++ .section ".toc","aw" ++ .section ".text" ++ .section ".toc","aw" ++.LC0: ++ .quad stderr ++.LC3: ++ .quad kExportedString ++.LC6: ++ .quad exported_function ++ .section ".text" ++ .align 2 ++ .p2align 4,,15 ++ .globl exported_function ++ .type exported_function, @function ++exported_function: ++0: addis 2,12,.TOC.-0b@ha ++ addi 2,2,.TOC.-0b@l ++ .localentry exported_function,.-exported_function ++ mflr 0 ++ std 19,-104(1) ++ std 20,-96(1) ++ std 21,-88(1) ++ std 22,-80(1) ++ addis 21,2,.LC1@toc@ha ++ addis 22,2,.LC2@toc@ha ++ std 23,-72(1) ++ std 24,-64(1) ++ addis 23,2,.LC4@toc@ha ++ addis 24,2,function@toc@ha ++ std 25,-56(1) ++ std 26,-48(1) ++ addis 25,2,.LC5@toc@ha ++ addis 26,2,.LC7@toc@ha ++ std 27,-40(1) ++ std 28,-32(1) ++ addis 28,2,.LC8@toc@ha ++ addi 21,21,.LC1@toc@l ++ std 29,-24(1) ++ std 30,-16(1) ++ addis 29,2,.LANCHOR0@toc@ha ++ addi 22,22,.LC2@toc@l ++ std 31,-8(1) ++ std 0,16(1) ++ addi 29,29,.LANCHOR0@toc@l ++ addi 23,23,.LC4@toc@l ++ stdu 1,-208(1) ++ addis 31,2,.LC0@toc@ha # gpr load fusion, type long ++ ld 31,.LC0@toc@l(31) ++ addis 19,2,.LC3@toc@ha # gpr load fusion, type long ++ ld 19,.LC3@toc@l(19) ++ addis 30,29,0x5 ++ addi 24,24,function@toc@l ++ addis 20,2,.LC6@toc@ha # gpr load fusion, type long ++ ld 20,.LC6@toc@l(20) ++ addi 25,25,.LC5@toc@l ++ addi 26,26,.LC7@toc@l ++ addi 27,29,5 ++ addi 28,28,.LC8@toc@l ++ addi 30,30,-29404 ++ .p2align 4,,15 ++.L2: ++ ld 3,0(31) ++ mr 5,21 ++ mr 6,29 ++ li 4,1 ++ bl __fprintf_chk ++ nop ++ ld 3,0(31) ++ mr 5,22 ++ mr 6,19 ++ li 4,1 ++ bl __fprintf_chk ++ nop ++ ld 3,0(31) ++ mr 5,23 ++ mr 6,24 ++ li 4,1 ++ bl __fprintf_chk ++ nop ++ ld 3,0(31) ++ mr 5,25 ++ mr 6,20 ++ li 4,1 ++ bl __fprintf_chk ++ nop ++ ld 3,0(31) ++ mr 5,26 ++ mr 6,27 ++ li 4,1 ++ bl __fprintf_chk ++ nop ++ ld 3,0(31) ++ li 4,1 ++ mr 5,28 ++ mr 6,30 ++ bl __fprintf_chk ++ nop ++ b .L2 ++ .long 0 ++ .byte 0,0,0,1,128,13,0,0 ++ .size exported_function,.-exported_function ++ .section ".toc","aw" ++ .set .LC11,.LC0 ++ .set .LC12,.LC3 ++ .set .LC13,.LC6 ++ .section ".text" ++ .align 2 ++ .p2align 4,,15 ++ .type function, @function ++function: ++0: addis 2,12,.TOC.-0b@ha ++ addi 2,2,.TOC.-0b@l ++ .localentry function,.-function ++ mflr 0 ++ std 31,-8(1) ++ addis 31,2,.LC11@toc@ha # gpr load fusion, type long ++ ld 31,.LC11@toc@l(31) ++ addis 5,2,.LC1@toc@ha ++ std 30,-16(1) ++ addis 30,2,.LANCHOR0@toc@ha ++ addi 5,5,.LC1@toc@l ++ addi 30,30,.LANCHOR0@toc@l ++ li 4,1 ++ mr 6,30 ++ std 0,16(1) ++ stdu 1,-112(1) ++ ld 3,0(31) ++ bl __fprintf_chk ++ nop ++ addis 6,2,.LC12@toc@ha # gpr load fusion, type long ++ ld 6,.LC12@toc@l(6) ++ ld 3,0(31) ++ addis 5,2,.LC2@toc@ha ++ li 4,1 ++ addi 5,5,.LC2@toc@l ++ bl __fprintf_chk ++ nop ++ ld 3,0(31) ++ addis 5,2,.LC4@toc@ha ++ addis 6,2,function@toc@ha ++ addi 5,5,.LC4@toc@l ++ addi 6,6,function@toc@l ++ li 4,1 ++ bl __fprintf_chk ++ nop ++ addis 6,2,.LC13@toc@ha # gpr load fusion, type long ++ ld 6,.LC13@toc@l(6) ++ ld 3,0(31) ++ addis 5,2,.LC5@toc@ha ++ li 4,1 ++ addi 5,5,.LC5@toc@l ++ bl __fprintf_chk ++ nop ++ ld 3,0(31) ++ addis 5,2,.LC7@toc@ha ++ addi 6,30,5 ++ addi 5,5,.LC7@toc@l ++ li 4,1 ++ bl __fprintf_chk ++ nop ++ ld 3,0(31) ++ addis 6,30,0x5 ++ addis 5,2,.LC8@toc@ha ++ li 4,1 ++ addi 5,5,.LC8@toc@l ++ addi 6,6,-29404 ++ bl __fprintf_chk ++ nop ++ bl exported_function ++ nop ++ addi 1,1,112 ++ ld 0,16(1) ++ ld 30,-16(1) ++ ld 31,-8(1) ++ mtlr 0 ++ blr ++ .long 0 ++ .byte 0,0,0,1,128,2,0,0 ++ .size function,.-function ++ .globl kExportedString ++ .section .rodata ++ .align 4 ++ .set .LANCHOR0,. + 0 ++ .type kString, @object ++ .size kString, 12 ++kString: ++ .string "hello world" ++ .zero 4 ++ .type kGiantArray, @object ++ .size kGiantArray, 400000 ++kGiantArray: ++ .long 1 ++ .long 0 ++ .zero 399992 ++ .type kExportedString, @object ++ .size kExportedString, 26 ++kExportedString: ++ .string "hello world, more visibly" ++ .section .rodata.str1.8,"aMS",@progbits,1 ++ .align 3 ++.LC1: ++ .string "kString is %p\n" ++ .zero 1 ++.LC2: ++ .string "kExportedString is %p\n" ++ .zero 1 ++.LC4: ++ .string "function is %p\n" ++.LC5: ++ .string "exported_function is %p\n" ++ .zero 7 ++.LC7: ++ .string "&kString[5] is %p\n" ++ .zero 5 ++.LC8: ++ .string "&kGiantArray[0x12345] is %p\n" ++ .section ".bss" ++ .align 2 ++ .type bss, @object ++ .size bss, 20 ++bss: ++ .zero 20 ++ .ident "GCC: (Ubuntu 4.9.2-10ubuntu13) 4.9.2" ++ .section .note.GNU-stack,"",@progbits +Index: chromium-122.0.6261.128/third_party/boringssl/src/util/fipstools/delocate/testdata/ppc64le-Sample2/out.s +=================================================================== +--- /dev/null ++++ chromium-122.0.6261.128/third_party/boringssl/src/util/fipstools/delocate/testdata/ppc64le-Sample2/out.s +@@ -0,0 +1,677 @@ ++.text ++.file 1 "inserted_by_delocate.c" ++.loc 1 1 0 ++BORINGSSL_bcm_text_start: ++ .file "foo.c" ++ .abiversion 2 ++ .section ".toc","aw" ++# WAS .section ".text" ++.text ++ .section ".toc","aw" ++.LC0: ++ ++ .quad stderr ++.LC3: ++ ++ .quad kExportedString ++.LC6: ++ ++ .quad exported_function ++# WAS .section ".text" ++.text ++ .align 2 ++ .p2align 4,,15 ++ .globl exported_function ++ .type exported_function, @function ++.Lexported_function_local_target: ++exported_function: ++0: ++999: ++ addis 2, 12, .LBORINGSSL_external_toc-999b@ha ++ addi 2, 2, .LBORINGSSL_external_toc-999b@l ++ ld 12, 0(2) ++ add 2, 2, 12 ++# WAS addi 2,2,.TOC.-0b@l ++ .localentry exported_function,.-exported_function ++.Lexported_function_local_entry: ++ mflr 0 ++ std 19,-104(1) ++ std 20,-96(1) ++ std 21,-88(1) ++ std 22,-80(1) ++# WAS addis 21,2,.LC1@toc@ha ++# WAS addis 22,2,.LC2@toc@ha ++ std 23,-72(1) ++ std 24,-64(1) ++# WAS addis 23,2,.LC4@toc@ha ++# WAS addis 24,2,function@toc@ha ++ std 25,-56(1) ++ std 26,-48(1) ++# WAS addis 25,2,.LC5@toc@ha ++# WAS addis 26,2,.LC7@toc@ha ++ std 27,-40(1) ++ std 28,-32(1) ++# WAS addis 28,2,.LC8@toc@ha ++# WAS addi 21,21,.LC1@toc@l ++ addi 1, 1, -288 ++ mflr 21 ++ std 21, -8(1) ++ std 3, -16(1) ++ bl .Lbcm_loadtoc__dot_LC1 ++ std 3, -24(1) ++ ld 3, -8(1) ++ mtlr 3 ++ ld 21, -24(1) ++ ld 3, -16(1) ++ addi 1, 1, 288 ++ std 29,-24(1) ++ std 30,-16(1) ++# WAS addis 29,2,.LANCHOR0@toc@ha ++# WAS addi 22,22,.LC2@toc@l ++ addi 1, 1, -288 ++ mflr 22 ++ std 22, -8(1) ++ std 3, -16(1) ++ bl .Lbcm_loadtoc__dot_LC2 ++ std 3, -24(1) ++ ld 3, -8(1) ++ mtlr 3 ++ ld 22, -24(1) ++ ld 3, -16(1) ++ addi 1, 1, 288 ++ std 31,-8(1) ++ std 0,16(1) ++# WAS addi 29,29,.LANCHOR0@toc@l ++ addi 1, 1, -288 ++ mflr 29 ++ std 29, -8(1) ++ std 3, -16(1) ++ bl .Lbcm_loadtoc__dot_LANCHOR0 ++ std 3, -24(1) ++ ld 3, -8(1) ++ mtlr 3 ++ ld 29, -24(1) ++ ld 3, -16(1) ++ addi 1, 1, 288 ++# WAS addi 23,23,.LC4@toc@l ++ addi 1, 1, -288 ++ mflr 23 ++ std 23, -8(1) ++ std 3, -16(1) ++ bl .Lbcm_loadtoc__dot_LC4 ++ std 3, -24(1) ++ ld 3, -8(1) ++ mtlr 3 ++ ld 23, -24(1) ++ ld 3, -16(1) ++ addi 1, 1, 288 ++ stdu 1,-208(1) ++# WAS addis 31,2,.LC0@toc@ha # gpr load fusion, type long ++# WAS ld 31,.LC0@toc@l(31) ++ addi 1, 1, -288 ++ mflr 31 ++ std 31, -8(1) ++ std 3, -16(1) ++ bl .Lbcm_loadtoc__dot_LC0 ++ std 3, -24(1) ++ ld 3, -8(1) ++ mtlr 3 ++ ld 31, -24(1) ++ ld 3, -16(1) ++ addi 1, 1, 288 ++ ld 31, 0(31) ++# WAS addis 19,2,.LC3@toc@ha # gpr load fusion, type long ++# WAS ld 19,.LC3@toc@l(19) ++ addi 1, 1, -288 ++ mflr 19 ++ std 19, -8(1) ++ std 3, -16(1) ++ bl .Lbcm_loadtoc__dot_LC3 ++ std 3, -24(1) ++ ld 3, -8(1) ++ mtlr 3 ++ ld 19, -24(1) ++ ld 3, -16(1) ++ addi 1, 1, 288 ++ ld 19, 0(19) ++ addis 30,29,0x5 ++# WAS addi 24,24,function@toc@l ++ addi 1, 1, -288 ++ mflr 24 ++ std 24, -8(1) ++ std 3, -16(1) ++ bl .Lbcm_loadtoc__dot_Lfunction_local_target ++ std 3, -24(1) ++ ld 3, -8(1) ++ mtlr 3 ++ ld 24, -24(1) ++ ld 3, -16(1) ++ addi 1, 1, 288 ++# WAS addis 20,2,.LC6@toc@ha # gpr load fusion, type long ++# WAS ld 20,.LC6@toc@l(20) ++ addi 1, 1, -288 ++ mflr 20 ++ std 20, -8(1) ++ std 3, -16(1) ++ bl .Lbcm_loadtoc__dot_LC6 ++ std 3, -24(1) ++ ld 3, -8(1) ++ mtlr 3 ++ ld 20, -24(1) ++ ld 3, -16(1) ++ addi 1, 1, 288 ++ ld 20, 0(20) ++# WAS addi 25,25,.LC5@toc@l ++ addi 1, 1, -288 ++ mflr 25 ++ std 25, -8(1) ++ std 3, -16(1) ++ bl .Lbcm_loadtoc__dot_LC5 ++ std 3, -24(1) ++ ld 3, -8(1) ++ mtlr 3 ++ ld 25, -24(1) ++ ld 3, -16(1) ++ addi 1, 1, 288 ++# WAS addi 26,26,.LC7@toc@l ++ addi 1, 1, -288 ++ mflr 26 ++ std 26, -8(1) ++ std 3, -16(1) ++ bl .Lbcm_loadtoc__dot_LC7 ++ std 3, -24(1) ++ ld 3, -8(1) ++ mtlr 3 ++ ld 26, -24(1) ++ ld 3, -16(1) ++ addi 1, 1, 288 ++ addi 27,29,5 ++# WAS addi 28,28,.LC8@toc@l ++ addi 1, 1, -288 ++ mflr 28 ++ std 28, -8(1) ++ std 3, -16(1) ++ bl .Lbcm_loadtoc__dot_LC8 ++ std 3, -24(1) ++ ld 3, -8(1) ++ mtlr 3 ++ ld 28, -24(1) ++ ld 3, -16(1) ++ addi 1, 1, 288 ++ addi 30,30,-29404 ++ .p2align 4,,15 ++.L2: ++ ++ ld 3,0(31) ++ mr 5,21 ++ mr 6,29 ++ li 4,1 ++# WAS bl __fprintf_chk ++ bl bcm_redirector___fprintf_chk ++ ld 2, 24(1) ++ nop ++ ld 3,0(31) ++ mr 5,22 ++ mr 6,19 ++ li 4,1 ++# WAS bl __fprintf_chk ++ bl bcm_redirector___fprintf_chk ++ ld 2, 24(1) ++ nop ++ ld 3,0(31) ++ mr 5,23 ++ mr 6,24 ++ li 4,1 ++# WAS bl __fprintf_chk ++ bl bcm_redirector___fprintf_chk ++ ld 2, 24(1) ++ nop ++ ld 3,0(31) ++ mr 5,25 ++ mr 6,20 ++ li 4,1 ++# WAS bl __fprintf_chk ++ bl bcm_redirector___fprintf_chk ++ ld 2, 24(1) ++ nop ++ ld 3,0(31) ++ mr 5,26 ++ mr 6,27 ++ li 4,1 ++# WAS bl __fprintf_chk ++ bl bcm_redirector___fprintf_chk ++ ld 2, 24(1) ++ nop ++ ld 3,0(31) ++ li 4,1 ++ mr 5,28 ++ mr 6,30 ++# WAS bl __fprintf_chk ++ bl bcm_redirector___fprintf_chk ++ ld 2, 24(1) ++ nop ++ b .L2 ++ .long 0 ++ .byte 0,0,0,1,128,13,0,0 ++ .size exported_function,.-exported_function ++ .section ".toc","aw" ++ .set .LC11,.LC0 ++ .set .LC12,.LC3 ++ .set .LC13,.LC6 ++# WAS .section ".text" ++.text ++ .align 2 ++ .p2align 4,,15 ++ .type function, @function ++.Lfunction_local_target: ++function: ++0: ++999: ++ addis 2, 12, .LBORINGSSL_external_toc-999b@ha ++ addi 2, 2, .LBORINGSSL_external_toc-999b@l ++ ld 12, 0(2) ++ add 2, 2, 12 ++# WAS addi 2,2,.TOC.-0b@l ++ .localentry function,.-function ++.Lfunction_local_entry: ++ mflr 0 ++ std 31,-8(1) ++# WAS addis 31,2,.LC11@toc@ha # gpr load fusion, type long ++# WAS ld 31,.LC11@toc@l(31) ++ addi 1, 1, -288 ++ mflr 31 ++ std 31, -8(1) ++ std 3, -16(1) ++ bl .Lbcm_loadtoc__dot_LC11 ++ std 3, -24(1) ++ ld 3, -8(1) ++ mtlr 3 ++ ld 31, -24(1) ++ ld 3, -16(1) ++ addi 1, 1, 288 ++ ld 31, 0(31) ++# WAS addis 5,2,.LC1@toc@ha ++ std 30,-16(1) ++# WAS addis 30,2,.LANCHOR0@toc@ha ++# WAS addi 5,5,.LC1@toc@l ++ addi 1, 1, -288 ++ mflr 5 ++ std 5, -8(1) ++ std 3, -16(1) ++ bl .Lbcm_loadtoc__dot_LC1 ++ std 3, -24(1) ++ ld 3, -8(1) ++ mtlr 3 ++ ld 5, -24(1) ++ ld 3, -16(1) ++ addi 1, 1, 288 ++# WAS addi 30,30,.LANCHOR0@toc@l ++ addi 1, 1, -288 ++ mflr 30 ++ std 30, -8(1) ++ std 3, -16(1) ++ bl .Lbcm_loadtoc__dot_LANCHOR0 ++ std 3, -24(1) ++ ld 3, -8(1) ++ mtlr 3 ++ ld 30, -24(1) ++ ld 3, -16(1) ++ addi 1, 1, 288 ++ li 4,1 ++ mr 6,30 ++ std 0,16(1) ++ stdu 1,-112(1) ++ ld 3,0(31) ++# WAS bl __fprintf_chk ++ bl bcm_redirector___fprintf_chk ++ ld 2, 24(1) ++ nop ++# WAS addis 6,2,.LC12@toc@ha # gpr load fusion, type long ++# WAS ld 6,.LC12@toc@l(6) ++ addi 1, 1, -288 ++ mflr 6 ++ std 6, -8(1) ++ std 3, -16(1) ++ bl .Lbcm_loadtoc__dot_LC12 ++ std 3, -24(1) ++ ld 3, -8(1) ++ mtlr 3 ++ ld 6, -24(1) ++ ld 3, -16(1) ++ addi 1, 1, 288 ++ ld 6, 0(6) ++ ld 3,0(31) ++# WAS addis 5,2,.LC2@toc@ha ++ li 4,1 ++# WAS addi 5,5,.LC2@toc@l ++ addi 1, 1, -288 ++ mflr 5 ++ std 5, -8(1) ++ std 3, -16(1) ++ bl .Lbcm_loadtoc__dot_LC2 ++ std 3, -24(1) ++ ld 3, -8(1) ++ mtlr 3 ++ ld 5, -24(1) ++ ld 3, -16(1) ++ addi 1, 1, 288 ++# WAS bl __fprintf_chk ++ bl bcm_redirector___fprintf_chk ++ ld 2, 24(1) ++ nop ++ ld 3,0(31) ++# WAS addis 5,2,.LC4@toc@ha ++# WAS addis 6,2,function@toc@ha ++# WAS addi 5,5,.LC4@toc@l ++ addi 1, 1, -288 ++ mflr 5 ++ std 5, -8(1) ++ std 3, -16(1) ++ bl .Lbcm_loadtoc__dot_LC4 ++ std 3, -24(1) ++ ld 3, -8(1) ++ mtlr 3 ++ ld 5, -24(1) ++ ld 3, -16(1) ++ addi 1, 1, 288 ++# WAS addi 6,6,function@toc@l ++ addi 1, 1, -288 ++ mflr 6 ++ std 6, -8(1) ++ std 3, -16(1) ++ bl .Lbcm_loadtoc__dot_Lfunction_local_target ++ std 3, -24(1) ++ ld 3, -8(1) ++ mtlr 3 ++ ld 6, -24(1) ++ ld 3, -16(1) ++ addi 1, 1, 288 ++ li 4,1 ++# WAS bl __fprintf_chk ++ bl bcm_redirector___fprintf_chk ++ ld 2, 24(1) ++ nop ++# WAS addis 6,2,.LC13@toc@ha # gpr load fusion, type long ++# WAS ld 6,.LC13@toc@l(6) ++ addi 1, 1, -288 ++ mflr 6 ++ std 6, -8(1) ++ std 3, -16(1) ++ bl .Lbcm_loadtoc__dot_LC13 ++ std 3, -24(1) ++ ld 3, -8(1) ++ mtlr 3 ++ ld 6, -24(1) ++ ld 3, -16(1) ++ addi 1, 1, 288 ++ ld 6, 0(6) ++ ld 3,0(31) ++# WAS addis 5,2,.LC5@toc@ha ++ li 4,1 ++# WAS addi 5,5,.LC5@toc@l ++ addi 1, 1, -288 ++ mflr 5 ++ std 5, -8(1) ++ std 3, -16(1) ++ bl .Lbcm_loadtoc__dot_LC5 ++ std 3, -24(1) ++ ld 3, -8(1) ++ mtlr 3 ++ ld 5, -24(1) ++ ld 3, -16(1) ++ addi 1, 1, 288 ++# WAS bl __fprintf_chk ++ bl bcm_redirector___fprintf_chk ++ ld 2, 24(1) ++ nop ++ ld 3,0(31) ++# WAS addis 5,2,.LC7@toc@ha ++ addi 6,30,5 ++# WAS addi 5,5,.LC7@toc@l ++ addi 1, 1, -288 ++ mflr 5 ++ std 5, -8(1) ++ std 3, -16(1) ++ bl .Lbcm_loadtoc__dot_LC7 ++ std 3, -24(1) ++ ld 3, -8(1) ++ mtlr 3 ++ ld 5, -24(1) ++ ld 3, -16(1) ++ addi 1, 1, 288 ++ li 4,1 ++# WAS bl __fprintf_chk ++ bl bcm_redirector___fprintf_chk ++ ld 2, 24(1) ++ nop ++ ld 3,0(31) ++ addis 6,30,0x5 ++# WAS addis 5,2,.LC8@toc@ha ++ li 4,1 ++# WAS addi 5,5,.LC8@toc@l ++ addi 1, 1, -288 ++ mflr 5 ++ std 5, -8(1) ++ std 3, -16(1) ++ bl .Lbcm_loadtoc__dot_LC8 ++ std 3, -24(1) ++ ld 3, -8(1) ++ mtlr 3 ++ ld 5, -24(1) ++ ld 3, -16(1) ++ addi 1, 1, 288 ++ addi 6,6,-29404 ++# WAS bl __fprintf_chk ++ bl bcm_redirector___fprintf_chk ++ ld 2, 24(1) ++ nop ++# WAS bl exported_function ++ bl .Lexported_function_local_entry ++ nop ++ addi 1,1,112 ++ ld 0,16(1) ++ ld 30,-16(1) ++ ld 31,-8(1) ++ mtlr 0 ++ blr ++ .long 0 ++ .byte 0,0,0,1,128,2,0,0 ++ .size function,.-function ++ .globl kExportedString ++# WAS .section .rodata ++.text ++ .align 4 ++ .set .LANCHOR0,. + 0 ++ .type kString, @object ++ .size kString, 12 ++.LkString_local_target: ++kString: ++ .string "hello world" ++ .zero 4 ++ .type kGiantArray, @object ++ .size kGiantArray, 400000 ++.LkGiantArray_local_target: ++kGiantArray: ++ .long 1 ++ .long 0 ++ .zero 399992 ++ .type kExportedString, @object ++ .size kExportedString, 26 ++.LkExportedString_local_target: ++kExportedString: ++ .string "hello world, more visibly" ++# WAS .section .rodata.str1.8,"aMS",@progbits,1 ++.text ++ .align 3 ++.LC1: ++ ++ .string "kString is %p\n" ++ .zero 1 ++.LC2: ++ ++ .string "kExportedString is %p\n" ++ .zero 1 ++.LC4: ++ ++ .string "function is %p\n" ++.LC5: ++ ++ .string "exported_function is %p\n" ++ .zero 7 ++.LC7: ++ ++ .string "&kString[5] is %p\n" ++ .zero 5 ++.LC8: ++ ++ .string "&kGiantArray[0x12345] is %p\n" ++ .section ".bss" ++ .align 2 ++ .type bss, @object ++ .size bss, 20 ++bss: ++.Lbss_local_target: ++ ++ .zero 20 ++ .ident "GCC: (Ubuntu 4.9.2-10ubuntu13) 4.9.2" ++ .section .note.GNU-stack,"",@progbits ++.text ++.loc 1 2 0 ++BORINGSSL_bcm_text_end: ++.section ".toc", "aw" ++.Lredirector_toc___fprintf_chk: ++.quad __fprintf_chk ++.text ++.type bcm_redirector___fprintf_chk, @function ++bcm_redirector___fprintf_chk: ++ std 2, 24(1) ++ addis 12, 2, .Lredirector_toc___fprintf_chk@toc@ha ++ ld 12, .Lredirector_toc___fprintf_chk@toc@l(12) ++ mtctr 12 ++ bctr ++.type bss_bss_get, @function ++bss_bss_get: ++ addis 3, 2, .Lbss_local_target@toc@ha ++ addi 3, 3, .Lbss_local_target@toc@l ++ blr ++.type bcm_loadtoc__dot_LANCHOR0, @function ++bcm_loadtoc__dot_LANCHOR0: ++.Lbcm_loadtoc__dot_LANCHOR0: ++ addis 3, 2, .LANCHOR0@toc@ha ++ addi 3, 3, .LANCHOR0@toc@l ++ blr ++.type bcm_loadtoc__dot_LC0, @function ++bcm_loadtoc__dot_LC0: ++.Lbcm_loadtoc__dot_LC0: ++ addis 3, 2, .LC0@toc@ha ++ addi 3, 3, .LC0@toc@l ++ blr ++.type bcm_loadtoc__dot_LC1, @function ++bcm_loadtoc__dot_LC1: ++.Lbcm_loadtoc__dot_LC1: ++ addis 3, 2, .LC1@toc@ha ++ addi 3, 3, .LC1@toc@l ++ blr ++.type bcm_loadtoc__dot_LC11, @function ++bcm_loadtoc__dot_LC11: ++.Lbcm_loadtoc__dot_LC11: ++ addis 3, 2, .LC11@toc@ha ++ addi 3, 3, .LC11@toc@l ++ blr ++.type bcm_loadtoc__dot_LC12, @function ++bcm_loadtoc__dot_LC12: ++.Lbcm_loadtoc__dot_LC12: ++ addis 3, 2, .LC12@toc@ha ++ addi 3, 3, .LC12@toc@l ++ blr ++.type bcm_loadtoc__dot_LC13, @function ++bcm_loadtoc__dot_LC13: ++.Lbcm_loadtoc__dot_LC13: ++ addis 3, 2, .LC13@toc@ha ++ addi 3, 3, .LC13@toc@l ++ blr ++.type bcm_loadtoc__dot_LC2, @function ++bcm_loadtoc__dot_LC2: ++.Lbcm_loadtoc__dot_LC2: ++ addis 3, 2, .LC2@toc@ha ++ addi 3, 3, .LC2@toc@l ++ blr ++.type bcm_loadtoc__dot_LC3, @function ++bcm_loadtoc__dot_LC3: ++.Lbcm_loadtoc__dot_LC3: ++ addis 3, 2, .LC3@toc@ha ++ addi 3, 3, .LC3@toc@l ++ blr ++.type bcm_loadtoc__dot_LC4, @function ++bcm_loadtoc__dot_LC4: ++.Lbcm_loadtoc__dot_LC4: ++ addis 3, 2, .LC4@toc@ha ++ addi 3, 3, .LC4@toc@l ++ blr ++.type bcm_loadtoc__dot_LC5, @function ++bcm_loadtoc__dot_LC5: ++.Lbcm_loadtoc__dot_LC5: ++ addis 3, 2, .LC5@toc@ha ++ addi 3, 3, .LC5@toc@l ++ blr ++.type bcm_loadtoc__dot_LC6, @function ++bcm_loadtoc__dot_LC6: ++.Lbcm_loadtoc__dot_LC6: ++ addis 3, 2, .LC6@toc@ha ++ addi 3, 3, .LC6@toc@l ++ blr ++.type bcm_loadtoc__dot_LC7, @function ++bcm_loadtoc__dot_LC7: ++.Lbcm_loadtoc__dot_LC7: ++ addis 3, 2, .LC7@toc@ha ++ addi 3, 3, .LC7@toc@l ++ blr ++.type bcm_loadtoc__dot_LC8, @function ++bcm_loadtoc__dot_LC8: ++.Lbcm_loadtoc__dot_LC8: ++ addis 3, 2, .LC8@toc@ha ++ addi 3, 3, .LC8@toc@l ++ blr ++.type bcm_loadtoc__dot_Lfunction_local_target, @function ++bcm_loadtoc__dot_Lfunction_local_target: ++.Lbcm_loadtoc__dot_Lfunction_local_target: ++ addis 3, 2, .Lfunction_local_target@toc@ha ++ addi 3, 3, .Lfunction_local_target@toc@l ++ blr ++.LBORINGSSL_external_toc: ++.quad .TOC.-.LBORINGSSL_external_toc ++.type BORINGSSL_bcm_text_hash, @object ++.size BORINGSSL_bcm_text_hash, 32 ++BORINGSSL_bcm_text_hash: ++.byte 0xae ++.byte 0x2c ++.byte 0xea ++.byte 0x2a ++.byte 0xbd ++.byte 0xa6 ++.byte 0xf3 ++.byte 0xec ++.byte 0x97 ++.byte 0x7f ++.byte 0x9b ++.byte 0xf6 ++.byte 0x94 ++.byte 0x9a ++.byte 0xfc ++.byte 0x83 ++.byte 0x68 ++.byte 0x27 ++.byte 0xcb ++.byte 0xa0 ++.byte 0xa0 ++.byte 0x9f ++.byte 0x6b ++.byte 0x6f ++.byte 0xde ++.byte 0x52 ++.byte 0xcd ++.byte 0xe2 ++.byte 0xcd ++.byte 0xff ++.byte 0x31 ++.byte 0x80 +Index: chromium-122.0.6261.128/third_party/boringssl/src/util/fipstools/delocate/testdata/ppc64le-TOCWithOffset/in.s +=================================================================== +--- /dev/null ++++ chromium-122.0.6261.128/third_party/boringssl/src/util/fipstools/delocate/testdata/ppc64le-TOCWithOffset/in.s +@@ -0,0 +1,23 @@ ++ .text ++foo: ++ # TOC references may have offsets. ++ addis 3, 2, 5+foo@toc@ha ++ addi 3, 3, 10+foo@toc@l ++ ++ addis 3, 2, 15+foo@toc@ha ++ addi 3, 3, 20+foo@toc@l ++ ++ addis 4, 2, foo@toc@ha ++ addi 4, 4, foo@toc@l ++ ++ addis 5, 2, 5+foo@toc@ha ++ ld 5, 10+foo@toc@l(5) ++ ++ addis 4, 2, foo-10@toc@ha ++ addi 4, 4, foo-10@toc@l ++ ++ addis 4, 2, foo@toc@ha+25 ++ addi 4, 4, foo@toc@l+25 ++ ++ addis 4, 2, 1+foo-2@toc@ha+3 ++ addi 4, 4, 1+foo-2@toc@l+3 +Index: chromium-122.0.6261.128/third_party/boringssl/src/util/fipstools/delocate/testdata/ppc64le-TOCWithOffset/out.s +=================================================================== +--- /dev/null ++++ chromium-122.0.6261.128/third_party/boringssl/src/util/fipstools/delocate/testdata/ppc64le-TOCWithOffset/out.s +@@ -0,0 +1,178 @@ ++.text ++.file 1 "inserted_by_delocate.c" ++.loc 1 1 0 ++BORINGSSL_bcm_text_start: ++ .text ++.Lfoo_local_target: ++foo: ++ # TOC references may have offsets. ++# WAS addis 3, 2, 5+foo@toc@ha ++# WAS addi 3, 3, 10+foo@toc@l ++ addi 1, 1, -288 ++ mflr 3 ++ std 3, -8(1) ++ bl .Lbcm_loadtoc__dot_Lfoo_local_target__plus_10 ++ std 3, -24(1) ++ ld 3, -8(1) ++ mtlr 3 ++ ld 3, -24(1) ++ addi 1, 1, 288 ++ ++# WAS addis 3, 2, 15+foo@toc@ha ++# WAS addi 3, 3, 20+foo@toc@l ++ addi 1, 1, -288 ++ mflr 3 ++ std 3, -8(1) ++ bl .Lbcm_loadtoc__dot_Lfoo_local_target__plus_20 ++ std 3, -24(1) ++ ld 3, -8(1) ++ mtlr 3 ++ ld 3, -24(1) ++ addi 1, 1, 288 ++ ++# WAS addis 4, 2, foo@toc@ha ++# WAS addi 4, 4, foo@toc@l ++ addi 1, 1, -288 ++ mflr 4 ++ std 4, -8(1) ++ std 3, -16(1) ++ bl .Lbcm_loadtoc__dot_Lfoo_local_target ++ std 3, -24(1) ++ ld 3, -8(1) ++ mtlr 3 ++ ld 4, -24(1) ++ ld 3, -16(1) ++ addi 1, 1, 288 ++ ++# WAS addis 5, 2, 5+foo@toc@ha ++# WAS ld 5, 10+foo@toc@l(5) ++ addi 1, 1, -288 ++ mflr 5 ++ std 5, -8(1) ++ std 3, -16(1) ++ bl .Lbcm_loadtoc__dot_Lfoo_local_target__plus_10 ++ std 3, -24(1) ++ ld 3, -8(1) ++ mtlr 3 ++ ld 5, -24(1) ++ ld 3, -16(1) ++ addi 1, 1, 288 ++ ld 5, 0(5) ++ ++# WAS addis 4, 2, foo-10@toc@ha ++# WAS addi 4, 4, foo-10@toc@l ++ addi 1, 1, -288 ++ mflr 4 ++ std 4, -8(1) ++ std 3, -16(1) ++ bl .Lbcm_loadtoc__dot_Lfoo_local_target__minus_10 ++ std 3, -24(1) ++ ld 3, -8(1) ++ mtlr 3 ++ ld 4, -24(1) ++ ld 3, -16(1) ++ addi 1, 1, 288 ++ ++# WAS addis 4, 2, foo@toc@ha+25 ++# WAS addi 4, 4, foo@toc@l+25 ++ addi 1, 1, -288 ++ mflr 4 ++ std 4, -8(1) ++ std 3, -16(1) ++ bl .Lbcm_loadtoc__dot_Lfoo_local_target__plus_25 ++ std 3, -24(1) ++ ld 3, -8(1) ++ mtlr 3 ++ ld 4, -24(1) ++ ld 3, -16(1) ++ addi 1, 1, 288 ++ ++# WAS addis 4, 2, 1+foo-2@toc@ha+3 ++# WAS addi 4, 4, 1+foo-2@toc@l+3 ++ addi 1, 1, -288 ++ mflr 4 ++ std 4, -8(1) ++ std 3, -16(1) ++ bl .Lbcm_loadtoc__dot_Lfoo_local_target__plus_1_minus_2_plus_3 ++ std 3, -24(1) ++ ld 3, -8(1) ++ mtlr 3 ++ ld 4, -24(1) ++ ld 3, -16(1) ++ addi 1, 1, 288 ++.text ++.loc 1 2 0 ++BORINGSSL_bcm_text_end: ++.type bcm_loadtoc__dot_Lfoo_local_target, @function ++bcm_loadtoc__dot_Lfoo_local_target: ++.Lbcm_loadtoc__dot_Lfoo_local_target: ++ addis 3, 2, .Lfoo_local_target@toc@ha ++ addi 3, 3, .Lfoo_local_target@toc@l ++ blr ++.type bcm_loadtoc__dot_Lfoo_local_target__plus_1_minus_2_plus_3, @function ++bcm_loadtoc__dot_Lfoo_local_target__plus_1_minus_2_plus_3: ++.Lbcm_loadtoc__dot_Lfoo_local_target__plus_1_minus_2_plus_3: ++ addis 3, 2, .Lfoo_local_target+1-2+3@toc@ha ++ addi 3, 3, .Lfoo_local_target+1-2+3@toc@l ++ blr ++.type bcm_loadtoc__dot_Lfoo_local_target__plus_10, @function ++bcm_loadtoc__dot_Lfoo_local_target__plus_10: ++.Lbcm_loadtoc__dot_Lfoo_local_target__plus_10: ++ addis 3, 2, .Lfoo_local_target+10@toc@ha ++ addi 3, 3, .Lfoo_local_target+10@toc@l ++ blr ++.type bcm_loadtoc__dot_Lfoo_local_target__plus_20, @function ++bcm_loadtoc__dot_Lfoo_local_target__plus_20: ++.Lbcm_loadtoc__dot_Lfoo_local_target__plus_20: ++ addis 3, 2, .Lfoo_local_target+20@toc@ha ++ addi 3, 3, .Lfoo_local_target+20@toc@l ++ blr ++.type bcm_loadtoc__dot_Lfoo_local_target__plus_25, @function ++bcm_loadtoc__dot_Lfoo_local_target__plus_25: ++.Lbcm_loadtoc__dot_Lfoo_local_target__plus_25: ++ addis 3, 2, .Lfoo_local_target+25@toc@ha ++ addi 3, 3, .Lfoo_local_target+25@toc@l ++ blr ++.type bcm_loadtoc__dot_Lfoo_local_target__minus_10, @function ++bcm_loadtoc__dot_Lfoo_local_target__minus_10: ++.Lbcm_loadtoc__dot_Lfoo_local_target__minus_10: ++ addis 3, 2, .Lfoo_local_target-10@toc@ha ++ addi 3, 3, .Lfoo_local_target-10@toc@l ++ blr ++.LBORINGSSL_external_toc: ++.quad .TOC.-.LBORINGSSL_external_toc ++.type BORINGSSL_bcm_text_hash, @object ++.size BORINGSSL_bcm_text_hash, 32 ++BORINGSSL_bcm_text_hash: ++.byte 0xae ++.byte 0x2c ++.byte 0xea ++.byte 0x2a ++.byte 0xbd ++.byte 0xa6 ++.byte 0xf3 ++.byte 0xec ++.byte 0x97 ++.byte 0x7f ++.byte 0x9b ++.byte 0xf6 ++.byte 0x94 ++.byte 0x9a ++.byte 0xfc ++.byte 0x83 ++.byte 0x68 ++.byte 0x27 ++.byte 0xcb ++.byte 0xa0 ++.byte 0xa0 ++.byte 0x9f ++.byte 0x6b ++.byte 0x6f ++.byte 0xde ++.byte 0x52 ++.byte 0xcd ++.byte 0xe2 ++.byte 0xcd ++.byte 0xff ++.byte 0x31 ++.byte 0x80 +Index: chromium-122.0.6261.128/third_party/boringssl/src/util/generate_build_files.py +=================================================================== +--- chromium-122.0.6261.128.orig/third_party/boringssl/src/util/generate_build_files.py ++++ chromium-122.0.6261.128/third_party/boringssl/src/util/generate_build_files.py +@@ -35,6 +35,7 @@ OS_ARCH_COMBOS = [ + ('apple', 'x86_64', 'macosx', [], 'S'), + ('linux', 'arm', 'linux32', [], 'S'), + ('linux', 'aarch64', 'linux64', [], 'S'), ++ ('linux', 'ppc64le', 'linux64le', [], 'S'), + ('linux', 'x86', 'elf', ['-fPIC', '-DOPENSSL_IA32_SSE2'], 'S'), + ('linux', 'x86_64', 'elf', [], 'S'), + ('win', 'x86', 'win32n', ['-DOPENSSL_IA32_SSE2'], 'asm'), +Index: chromium-122.0.6261.128/third_party/lss/linux_syscall_support.h +=================================================================== +--- chromium-122.0.6261.128.orig/third_party/lss/linux_syscall_support.h ++++ chromium-122.0.6261.128/third_party/lss/linux_syscall_support.h +@@ -4638,7 +4638,7 @@ struct kernel_statx { + LSS_REG(2, buf); + LSS_BODY(void*, mmap2, "0"(__r2)); + } +-#else ++#elif !defined(__powerpc64__) /* ppc64 doesn't have mmap2 */ + #define __NR__mmap2 __NR_mmap2 + LSS_INLINE _syscall6(void*, _mmap2, void*, s, + size_t, l, int, p, +@@ -4749,7 +4749,7 @@ struct kernel_statx { + #if defined(__i386__) || \ + defined(__ARM_ARCH_3__) || defined(__ARM_EABI__) || \ + (defined(__mips__) && _MIPS_SIM == _MIPS_SIM_ABI32) || \ +- defined(__PPC__) || \ ++ (defined(__PPC__) && !defined(__powerpc64__)) || \ + (defined(__s390__) && !defined(__s390x__)) + /* On these architectures, implement mmap() with mmap2(). */ + LSS_INLINE void* LSS_NAME(mmap)(void *s, size_t l, int p, int f, int d, +Index: chromium-122.0.6261.128/third_party/lss/linux_syscall_support.h +=================================================================== +--- chromium-122.0.6261.128.orig/third_party/lss/linux_syscall_support.h ++++ chromium-122.0.6261.128/third_party/lss/linux_syscall_support.h +@@ -87,7 +87,7 @@ + * Porting to other related platforms should not be difficult. + */ + #if (defined(__i386__) || defined(__x86_64__) || defined(__ARM_ARCH_3__) || \ +- defined(__mips__) || defined(__PPC__) || defined(__ARM_EABI__) || \ ++ defined(__mips__) || defined(__PPC__) || defined(__powerpc64__) || defined(__ARM_EABI__) || \ + defined(__aarch64__) || defined(__s390__) || defined(__e2k__) || \ + (defined(__riscv) && __riscv_xlen == 64) || defined(__loongarch_lp64)) \ + && (defined(__linux) || defined(__ANDROID__)) +@@ -399,7 +399,7 @@ struct kernel_stat64 { + unsigned __pad2; + unsigned long long st_blocks; + }; +-#elif defined __PPC__ ++#elif defined __PPC__ && !defined(__powerpc64__) + struct kernel_stat64 { + unsigned long long st_dev; + unsigned long long st_ino; +@@ -421,6 +421,28 @@ struct kernel_stat64 { + unsigned long __unused4; + unsigned long __unused5; + }; ++#elif defined(__powerpc64__) ++struct kernel_stat64 { ++ unsigned long int st_dev; ++ unsigned long int st_ino; ++ unsigned int st_mode; ++ unsigned long int st_nlink; ++ unsigned int st_uid; ++ unsigned int st_gid; ++ unsigned long int st_rdev; ++ unsigned short int __pad2; ++ long int st_size; ++ long int st_blksize; ++ long int st_blocks; ++ long int st_atime_; ++ unsigned long int st_atime_nsec_; ++ long int st_mtime_; ++ unsigned long int st_mtime_nsec_; ++ long int st_ctime_; ++ unsigned long int st_ctime_nsec_; ++ unsigned long int __unused4; ++ unsigned long int __unused5; ++}; + #elif defined(__e2k__) + struct kernel_stat64 { + unsigned long long st_dev; +@@ -537,7 +559,7 @@ struct kernel_stat { + uint64_t st_ctime_nsec_; + int64_t __unused4[3]; + }; +-#elif defined(__PPC__) ++#elif defined(__PPC__) && !defined(__powerpc64__) + typedef unsigned long kernel_blkcnt_t; + typedef unsigned long kernel_blksize_t; + typedef unsigned kernel_dev_t; +@@ -568,6 +590,37 @@ struct kernel_stat { + unsigned long __unused4; + unsigned long __unused5; + }; ++#elif defined(__powerpc64__) ++typedef long int kernel_blkcnt_t; ++typedef long int kernel_blksize_t; ++typedef unsigned long int kernel_dev_t; ++typedef unsigned int kernel_gid_t; ++typedef unsigned long int kernel_ino_t; ++typedef unsigned int kernel_mode_t; ++typedef unsigned long int kernel_nlink_t; ++typedef long int kernel_off_t; ++typedef long int kernel_time_t; ++typedef unsigned int kernel_uid_t; ++struct kernel_stat { ++ kernel_dev_t st_dev; ++ kernel_ino_t st_ino; ++ kernel_mode_t st_mode; ++ kernel_nlink_t st_nlink; ++ kernel_uid_t st_uid; ++ kernel_gid_t st_gid; ++ kernel_dev_t st_rdev; ++ kernel_off_t st_size; ++ kernel_blksize_t st_blksize; ++ kernel_blkcnt_t st_blocks; ++ kernel_time_t st_atime_; ++ unsigned long int st_atime_nsec_; ++ kernel_time_t st_mtime_; ++ unsigned long int st_mtime_nsec_; ++ kernel_time_t st_ctime_; ++ unsigned long int st_ctime_nsec_; ++ unsigned long int __unused4; ++ unsigned long int __unused5; ++}; + #elif (defined(__mips__) && _MIPS_SIM != _MIPS_SIM_ABI64) + typedef int kernel_blkcnt_t; + typedef int kernel_blksize_t; +@@ -1824,6 +1877,28 @@ struct kernel_statx { + #ifndef __NR_getcpu + #define __NR_getcpu 302 + #endif ++ ++/* Linux commit 86250b9d12caa1a3dee12a7cf638b7dd70eaadb6 (2010) adds ++ * direct socket system calls to PPC */ ++#ifndef __NR_socket ++#define __NR_socket 326 ++#endif ++#ifndef __NR_socketpair ++#define __NR_socketpair 333 ++#endif ++#ifndef __NR_sendto ++#define __NR_sendto 335 ++#endif ++#ifndef __NR_shutdown ++#define __NR_shutdown 338 ++#endif ++#ifndef __NR_sendmsg ++#define __NR_sendmsg 341 ++#endif ++#ifndef __NR_recvmsg ++#define __NR_recvmsg 342 ++#endif ++ + /* End of powerpc defininitions */ + #elif defined(__s390__) + #ifndef __NR_quotactl +@@ -3363,6 +3438,11 @@ struct kernel_statx { + /* TODO(csilvers): consider wrapping some args up in a struct, like we + * do for i386's _syscall6, so we can compile successfully on gcc 2.95 + */ ++ #ifdef __powerpc64__ ++ /* TODO: implement clone() for ppc64. ++ * until then, use system libc */ ++ #define sys_clone clone ++ #else + LSS_INLINE int LSS_NAME(clone)(int (*fn)(void *), void *child_stack, + int flags, void *arg, int *parent_tidptr, + void *newtls, int *child_tidptr) { +@@ -3433,6 +3513,7 @@ struct kernel_statx { + } + LSS_RETURN(int, __ret, __err); + } ++ #endif + #elif defined(__s390__) + #undef LSS_REG + #define LSS_REG(r, a) register unsigned long __r##r __asm__("r"#r) = (unsigned long) a +@@ -4783,7 +4864,7 @@ struct kernel_statx { + LSS_INLINE _syscall6(void*, mmap, void*, addr, size_t, length, int, prot, + int, flags, int, fd, int64_t, offset) + #endif +- #if defined(__PPC__) ++ #if defined(__PPC__) && !defined(__powerpc64__) + #undef LSS_SC_LOADARGS_0 + #define LSS_SC_LOADARGS_0(dummy...) + #undef LSS_SC_LOADARGS_1 +@@ -5173,7 +5254,11 @@ struct kernel_statx { + #endif + + #if !defined(__NR_pipe) ++#if defined(__powerpc64__) ++ LSS_INLINE pid_t LSS_NAME(pipe)(int *pipefd) { ++#else + LSS_INLINE int LSS_NAME(pipe)(int *pipefd) { ++#endif + return LSS_NAME(pipe2)(pipefd, 0); + } + #endif +From 40309fb53e39477490fd6928ebe67c4fb78de380 Mon Sep 17 00:00:00 2001 +From: Shawn Anastasio +Date: Sun, 10 Mar 2019 21:01:37 -0500 +Subject: [PATCH] Add ppc64 target to libaom + +--- + third_party/libaom/BUILD.gn | 12 ++++++++++++ + third_party/libaom/cmake_update.sh | 3 +++ + 2 files changed, 15 insertions(+) + +Index: chromium-122.0.6261.128/third_party/libaom/BUILD.gn +=================================================================== +--- chromium-122.0.6261.128.orig/third_party/libaom/BUILD.gn ++++ chromium-122.0.6261.128/third_party/libaom/BUILD.gn +@@ -268,6 +268,18 @@ if (current_cpu == "arm64") { + } + } + ++if (current_cpu == "ppc64") { ++ source_set("libaom_intrinsics_vsx") { ++ configs -= [ "//build/config/compiler:chromium_code" ] ++ configs += [ "//build/config/compiler:no_chromium_code" ] ++ configs += [ ":libaom_config" ] ++ sources = [ ++ "//third_party/libaom/source/libaom/aom_ports/ppc_cpudetect.c", ++ ] ++ sources += aom_av1_common_intrin_vsx ++ } ++} ++ + static_library("libaom") { + check_includes = false + if (!is_debug && is_win) { +@@ -333,6 +345,9 @@ static_library("libaom") { + # This is needed by all arm boards due to aom_arm_cpu_caps() + sources += [ "source/libaom/aom_ports/aarch32_cpudetect.c" ] + } ++ if (current_cpu == "ppc64") { ++ deps += [ ":libaom_intrinsics_vsx" ] ++ } + if (is_android) { + deps += [ "//third_party/cpu_features:ndk_compat" ] + } +Index: chromium-122.0.6261.128/third_party/libaom/cmake_update.sh +=================================================================== +--- chromium-122.0.6261.128.orig/third_party/libaom/cmake_update.sh ++++ chromium-122.0.6261.128/third_party/libaom/cmake_update.sh +@@ -191,6 +191,9 @@ gen_config_files linux/arm64-cpu-detect + "${toolchain}/arm64-linux-gcc.cmake -DCONFIG_RUNTIME_CPU_DETECT=1 \ + ${all_platforms}" + ++reset_dirs linux/ppc64 ++gen_config_files linux/ppc64 "${toolchain}/ppc-linux-gcc.cmake ${all_platforms}" ++ + # Copy linux configurations and modify for Windows. + reset_dirs win/arm64-cpu-detect + cp "${CFG}/linux/arm64-cpu-detect/config"/* \ +Index: chromium-122.0.6261.128/third_party/libaom/source/config/linux/ppc64/config/aom_config.asm +=================================================================== +--- /dev/null ++++ chromium-122.0.6261.128/third_party/libaom/source/config/linux/ppc64/config/aom_config.asm +@@ -0,0 +1,92 @@ ++; ++; Copyright (c) 2024, Alliance for Open Media. All rights reserved ++; ++; This source code is subject to the terms of the BSD 2 Clause License and ++; the Alliance for Open Media Patent License 1.0. If the BSD 2 Clause License ++; was not distributed with this source code in the LICENSE file, you can ++; obtain it at www.aomedia.org/license/software. If the Alliance for Open ++; Media Patent License 1.0 was not distributed with this source code in the ++; PATENTS file, you can obtain it at www.aomedia.org/license/patent. ++; ++AOM_ARCH_AARCH64 equ 0 ++AOM_ARCH_ARM equ 0 ++AOM_ARCH_PPC equ 1 ++AOM_ARCH_X86 equ 0 ++AOM_ARCH_X86_64 equ 0 ++CONFIG_ACCOUNTING equ 0 ++CONFIG_ANALYZER equ 0 ++CONFIG_AV1_DECODER equ 1 ++CONFIG_AV1_ENCODER equ 1 ++CONFIG_AV1_HIGHBITDEPTH equ 0 ++CONFIG_AV1_TEMPORAL_DENOISING equ 1 ++CONFIG_BIG_ENDIAN equ 0 ++CONFIG_BITRATE_ACCURACY equ 0 ++CONFIG_BITRATE_ACCURACY_BL equ 0 ++CONFIG_BITSTREAM_DEBUG equ 0 ++CONFIG_COEFFICIENT_RANGE_CHECKING equ 0 ++CONFIG_COLLECT_COMPONENT_TIMING equ 0 ++CONFIG_COLLECT_PARTITION_STATS equ 0 ++CONFIG_COLLECT_RD_STATS equ 0 ++CONFIG_CWG_C013 equ 0 ++CONFIG_DEBUG equ 0 ++CONFIG_DENOISE equ 1 ++CONFIG_DISABLE_FULL_PIXEL_SPLIT_8X8 equ 1 ++CONFIG_ENTROPY_STATS equ 0 ++CONFIG_EXCLUDE_SIMD_MISMATCH equ 0 ++CONFIG_FPMT_TEST equ 0 ++CONFIG_GCC equ 1 ++CONFIG_GCOV equ 0 ++CONFIG_GPROF equ 0 ++CONFIG_INSPECTION equ 0 ++CONFIG_INTERNAL_STATS equ 0 ++CONFIG_INTER_STATS_ONLY equ 0 ++CONFIG_LIBYUV equ 0 ++CONFIG_MAX_DECODE_PROFILE equ 0 ++CONFIG_MISMATCH_DEBUG equ 0 ++CONFIG_MULTITHREAD equ 1 ++CONFIG_NN_V2 equ 0 ++CONFIG_NORMAL_TILE_MODE equ 1 ++CONFIG_OPTICAL_FLOW_API equ 0 ++CONFIG_OS_SUPPORT equ 1 ++CONFIG_OUTPUT_FRAME_SIZE equ 0 ++CONFIG_PARTITION_SEARCH_ORDER equ 0 ++CONFIG_PIC equ 1 ++CONFIG_RATECTRL_LOG equ 0 ++CONFIG_RD_COMMAND equ 0 ++CONFIG_RD_DEBUG equ 0 ++CONFIG_REALTIME_ONLY equ 1 ++CONFIG_RT_ML_PARTITIONING equ 0 ++CONFIG_RUNTIME_CPU_DETECT equ 0 ++CONFIG_SALIENCY_MAP equ 0 ++CONFIG_SHARED equ 0 ++CONFIG_SIZE_LIMIT equ 1 ++CONFIG_SPATIAL_RESAMPLING equ 1 ++CONFIG_SPEED_STATS equ 0 ++CONFIG_TFLITE equ 0 ++CONFIG_THREE_PASS equ 0 ++CONFIG_TUNE_BUTTERAUGLI equ 0 ++CONFIG_TUNE_VMAF equ 0 ++CONFIG_WEBM_IO equ 1 ++DECODE_HEIGHT_LIMIT equ 16384 ++DECODE_WIDTH_LIMIT equ 16384 ++FORCE_HIGHBITDEPTH_DECODING equ 0 ++HAVE_ARM_CRC32 equ 0 ++HAVE_AVX equ 0 ++HAVE_AVX2 equ 0 ++HAVE_FEXCEPT equ 1 ++HAVE_MMX equ 0 ++HAVE_NEON equ 0 ++HAVE_NEON_DOTPROD equ 0 ++HAVE_NEON_I8MM equ 0 ++HAVE_PTHREAD_H equ 1 ++HAVE_SSE equ 0 ++HAVE_SSE2 equ 0 ++HAVE_SSE3 equ 0 ++HAVE_SSE4_1 equ 0 ++HAVE_SSE4_2 equ 0 ++HAVE_SSSE3 equ 0 ++HAVE_SVE equ 0 ++HAVE_UNISTD_H equ 1 ++HAVE_VSX equ 1 ++HAVE_WXWIDGETS equ 0 ++STATIC_LINK_JXL equ 0 +Index: chromium-122.0.6261.128/third_party/libaom/source/config/linux/ppc64/config/aom_config.c +=================================================================== +--- /dev/null ++++ chromium-122.0.6261.128/third_party/libaom/source/config/linux/ppc64/config/aom_config.c +@@ -0,0 +1,13 @@ ++/* ++ * Copyright (c) 2024, Alliance for Open Media. All rights reserved ++ * ++ * This source code is subject to the terms of the BSD 2 Clause License and ++ * the Alliance for Open Media Patent License 1.0. If the BSD 2 Clause License ++ * was not distributed with this source code in the LICENSE file, you can ++ * obtain it at www.aomedia.org/license/software. If the Alliance for Open ++ * Media Patent License 1.0 was not distributed with this source code in the ++ * PATENTS file, you can obtain it at www.aomedia.org/license/patent. ++ */ ++#include "aom/aom_codec.h" ++static const char* const cfg = "cmake ../source/libaom -G \"Unix Makefiles\" -DCMAKE_TOOLCHAIN_FILE=\"../source/libaom/build/cmake/toolchains/ppc-linux-gcc.cmake\" -DCONFIG_AV1_ENCODER=1 -DCONFIG_LIBYUV=0 -DCONFIG_AV1_HIGHBITDEPTH=0 -DCONFIG_AV1_TEMPORAL_DENOISING=1 -DCONFIG_REALTIME_ONLY=1 -DCONFIG_MAX_DECODE_PROFILE=0 -DCONFIG_NORMAL_TILE_MODE=1 -DCONFIG_SIZE_LIMIT=1 -DDECODE_HEIGHT_LIMIT=16384 -DDECODE_WIDTH_LIMIT=16384"; ++const char *aom_codec_build_config(void) {return cfg;} +Index: chromium-122.0.6261.128/third_party/libaom/source/config/linux/ppc64/config/aom_config.h +=================================================================== +--- /dev/null ++++ chromium-122.0.6261.128/third_party/libaom/source/config/linux/ppc64/config/aom_config.h +@@ -0,0 +1,96 @@ ++/* ++ * Copyright (c) 2024, Alliance for Open Media. All rights reserved ++ * ++ * This source code is subject to the terms of the BSD 2 Clause License and ++ * the Alliance for Open Media Patent License 1.0. If the BSD 2 Clause License ++ * was not distributed with this source code in the LICENSE file, you can ++ * obtain it at www.aomedia.org/license/software. If the Alliance for Open ++ * Media Patent License 1.0 was not distributed with this source code in the ++ * PATENTS file, you can obtain it at www.aomedia.org/license/patent. ++ */ ++#ifndef AOM_CONFIG_H_ ++#define AOM_CONFIG_H_ ++#define AOM_ARCH_AARCH64 0 ++#define AOM_ARCH_ARM 0 ++#define AOM_ARCH_PPC 1 ++#define AOM_ARCH_X86 0 ++#define AOM_ARCH_X86_64 0 ++#define CONFIG_ACCOUNTING 0 ++#define CONFIG_ANALYZER 0 ++#define CONFIG_AV1_DECODER 1 ++#define CONFIG_AV1_ENCODER 1 ++#define CONFIG_AV1_HIGHBITDEPTH 0 ++#define CONFIG_AV1_TEMPORAL_DENOISING 1 ++#define CONFIG_BIG_ENDIAN 0 ++#define CONFIG_BITRATE_ACCURACY 0 ++#define CONFIG_BITRATE_ACCURACY_BL 0 ++#define CONFIG_BITSTREAM_DEBUG 0 ++#define CONFIG_COEFFICIENT_RANGE_CHECKING 0 ++#define CONFIG_COLLECT_COMPONENT_TIMING 0 ++#define CONFIG_COLLECT_PARTITION_STATS 0 ++#define CONFIG_COLLECT_RD_STATS 0 ++#define CONFIG_CWG_C013 0 ++#define CONFIG_DEBUG 0 ++#define CONFIG_DENOISE 1 ++#define CONFIG_DISABLE_FULL_PIXEL_SPLIT_8X8 1 ++#define CONFIG_ENTROPY_STATS 0 ++#define CONFIG_EXCLUDE_SIMD_MISMATCH 0 ++#define CONFIG_FPMT_TEST 0 ++#define CONFIG_GCC 1 ++#define CONFIG_GCOV 0 ++#define CONFIG_GPROF 0 ++#define CONFIG_INSPECTION 0 ++#define CONFIG_INTERNAL_STATS 0 ++#define CONFIG_INTER_STATS_ONLY 0 ++#define CONFIG_LIBYUV 0 ++#define CONFIG_MAX_DECODE_PROFILE 0 ++#define CONFIG_MISMATCH_DEBUG 0 ++#define CONFIG_MULTITHREAD 1 ++#define CONFIG_NN_V2 0 ++#define CONFIG_NORMAL_TILE_MODE 1 ++#define CONFIG_OPTICAL_FLOW_API 0 ++#define CONFIG_OS_SUPPORT 1 ++#define CONFIG_OUTPUT_FRAME_SIZE 0 ++#define CONFIG_PARTITION_SEARCH_ORDER 0 ++#define CONFIG_PIC 1 ++#define CONFIG_RATECTRL_LOG 0 ++#define CONFIG_RD_COMMAND 0 ++#define CONFIG_RD_DEBUG 0 ++#define CONFIG_REALTIME_ONLY 1 ++#define CONFIG_RT_ML_PARTITIONING 0 ++#define CONFIG_RUNTIME_CPU_DETECT 0 ++#define CONFIG_SALIENCY_MAP 0 ++#define CONFIG_SHARED 0 ++#define CONFIG_SIZE_LIMIT 1 ++#define CONFIG_SPATIAL_RESAMPLING 1 ++#define CONFIG_SPEED_STATS 0 ++#define CONFIG_TFLITE 0 ++#define CONFIG_THREE_PASS 0 ++#define CONFIG_TUNE_BUTTERAUGLI 0 ++#define CONFIG_TUNE_VMAF 0 ++#define CONFIG_WEBM_IO 1 ++#define DECODE_HEIGHT_LIMIT 16384 ++#define DECODE_WIDTH_LIMIT 16384 ++#define FORCE_HIGHBITDEPTH_DECODING 0 ++#define HAVE_ARM_CRC32 0 ++#define HAVE_AVX 0 ++#define HAVE_AVX2 0 ++#define HAVE_FEXCEPT 1 ++#define HAVE_MMX 0 ++#define HAVE_NEON 0 ++#define HAVE_NEON_DOTPROD 0 ++#define HAVE_NEON_I8MM 0 ++#define HAVE_PTHREAD_H 1 ++#define HAVE_SSE 0 ++#define HAVE_SSE2 0 ++#define HAVE_SSE3 0 ++#define HAVE_SSE4_1 0 ++#define HAVE_SSE4_2 0 ++#define HAVE_SSSE3 0 ++#define HAVE_SVE 0 ++#define HAVE_UNISTD_H 1 ++#define HAVE_VSX 1 ++#define HAVE_WXWIDGETS 0 ++#define INLINE inline ++#define STATIC_LINK_JXL 0 ++#endif // AOM_CONFIG_H_ +Index: chromium-122.0.6261.128/third_party/libaom/source/config/linux/ppc64/config/aom_dsp_rtcd.h +=================================================================== +--- /dev/null ++++ chromium-122.0.6261.128/third_party/libaom/source/config/linux/ppc64/config/aom_dsp_rtcd.h +@@ -0,0 +1,1541 @@ ++// This file is generated. Do not edit. ++#ifndef AOM_DSP_RTCD_H_ ++#define AOM_DSP_RTCD_H_ ++ ++#ifdef RTCD_C ++#define RTCD_EXTERN ++#else ++#define RTCD_EXTERN extern ++#endif ++ ++/* ++ * DSP ++ */ ++ ++#include "aom/aom_integer.h" ++#include "aom_dsp/aom_dsp_common.h" ++#include "av1/common/blockd.h" ++#include "av1/common/enums.h" ++ ++ ++#ifdef __cplusplus ++extern "C" { ++#endif ++ ++unsigned int aom_avg_4x4_c(const uint8_t *, int p); ++#define aom_avg_4x4 aom_avg_4x4_c ++ ++unsigned int aom_avg_8x8_c(const uint8_t *, int p); ++#define aom_avg_8x8 aom_avg_8x8_c ++ ++void aom_avg_8x8_quad_c(const uint8_t *s, int p, int x16_idx, int y16_idx, int *avg); ++#define aom_avg_8x8_quad aom_avg_8x8_quad_c ++ ++void aom_blend_a64_hmask_c(uint8_t *dst, uint32_t dst_stride, const uint8_t *src0, uint32_t src0_stride, const uint8_t *src1, uint32_t src1_stride, const uint8_t *mask, int w, int h); ++#define aom_blend_a64_hmask aom_blend_a64_hmask_c ++ ++void aom_blend_a64_mask_c(uint8_t *dst, uint32_t dst_stride, const uint8_t *src0, uint32_t src0_stride, const uint8_t *src1, uint32_t src1_stride, const uint8_t *mask, uint32_t mask_stride, int w, int h, int subw, int subh); ++#define aom_blend_a64_mask aom_blend_a64_mask_c ++ ++void aom_blend_a64_vmask_c(uint8_t *dst, uint32_t dst_stride, const uint8_t *src0, uint32_t src0_stride, const uint8_t *src1, uint32_t src1_stride, const uint8_t *mask, int w, int h); ++#define aom_blend_a64_vmask aom_blend_a64_vmask_c ++ ++void aom_comp_avg_pred_c(uint8_t *comp_pred, const uint8_t *pred, int width, int height, const uint8_t *ref, int ref_stride); ++#define aom_comp_avg_pred aom_comp_avg_pred_c ++ ++void aom_comp_mask_pred_c(uint8_t *comp_pred, const uint8_t *pred, int width, int height, const uint8_t *ref, int ref_stride, const uint8_t *mask, int mask_stride, int invert_mask); ++#define aom_comp_mask_pred aom_comp_mask_pred_c ++ ++void aom_convolve8_c(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const InterpKernel *filter, int x0_q4, int x_step_q4, int y0_q4, int y_step_q4, int w, int h); ++#define aom_convolve8 aom_convolve8_c ++ ++void aom_convolve8_horiz_c(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h); ++#define aom_convolve8_horiz aom_convolve8_horiz_c ++ ++void aom_convolve8_vert_c(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h); ++#define aom_convolve8_vert aom_convolve8_vert_c ++ ++void aom_convolve_copy_c(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, int w, int h); ++#define aom_convolve_copy aom_convolve_copy_c ++ ++void aom_dc_128_predictor_16x16_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); ++#define aom_dc_128_predictor_16x16 aom_dc_128_predictor_16x16_c ++ ++void aom_dc_128_predictor_16x32_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); ++#define aom_dc_128_predictor_16x32 aom_dc_128_predictor_16x32_c ++ ++void aom_dc_128_predictor_16x4_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); ++#define aom_dc_128_predictor_16x4 aom_dc_128_predictor_16x4_c ++ ++void aom_dc_128_predictor_16x64_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); ++#define aom_dc_128_predictor_16x64 aom_dc_128_predictor_16x64_c ++ ++void aom_dc_128_predictor_16x8_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); ++#define aom_dc_128_predictor_16x8 aom_dc_128_predictor_16x8_c ++ ++void aom_dc_128_predictor_32x16_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); ++#define aom_dc_128_predictor_32x16 aom_dc_128_predictor_32x16_c ++ ++void aom_dc_128_predictor_32x32_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); ++#define aom_dc_128_predictor_32x32 aom_dc_128_predictor_32x32_c ++ ++void aom_dc_128_predictor_32x64_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); ++#define aom_dc_128_predictor_32x64 aom_dc_128_predictor_32x64_c ++ ++void aom_dc_128_predictor_32x8_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); ++#define aom_dc_128_predictor_32x8 aom_dc_128_predictor_32x8_c ++ ++void aom_dc_128_predictor_4x16_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); ++#define aom_dc_128_predictor_4x16 aom_dc_128_predictor_4x16_c ++ ++void aom_dc_128_predictor_4x4_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); ++#define aom_dc_128_predictor_4x4 aom_dc_128_predictor_4x4_c ++ ++void aom_dc_128_predictor_4x8_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); ++#define aom_dc_128_predictor_4x8 aom_dc_128_predictor_4x8_c ++ ++void aom_dc_128_predictor_64x16_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); ++#define aom_dc_128_predictor_64x16 aom_dc_128_predictor_64x16_c ++ ++void aom_dc_128_predictor_64x32_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); ++#define aom_dc_128_predictor_64x32 aom_dc_128_predictor_64x32_c ++ ++void aom_dc_128_predictor_64x64_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); ++#define aom_dc_128_predictor_64x64 aom_dc_128_predictor_64x64_c ++ ++void aom_dc_128_predictor_8x16_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); ++#define aom_dc_128_predictor_8x16 aom_dc_128_predictor_8x16_c ++ ++void aom_dc_128_predictor_8x32_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); ++#define aom_dc_128_predictor_8x32 aom_dc_128_predictor_8x32_c ++ ++void aom_dc_128_predictor_8x4_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); ++#define aom_dc_128_predictor_8x4 aom_dc_128_predictor_8x4_c ++ ++void aom_dc_128_predictor_8x8_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); ++#define aom_dc_128_predictor_8x8 aom_dc_128_predictor_8x8_c ++ ++void aom_dc_left_predictor_16x16_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); ++#define aom_dc_left_predictor_16x16 aom_dc_left_predictor_16x16_c ++ ++void aom_dc_left_predictor_16x32_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); ++#define aom_dc_left_predictor_16x32 aom_dc_left_predictor_16x32_c ++ ++void aom_dc_left_predictor_16x4_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); ++#define aom_dc_left_predictor_16x4 aom_dc_left_predictor_16x4_c ++ ++void aom_dc_left_predictor_16x64_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); ++#define aom_dc_left_predictor_16x64 aom_dc_left_predictor_16x64_c ++ ++void aom_dc_left_predictor_16x8_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); ++#define aom_dc_left_predictor_16x8 aom_dc_left_predictor_16x8_c ++ ++void aom_dc_left_predictor_32x16_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); ++#define aom_dc_left_predictor_32x16 aom_dc_left_predictor_32x16_c ++ ++void aom_dc_left_predictor_32x32_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); ++#define aom_dc_left_predictor_32x32 aom_dc_left_predictor_32x32_c ++ ++void aom_dc_left_predictor_32x64_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); ++#define aom_dc_left_predictor_32x64 aom_dc_left_predictor_32x64_c ++ ++void aom_dc_left_predictor_32x8_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); ++#define aom_dc_left_predictor_32x8 aom_dc_left_predictor_32x8_c ++ ++void aom_dc_left_predictor_4x16_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); ++#define aom_dc_left_predictor_4x16 aom_dc_left_predictor_4x16_c ++ ++void aom_dc_left_predictor_4x4_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); ++#define aom_dc_left_predictor_4x4 aom_dc_left_predictor_4x4_c ++ ++void aom_dc_left_predictor_4x8_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); ++#define aom_dc_left_predictor_4x8 aom_dc_left_predictor_4x8_c ++ ++void aom_dc_left_predictor_64x16_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); ++#define aom_dc_left_predictor_64x16 aom_dc_left_predictor_64x16_c ++ ++void aom_dc_left_predictor_64x32_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); ++#define aom_dc_left_predictor_64x32 aom_dc_left_predictor_64x32_c ++ ++void aom_dc_left_predictor_64x64_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); ++#define aom_dc_left_predictor_64x64 aom_dc_left_predictor_64x64_c ++ ++void aom_dc_left_predictor_8x16_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); ++#define aom_dc_left_predictor_8x16 aom_dc_left_predictor_8x16_c ++ ++void aom_dc_left_predictor_8x32_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); ++#define aom_dc_left_predictor_8x32 aom_dc_left_predictor_8x32_c ++ ++void aom_dc_left_predictor_8x4_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); ++#define aom_dc_left_predictor_8x4 aom_dc_left_predictor_8x4_c ++ ++void aom_dc_left_predictor_8x8_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); ++#define aom_dc_left_predictor_8x8 aom_dc_left_predictor_8x8_c ++ ++void aom_dc_predictor_16x16_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); ++#define aom_dc_predictor_16x16 aom_dc_predictor_16x16_c ++ ++void aom_dc_predictor_16x32_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); ++#define aom_dc_predictor_16x32 aom_dc_predictor_16x32_c ++ ++void aom_dc_predictor_16x4_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); ++#define aom_dc_predictor_16x4 aom_dc_predictor_16x4_c ++ ++void aom_dc_predictor_16x64_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); ++#define aom_dc_predictor_16x64 aom_dc_predictor_16x64_c ++ ++void aom_dc_predictor_16x8_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); ++#define aom_dc_predictor_16x8 aom_dc_predictor_16x8_c ++ ++void aom_dc_predictor_32x16_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); ++#define aom_dc_predictor_32x16 aom_dc_predictor_32x16_c ++ ++void aom_dc_predictor_32x32_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); ++#define aom_dc_predictor_32x32 aom_dc_predictor_32x32_c ++ ++void aom_dc_predictor_32x64_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); ++#define aom_dc_predictor_32x64 aom_dc_predictor_32x64_c ++ ++void aom_dc_predictor_32x8_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); ++#define aom_dc_predictor_32x8 aom_dc_predictor_32x8_c ++ ++void aom_dc_predictor_4x16_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); ++#define aom_dc_predictor_4x16 aom_dc_predictor_4x16_c ++ ++void aom_dc_predictor_4x4_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); ++#define aom_dc_predictor_4x4 aom_dc_predictor_4x4_c ++ ++void aom_dc_predictor_4x8_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); ++#define aom_dc_predictor_4x8 aom_dc_predictor_4x8_c ++ ++void aom_dc_predictor_64x16_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); ++#define aom_dc_predictor_64x16 aom_dc_predictor_64x16_c ++ ++void aom_dc_predictor_64x32_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); ++#define aom_dc_predictor_64x32 aom_dc_predictor_64x32_c ++ ++void aom_dc_predictor_64x64_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); ++#define aom_dc_predictor_64x64 aom_dc_predictor_64x64_c ++ ++void aom_dc_predictor_8x16_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); ++#define aom_dc_predictor_8x16 aom_dc_predictor_8x16_c ++ ++void aom_dc_predictor_8x32_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); ++#define aom_dc_predictor_8x32 aom_dc_predictor_8x32_c ++ ++void aom_dc_predictor_8x4_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); ++#define aom_dc_predictor_8x4 aom_dc_predictor_8x4_c ++ ++void aom_dc_predictor_8x8_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); ++#define aom_dc_predictor_8x8 aom_dc_predictor_8x8_c ++ ++void aom_dc_top_predictor_16x16_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); ++#define aom_dc_top_predictor_16x16 aom_dc_top_predictor_16x16_c ++ ++void aom_dc_top_predictor_16x32_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); ++#define aom_dc_top_predictor_16x32 aom_dc_top_predictor_16x32_c ++ ++void aom_dc_top_predictor_16x4_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); ++#define aom_dc_top_predictor_16x4 aom_dc_top_predictor_16x4_c ++ ++void aom_dc_top_predictor_16x64_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); ++#define aom_dc_top_predictor_16x64 aom_dc_top_predictor_16x64_c ++ ++void aom_dc_top_predictor_16x8_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); ++#define aom_dc_top_predictor_16x8 aom_dc_top_predictor_16x8_c ++ ++void aom_dc_top_predictor_32x16_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); ++#define aom_dc_top_predictor_32x16 aom_dc_top_predictor_32x16_c ++ ++void aom_dc_top_predictor_32x32_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); ++#define aom_dc_top_predictor_32x32 aom_dc_top_predictor_32x32_c ++ ++void aom_dc_top_predictor_32x64_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); ++#define aom_dc_top_predictor_32x64 aom_dc_top_predictor_32x64_c ++ ++void aom_dc_top_predictor_32x8_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); ++#define aom_dc_top_predictor_32x8 aom_dc_top_predictor_32x8_c ++ ++void aom_dc_top_predictor_4x16_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); ++#define aom_dc_top_predictor_4x16 aom_dc_top_predictor_4x16_c ++ ++void aom_dc_top_predictor_4x4_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); ++#define aom_dc_top_predictor_4x4 aom_dc_top_predictor_4x4_c ++ ++void aom_dc_top_predictor_4x8_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); ++#define aom_dc_top_predictor_4x8 aom_dc_top_predictor_4x8_c ++ ++void aom_dc_top_predictor_64x16_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); ++#define aom_dc_top_predictor_64x16 aom_dc_top_predictor_64x16_c ++ ++void aom_dc_top_predictor_64x32_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); ++#define aom_dc_top_predictor_64x32 aom_dc_top_predictor_64x32_c ++ ++void aom_dc_top_predictor_64x64_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); ++#define aom_dc_top_predictor_64x64 aom_dc_top_predictor_64x64_c ++ ++void aom_dc_top_predictor_8x16_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); ++#define aom_dc_top_predictor_8x16 aom_dc_top_predictor_8x16_c ++ ++void aom_dc_top_predictor_8x32_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); ++#define aom_dc_top_predictor_8x32 aom_dc_top_predictor_8x32_c ++ ++void aom_dc_top_predictor_8x4_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); ++#define aom_dc_top_predictor_8x4 aom_dc_top_predictor_8x4_c ++ ++void aom_dc_top_predictor_8x8_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); ++#define aom_dc_top_predictor_8x8 aom_dc_top_predictor_8x8_c ++ ++void aom_dist_wtd_comp_avg_pred_c(uint8_t *comp_pred, const uint8_t *pred, int width, int height, const uint8_t *ref, int ref_stride, const DIST_WTD_COMP_PARAMS *jcp_param); ++#define aom_dist_wtd_comp_avg_pred aom_dist_wtd_comp_avg_pred_c ++ ++unsigned int aom_dist_wtd_sad128x128_avg_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred, const DIST_WTD_COMP_PARAMS *jcp_param); ++#define aom_dist_wtd_sad128x128_avg aom_dist_wtd_sad128x128_avg_c ++ ++unsigned int aom_dist_wtd_sad128x64_avg_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred, const DIST_WTD_COMP_PARAMS *jcp_param); ++#define aom_dist_wtd_sad128x64_avg aom_dist_wtd_sad128x64_avg_c ++ ++unsigned int aom_dist_wtd_sad16x16_avg_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred, const DIST_WTD_COMP_PARAMS *jcp_param); ++#define aom_dist_wtd_sad16x16_avg aom_dist_wtd_sad16x16_avg_c ++ ++unsigned int aom_dist_wtd_sad16x32_avg_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred, const DIST_WTD_COMP_PARAMS *jcp_param); ++#define aom_dist_wtd_sad16x32_avg aom_dist_wtd_sad16x32_avg_c ++ ++unsigned int aom_dist_wtd_sad16x8_avg_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred, const DIST_WTD_COMP_PARAMS *jcp_param); ++#define aom_dist_wtd_sad16x8_avg aom_dist_wtd_sad16x8_avg_c ++ ++unsigned int aom_dist_wtd_sad32x16_avg_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred, const DIST_WTD_COMP_PARAMS *jcp_param); ++#define aom_dist_wtd_sad32x16_avg aom_dist_wtd_sad32x16_avg_c ++ ++unsigned int aom_dist_wtd_sad32x32_avg_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred, const DIST_WTD_COMP_PARAMS *jcp_param); ++#define aom_dist_wtd_sad32x32_avg aom_dist_wtd_sad32x32_avg_c ++ ++unsigned int aom_dist_wtd_sad32x64_avg_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred, const DIST_WTD_COMP_PARAMS *jcp_param); ++#define aom_dist_wtd_sad32x64_avg aom_dist_wtd_sad32x64_avg_c ++ ++unsigned int aom_dist_wtd_sad4x4_avg_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred, const DIST_WTD_COMP_PARAMS *jcp_param); ++#define aom_dist_wtd_sad4x4_avg aom_dist_wtd_sad4x4_avg_c ++ ++unsigned int aom_dist_wtd_sad4x8_avg_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred, const DIST_WTD_COMP_PARAMS *jcp_param); ++#define aom_dist_wtd_sad4x8_avg aom_dist_wtd_sad4x8_avg_c ++ ++unsigned int aom_dist_wtd_sad64x128_avg_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred, const DIST_WTD_COMP_PARAMS *jcp_param); ++#define aom_dist_wtd_sad64x128_avg aom_dist_wtd_sad64x128_avg_c ++ ++unsigned int aom_dist_wtd_sad64x32_avg_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred, const DIST_WTD_COMP_PARAMS *jcp_param); ++#define aom_dist_wtd_sad64x32_avg aom_dist_wtd_sad64x32_avg_c ++ ++unsigned int aom_dist_wtd_sad64x64_avg_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred, const DIST_WTD_COMP_PARAMS *jcp_param); ++#define aom_dist_wtd_sad64x64_avg aom_dist_wtd_sad64x64_avg_c ++ ++unsigned int aom_dist_wtd_sad8x16_avg_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred, const DIST_WTD_COMP_PARAMS *jcp_param); ++#define aom_dist_wtd_sad8x16_avg aom_dist_wtd_sad8x16_avg_c ++ ++unsigned int aom_dist_wtd_sad8x4_avg_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred, const DIST_WTD_COMP_PARAMS *jcp_param); ++#define aom_dist_wtd_sad8x4_avg aom_dist_wtd_sad8x4_avg_c ++ ++unsigned int aom_dist_wtd_sad8x8_avg_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred, const DIST_WTD_COMP_PARAMS *jcp_param); ++#define aom_dist_wtd_sad8x8_avg aom_dist_wtd_sad8x8_avg_c ++ ++uint32_t aom_dist_wtd_sub_pixel_avg_variance128x128_c(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred, const DIST_WTD_COMP_PARAMS *jcp_param); ++#define aom_dist_wtd_sub_pixel_avg_variance128x128 aom_dist_wtd_sub_pixel_avg_variance128x128_c ++ ++uint32_t aom_dist_wtd_sub_pixel_avg_variance128x64_c(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred, const DIST_WTD_COMP_PARAMS *jcp_param); ++#define aom_dist_wtd_sub_pixel_avg_variance128x64 aom_dist_wtd_sub_pixel_avg_variance128x64_c ++ ++uint32_t aom_dist_wtd_sub_pixel_avg_variance16x16_c(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred, const DIST_WTD_COMP_PARAMS *jcp_param); ++#define aom_dist_wtd_sub_pixel_avg_variance16x16 aom_dist_wtd_sub_pixel_avg_variance16x16_c ++ ++uint32_t aom_dist_wtd_sub_pixel_avg_variance16x32_c(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred, const DIST_WTD_COMP_PARAMS *jcp_param); ++#define aom_dist_wtd_sub_pixel_avg_variance16x32 aom_dist_wtd_sub_pixel_avg_variance16x32_c ++ ++uint32_t aom_dist_wtd_sub_pixel_avg_variance16x8_c(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred, const DIST_WTD_COMP_PARAMS *jcp_param); ++#define aom_dist_wtd_sub_pixel_avg_variance16x8 aom_dist_wtd_sub_pixel_avg_variance16x8_c ++ ++uint32_t aom_dist_wtd_sub_pixel_avg_variance32x16_c(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred, const DIST_WTD_COMP_PARAMS *jcp_param); ++#define aom_dist_wtd_sub_pixel_avg_variance32x16 aom_dist_wtd_sub_pixel_avg_variance32x16_c ++ ++uint32_t aom_dist_wtd_sub_pixel_avg_variance32x32_c(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred, const DIST_WTD_COMP_PARAMS *jcp_param); ++#define aom_dist_wtd_sub_pixel_avg_variance32x32 aom_dist_wtd_sub_pixel_avg_variance32x32_c ++ ++uint32_t aom_dist_wtd_sub_pixel_avg_variance32x64_c(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred, const DIST_WTD_COMP_PARAMS *jcp_param); ++#define aom_dist_wtd_sub_pixel_avg_variance32x64 aom_dist_wtd_sub_pixel_avg_variance32x64_c ++ ++uint32_t aom_dist_wtd_sub_pixel_avg_variance4x4_c(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred, const DIST_WTD_COMP_PARAMS *jcp_param); ++#define aom_dist_wtd_sub_pixel_avg_variance4x4 aom_dist_wtd_sub_pixel_avg_variance4x4_c ++ ++uint32_t aom_dist_wtd_sub_pixel_avg_variance4x8_c(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred, const DIST_WTD_COMP_PARAMS *jcp_param); ++#define aom_dist_wtd_sub_pixel_avg_variance4x8 aom_dist_wtd_sub_pixel_avg_variance4x8_c ++ ++uint32_t aom_dist_wtd_sub_pixel_avg_variance64x128_c(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred, const DIST_WTD_COMP_PARAMS *jcp_param); ++#define aom_dist_wtd_sub_pixel_avg_variance64x128 aom_dist_wtd_sub_pixel_avg_variance64x128_c ++ ++uint32_t aom_dist_wtd_sub_pixel_avg_variance64x32_c(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred, const DIST_WTD_COMP_PARAMS *jcp_param); ++#define aom_dist_wtd_sub_pixel_avg_variance64x32 aom_dist_wtd_sub_pixel_avg_variance64x32_c ++ ++uint32_t aom_dist_wtd_sub_pixel_avg_variance64x64_c(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred, const DIST_WTD_COMP_PARAMS *jcp_param); ++#define aom_dist_wtd_sub_pixel_avg_variance64x64 aom_dist_wtd_sub_pixel_avg_variance64x64_c ++ ++uint32_t aom_dist_wtd_sub_pixel_avg_variance8x16_c(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred, const DIST_WTD_COMP_PARAMS *jcp_param); ++#define aom_dist_wtd_sub_pixel_avg_variance8x16 aom_dist_wtd_sub_pixel_avg_variance8x16_c ++ ++uint32_t aom_dist_wtd_sub_pixel_avg_variance8x4_c(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred, const DIST_WTD_COMP_PARAMS *jcp_param); ++#define aom_dist_wtd_sub_pixel_avg_variance8x4 aom_dist_wtd_sub_pixel_avg_variance8x4_c ++ ++uint32_t aom_dist_wtd_sub_pixel_avg_variance8x8_c(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred, const DIST_WTD_COMP_PARAMS *jcp_param); ++#define aom_dist_wtd_sub_pixel_avg_variance8x8 aom_dist_wtd_sub_pixel_avg_variance8x8_c ++ ++void aom_fdct4x4_c(const int16_t *input, tran_low_t *output, int stride); ++#define aom_fdct4x4 aom_fdct4x4_c ++ ++void aom_fdct4x4_lp_c(const int16_t *input, int16_t *output, int stride); ++#define aom_fdct4x4_lp aom_fdct4x4_lp_c ++ ++void aom_fft16x16_float_c(const float *input, float *temp, float *output); ++#define aom_fft16x16_float aom_fft16x16_float_c ++ ++void aom_fft2x2_float_c(const float *input, float *temp, float *output); ++#define aom_fft2x2_float aom_fft2x2_float_c ++ ++void aom_fft32x32_float_c(const float *input, float *temp, float *output); ++#define aom_fft32x32_float aom_fft32x32_float_c ++ ++void aom_fft4x4_float_c(const float *input, float *temp, float *output); ++#define aom_fft4x4_float aom_fft4x4_float_c ++ ++void aom_fft8x8_float_c(const float *input, float *temp, float *output); ++#define aom_fft8x8_float aom_fft8x8_float_c ++ ++void aom_get_blk_sse_sum_c(const int16_t *data, int stride, int bw, int bh, int *x_sum, int64_t *x2_sum); ++#define aom_get_blk_sse_sum aom_get_blk_sse_sum_c ++ ++unsigned int aom_get_mb_ss_c(const int16_t *); ++#define aom_get_mb_ss aom_get_mb_ss_c ++ ++void aom_get_var_sse_sum_16x16_dual_c(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse16x16, unsigned int *tot_sse, int *tot_sum, uint32_t *var16x16); ++#define aom_get_var_sse_sum_16x16_dual aom_get_var_sse_sum_16x16_dual_c ++ ++void aom_get_var_sse_sum_8x8_quad_c(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse8x8, int *sum8x8, unsigned int *tot_sse, int *tot_sum, uint32_t *var8x8); ++#define aom_get_var_sse_sum_8x8_quad aom_get_var_sse_sum_8x8_quad_c ++ ++void aom_h_predictor_16x16_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); ++#define aom_h_predictor_16x16 aom_h_predictor_16x16_c ++ ++void aom_h_predictor_16x32_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); ++#define aom_h_predictor_16x32 aom_h_predictor_16x32_c ++ ++void aom_h_predictor_16x4_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); ++#define aom_h_predictor_16x4 aom_h_predictor_16x4_c ++ ++void aom_h_predictor_16x64_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); ++#define aom_h_predictor_16x64 aom_h_predictor_16x64_c ++ ++void aom_h_predictor_16x8_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); ++#define aom_h_predictor_16x8 aom_h_predictor_16x8_c ++ ++void aom_h_predictor_32x16_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); ++#define aom_h_predictor_32x16 aom_h_predictor_32x16_c ++ ++void aom_h_predictor_32x32_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); ++#define aom_h_predictor_32x32 aom_h_predictor_32x32_c ++ ++void aom_h_predictor_32x64_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); ++#define aom_h_predictor_32x64 aom_h_predictor_32x64_c ++ ++void aom_h_predictor_32x8_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); ++#define aom_h_predictor_32x8 aom_h_predictor_32x8_c ++ ++void aom_h_predictor_4x16_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); ++#define aom_h_predictor_4x16 aom_h_predictor_4x16_c ++ ++void aom_h_predictor_4x4_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); ++#define aom_h_predictor_4x4 aom_h_predictor_4x4_c ++ ++void aom_h_predictor_4x8_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); ++#define aom_h_predictor_4x8 aom_h_predictor_4x8_c ++ ++void aom_h_predictor_64x16_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); ++#define aom_h_predictor_64x16 aom_h_predictor_64x16_c ++ ++void aom_h_predictor_64x32_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); ++#define aom_h_predictor_64x32 aom_h_predictor_64x32_c ++ ++void aom_h_predictor_64x64_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); ++#define aom_h_predictor_64x64 aom_h_predictor_64x64_c ++ ++void aom_h_predictor_8x16_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); ++#define aom_h_predictor_8x16 aom_h_predictor_8x16_c ++ ++void aom_h_predictor_8x32_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); ++#define aom_h_predictor_8x32 aom_h_predictor_8x32_c ++ ++void aom_h_predictor_8x4_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); ++#define aom_h_predictor_8x4 aom_h_predictor_8x4_c ++ ++void aom_h_predictor_8x8_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); ++#define aom_h_predictor_8x8 aom_h_predictor_8x8_c ++ ++void aom_hadamard_16x16_c(const int16_t *src_diff, ptrdiff_t src_stride, tran_low_t *coeff); ++#define aom_hadamard_16x16 aom_hadamard_16x16_c ++ ++void aom_hadamard_32x32_c(const int16_t *src_diff, ptrdiff_t src_stride, tran_low_t *coeff); ++#define aom_hadamard_32x32 aom_hadamard_32x32_c ++ ++void aom_hadamard_4x4_c(const int16_t *src_diff, ptrdiff_t src_stride, tran_low_t *coeff); ++#define aom_hadamard_4x4 aom_hadamard_4x4_c ++ ++void aom_hadamard_8x8_c(const int16_t *src_diff, ptrdiff_t src_stride, tran_low_t *coeff); ++#define aom_hadamard_8x8 aom_hadamard_8x8_c ++ ++void aom_hadamard_lp_16x16_c(const int16_t *src_diff, ptrdiff_t src_stride, int16_t *coeff); ++#define aom_hadamard_lp_16x16 aom_hadamard_lp_16x16_c ++ ++void aom_hadamard_lp_8x8_c(const int16_t *src_diff, ptrdiff_t src_stride, int16_t *coeff); ++#define aom_hadamard_lp_8x8 aom_hadamard_lp_8x8_c ++ ++void aom_hadamard_lp_8x8_dual_c(const int16_t *src_diff, ptrdiff_t src_stride, int16_t *coeff); ++#define aom_hadamard_lp_8x8_dual aom_hadamard_lp_8x8_dual_c ++ ++void aom_ifft16x16_float_c(const float *input, float *temp, float *output); ++#define aom_ifft16x16_float aom_ifft16x16_float_c ++ ++void aom_ifft2x2_float_c(const float *input, float *temp, float *output); ++#define aom_ifft2x2_float aom_ifft2x2_float_c ++ ++void aom_ifft32x32_float_c(const float *input, float *temp, float *output); ++#define aom_ifft32x32_float aom_ifft32x32_float_c ++ ++void aom_ifft4x4_float_c(const float *input, float *temp, float *output); ++#define aom_ifft4x4_float aom_ifft4x4_float_c ++ ++void aom_ifft8x8_float_c(const float *input, float *temp, float *output); ++#define aom_ifft8x8_float aom_ifft8x8_float_c ++ ++void aom_int_pro_col_c(int16_t *vbuf, const uint8_t *ref, const int ref_stride, const int width, const int height, int norm_factor); ++#define aom_int_pro_col aom_int_pro_col_c ++ ++void aom_int_pro_row_c(int16_t *hbuf, const uint8_t *ref, const int ref_stride, const int width, const int height, int norm_factor); ++#define aom_int_pro_row aom_int_pro_row_c ++ ++void aom_lowbd_blend_a64_d16_mask_c(uint8_t *dst, uint32_t dst_stride, const CONV_BUF_TYPE *src0, uint32_t src0_stride, const CONV_BUF_TYPE *src1, uint32_t src1_stride, const uint8_t *mask, uint32_t mask_stride, int w, int h, int subw, int subh, ConvolveParams *conv_params); ++#define aom_lowbd_blend_a64_d16_mask aom_lowbd_blend_a64_d16_mask_c ++ ++void aom_lpf_horizontal_14_c(uint8_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh); ++#define aom_lpf_horizontal_14 aom_lpf_horizontal_14_c ++ ++void aom_lpf_horizontal_14_dual_c(uint8_t *s, int pitch, const uint8_t *blimit0, const uint8_t *limit0, const uint8_t *thresh0, const uint8_t *blimit1, const uint8_t *limit1, const uint8_t *thresh1); ++#define aom_lpf_horizontal_14_dual aom_lpf_horizontal_14_dual_c ++ ++void aom_lpf_horizontal_14_quad_c(uint8_t *s, int pitch, const uint8_t *blimit0, const uint8_t *limit0, const uint8_t *thresh0); ++#define aom_lpf_horizontal_14_quad aom_lpf_horizontal_14_quad_c ++ ++void aom_lpf_horizontal_4_c(uint8_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh); ++#define aom_lpf_horizontal_4 aom_lpf_horizontal_4_c ++ ++void aom_lpf_horizontal_4_dual_c(uint8_t *s, int pitch, const uint8_t *blimit0, const uint8_t *limit0, const uint8_t *thresh0, const uint8_t *blimit1, const uint8_t *limit1, const uint8_t *thresh1); ++#define aom_lpf_horizontal_4_dual aom_lpf_horizontal_4_dual_c ++ ++void aom_lpf_horizontal_4_quad_c(uint8_t *s, int pitch, const uint8_t *blimit0, const uint8_t *limit0, const uint8_t *thresh0); ++#define aom_lpf_horizontal_4_quad aom_lpf_horizontal_4_quad_c ++ ++void aom_lpf_horizontal_6_c(uint8_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh); ++#define aom_lpf_horizontal_6 aom_lpf_horizontal_6_c ++ ++void aom_lpf_horizontal_6_dual_c(uint8_t *s, int pitch, const uint8_t *blimit0, const uint8_t *limit0, const uint8_t *thresh0, const uint8_t *blimit1, const uint8_t *limit1, const uint8_t *thresh1); ++#define aom_lpf_horizontal_6_dual aom_lpf_horizontal_6_dual_c ++ ++void aom_lpf_horizontal_6_quad_c(uint8_t *s, int pitch, const uint8_t *blimit0, const uint8_t *limit0, const uint8_t *thresh0); ++#define aom_lpf_horizontal_6_quad aom_lpf_horizontal_6_quad_c ++ ++void aom_lpf_horizontal_8_c(uint8_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh); ++#define aom_lpf_horizontal_8 aom_lpf_horizontal_8_c ++ ++void aom_lpf_horizontal_8_dual_c(uint8_t *s, int pitch, const uint8_t *blimit0, const uint8_t *limit0, const uint8_t *thresh0, const uint8_t *blimit1, const uint8_t *limit1, const uint8_t *thresh1); ++#define aom_lpf_horizontal_8_dual aom_lpf_horizontal_8_dual_c ++ ++void aom_lpf_horizontal_8_quad_c(uint8_t *s, int pitch, const uint8_t *blimit0, const uint8_t *limit0, const uint8_t *thresh0); ++#define aom_lpf_horizontal_8_quad aom_lpf_horizontal_8_quad_c ++ ++void aom_lpf_vertical_14_c(uint8_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh); ++#define aom_lpf_vertical_14 aom_lpf_vertical_14_c ++ ++void aom_lpf_vertical_14_dual_c(uint8_t *s, int pitch, const uint8_t *blimit0, const uint8_t *limit0, const uint8_t *thresh0, const uint8_t *blimit1, const uint8_t *limit1, const uint8_t *thresh1); ++#define aom_lpf_vertical_14_dual aom_lpf_vertical_14_dual_c ++ ++void aom_lpf_vertical_14_quad_c(uint8_t *s, int pitch, const uint8_t *blimit0, const uint8_t *limit0, const uint8_t *thresh0); ++#define aom_lpf_vertical_14_quad aom_lpf_vertical_14_quad_c ++ ++void aom_lpf_vertical_4_c(uint8_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh); ++#define aom_lpf_vertical_4 aom_lpf_vertical_4_c ++ ++void aom_lpf_vertical_4_dual_c(uint8_t *s, int pitch, const uint8_t *blimit0, const uint8_t *limit0, const uint8_t *thresh0, const uint8_t *blimit1, const uint8_t *limit1, const uint8_t *thresh1); ++#define aom_lpf_vertical_4_dual aom_lpf_vertical_4_dual_c ++ ++void aom_lpf_vertical_4_quad_c(uint8_t *s, int pitch, const uint8_t *blimit0, const uint8_t *limit0, const uint8_t *thresh0); ++#define aom_lpf_vertical_4_quad aom_lpf_vertical_4_quad_c ++ ++void aom_lpf_vertical_6_c(uint8_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh); ++#define aom_lpf_vertical_6 aom_lpf_vertical_6_c ++ ++void aom_lpf_vertical_6_dual_c(uint8_t *s, int pitch, const uint8_t *blimit0, const uint8_t *limit0, const uint8_t *thresh0, const uint8_t *blimit1, const uint8_t *limit1, const uint8_t *thresh1); ++#define aom_lpf_vertical_6_dual aom_lpf_vertical_6_dual_c ++ ++void aom_lpf_vertical_6_quad_c(uint8_t *s, int pitch, const uint8_t *blimit0, const uint8_t *limit0, const uint8_t *thresh0); ++#define aom_lpf_vertical_6_quad aom_lpf_vertical_6_quad_c ++ ++void aom_lpf_vertical_8_c(uint8_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh); ++#define aom_lpf_vertical_8 aom_lpf_vertical_8_c ++ ++void aom_lpf_vertical_8_dual_c(uint8_t *s, int pitch, const uint8_t *blimit0, const uint8_t *limit0, const uint8_t *thresh0, const uint8_t *blimit1, const uint8_t *limit1, const uint8_t *thresh1); ++#define aom_lpf_vertical_8_dual aom_lpf_vertical_8_dual_c ++ ++void aom_lpf_vertical_8_quad_c(uint8_t *s, int pitch, const uint8_t *blimit0, const uint8_t *limit0, const uint8_t *thresh0); ++#define aom_lpf_vertical_8_quad aom_lpf_vertical_8_quad_c ++ ++unsigned int aom_masked_sad128x128_c(const uint8_t *src, int src_stride, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask); ++#define aom_masked_sad128x128 aom_masked_sad128x128_c ++ ++void aom_masked_sad128x128x4d_c(const uint8_t *src, int src_stride, const uint8_t *ref[4], int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask, unsigned sads[4]); ++#define aom_masked_sad128x128x4d aom_masked_sad128x128x4d_c ++ ++unsigned int aom_masked_sad128x64_c(const uint8_t *src, int src_stride, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask); ++#define aom_masked_sad128x64 aom_masked_sad128x64_c ++ ++void aom_masked_sad128x64x4d_c(const uint8_t *src, int src_stride, const uint8_t *ref[4], int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask, unsigned sads[4]); ++#define aom_masked_sad128x64x4d aom_masked_sad128x64x4d_c ++ ++unsigned int aom_masked_sad16x16_c(const uint8_t *src, int src_stride, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask); ++#define aom_masked_sad16x16 aom_masked_sad16x16_c ++ ++void aom_masked_sad16x16x4d_c(const uint8_t *src, int src_stride, const uint8_t *ref[4], int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask, unsigned sads[4]); ++#define aom_masked_sad16x16x4d aom_masked_sad16x16x4d_c ++ ++unsigned int aom_masked_sad16x32_c(const uint8_t *src, int src_stride, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask); ++#define aom_masked_sad16x32 aom_masked_sad16x32_c ++ ++void aom_masked_sad16x32x4d_c(const uint8_t *src, int src_stride, const uint8_t *ref[4], int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask, unsigned sads[4]); ++#define aom_masked_sad16x32x4d aom_masked_sad16x32x4d_c ++ ++unsigned int aom_masked_sad16x8_c(const uint8_t *src, int src_stride, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask); ++#define aom_masked_sad16x8 aom_masked_sad16x8_c ++ ++void aom_masked_sad16x8x4d_c(const uint8_t *src, int src_stride, const uint8_t *ref[4], int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask, unsigned sads[4]); ++#define aom_masked_sad16x8x4d aom_masked_sad16x8x4d_c ++ ++unsigned int aom_masked_sad32x16_c(const uint8_t *src, int src_stride, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask); ++#define aom_masked_sad32x16 aom_masked_sad32x16_c ++ ++void aom_masked_sad32x16x4d_c(const uint8_t *src, int src_stride, const uint8_t *ref[4], int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask, unsigned sads[4]); ++#define aom_masked_sad32x16x4d aom_masked_sad32x16x4d_c ++ ++unsigned int aom_masked_sad32x32_c(const uint8_t *src, int src_stride, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask); ++#define aom_masked_sad32x32 aom_masked_sad32x32_c ++ ++void aom_masked_sad32x32x4d_c(const uint8_t *src, int src_stride, const uint8_t *ref[4], int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask, unsigned sads[4]); ++#define aom_masked_sad32x32x4d aom_masked_sad32x32x4d_c ++ ++unsigned int aom_masked_sad32x64_c(const uint8_t *src, int src_stride, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask); ++#define aom_masked_sad32x64 aom_masked_sad32x64_c ++ ++void aom_masked_sad32x64x4d_c(const uint8_t *src, int src_stride, const uint8_t *ref[4], int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask, unsigned sads[4]); ++#define aom_masked_sad32x64x4d aom_masked_sad32x64x4d_c ++ ++unsigned int aom_masked_sad4x4_c(const uint8_t *src, int src_stride, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask); ++#define aom_masked_sad4x4 aom_masked_sad4x4_c ++ ++void aom_masked_sad4x4x4d_c(const uint8_t *src, int src_stride, const uint8_t *ref[4], int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask, unsigned sads[4]); ++#define aom_masked_sad4x4x4d aom_masked_sad4x4x4d_c ++ ++unsigned int aom_masked_sad4x8_c(const uint8_t *src, int src_stride, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask); ++#define aom_masked_sad4x8 aom_masked_sad4x8_c ++ ++void aom_masked_sad4x8x4d_c(const uint8_t *src, int src_stride, const uint8_t *ref[4], int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask, unsigned sads[4]); ++#define aom_masked_sad4x8x4d aom_masked_sad4x8x4d_c ++ ++unsigned int aom_masked_sad64x128_c(const uint8_t *src, int src_stride, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask); ++#define aom_masked_sad64x128 aom_masked_sad64x128_c ++ ++void aom_masked_sad64x128x4d_c(const uint8_t *src, int src_stride, const uint8_t *ref[4], int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask, unsigned sads[4]); ++#define aom_masked_sad64x128x4d aom_masked_sad64x128x4d_c ++ ++unsigned int aom_masked_sad64x32_c(const uint8_t *src, int src_stride, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask); ++#define aom_masked_sad64x32 aom_masked_sad64x32_c ++ ++void aom_masked_sad64x32x4d_c(const uint8_t *src, int src_stride, const uint8_t *ref[4], int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask, unsigned sads[4]); ++#define aom_masked_sad64x32x4d aom_masked_sad64x32x4d_c ++ ++unsigned int aom_masked_sad64x64_c(const uint8_t *src, int src_stride, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask); ++#define aom_masked_sad64x64 aom_masked_sad64x64_c ++ ++void aom_masked_sad64x64x4d_c(const uint8_t *src, int src_stride, const uint8_t *ref[4], int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask, unsigned sads[4]); ++#define aom_masked_sad64x64x4d aom_masked_sad64x64x4d_c ++ ++unsigned int aom_masked_sad8x16_c(const uint8_t *src, int src_stride, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask); ++#define aom_masked_sad8x16 aom_masked_sad8x16_c ++ ++void aom_masked_sad8x16x4d_c(const uint8_t *src, int src_stride, const uint8_t *ref[4], int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask, unsigned sads[4]); ++#define aom_masked_sad8x16x4d aom_masked_sad8x16x4d_c ++ ++unsigned int aom_masked_sad8x4_c(const uint8_t *src, int src_stride, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask); ++#define aom_masked_sad8x4 aom_masked_sad8x4_c ++ ++void aom_masked_sad8x4x4d_c(const uint8_t *src, int src_stride, const uint8_t *ref[4], int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask, unsigned sads[4]); ++#define aom_masked_sad8x4x4d aom_masked_sad8x4x4d_c ++ ++unsigned int aom_masked_sad8x8_c(const uint8_t *src, int src_stride, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask); ++#define aom_masked_sad8x8 aom_masked_sad8x8_c ++ ++void aom_masked_sad8x8x4d_c(const uint8_t *src, int src_stride, const uint8_t *ref[4], int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask, unsigned sads[4]); ++#define aom_masked_sad8x8x4d aom_masked_sad8x8x4d_c ++ ++unsigned int aom_masked_sub_pixel_variance128x128_c(const uint8_t *src, int src_stride, int xoffset, int yoffset, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask, unsigned int *sse); ++#define aom_masked_sub_pixel_variance128x128 aom_masked_sub_pixel_variance128x128_c ++ ++unsigned int aom_masked_sub_pixel_variance128x64_c(const uint8_t *src, int src_stride, int xoffset, int yoffset, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask, unsigned int *sse); ++#define aom_masked_sub_pixel_variance128x64 aom_masked_sub_pixel_variance128x64_c ++ ++unsigned int aom_masked_sub_pixel_variance16x16_c(const uint8_t *src, int src_stride, int xoffset, int yoffset, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask, unsigned int *sse); ++#define aom_masked_sub_pixel_variance16x16 aom_masked_sub_pixel_variance16x16_c ++ ++unsigned int aom_masked_sub_pixel_variance16x32_c(const uint8_t *src, int src_stride, int xoffset, int yoffset, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask, unsigned int *sse); ++#define aom_masked_sub_pixel_variance16x32 aom_masked_sub_pixel_variance16x32_c ++ ++unsigned int aom_masked_sub_pixel_variance16x8_c(const uint8_t *src, int src_stride, int xoffset, int yoffset, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask, unsigned int *sse); ++#define aom_masked_sub_pixel_variance16x8 aom_masked_sub_pixel_variance16x8_c ++ ++unsigned int aom_masked_sub_pixel_variance32x16_c(const uint8_t *src, int src_stride, int xoffset, int yoffset, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask, unsigned int *sse); ++#define aom_masked_sub_pixel_variance32x16 aom_masked_sub_pixel_variance32x16_c ++ ++unsigned int aom_masked_sub_pixel_variance32x32_c(const uint8_t *src, int src_stride, int xoffset, int yoffset, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask, unsigned int *sse); ++#define aom_masked_sub_pixel_variance32x32 aom_masked_sub_pixel_variance32x32_c ++ ++unsigned int aom_masked_sub_pixel_variance32x64_c(const uint8_t *src, int src_stride, int xoffset, int yoffset, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask, unsigned int *sse); ++#define aom_masked_sub_pixel_variance32x64 aom_masked_sub_pixel_variance32x64_c ++ ++unsigned int aom_masked_sub_pixel_variance4x4_c(const uint8_t *src, int src_stride, int xoffset, int yoffset, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask, unsigned int *sse); ++#define aom_masked_sub_pixel_variance4x4 aom_masked_sub_pixel_variance4x4_c ++ ++unsigned int aom_masked_sub_pixel_variance4x8_c(const uint8_t *src, int src_stride, int xoffset, int yoffset, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask, unsigned int *sse); ++#define aom_masked_sub_pixel_variance4x8 aom_masked_sub_pixel_variance4x8_c ++ ++unsigned int aom_masked_sub_pixel_variance64x128_c(const uint8_t *src, int src_stride, int xoffset, int yoffset, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask, unsigned int *sse); ++#define aom_masked_sub_pixel_variance64x128 aom_masked_sub_pixel_variance64x128_c ++ ++unsigned int aom_masked_sub_pixel_variance64x32_c(const uint8_t *src, int src_stride, int xoffset, int yoffset, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask, unsigned int *sse); ++#define aom_masked_sub_pixel_variance64x32 aom_masked_sub_pixel_variance64x32_c ++ ++unsigned int aom_masked_sub_pixel_variance64x64_c(const uint8_t *src, int src_stride, int xoffset, int yoffset, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask, unsigned int *sse); ++#define aom_masked_sub_pixel_variance64x64 aom_masked_sub_pixel_variance64x64_c ++ ++unsigned int aom_masked_sub_pixel_variance8x16_c(const uint8_t *src, int src_stride, int xoffset, int yoffset, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask, unsigned int *sse); ++#define aom_masked_sub_pixel_variance8x16 aom_masked_sub_pixel_variance8x16_c ++ ++unsigned int aom_masked_sub_pixel_variance8x4_c(const uint8_t *src, int src_stride, int xoffset, int yoffset, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask, unsigned int *sse); ++#define aom_masked_sub_pixel_variance8x4 aom_masked_sub_pixel_variance8x4_c ++ ++unsigned int aom_masked_sub_pixel_variance8x8_c(const uint8_t *src, int src_stride, int xoffset, int yoffset, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask, unsigned int *sse); ++#define aom_masked_sub_pixel_variance8x8 aom_masked_sub_pixel_variance8x8_c ++ ++void aom_minmax_8x8_c(const uint8_t *s, int p, const uint8_t *d, int dp, int *min, int *max); ++#define aom_minmax_8x8 aom_minmax_8x8_c ++ ++unsigned int aom_mse16x16_c(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int recon_stride, unsigned int *sse); ++#define aom_mse16x16 aom_mse16x16_c ++ ++unsigned int aom_mse16x8_c(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int recon_stride, unsigned int *sse); ++#define aom_mse16x8 aom_mse16x8_c ++ ++unsigned int aom_mse8x16_c(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int recon_stride, unsigned int *sse); ++#define aom_mse8x16 aom_mse8x16_c ++ ++unsigned int aom_mse8x8_c(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int recon_stride, unsigned int *sse); ++#define aom_mse8x8 aom_mse8x8_c ++ ++uint64_t aom_mse_16xh_16bit_c(uint8_t *dst, int dstride,uint16_t *src, int w, int h); ++#define aom_mse_16xh_16bit aom_mse_16xh_16bit_c ++ ++uint64_t aom_mse_wxh_16bit_c(uint8_t *dst, int dstride,uint16_t *src, int sstride, int w, int h); ++#define aom_mse_wxh_16bit aom_mse_wxh_16bit_c ++ ++void aom_paeth_predictor_16x16_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); ++#define aom_paeth_predictor_16x16 aom_paeth_predictor_16x16_c ++ ++void aom_paeth_predictor_16x32_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); ++#define aom_paeth_predictor_16x32 aom_paeth_predictor_16x32_c ++ ++void aom_paeth_predictor_16x4_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); ++#define aom_paeth_predictor_16x4 aom_paeth_predictor_16x4_c ++ ++void aom_paeth_predictor_16x64_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); ++#define aom_paeth_predictor_16x64 aom_paeth_predictor_16x64_c ++ ++void aom_paeth_predictor_16x8_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); ++#define aom_paeth_predictor_16x8 aom_paeth_predictor_16x8_c ++ ++void aom_paeth_predictor_32x16_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); ++#define aom_paeth_predictor_32x16 aom_paeth_predictor_32x16_c ++ ++void aom_paeth_predictor_32x32_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); ++#define aom_paeth_predictor_32x32 aom_paeth_predictor_32x32_c ++ ++void aom_paeth_predictor_32x64_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); ++#define aom_paeth_predictor_32x64 aom_paeth_predictor_32x64_c ++ ++void aom_paeth_predictor_32x8_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); ++#define aom_paeth_predictor_32x8 aom_paeth_predictor_32x8_c ++ ++void aom_paeth_predictor_4x16_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); ++#define aom_paeth_predictor_4x16 aom_paeth_predictor_4x16_c ++ ++void aom_paeth_predictor_4x4_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); ++#define aom_paeth_predictor_4x4 aom_paeth_predictor_4x4_c ++ ++void aom_paeth_predictor_4x8_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); ++#define aom_paeth_predictor_4x8 aom_paeth_predictor_4x8_c ++ ++void aom_paeth_predictor_64x16_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); ++#define aom_paeth_predictor_64x16 aom_paeth_predictor_64x16_c ++ ++void aom_paeth_predictor_64x32_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); ++#define aom_paeth_predictor_64x32 aom_paeth_predictor_64x32_c ++ ++void aom_paeth_predictor_64x64_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); ++#define aom_paeth_predictor_64x64 aom_paeth_predictor_64x64_c ++ ++void aom_paeth_predictor_8x16_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); ++#define aom_paeth_predictor_8x16 aom_paeth_predictor_8x16_c ++ ++void aom_paeth_predictor_8x32_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); ++#define aom_paeth_predictor_8x32 aom_paeth_predictor_8x32_c ++ ++void aom_paeth_predictor_8x4_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); ++#define aom_paeth_predictor_8x4 aom_paeth_predictor_8x4_c ++ ++void aom_paeth_predictor_8x8_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); ++#define aom_paeth_predictor_8x8 aom_paeth_predictor_8x8_c ++ ++void aom_quantize_b_c(const tran_low_t *coeff_ptr, intptr_t n_coeffs, const int16_t *zbin_ptr, const int16_t *round_ptr, const int16_t *quant_ptr, const int16_t *quant_shift_ptr, tran_low_t *qcoeff_ptr, tran_low_t *dqcoeff_ptr, const int16_t *dequant_ptr, uint16_t *eob_ptr, const int16_t *scan, const int16_t *iscan); ++#define aom_quantize_b aom_quantize_b_c ++ ++void aom_quantize_b_32x32_c(const tran_low_t *coeff_ptr, intptr_t n_coeffs, const int16_t *zbin_ptr, const int16_t *round_ptr, const int16_t *quant_ptr, const int16_t *quant_shift_ptr, tran_low_t *qcoeff_ptr, tran_low_t *dqcoeff_ptr, const int16_t *dequant_ptr, uint16_t *eob_ptr, const int16_t *scan, const int16_t *iscan); ++#define aom_quantize_b_32x32 aom_quantize_b_32x32_c ++ ++void aom_quantize_b_64x64_c(const tran_low_t *coeff_ptr, intptr_t n_coeffs, const int16_t *zbin_ptr, const int16_t *round_ptr, const int16_t *quant_ptr, const int16_t *quant_shift_ptr, tran_low_t *qcoeff_ptr, tran_low_t *dqcoeff_ptr, const int16_t *dequant_ptr, uint16_t *eob_ptr, const int16_t *scan, const int16_t *iscan); ++#define aom_quantize_b_64x64 aom_quantize_b_64x64_c ++ ++unsigned int aom_sad128x128_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride); ++#define aom_sad128x128 aom_sad128x128_c ++ ++unsigned int aom_sad128x128_avg_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred); ++#define aom_sad128x128_avg aom_sad128x128_avg_c ++ ++void aom_sad128x128x3d_c(const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_ptr[4], int ref_stride, uint32_t sad_array[4]); ++#define aom_sad128x128x3d aom_sad128x128x3d_c ++ ++void aom_sad128x128x4d_c(const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_ptr[4], int ref_stride, uint32_t sad_array[4]); ++#define aom_sad128x128x4d aom_sad128x128x4d_c ++ ++unsigned int aom_sad128x64_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride); ++#define aom_sad128x64 aom_sad128x64_c ++ ++unsigned int aom_sad128x64_avg_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred); ++#define aom_sad128x64_avg aom_sad128x64_avg_c ++ ++void aom_sad128x64x3d_c(const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_ptr[4], int ref_stride, uint32_t sad_array[4]); ++#define aom_sad128x64x3d aom_sad128x64x3d_c ++ ++void aom_sad128x64x4d_c(const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_ptr[4], int ref_stride, uint32_t sad_array[4]); ++#define aom_sad128x64x4d aom_sad128x64x4d_c ++ ++unsigned int aom_sad16x16_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride); ++#define aom_sad16x16 aom_sad16x16_c ++ ++unsigned int aom_sad16x16_avg_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred); ++#define aom_sad16x16_avg aom_sad16x16_avg_c ++ ++void aom_sad16x16x3d_c(const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_ptr[4], int ref_stride, uint32_t sad_array[4]); ++#define aom_sad16x16x3d aom_sad16x16x3d_c ++ ++void aom_sad16x16x4d_c(const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_ptr[4], int ref_stride, uint32_t sad_array[4]); ++#define aom_sad16x16x4d aom_sad16x16x4d_c ++ ++unsigned int aom_sad16x32_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride); ++#define aom_sad16x32 aom_sad16x32_c ++ ++unsigned int aom_sad16x32_avg_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred); ++#define aom_sad16x32_avg aom_sad16x32_avg_c ++ ++void aom_sad16x32x3d_c(const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_ptr[4], int ref_stride, uint32_t sad_array[4]); ++#define aom_sad16x32x3d aom_sad16x32x3d_c ++ ++void aom_sad16x32x4d_c(const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_ptr[4], int ref_stride, uint32_t sad_array[4]); ++#define aom_sad16x32x4d aom_sad16x32x4d_c ++ ++unsigned int aom_sad16x8_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride); ++#define aom_sad16x8 aom_sad16x8_c ++ ++unsigned int aom_sad16x8_avg_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred); ++#define aom_sad16x8_avg aom_sad16x8_avg_c ++ ++void aom_sad16x8x3d_c(const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_ptr[4], int ref_stride, uint32_t sad_array[4]); ++#define aom_sad16x8x3d aom_sad16x8x3d_c ++ ++void aom_sad16x8x4d_c(const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_ptr[4], int ref_stride, uint32_t sad_array[4]); ++#define aom_sad16x8x4d aom_sad16x8x4d_c ++ ++unsigned int aom_sad32x16_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride); ++#define aom_sad32x16 aom_sad32x16_c ++ ++unsigned int aom_sad32x16_avg_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred); ++#define aom_sad32x16_avg aom_sad32x16_avg_c ++ ++void aom_sad32x16x3d_c(const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_ptr[4], int ref_stride, uint32_t sad_array[4]); ++#define aom_sad32x16x3d aom_sad32x16x3d_c ++ ++void aom_sad32x16x4d_c(const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_ptr[4], int ref_stride, uint32_t sad_array[4]); ++#define aom_sad32x16x4d aom_sad32x16x4d_c ++ ++unsigned int aom_sad32x32_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride); ++#define aom_sad32x32 aom_sad32x32_c ++ ++unsigned int aom_sad32x32_avg_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred); ++#define aom_sad32x32_avg aom_sad32x32_avg_c ++ ++void aom_sad32x32x3d_c(const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_ptr[4], int ref_stride, uint32_t sad_array[4]); ++#define aom_sad32x32x3d aom_sad32x32x3d_c ++ ++void aom_sad32x32x4d_c(const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_ptr[4], int ref_stride, uint32_t sad_array[4]); ++#define aom_sad32x32x4d aom_sad32x32x4d_c ++ ++unsigned int aom_sad32x64_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride); ++#define aom_sad32x64 aom_sad32x64_c ++ ++unsigned int aom_sad32x64_avg_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred); ++#define aom_sad32x64_avg aom_sad32x64_avg_c ++ ++void aom_sad32x64x3d_c(const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_ptr[4], int ref_stride, uint32_t sad_array[4]); ++#define aom_sad32x64x3d aom_sad32x64x3d_c ++ ++void aom_sad32x64x4d_c(const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_ptr[4], int ref_stride, uint32_t sad_array[4]); ++#define aom_sad32x64x4d aom_sad32x64x4d_c ++ ++unsigned int aom_sad4x4_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride); ++#define aom_sad4x4 aom_sad4x4_c ++ ++unsigned int aom_sad4x4_avg_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred); ++#define aom_sad4x4_avg aom_sad4x4_avg_c ++ ++void aom_sad4x4x3d_c(const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_ptr[4], int ref_stride, uint32_t sad_array[4]); ++#define aom_sad4x4x3d aom_sad4x4x3d_c ++ ++void aom_sad4x4x4d_c(const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_ptr[4], int ref_stride, uint32_t sad_array[4]); ++#define aom_sad4x4x4d aom_sad4x4x4d_c ++ ++unsigned int aom_sad4x8_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride); ++#define aom_sad4x8 aom_sad4x8_c ++ ++unsigned int aom_sad4x8_avg_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred); ++#define aom_sad4x8_avg aom_sad4x8_avg_c ++ ++void aom_sad4x8x3d_c(const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_ptr[4], int ref_stride, uint32_t sad_array[4]); ++#define aom_sad4x8x3d aom_sad4x8x3d_c ++ ++void aom_sad4x8x4d_c(const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_ptr[4], int ref_stride, uint32_t sad_array[4]); ++#define aom_sad4x8x4d aom_sad4x8x4d_c ++ ++unsigned int aom_sad64x128_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride); ++#define aom_sad64x128 aom_sad64x128_c ++ ++unsigned int aom_sad64x128_avg_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred); ++#define aom_sad64x128_avg aom_sad64x128_avg_c ++ ++void aom_sad64x128x3d_c(const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_ptr[4], int ref_stride, uint32_t sad_array[4]); ++#define aom_sad64x128x3d aom_sad64x128x3d_c ++ ++void aom_sad64x128x4d_c(const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_ptr[4], int ref_stride, uint32_t sad_array[4]); ++#define aom_sad64x128x4d aom_sad64x128x4d_c ++ ++unsigned int aom_sad64x32_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride); ++#define aom_sad64x32 aom_sad64x32_c ++ ++unsigned int aom_sad64x32_avg_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred); ++#define aom_sad64x32_avg aom_sad64x32_avg_c ++ ++void aom_sad64x32x3d_c(const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_ptr[4], int ref_stride, uint32_t sad_array[4]); ++#define aom_sad64x32x3d aom_sad64x32x3d_c ++ ++void aom_sad64x32x4d_c(const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_ptr[4], int ref_stride, uint32_t sad_array[4]); ++#define aom_sad64x32x4d aom_sad64x32x4d_c ++ ++unsigned int aom_sad64x64_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride); ++#define aom_sad64x64 aom_sad64x64_c ++ ++unsigned int aom_sad64x64_avg_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred); ++#define aom_sad64x64_avg aom_sad64x64_avg_c ++ ++void aom_sad64x64x3d_c(const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_ptr[4], int ref_stride, uint32_t sad_array[4]); ++#define aom_sad64x64x3d aom_sad64x64x3d_c ++ ++void aom_sad64x64x4d_c(const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_ptr[4], int ref_stride, uint32_t sad_array[4]); ++#define aom_sad64x64x4d aom_sad64x64x4d_c ++ ++unsigned int aom_sad8x16_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride); ++#define aom_sad8x16 aom_sad8x16_c ++ ++unsigned int aom_sad8x16_avg_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred); ++#define aom_sad8x16_avg aom_sad8x16_avg_c ++ ++void aom_sad8x16x3d_c(const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_ptr[4], int ref_stride, uint32_t sad_array[4]); ++#define aom_sad8x16x3d aom_sad8x16x3d_c ++ ++void aom_sad8x16x4d_c(const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_ptr[4], int ref_stride, uint32_t sad_array[4]); ++#define aom_sad8x16x4d aom_sad8x16x4d_c ++ ++unsigned int aom_sad8x4_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride); ++#define aom_sad8x4 aom_sad8x4_c ++ ++unsigned int aom_sad8x4_avg_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred); ++#define aom_sad8x4_avg aom_sad8x4_avg_c ++ ++void aom_sad8x4x3d_c(const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_ptr[4], int ref_stride, uint32_t sad_array[4]); ++#define aom_sad8x4x3d aom_sad8x4x3d_c ++ ++void aom_sad8x4x4d_c(const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_ptr[4], int ref_stride, uint32_t sad_array[4]); ++#define aom_sad8x4x4d aom_sad8x4x4d_c ++ ++unsigned int aom_sad8x8_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride); ++#define aom_sad8x8 aom_sad8x8_c ++ ++unsigned int aom_sad8x8_avg_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred); ++#define aom_sad8x8_avg aom_sad8x8_avg_c ++ ++void aom_sad8x8x3d_c(const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_ptr[4], int ref_stride, uint32_t sad_array[4]); ++#define aom_sad8x8x3d aom_sad8x8x3d_c ++ ++void aom_sad8x8x4d_c(const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_ptr[4], int ref_stride, uint32_t sad_array[4]); ++#define aom_sad8x8x4d aom_sad8x8x4d_c ++ ++unsigned int aom_sad_skip_128x128_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride); ++#define aom_sad_skip_128x128 aom_sad_skip_128x128_c ++ ++void aom_sad_skip_128x128x4d_c(const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_ptr[4], int ref_stride, uint32_t sad_array[4]); ++#define aom_sad_skip_128x128x4d aom_sad_skip_128x128x4d_c ++ ++unsigned int aom_sad_skip_128x64_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride); ++#define aom_sad_skip_128x64 aom_sad_skip_128x64_c ++ ++void aom_sad_skip_128x64x4d_c(const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_ptr[4], int ref_stride, uint32_t sad_array[4]); ++#define aom_sad_skip_128x64x4d aom_sad_skip_128x64x4d_c ++ ++unsigned int aom_sad_skip_16x16_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride); ++#define aom_sad_skip_16x16 aom_sad_skip_16x16_c ++ ++void aom_sad_skip_16x16x4d_c(const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_ptr[4], int ref_stride, uint32_t sad_array[4]); ++#define aom_sad_skip_16x16x4d aom_sad_skip_16x16x4d_c ++ ++unsigned int aom_sad_skip_16x32_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride); ++#define aom_sad_skip_16x32 aom_sad_skip_16x32_c ++ ++void aom_sad_skip_16x32x4d_c(const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_ptr[4], int ref_stride, uint32_t sad_array[4]); ++#define aom_sad_skip_16x32x4d aom_sad_skip_16x32x4d_c ++ ++unsigned int aom_sad_skip_16x8_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride); ++#define aom_sad_skip_16x8 aom_sad_skip_16x8_c ++ ++void aom_sad_skip_16x8x4d_c(const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_ptr[4], int ref_stride, uint32_t sad_array[4]); ++#define aom_sad_skip_16x8x4d aom_sad_skip_16x8x4d_c ++ ++unsigned int aom_sad_skip_32x16_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride); ++#define aom_sad_skip_32x16 aom_sad_skip_32x16_c ++ ++void aom_sad_skip_32x16x4d_c(const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_ptr[4], int ref_stride, uint32_t sad_array[4]); ++#define aom_sad_skip_32x16x4d aom_sad_skip_32x16x4d_c ++ ++unsigned int aom_sad_skip_32x32_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride); ++#define aom_sad_skip_32x32 aom_sad_skip_32x32_c ++ ++void aom_sad_skip_32x32x4d_c(const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_ptr[4], int ref_stride, uint32_t sad_array[4]); ++#define aom_sad_skip_32x32x4d aom_sad_skip_32x32x4d_c ++ ++unsigned int aom_sad_skip_32x64_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride); ++#define aom_sad_skip_32x64 aom_sad_skip_32x64_c ++ ++void aom_sad_skip_32x64x4d_c(const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_ptr[4], int ref_stride, uint32_t sad_array[4]); ++#define aom_sad_skip_32x64x4d aom_sad_skip_32x64x4d_c ++ ++unsigned int aom_sad_skip_4x4_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride); ++#define aom_sad_skip_4x4 aom_sad_skip_4x4_c ++ ++void aom_sad_skip_4x4x4d_c(const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_ptr[4], int ref_stride, uint32_t sad_array[4]); ++#define aom_sad_skip_4x4x4d aom_sad_skip_4x4x4d_c ++ ++unsigned int aom_sad_skip_4x8_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride); ++#define aom_sad_skip_4x8 aom_sad_skip_4x8_c ++ ++void aom_sad_skip_4x8x4d_c(const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_ptr[4], int ref_stride, uint32_t sad_array[4]); ++#define aom_sad_skip_4x8x4d aom_sad_skip_4x8x4d_c ++ ++unsigned int aom_sad_skip_64x128_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride); ++#define aom_sad_skip_64x128 aom_sad_skip_64x128_c ++ ++void aom_sad_skip_64x128x4d_c(const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_ptr[4], int ref_stride, uint32_t sad_array[4]); ++#define aom_sad_skip_64x128x4d aom_sad_skip_64x128x4d_c ++ ++unsigned int aom_sad_skip_64x32_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride); ++#define aom_sad_skip_64x32 aom_sad_skip_64x32_c ++ ++void aom_sad_skip_64x32x4d_c(const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_ptr[4], int ref_stride, uint32_t sad_array[4]); ++#define aom_sad_skip_64x32x4d aom_sad_skip_64x32x4d_c ++ ++unsigned int aom_sad_skip_64x64_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride); ++#define aom_sad_skip_64x64 aom_sad_skip_64x64_c ++ ++void aom_sad_skip_64x64x4d_c(const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_ptr[4], int ref_stride, uint32_t sad_array[4]); ++#define aom_sad_skip_64x64x4d aom_sad_skip_64x64x4d_c ++ ++unsigned int aom_sad_skip_8x16_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride); ++#define aom_sad_skip_8x16 aom_sad_skip_8x16_c ++ ++void aom_sad_skip_8x16x4d_c(const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_ptr[4], int ref_stride, uint32_t sad_array[4]); ++#define aom_sad_skip_8x16x4d aom_sad_skip_8x16x4d_c ++ ++unsigned int aom_sad_skip_8x4_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride); ++#define aom_sad_skip_8x4 aom_sad_skip_8x4_c ++ ++void aom_sad_skip_8x4x4d_c(const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_ptr[4], int ref_stride, uint32_t sad_array[4]); ++#define aom_sad_skip_8x4x4d aom_sad_skip_8x4x4d_c ++ ++unsigned int aom_sad_skip_8x8_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride); ++#define aom_sad_skip_8x8 aom_sad_skip_8x8_c ++ ++void aom_sad_skip_8x8x4d_c(const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_ptr[4], int ref_stride, uint32_t sad_array[4]); ++#define aom_sad_skip_8x8x4d aom_sad_skip_8x8x4d_c ++ ++int aom_satd_c(const tran_low_t *coeff, int length); ++#define aom_satd aom_satd_c ++ ++int aom_satd_lp_c(const int16_t *coeff, int length); ++#define aom_satd_lp aom_satd_lp_c ++ ++void aom_scaled_2d_c(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const InterpKernel *filter, int x0_q4, int x_step_q4, int y0_q4, int y_step_q4, int w, int h); ++#define aom_scaled_2d aom_scaled_2d_c ++ ++void aom_smooth_h_predictor_16x16_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); ++#define aom_smooth_h_predictor_16x16 aom_smooth_h_predictor_16x16_c ++ ++void aom_smooth_h_predictor_16x32_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); ++#define aom_smooth_h_predictor_16x32 aom_smooth_h_predictor_16x32_c ++ ++void aom_smooth_h_predictor_16x4_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); ++#define aom_smooth_h_predictor_16x4 aom_smooth_h_predictor_16x4_c ++ ++void aom_smooth_h_predictor_16x64_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); ++#define aom_smooth_h_predictor_16x64 aom_smooth_h_predictor_16x64_c ++ ++void aom_smooth_h_predictor_16x8_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); ++#define aom_smooth_h_predictor_16x8 aom_smooth_h_predictor_16x8_c ++ ++void aom_smooth_h_predictor_32x16_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); ++#define aom_smooth_h_predictor_32x16 aom_smooth_h_predictor_32x16_c ++ ++void aom_smooth_h_predictor_32x32_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); ++#define aom_smooth_h_predictor_32x32 aom_smooth_h_predictor_32x32_c ++ ++void aom_smooth_h_predictor_32x64_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); ++#define aom_smooth_h_predictor_32x64 aom_smooth_h_predictor_32x64_c ++ ++void aom_smooth_h_predictor_32x8_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); ++#define aom_smooth_h_predictor_32x8 aom_smooth_h_predictor_32x8_c ++ ++void aom_smooth_h_predictor_4x16_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); ++#define aom_smooth_h_predictor_4x16 aom_smooth_h_predictor_4x16_c ++ ++void aom_smooth_h_predictor_4x4_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); ++#define aom_smooth_h_predictor_4x4 aom_smooth_h_predictor_4x4_c ++ ++void aom_smooth_h_predictor_4x8_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); ++#define aom_smooth_h_predictor_4x8 aom_smooth_h_predictor_4x8_c ++ ++void aom_smooth_h_predictor_64x16_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); ++#define aom_smooth_h_predictor_64x16 aom_smooth_h_predictor_64x16_c ++ ++void aom_smooth_h_predictor_64x32_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); ++#define aom_smooth_h_predictor_64x32 aom_smooth_h_predictor_64x32_c ++ ++void aom_smooth_h_predictor_64x64_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); ++#define aom_smooth_h_predictor_64x64 aom_smooth_h_predictor_64x64_c ++ ++void aom_smooth_h_predictor_8x16_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); ++#define aom_smooth_h_predictor_8x16 aom_smooth_h_predictor_8x16_c ++ ++void aom_smooth_h_predictor_8x32_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); ++#define aom_smooth_h_predictor_8x32 aom_smooth_h_predictor_8x32_c ++ ++void aom_smooth_h_predictor_8x4_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); ++#define aom_smooth_h_predictor_8x4 aom_smooth_h_predictor_8x4_c ++ ++void aom_smooth_h_predictor_8x8_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); ++#define aom_smooth_h_predictor_8x8 aom_smooth_h_predictor_8x8_c ++ ++void aom_smooth_predictor_16x16_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); ++#define aom_smooth_predictor_16x16 aom_smooth_predictor_16x16_c ++ ++void aom_smooth_predictor_16x32_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); ++#define aom_smooth_predictor_16x32 aom_smooth_predictor_16x32_c ++ ++void aom_smooth_predictor_16x4_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); ++#define aom_smooth_predictor_16x4 aom_smooth_predictor_16x4_c ++ ++void aom_smooth_predictor_16x64_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); ++#define aom_smooth_predictor_16x64 aom_smooth_predictor_16x64_c ++ ++void aom_smooth_predictor_16x8_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); ++#define aom_smooth_predictor_16x8 aom_smooth_predictor_16x8_c ++ ++void aom_smooth_predictor_32x16_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); ++#define aom_smooth_predictor_32x16 aom_smooth_predictor_32x16_c ++ ++void aom_smooth_predictor_32x32_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); ++#define aom_smooth_predictor_32x32 aom_smooth_predictor_32x32_c ++ ++void aom_smooth_predictor_32x64_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); ++#define aom_smooth_predictor_32x64 aom_smooth_predictor_32x64_c ++ ++void aom_smooth_predictor_32x8_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); ++#define aom_smooth_predictor_32x8 aom_smooth_predictor_32x8_c ++ ++void aom_smooth_predictor_4x16_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); ++#define aom_smooth_predictor_4x16 aom_smooth_predictor_4x16_c ++ ++void aom_smooth_predictor_4x4_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); ++#define aom_smooth_predictor_4x4 aom_smooth_predictor_4x4_c ++ ++void aom_smooth_predictor_4x8_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); ++#define aom_smooth_predictor_4x8 aom_smooth_predictor_4x8_c ++ ++void aom_smooth_predictor_64x16_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); ++#define aom_smooth_predictor_64x16 aom_smooth_predictor_64x16_c ++ ++void aom_smooth_predictor_64x32_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); ++#define aom_smooth_predictor_64x32 aom_smooth_predictor_64x32_c ++ ++void aom_smooth_predictor_64x64_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); ++#define aom_smooth_predictor_64x64 aom_smooth_predictor_64x64_c ++ ++void aom_smooth_predictor_8x16_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); ++#define aom_smooth_predictor_8x16 aom_smooth_predictor_8x16_c ++ ++void aom_smooth_predictor_8x32_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); ++#define aom_smooth_predictor_8x32 aom_smooth_predictor_8x32_c ++ ++void aom_smooth_predictor_8x4_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); ++#define aom_smooth_predictor_8x4 aom_smooth_predictor_8x4_c ++ ++void aom_smooth_predictor_8x8_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); ++#define aom_smooth_predictor_8x8 aom_smooth_predictor_8x8_c ++ ++void aom_smooth_v_predictor_16x16_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); ++#define aom_smooth_v_predictor_16x16 aom_smooth_v_predictor_16x16_c ++ ++void aom_smooth_v_predictor_16x32_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); ++#define aom_smooth_v_predictor_16x32 aom_smooth_v_predictor_16x32_c ++ ++void aom_smooth_v_predictor_16x4_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); ++#define aom_smooth_v_predictor_16x4 aom_smooth_v_predictor_16x4_c ++ ++void aom_smooth_v_predictor_16x64_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); ++#define aom_smooth_v_predictor_16x64 aom_smooth_v_predictor_16x64_c ++ ++void aom_smooth_v_predictor_16x8_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); ++#define aom_smooth_v_predictor_16x8 aom_smooth_v_predictor_16x8_c ++ ++void aom_smooth_v_predictor_32x16_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); ++#define aom_smooth_v_predictor_32x16 aom_smooth_v_predictor_32x16_c ++ ++void aom_smooth_v_predictor_32x32_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); ++#define aom_smooth_v_predictor_32x32 aom_smooth_v_predictor_32x32_c ++ ++void aom_smooth_v_predictor_32x64_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); ++#define aom_smooth_v_predictor_32x64 aom_smooth_v_predictor_32x64_c ++ ++void aom_smooth_v_predictor_32x8_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); ++#define aom_smooth_v_predictor_32x8 aom_smooth_v_predictor_32x8_c ++ ++void aom_smooth_v_predictor_4x16_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); ++#define aom_smooth_v_predictor_4x16 aom_smooth_v_predictor_4x16_c ++ ++void aom_smooth_v_predictor_4x4_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); ++#define aom_smooth_v_predictor_4x4 aom_smooth_v_predictor_4x4_c ++ ++void aom_smooth_v_predictor_4x8_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); ++#define aom_smooth_v_predictor_4x8 aom_smooth_v_predictor_4x8_c ++ ++void aom_smooth_v_predictor_64x16_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); ++#define aom_smooth_v_predictor_64x16 aom_smooth_v_predictor_64x16_c ++ ++void aom_smooth_v_predictor_64x32_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); ++#define aom_smooth_v_predictor_64x32 aom_smooth_v_predictor_64x32_c ++ ++void aom_smooth_v_predictor_64x64_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); ++#define aom_smooth_v_predictor_64x64 aom_smooth_v_predictor_64x64_c ++ ++void aom_smooth_v_predictor_8x16_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); ++#define aom_smooth_v_predictor_8x16 aom_smooth_v_predictor_8x16_c ++ ++void aom_smooth_v_predictor_8x32_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); ++#define aom_smooth_v_predictor_8x32 aom_smooth_v_predictor_8x32_c ++ ++void aom_smooth_v_predictor_8x4_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); ++#define aom_smooth_v_predictor_8x4 aom_smooth_v_predictor_8x4_c ++ ++void aom_smooth_v_predictor_8x8_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); ++#define aom_smooth_v_predictor_8x8 aom_smooth_v_predictor_8x8_c ++ ++int64_t aom_sse_c(const uint8_t *a, int a_stride, const uint8_t *b,int b_stride, int width, int height); ++#define aom_sse aom_sse_c ++ ++void aom_ssim_parms_8x8_c(const uint8_t *s, int sp, const uint8_t *r, int rp, uint32_t *sum_s, uint32_t *sum_r, uint32_t *sum_sq_s, uint32_t *sum_sq_r, uint32_t *sum_sxr); ++#define aom_ssim_parms_8x8 aom_ssim_parms_8x8_c ++ ++uint32_t aom_sub_pixel_avg_variance128x128_c(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred); ++#define aom_sub_pixel_avg_variance128x128 aom_sub_pixel_avg_variance128x128_c ++ ++uint32_t aom_sub_pixel_avg_variance128x64_c(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred); ++#define aom_sub_pixel_avg_variance128x64 aom_sub_pixel_avg_variance128x64_c ++ ++uint32_t aom_sub_pixel_avg_variance16x16_c(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred); ++#define aom_sub_pixel_avg_variance16x16 aom_sub_pixel_avg_variance16x16_c ++ ++uint32_t aom_sub_pixel_avg_variance16x32_c(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred); ++#define aom_sub_pixel_avg_variance16x32 aom_sub_pixel_avg_variance16x32_c ++ ++uint32_t aom_sub_pixel_avg_variance16x8_c(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred); ++#define aom_sub_pixel_avg_variance16x8 aom_sub_pixel_avg_variance16x8_c ++ ++uint32_t aom_sub_pixel_avg_variance32x16_c(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred); ++#define aom_sub_pixel_avg_variance32x16 aom_sub_pixel_avg_variance32x16_c ++ ++uint32_t aom_sub_pixel_avg_variance32x32_c(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred); ++#define aom_sub_pixel_avg_variance32x32 aom_sub_pixel_avg_variance32x32_c ++ ++uint32_t aom_sub_pixel_avg_variance32x64_c(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred); ++#define aom_sub_pixel_avg_variance32x64 aom_sub_pixel_avg_variance32x64_c ++ ++uint32_t aom_sub_pixel_avg_variance4x4_c(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred); ++#define aom_sub_pixel_avg_variance4x4 aom_sub_pixel_avg_variance4x4_c ++ ++uint32_t aom_sub_pixel_avg_variance4x8_c(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred); ++#define aom_sub_pixel_avg_variance4x8 aom_sub_pixel_avg_variance4x8_c ++ ++uint32_t aom_sub_pixel_avg_variance64x128_c(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred); ++#define aom_sub_pixel_avg_variance64x128 aom_sub_pixel_avg_variance64x128_c ++ ++uint32_t aom_sub_pixel_avg_variance64x32_c(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred); ++#define aom_sub_pixel_avg_variance64x32 aom_sub_pixel_avg_variance64x32_c ++ ++uint32_t aom_sub_pixel_avg_variance64x64_c(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred); ++#define aom_sub_pixel_avg_variance64x64 aom_sub_pixel_avg_variance64x64_c ++ ++uint32_t aom_sub_pixel_avg_variance8x16_c(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred); ++#define aom_sub_pixel_avg_variance8x16 aom_sub_pixel_avg_variance8x16_c ++ ++uint32_t aom_sub_pixel_avg_variance8x4_c(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred); ++#define aom_sub_pixel_avg_variance8x4 aom_sub_pixel_avg_variance8x4_c ++ ++uint32_t aom_sub_pixel_avg_variance8x8_c(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred); ++#define aom_sub_pixel_avg_variance8x8 aom_sub_pixel_avg_variance8x8_c ++ ++uint32_t aom_sub_pixel_variance128x128_c(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse); ++#define aom_sub_pixel_variance128x128 aom_sub_pixel_variance128x128_c ++ ++uint32_t aom_sub_pixel_variance128x64_c(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse); ++#define aom_sub_pixel_variance128x64 aom_sub_pixel_variance128x64_c ++ ++uint32_t aom_sub_pixel_variance16x16_c(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse); ++#define aom_sub_pixel_variance16x16 aom_sub_pixel_variance16x16_c ++ ++uint32_t aom_sub_pixel_variance16x32_c(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse); ++#define aom_sub_pixel_variance16x32 aom_sub_pixel_variance16x32_c ++ ++uint32_t aom_sub_pixel_variance16x8_c(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse); ++#define aom_sub_pixel_variance16x8 aom_sub_pixel_variance16x8_c ++ ++uint32_t aom_sub_pixel_variance32x16_c(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse); ++#define aom_sub_pixel_variance32x16 aom_sub_pixel_variance32x16_c ++ ++uint32_t aom_sub_pixel_variance32x32_c(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse); ++#define aom_sub_pixel_variance32x32 aom_sub_pixel_variance32x32_c ++ ++uint32_t aom_sub_pixel_variance32x64_c(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse); ++#define aom_sub_pixel_variance32x64 aom_sub_pixel_variance32x64_c ++ ++uint32_t aom_sub_pixel_variance4x4_c(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse); ++#define aom_sub_pixel_variance4x4 aom_sub_pixel_variance4x4_c ++ ++uint32_t aom_sub_pixel_variance4x8_c(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse); ++#define aom_sub_pixel_variance4x8 aom_sub_pixel_variance4x8_c ++ ++uint32_t aom_sub_pixel_variance64x128_c(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse); ++#define aom_sub_pixel_variance64x128 aom_sub_pixel_variance64x128_c ++ ++uint32_t aom_sub_pixel_variance64x32_c(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse); ++#define aom_sub_pixel_variance64x32 aom_sub_pixel_variance64x32_c ++ ++uint32_t aom_sub_pixel_variance64x64_c(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse); ++#define aom_sub_pixel_variance64x64 aom_sub_pixel_variance64x64_c ++ ++uint32_t aom_sub_pixel_variance8x16_c(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse); ++#define aom_sub_pixel_variance8x16 aom_sub_pixel_variance8x16_c ++ ++uint32_t aom_sub_pixel_variance8x4_c(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse); ++#define aom_sub_pixel_variance8x4 aom_sub_pixel_variance8x4_c ++ ++uint32_t aom_sub_pixel_variance8x8_c(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse); ++#define aom_sub_pixel_variance8x8 aom_sub_pixel_variance8x8_c ++ ++void aom_subtract_block_c(int rows, int cols, int16_t *diff_ptr, ptrdiff_t diff_stride, const uint8_t *src_ptr, ptrdiff_t src_stride, const uint8_t *pred_ptr, ptrdiff_t pred_stride); ++#define aom_subtract_block aom_subtract_block_c ++ ++uint64_t aom_sum_squares_2d_i16_c(const int16_t *src, int stride, int width, int height); ++#define aom_sum_squares_2d_i16 aom_sum_squares_2d_i16_c ++ ++uint64_t aom_sum_squares_i16_c(const int16_t *src, uint32_t N); ++#define aom_sum_squares_i16 aom_sum_squares_i16_c ++ ++uint64_t aom_sum_sse_2d_i16_c(const int16_t *src, int src_stride, int width, int height, int *sum); ++#define aom_sum_sse_2d_i16 aom_sum_sse_2d_i16_c ++ ++void aom_v_predictor_16x16_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); ++#define aom_v_predictor_16x16 aom_v_predictor_16x16_c ++ ++void aom_v_predictor_16x32_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); ++#define aom_v_predictor_16x32 aom_v_predictor_16x32_c ++ ++void aom_v_predictor_16x4_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); ++#define aom_v_predictor_16x4 aom_v_predictor_16x4_c ++ ++void aom_v_predictor_16x64_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); ++#define aom_v_predictor_16x64 aom_v_predictor_16x64_c ++ ++void aom_v_predictor_16x8_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); ++#define aom_v_predictor_16x8 aom_v_predictor_16x8_c ++ ++void aom_v_predictor_32x16_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); ++#define aom_v_predictor_32x16 aom_v_predictor_32x16_c ++ ++void aom_v_predictor_32x32_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); ++#define aom_v_predictor_32x32 aom_v_predictor_32x32_c ++ ++void aom_v_predictor_32x64_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); ++#define aom_v_predictor_32x64 aom_v_predictor_32x64_c ++ ++void aom_v_predictor_32x8_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); ++#define aom_v_predictor_32x8 aom_v_predictor_32x8_c ++ ++void aom_v_predictor_4x16_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); ++#define aom_v_predictor_4x16 aom_v_predictor_4x16_c ++ ++void aom_v_predictor_4x4_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); ++#define aom_v_predictor_4x4 aom_v_predictor_4x4_c ++ ++void aom_v_predictor_4x8_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); ++#define aom_v_predictor_4x8 aom_v_predictor_4x8_c ++ ++void aom_v_predictor_64x16_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); ++#define aom_v_predictor_64x16 aom_v_predictor_64x16_c ++ ++void aom_v_predictor_64x32_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); ++#define aom_v_predictor_64x32 aom_v_predictor_64x32_c ++ ++void aom_v_predictor_64x64_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); ++#define aom_v_predictor_64x64 aom_v_predictor_64x64_c ++ ++void aom_v_predictor_8x16_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); ++#define aom_v_predictor_8x16 aom_v_predictor_8x16_c ++ ++void aom_v_predictor_8x32_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); ++#define aom_v_predictor_8x32 aom_v_predictor_8x32_c ++ ++void aom_v_predictor_8x4_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); ++#define aom_v_predictor_8x4 aom_v_predictor_8x4_c ++ ++void aom_v_predictor_8x8_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); ++#define aom_v_predictor_8x8 aom_v_predictor_8x8_c ++ ++uint64_t aom_var_2d_u16_c(uint8_t *src, int src_stride, int width, int height); ++#define aom_var_2d_u16 aom_var_2d_u16_c ++ ++uint64_t aom_var_2d_u8_c(uint8_t *src, int src_stride, int width, int height); ++#define aom_var_2d_u8 aom_var_2d_u8_c ++ ++unsigned int aom_variance128x128_c(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse); ++#define aom_variance128x128 aom_variance128x128_c ++ ++unsigned int aom_variance128x64_c(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse); ++#define aom_variance128x64 aom_variance128x64_c ++ ++unsigned int aom_variance16x16_c(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse); ++#define aom_variance16x16 aom_variance16x16_c ++ ++unsigned int aom_variance16x32_c(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse); ++#define aom_variance16x32 aom_variance16x32_c ++ ++unsigned int aom_variance16x8_c(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse); ++#define aom_variance16x8 aom_variance16x8_c ++ ++unsigned int aom_variance32x16_c(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse); ++#define aom_variance32x16 aom_variance32x16_c ++ ++unsigned int aom_variance32x32_c(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse); ++#define aom_variance32x32 aom_variance32x32_c ++ ++unsigned int aom_variance32x64_c(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse); ++#define aom_variance32x64 aom_variance32x64_c ++ ++unsigned int aom_variance4x4_c(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse); ++#define aom_variance4x4 aom_variance4x4_c ++ ++unsigned int aom_variance4x8_c(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse); ++#define aom_variance4x8 aom_variance4x8_c ++ ++unsigned int aom_variance64x128_c(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse); ++#define aom_variance64x128 aom_variance64x128_c ++ ++unsigned int aom_variance64x32_c(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse); ++#define aom_variance64x32 aom_variance64x32_c ++ ++unsigned int aom_variance64x64_c(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse); ++#define aom_variance64x64 aom_variance64x64_c ++ ++unsigned int aom_variance8x16_c(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse); ++#define aom_variance8x16 aom_variance8x16_c ++ ++unsigned int aom_variance8x4_c(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse); ++#define aom_variance8x4 aom_variance8x4_c ++ ++unsigned int aom_variance8x8_c(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse); ++#define aom_variance8x8 aom_variance8x8_c ++ ++int aom_vector_var_c(const int16_t *ref, const int16_t *src, int bwl); ++#define aom_vector_var aom_vector_var_c ++ ++void aom_dsp_rtcd(void); ++ ++#include "config/aom_config.h" ++ ++#ifdef RTCD_C ++#include "aom_ports/ppc.h" ++static void setup_rtcd_internal(void) ++{ ++ int flags = ppc_simd_caps(); ++ ++ (void)flags; ++ ++} ++#endif ++ ++#ifdef __cplusplus ++} // extern "C" ++#endif ++ ++#endif +Index: chromium-122.0.6261.128/third_party/libaom/source/config/linux/ppc64/config/aom_scale_rtcd.h +=================================================================== +--- /dev/null ++++ chromium-122.0.6261.128/third_party/libaom/source/config/linux/ppc64/config/aom_scale_rtcd.h +@@ -0,0 +1,105 @@ ++// This file is generated. Do not edit. ++#ifndef AOM_SCALE_RTCD_H_ ++#define AOM_SCALE_RTCD_H_ ++ ++#ifdef RTCD_C ++#define RTCD_EXTERN ++#else ++#define RTCD_EXTERN extern ++#endif ++ ++struct yv12_buffer_config; ++ ++#ifdef __cplusplus ++extern "C" { ++#endif ++ ++void aom_extend_frame_borders_c(struct yv12_buffer_config *ybf, const int num_planes); ++#define aom_extend_frame_borders aom_extend_frame_borders_c ++ ++void aom_extend_frame_borders_plane_row_c(const struct yv12_buffer_config *ybf, int plane, int v_start, int v_end); ++#define aom_extend_frame_borders_plane_row aom_extend_frame_borders_plane_row_c ++ ++void aom_extend_frame_borders_y_c(struct yv12_buffer_config *ybf); ++#define aom_extend_frame_borders_y aom_extend_frame_borders_y_c ++ ++void aom_extend_frame_inner_borders_c(struct yv12_buffer_config *ybf, const int num_planes); ++#define aom_extend_frame_inner_borders aom_extend_frame_inner_borders_c ++ ++void aom_horizontal_line_2_1_scale_c(const unsigned char *source, unsigned int source_width, unsigned char *dest, unsigned int dest_width); ++#define aom_horizontal_line_2_1_scale aom_horizontal_line_2_1_scale_c ++ ++void aom_horizontal_line_5_3_scale_c(const unsigned char *source, unsigned int source_width, unsigned char *dest, unsigned int dest_width); ++#define aom_horizontal_line_5_3_scale aom_horizontal_line_5_3_scale_c ++ ++void aom_horizontal_line_5_4_scale_c(const unsigned char *source, unsigned int source_width, unsigned char *dest, unsigned int dest_width); ++#define aom_horizontal_line_5_4_scale aom_horizontal_line_5_4_scale_c ++ ++void aom_vertical_band_2_1_scale_c(unsigned char *source, int src_pitch, unsigned char *dest, int dest_pitch, unsigned int dest_width); ++#define aom_vertical_band_2_1_scale aom_vertical_band_2_1_scale_c ++ ++void aom_vertical_band_2_1_scale_i_c(unsigned char *source, int src_pitch, unsigned char *dest, int dest_pitch, unsigned int dest_width); ++#define aom_vertical_band_2_1_scale_i aom_vertical_band_2_1_scale_i_c ++ ++void aom_vertical_band_5_3_scale_c(unsigned char *source, int src_pitch, unsigned char *dest, int dest_pitch, unsigned int dest_width); ++#define aom_vertical_band_5_3_scale aom_vertical_band_5_3_scale_c ++ ++void aom_vertical_band_5_4_scale_c(unsigned char *source, int src_pitch, unsigned char *dest, int dest_pitch, unsigned int dest_width); ++#define aom_vertical_band_5_4_scale aom_vertical_band_5_4_scale_c ++ ++void aom_yv12_copy_frame_c(const struct yv12_buffer_config *src_bc, struct yv12_buffer_config *dst_bc, const int num_planes); ++#define aom_yv12_copy_frame aom_yv12_copy_frame_c ++ ++void aom_yv12_copy_u_c(const struct yv12_buffer_config *src_bc, struct yv12_buffer_config *dst_bc); ++#define aom_yv12_copy_u aom_yv12_copy_u_c ++ ++void aom_yv12_copy_v_c(const struct yv12_buffer_config *src_bc, struct yv12_buffer_config *dst_bc); ++#define aom_yv12_copy_v aom_yv12_copy_v_c ++ ++void aom_yv12_copy_y_c(const struct yv12_buffer_config *src_ybc, struct yv12_buffer_config *dst_ybc); ++#define aom_yv12_copy_y aom_yv12_copy_y_c ++ ++void aom_yv12_extend_frame_borders_c(struct yv12_buffer_config *ybf, const int num_planes); ++#define aom_yv12_extend_frame_borders aom_yv12_extend_frame_borders_c ++ ++void aom_yv12_partial_coloc_copy_u_c(const struct yv12_buffer_config *src_bc, struct yv12_buffer_config *dst_bc, int hstart, int hend, int vstart, int vend); ++#define aom_yv12_partial_coloc_copy_u aom_yv12_partial_coloc_copy_u_c ++ ++void aom_yv12_partial_coloc_copy_v_c(const struct yv12_buffer_config *src_bc, struct yv12_buffer_config *dst_bc, int hstart, int hend, int vstart, int vend); ++#define aom_yv12_partial_coloc_copy_v aom_yv12_partial_coloc_copy_v_c ++ ++void aom_yv12_partial_coloc_copy_y_c(const struct yv12_buffer_config *src_ybc, struct yv12_buffer_config *dst_ybc, int hstart, int hend, int vstart, int vend); ++#define aom_yv12_partial_coloc_copy_y aom_yv12_partial_coloc_copy_y_c ++ ++void aom_yv12_partial_copy_u_c(const struct yv12_buffer_config *src_bc, int hstart1, int hend1, int vstart1, int vend1, struct yv12_buffer_config *dst_bc, int hstart2, int vstart2); ++#define aom_yv12_partial_copy_u aom_yv12_partial_copy_u_c ++ ++void aom_yv12_partial_copy_v_c(const struct yv12_buffer_config *src_bc, int hstart1, int hend1, int vstart1, int vend1, struct yv12_buffer_config *dst_bc, int hstart2, int vstart2); ++#define aom_yv12_partial_copy_v aom_yv12_partial_copy_v_c ++ ++void aom_yv12_partial_copy_y_c(const struct yv12_buffer_config *src_ybc, int hstart1, int hend1, int vstart1, int vend1, struct yv12_buffer_config *dst_ybc, int hstart2, int vstart2); ++#define aom_yv12_partial_copy_y aom_yv12_partial_copy_y_c ++ ++int aom_yv12_realloc_with_new_border_c(struct yv12_buffer_config *ybf, int new_border, int byte_alignment, int num_pyramid_levels, int num_planes); ++#define aom_yv12_realloc_with_new_border aom_yv12_realloc_with_new_border_c ++ ++void aom_scale_rtcd(void); ++ ++#include "config/aom_config.h" ++ ++#ifdef RTCD_C ++#include "aom_ports/ppc.h" ++static void setup_rtcd_internal(void) ++{ ++ int flags = ppc_simd_caps(); ++ ++ (void)flags; ++ ++} ++#endif ++ ++#ifdef __cplusplus ++} // extern "C" ++#endif ++ ++#endif +Index: chromium-122.0.6261.128/third_party/libaom/source/config/linux/ppc64/config/av1_rtcd.h +=================================================================== +--- /dev/null ++++ chromium-122.0.6261.128/third_party/libaom/source/config/linux/ppc64/config/av1_rtcd.h +@@ -0,0 +1,478 @@ ++// This file is generated. Do not edit. ++#ifndef AV1_RTCD_H_ ++#define AV1_RTCD_H_ ++ ++#ifdef RTCD_C ++#define RTCD_EXTERN ++#else ++#define RTCD_EXTERN extern ++#endif ++ ++/* ++ * AV1 ++ */ ++ ++#include "aom/aom_integer.h" ++#include "aom_dsp/odintrin.h" ++#include "aom_dsp/txfm_common.h" ++#include "av1/common/av1_txfm.h" ++#include "av1/common/common.h" ++#include "av1/common/convolve.h" ++#include "av1/common/enums.h" ++#include "av1/common/filter.h" ++#include "av1/common/quant_common.h" ++#include "av1/common/restoration.h" ++ ++struct macroblockd; ++ ++/* Encoder forward decls */ ++struct macroblock; ++struct txfm_param; ++struct aom_variance_vtable; ++struct search_site_config; ++struct yv12_buffer_config; ++struct NN_CONFIG; ++typedef struct NN_CONFIG NN_CONFIG; ++ ++enum { NONE, RELU, SOFTSIGN, SIGMOID } UENUM1BYTE(ACTIVATION); ++#if CONFIG_NN_V2 ++enum { SOFTMAX_CROSS_ENTROPY } UENUM1BYTE(LOSS); ++struct NN_CONFIG_V2; ++typedef struct NN_CONFIG_V2 NN_CONFIG_V2; ++struct FC_LAYER; ++typedef struct FC_LAYER FC_LAYER; ++#endif // CONFIG_NN_V2 ++ ++struct CNN_CONFIG; ++typedef struct CNN_CONFIG CNN_CONFIG; ++struct CNN_LAYER_CONFIG; ++typedef struct CNN_LAYER_CONFIG CNN_LAYER_CONFIG; ++struct CNN_THREAD_DATA; ++typedef struct CNN_THREAD_DATA CNN_THREAD_DATA; ++struct CNN_BRANCH_CONFIG; ++typedef struct CNN_BRANCH_CONFIG CNN_BRANCH_CONFIG; ++struct CNN_MULTI_OUT; ++typedef struct CNN_MULTI_OUT CNN_MULTI_OUT; ++ ++/* Function pointers return by CfL functions */ ++typedef void (*cfl_subsample_lbd_fn)(const uint8_t *input, int input_stride, ++ uint16_t *output_q3); ++ ++#if CONFIG_AV1_HIGHBITDEPTH ++typedef void (*cfl_subsample_hbd_fn)(const uint16_t *input, int input_stride, ++ uint16_t *output_q3); ++ ++typedef void (*cfl_predict_hbd_fn)(const int16_t *src, uint16_t *dst, ++ int dst_stride, int alpha_q3, int bd); ++#endif ++ ++typedef void (*cfl_subtract_average_fn)(const uint16_t *src, int16_t *dst); ++ ++typedef void (*cfl_predict_lbd_fn)(const int16_t *src, uint8_t *dst, ++ int dst_stride, int alpha_q3); ++ ++ ++#ifdef __cplusplus ++extern "C" { ++#endif ++ ++void aom_comp_avg_upsampled_pred_c(MACROBLOCKD *xd, const struct AV1Common *const cm, int mi_row, int mi_col, ++ const MV *const mv, uint8_t *comp_pred, const uint8_t *pred, int width, ++ int height, int subpel_x_q3, int subpel_y_q3, const uint8_t *ref, ++ int ref_stride, int subpel_search); ++#define aom_comp_avg_upsampled_pred aom_comp_avg_upsampled_pred_c ++ ++void aom_dist_wtd_comp_avg_upsampled_pred_c(MACROBLOCKD *xd, const struct AV1Common *const cm, int mi_row, int mi_col, ++ const MV *const mv, uint8_t *comp_pred, const uint8_t *pred, int width, ++ int height, int subpel_x_q3, int subpel_y_q3, const uint8_t *ref, ++ int ref_stride, const DIST_WTD_COMP_PARAMS *jcp_param, int subpel_search); ++#define aom_dist_wtd_comp_avg_upsampled_pred aom_dist_wtd_comp_avg_upsampled_pred_c ++ ++void aom_quantize_b_helper_c(const tran_low_t *coeff_ptr, intptr_t n_coeffs, const int16_t *zbin_ptr, const int16_t *round_ptr, const int16_t *quant_ptr, const int16_t *quant_shift_ptr, tran_low_t *qcoeff_ptr, tran_low_t *dqcoeff_ptr, const int16_t *dequant_ptr, uint16_t *eob_ptr, const int16_t *scan, const int16_t *iscan, const qm_val_t *qm_ptr, const qm_val_t *iqm_ptr, const int log_scale); ++#define aom_quantize_b_helper aom_quantize_b_helper_c ++ ++void aom_upsampled_pred_c(MACROBLOCKD *xd, const struct AV1Common *const cm, int mi_row, int mi_col, ++ const MV *const mv, uint8_t *comp_pred, int width, int height, int subpel_x_q3, ++ int subpel_y_q3, const uint8_t *ref, int ref_stride, int subpel_search); ++#define aom_upsampled_pred aom_upsampled_pred_c ++ ++int av1_apply_selfguided_restoration_c(const uint8_t *dat, int width, int height, int stride, int eps, const int *xqd, uint8_t *dst, int dst_stride, int32_t *tmpbuf, int bit_depth, int highbd); ++#define av1_apply_selfguided_restoration av1_apply_selfguided_restoration_c ++ ++int64_t av1_block_error_c(const tran_low_t *coeff, const tran_low_t *dqcoeff, intptr_t block_size, int64_t *ssz); ++#define av1_block_error av1_block_error_c ++ ++int64_t av1_block_error_lp_c(const int16_t *coeff, const int16_t *dqcoeff, intptr_t block_size); ++#define av1_block_error_lp av1_block_error_lp_c ++ ++void av1_build_compound_diffwtd_mask_c(uint8_t *mask, DIFFWTD_MASK_TYPE mask_type, const uint8_t *src0, int src0_stride, const uint8_t *src1, int src1_stride, int h, int w); ++#define av1_build_compound_diffwtd_mask av1_build_compound_diffwtd_mask_c ++ ++void av1_build_compound_diffwtd_mask_d16_c(uint8_t *mask, DIFFWTD_MASK_TYPE mask_type, const CONV_BUF_TYPE *src0, int src0_stride, const CONV_BUF_TYPE *src1, int src1_stride, int h, int w, ConvolveParams *conv_params, int bd); ++#define av1_build_compound_diffwtd_mask_d16 av1_build_compound_diffwtd_mask_d16_c ++ ++void av1_calc_indices_dim1_c(const int16_t *data, const int16_t *centroids, uint8_t *indices, int64_t *total_dist, int n, int k); ++#define av1_calc_indices_dim1 av1_calc_indices_dim1_c ++ ++void av1_calc_indices_dim2_c(const int16_t *data, const int16_t *centroids, uint8_t *indices, int64_t *total_dist, int n, int k); ++#define av1_calc_indices_dim2 av1_calc_indices_dim2_c ++ ++void av1_convolve_2d_scale_c(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_qn, const int x_step_qn, const int subpel_y_qn, const int y_step_qn, ConvolveParams *conv_params); ++#define av1_convolve_2d_scale av1_convolve_2d_scale_c ++ ++void av1_convolve_2d_sr_c(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_qn, const int subpel_y_qn, ConvolveParams *conv_params); ++#define av1_convolve_2d_sr av1_convolve_2d_sr_c ++ ++void av1_convolve_2d_sr_intrabc_c(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_qn, const int subpel_y_qn, ConvolveParams *conv_params); ++#define av1_convolve_2d_sr_intrabc av1_convolve_2d_sr_intrabc_c ++ ++void av1_convolve_horiz_rs_c(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const int16_t *x_filters, int x0_qn, int x_step_qn); ++#define av1_convolve_horiz_rs av1_convolve_horiz_rs_c ++ ++void av1_convolve_x_sr_c(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const int subpel_x_qn, ConvolveParams *conv_params); ++#define av1_convolve_x_sr av1_convolve_x_sr_c ++ ++void av1_convolve_x_sr_intrabc_c(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const int subpel_x_qn, ConvolveParams *conv_params); ++#define av1_convolve_x_sr_intrabc av1_convolve_x_sr_intrabc_c ++ ++void av1_convolve_y_sr_c(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_y, const int subpel_y_qn); ++#define av1_convolve_y_sr av1_convolve_y_sr_c ++ ++void av1_convolve_y_sr_intrabc_c(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_y, const int subpel_y_qn); ++#define av1_convolve_y_sr_intrabc av1_convolve_y_sr_intrabc_c ++ ++int av1_denoiser_filter_c(const uint8_t *sig, int sig_stride, const uint8_t *mc_avg, int mc_avg_stride, uint8_t *avg, int avg_stride, int increase_denoising, BLOCK_SIZE bs, int motion_magnitude); ++#define av1_denoiser_filter av1_denoiser_filter_c ++ ++void av1_dist_wtd_convolve_2d_c(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const InterpFilterParams *filter_params_y, const int subpel_x_qn, const int subpel_y_qn, ConvolveParams *conv_params); ++#define av1_dist_wtd_convolve_2d av1_dist_wtd_convolve_2d_c ++ ++void av1_dist_wtd_convolve_2d_copy_c(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, ConvolveParams *conv_params); ++#define av1_dist_wtd_convolve_2d_copy av1_dist_wtd_convolve_2d_copy_c ++ ++void av1_dist_wtd_convolve_x_c(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_x, const int subpel_x_qn, ConvolveParams *conv_params); ++#define av1_dist_wtd_convolve_x av1_dist_wtd_convolve_x_c ++ ++void av1_dist_wtd_convolve_y_c(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, int w, int h, const InterpFilterParams *filter_params_y, const int subpel_y_qn, ConvolveParams *conv_params); ++#define av1_dist_wtd_convolve_y av1_dist_wtd_convolve_y_c ++ ++void av1_dr_prediction_z1_c(uint8_t *dst, ptrdiff_t stride, int bw, int bh, const uint8_t *above, const uint8_t *left, int upsample_above, int dx, int dy); ++#define av1_dr_prediction_z1 av1_dr_prediction_z1_c ++ ++void av1_dr_prediction_z2_c(uint8_t *dst, ptrdiff_t stride, int bw, int bh, const uint8_t *above, const uint8_t *left, int upsample_above, int upsample_left, int dx, int dy); ++#define av1_dr_prediction_z2 av1_dr_prediction_z2_c ++ ++void av1_dr_prediction_z3_c(uint8_t *dst, ptrdiff_t stride, int bw, int bh, const uint8_t *above, const uint8_t *left, int upsample_left, int dx, int dy); ++#define av1_dr_prediction_z3 av1_dr_prediction_z3_c ++ ++void av1_filter_intra_edge_c(uint8_t *p, int sz, int strength); ++#define av1_filter_intra_edge av1_filter_intra_edge_c ++ ++void av1_filter_intra_predictor_c(uint8_t *dst, ptrdiff_t stride, TX_SIZE tx_size, const uint8_t *above, const uint8_t *left, int mode); ++#define av1_filter_intra_predictor av1_filter_intra_predictor_c ++ ++void av1_fwd_txfm2d_16x16_c(const int16_t *input, int32_t *output, int stride, TX_TYPE tx_type, int bd); ++#define av1_fwd_txfm2d_16x16 av1_fwd_txfm2d_16x16_c ++ ++void av1_fwd_txfm2d_16x32_c(const int16_t *input, int32_t *output, int stride, TX_TYPE tx_type, int bd); ++#define av1_fwd_txfm2d_16x32 av1_fwd_txfm2d_16x32_c ++ ++void av1_fwd_txfm2d_16x4_c(const int16_t *input, int32_t *output, int stride, TX_TYPE tx_type, int bd); ++#define av1_fwd_txfm2d_16x4 av1_fwd_txfm2d_16x4_c ++ ++void av1_fwd_txfm2d_16x8_c(const int16_t *input, int32_t *output, int stride, TX_TYPE tx_type, int bd); ++#define av1_fwd_txfm2d_16x8 av1_fwd_txfm2d_16x8_c ++ ++void av1_fwd_txfm2d_32x16_c(const int16_t *input, int32_t *output, int stride, TX_TYPE tx_type, int bd); ++#define av1_fwd_txfm2d_32x16 av1_fwd_txfm2d_32x16_c ++ ++void av1_fwd_txfm2d_32x32_c(const int16_t *input, int32_t *output, int stride, TX_TYPE tx_type, int bd); ++#define av1_fwd_txfm2d_32x32 av1_fwd_txfm2d_32x32_c ++ ++void av1_fwd_txfm2d_32x64_c(const int16_t *input, int32_t *output, int stride, TX_TYPE tx_type, int bd); ++#define av1_fwd_txfm2d_32x64 av1_fwd_txfm2d_32x64_c ++ ++void av1_fwd_txfm2d_4x4_c(const int16_t *input, int32_t *output, int stride, TX_TYPE tx_type, int bd); ++#define av1_fwd_txfm2d_4x4 av1_fwd_txfm2d_4x4_c ++ ++void av1_fwd_txfm2d_4x8_c(const int16_t *input, int32_t *output, int stride, TX_TYPE tx_type, int bd); ++#define av1_fwd_txfm2d_4x8 av1_fwd_txfm2d_4x8_c ++ ++void av1_fwd_txfm2d_64x32_c(const int16_t *input, int32_t *output, int stride, TX_TYPE tx_type, int bd); ++#define av1_fwd_txfm2d_64x32 av1_fwd_txfm2d_64x32_c ++ ++void av1_fwd_txfm2d_64x64_c(const int16_t *input, int32_t *output, int stride, TX_TYPE tx_type, int bd); ++#define av1_fwd_txfm2d_64x64 av1_fwd_txfm2d_64x64_c ++ ++void av1_fwd_txfm2d_8x16_c(const int16_t *input, int32_t *output, int stride, TX_TYPE tx_type, int bd); ++#define av1_fwd_txfm2d_8x16 av1_fwd_txfm2d_8x16_c ++ ++void av1_fwd_txfm2d_8x4_c(const int16_t *input, int32_t *output, int stride, TX_TYPE tx_type, int bd); ++#define av1_fwd_txfm2d_8x4 av1_fwd_txfm2d_8x4_c ++ ++void av1_fwd_txfm2d_8x8_c(const int16_t *input, int32_t *output, int stride, TX_TYPE tx_type, int bd); ++#define av1_fwd_txfm2d_8x8 av1_fwd_txfm2d_8x8_c ++ ++void av1_fwht4x4_c(const int16_t *input, tran_low_t *output, int stride); ++#define av1_fwht4x4 av1_fwht4x4_c ++ ++uint32_t av1_get_crc32c_value_c(void *crc_calculator, uint8_t *p, size_t length); ++#define av1_get_crc32c_value av1_get_crc32c_value_c ++ ++void av1_get_horver_correlation_full_c(const int16_t *diff, int stride, int w, int h, float *hcorr, float *vcorr); ++#define av1_get_horver_correlation_full av1_get_horver_correlation_full_c ++ ++void av1_get_nz_map_contexts_c(const uint8_t *const levels, const int16_t *const scan, const uint16_t eob, const TX_SIZE tx_size, const TX_CLASS tx_class, int8_t *const coeff_contexts); ++#define av1_get_nz_map_contexts av1_get_nz_map_contexts_c ++ ++void av1_highbd_inv_txfm_add_c(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param); ++#define av1_highbd_inv_txfm_add av1_highbd_inv_txfm_add_c ++ ++void av1_highbd_inv_txfm_add_16x32_c(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param); ++#define av1_highbd_inv_txfm_add_16x32 av1_highbd_inv_txfm_add_16x32_c ++ ++void av1_highbd_inv_txfm_add_16x4_c(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param); ++#define av1_highbd_inv_txfm_add_16x4 av1_highbd_inv_txfm_add_16x4_c ++ ++void av1_highbd_inv_txfm_add_16x64_c(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param); ++#define av1_highbd_inv_txfm_add_16x64 av1_highbd_inv_txfm_add_16x64_c ++ ++void av1_highbd_inv_txfm_add_16x8_c(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param); ++#define av1_highbd_inv_txfm_add_16x8 av1_highbd_inv_txfm_add_16x8_c ++ ++void av1_highbd_inv_txfm_add_32x16_c(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param); ++#define av1_highbd_inv_txfm_add_32x16 av1_highbd_inv_txfm_add_32x16_c ++ ++void av1_highbd_inv_txfm_add_32x32_c(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param); ++#define av1_highbd_inv_txfm_add_32x32 av1_highbd_inv_txfm_add_32x32_c ++ ++void av1_highbd_inv_txfm_add_32x64_c(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param); ++#define av1_highbd_inv_txfm_add_32x64 av1_highbd_inv_txfm_add_32x64_c ++ ++void av1_highbd_inv_txfm_add_32x8_c(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param); ++#define av1_highbd_inv_txfm_add_32x8 av1_highbd_inv_txfm_add_32x8_c ++ ++void av1_highbd_inv_txfm_add_4x16_c(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param); ++#define av1_highbd_inv_txfm_add_4x16 av1_highbd_inv_txfm_add_4x16_c ++ ++void av1_highbd_inv_txfm_add_4x4_c(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param); ++#define av1_highbd_inv_txfm_add_4x4 av1_highbd_inv_txfm_add_4x4_c ++ ++void av1_highbd_inv_txfm_add_4x8_c(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param); ++#define av1_highbd_inv_txfm_add_4x8 av1_highbd_inv_txfm_add_4x8_c ++ ++void av1_highbd_inv_txfm_add_64x16_c(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param); ++#define av1_highbd_inv_txfm_add_64x16 av1_highbd_inv_txfm_add_64x16_c ++ ++void av1_highbd_inv_txfm_add_64x32_c(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param); ++#define av1_highbd_inv_txfm_add_64x32 av1_highbd_inv_txfm_add_64x32_c ++ ++void av1_highbd_inv_txfm_add_64x64_c(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param); ++#define av1_highbd_inv_txfm_add_64x64 av1_highbd_inv_txfm_add_64x64_c ++ ++void av1_highbd_inv_txfm_add_8x16_c(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param); ++#define av1_highbd_inv_txfm_add_8x16 av1_highbd_inv_txfm_add_8x16_c ++ ++void av1_highbd_inv_txfm_add_8x32_c(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param); ++#define av1_highbd_inv_txfm_add_8x32 av1_highbd_inv_txfm_add_8x32_c ++ ++void av1_highbd_inv_txfm_add_8x4_c(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param); ++#define av1_highbd_inv_txfm_add_8x4 av1_highbd_inv_txfm_add_8x4_c ++ ++void av1_highbd_inv_txfm_add_8x8_c(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param); ++#define av1_highbd_inv_txfm_add_8x8 av1_highbd_inv_txfm_add_8x8_c ++ ++void av1_highbd_iwht4x4_16_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, int bd); ++#define av1_highbd_iwht4x4_16_add av1_highbd_iwht4x4_16_add_c ++ ++void av1_highbd_iwht4x4_1_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, int bd); ++#define av1_highbd_iwht4x4_1_add av1_highbd_iwht4x4_1_add_c ++ ++void av1_inv_txfm2d_add_16x16_c(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd); ++#define av1_inv_txfm2d_add_16x16 av1_inv_txfm2d_add_16x16_c ++ ++void av1_inv_txfm2d_add_16x32_c(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd); ++#define av1_inv_txfm2d_add_16x32 av1_inv_txfm2d_add_16x32_c ++ ++void av1_inv_txfm2d_add_16x4_c(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd); ++#define av1_inv_txfm2d_add_16x4 av1_inv_txfm2d_add_16x4_c ++ ++void av1_inv_txfm2d_add_16x64_c(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd); ++#define av1_inv_txfm2d_add_16x64 av1_inv_txfm2d_add_16x64_c ++ ++void av1_inv_txfm2d_add_16x8_c(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd); ++#define av1_inv_txfm2d_add_16x8 av1_inv_txfm2d_add_16x8_c ++ ++void av1_inv_txfm2d_add_32x16_c(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd); ++#define av1_inv_txfm2d_add_32x16 av1_inv_txfm2d_add_32x16_c ++ ++void av1_inv_txfm2d_add_32x32_c(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd); ++#define av1_inv_txfm2d_add_32x32 av1_inv_txfm2d_add_32x32_c ++ ++void av1_inv_txfm2d_add_32x64_c(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd); ++#define av1_inv_txfm2d_add_32x64 av1_inv_txfm2d_add_32x64_c ++ ++void av1_inv_txfm2d_add_32x8_c(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd); ++#define av1_inv_txfm2d_add_32x8 av1_inv_txfm2d_add_32x8_c ++ ++void av1_inv_txfm2d_add_4x16_c(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd); ++#define av1_inv_txfm2d_add_4x16 av1_inv_txfm2d_add_4x16_c ++ ++void av1_inv_txfm2d_add_4x4_c(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd); ++#define av1_inv_txfm2d_add_4x4 av1_inv_txfm2d_add_4x4_c ++ ++void av1_inv_txfm2d_add_4x8_c(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd); ++#define av1_inv_txfm2d_add_4x8 av1_inv_txfm2d_add_4x8_c ++ ++void av1_inv_txfm2d_add_64x16_c(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd); ++#define av1_inv_txfm2d_add_64x16 av1_inv_txfm2d_add_64x16_c ++ ++void av1_inv_txfm2d_add_64x32_c(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd); ++#define av1_inv_txfm2d_add_64x32 av1_inv_txfm2d_add_64x32_c ++ ++void av1_inv_txfm2d_add_64x64_c(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd); ++#define av1_inv_txfm2d_add_64x64 av1_inv_txfm2d_add_64x64_c ++ ++void av1_inv_txfm2d_add_8x16_c(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd); ++#define av1_inv_txfm2d_add_8x16 av1_inv_txfm2d_add_8x16_c ++ ++void av1_inv_txfm2d_add_8x32_c(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd); ++#define av1_inv_txfm2d_add_8x32 av1_inv_txfm2d_add_8x32_c ++ ++void av1_inv_txfm2d_add_8x4_c(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd); ++#define av1_inv_txfm2d_add_8x4 av1_inv_txfm2d_add_8x4_c ++ ++void av1_inv_txfm2d_add_8x8_c(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd); ++#define av1_inv_txfm2d_add_8x8 av1_inv_txfm2d_add_8x8_c ++ ++void av1_inv_txfm_add_c(const tran_low_t *dqcoeff, uint8_t *dst, int stride, const TxfmParam *txfm_param); ++#define av1_inv_txfm_add av1_inv_txfm_add_c ++ ++void av1_lowbd_fwd_txfm_c(const int16_t *src_diff, tran_low_t *coeff, int diff_stride, TxfmParam *txfm_param); ++#define av1_lowbd_fwd_txfm av1_lowbd_fwd_txfm_c ++ ++void av1_nn_fast_softmax_16_c(const float *input_nodes, float *output); ++#define av1_nn_fast_softmax_16 av1_nn_fast_softmax_16_c ++ ++void av1_nn_predict_c(const float *input_nodes, const NN_CONFIG *const nn_config, int reduce_prec, float *const output); ++#define av1_nn_predict av1_nn_predict_c ++ ++void av1_quantize_b_c(const tran_low_t *coeff_ptr, intptr_t n_coeffs, const int16_t *zbin_ptr, const int16_t *round_ptr, const int16_t *quant_ptr, const int16_t *quant_shift_ptr, tran_low_t *qcoeff_ptr, tran_low_t *dqcoeff_ptr, const int16_t *dequant_ptr, uint16_t *eob_ptr, const int16_t *scan, const int16_t *iscan, const qm_val_t * qm_ptr, const qm_val_t * iqm_ptr, int log_scale); ++#define av1_quantize_b av1_quantize_b_c ++ ++void av1_quantize_fp_c(const tran_low_t *coeff_ptr, intptr_t n_coeffs, const int16_t *zbin_ptr, const int16_t *round_ptr, const int16_t *quant_ptr, const int16_t *quant_shift_ptr, tran_low_t *qcoeff_ptr, tran_low_t *dqcoeff_ptr, const int16_t *dequant_ptr, uint16_t *eob_ptr, const int16_t *scan, const int16_t *iscan); ++#define av1_quantize_fp av1_quantize_fp_c ++ ++void av1_quantize_fp_32x32_c(const tran_low_t *coeff_ptr, intptr_t n_coeffs, const int16_t *zbin_ptr, const int16_t *round_ptr, const int16_t *quant_ptr, const int16_t *quant_shift_ptr, tran_low_t *qcoeff_ptr, tran_low_t *dqcoeff_ptr, const int16_t *dequant_ptr, uint16_t *eob_ptr, const int16_t *scan, const int16_t *iscan); ++#define av1_quantize_fp_32x32 av1_quantize_fp_32x32_c ++ ++void av1_quantize_fp_64x64_c(const tran_low_t *coeff_ptr, intptr_t n_coeffs, const int16_t *zbin_ptr, const int16_t *round_ptr, const int16_t *quant_ptr, const int16_t *quant_shift_ptr, tran_low_t *qcoeff_ptr, tran_low_t *dqcoeff_ptr, const int16_t *dequant_ptr, uint16_t *eob_ptr, const int16_t *scan, const int16_t *iscan); ++#define av1_quantize_fp_64x64 av1_quantize_fp_64x64_c ++ ++void av1_quantize_lp_c(const int16_t *coeff_ptr, intptr_t n_coeffs, const int16_t *round_ptr, const int16_t *quant_ptr, int16_t *qcoeff_ptr, int16_t *dqcoeff_ptr, const int16_t *dequant_ptr, uint16_t *eob_ptr, const int16_t *scan, const int16_t *iscan); ++#define av1_quantize_lp av1_quantize_lp_c ++ ++void av1_resize_and_extend_frame_c(const YV12_BUFFER_CONFIG *src, YV12_BUFFER_CONFIG *dst, const InterpFilter filter, const int phase, const int num_planes); ++#define av1_resize_and_extend_frame av1_resize_and_extend_frame_c ++ ++void av1_round_shift_array_c(int32_t *arr, int size, int bit); ++#define av1_round_shift_array av1_round_shift_array_c ++ ++int av1_selfguided_restoration_c(const uint8_t *dgd8, int width, int height, ++ int dgd_stride, int32_t *flt0, int32_t *flt1, int flt_stride, ++ int sgr_params_idx, int bit_depth, int highbd); ++#define av1_selfguided_restoration av1_selfguided_restoration_c ++ ++void av1_txb_init_levels_c(const tran_low_t *const coeff, const int width, const int height, uint8_t *const levels); ++#define av1_txb_init_levels av1_txb_init_levels_c ++ ++void av1_upsample_intra_edge_c(uint8_t *p, int sz); ++#define av1_upsample_intra_edge av1_upsample_intra_edge_c ++ ++void av1_warp_affine_c(const int32_t *mat, const uint8_t *ref, int width, int height, int stride, uint8_t *pred, int p_col, int p_row, int p_width, int p_height, int p_stride, int subsampling_x, int subsampling_y, ConvolveParams *conv_params, int16_t alpha, int16_t beta, int16_t gamma, int16_t delta); ++#define av1_warp_affine av1_warp_affine_c ++ ++void av1_wedge_compute_delta_squares_c(int16_t *d, const int16_t *a, const int16_t *b, int N); ++#define av1_wedge_compute_delta_squares av1_wedge_compute_delta_squares_c ++ ++int8_t av1_wedge_sign_from_residuals_c(const int16_t *ds, const uint8_t *m, int N, int64_t limit); ++#define av1_wedge_sign_from_residuals av1_wedge_sign_from_residuals_c ++ ++uint64_t av1_wedge_sse_from_residuals_c(const int16_t *r1, const int16_t *d, const uint8_t *m, int N); ++#define av1_wedge_sse_from_residuals av1_wedge_sse_from_residuals_c ++ ++void av1_wiener_convolve_add_src_c(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h, const WienerConvolveParams *conv_params); ++#define av1_wiener_convolve_add_src av1_wiener_convolve_add_src_c ++ ++void cdef_copy_rect8_16bit_to_16bit_c(uint16_t *dst, int dstride, const uint16_t *src, int sstride, int width, int height); ++#define cdef_copy_rect8_16bit_to_16bit cdef_copy_rect8_16bit_to_16bit_c ++ ++void cdef_copy_rect8_8bit_to_16bit_c(uint16_t *dst, int dstride, const uint8_t *src, int sstride, int width, int height); ++#define cdef_copy_rect8_8bit_to_16bit cdef_copy_rect8_8bit_to_16bit_c ++ ++void cdef_filter_16_0_c(void *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height); ++#define cdef_filter_16_0 cdef_filter_16_0_c ++ ++void cdef_filter_16_1_c(void *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height); ++#define cdef_filter_16_1 cdef_filter_16_1_c ++ ++void cdef_filter_16_2_c(void *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height); ++#define cdef_filter_16_2 cdef_filter_16_2_c ++ ++void cdef_filter_16_3_c(void *dst16, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height); ++#define cdef_filter_16_3 cdef_filter_16_3_c ++ ++void cdef_filter_8_0_c(void *dst8, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height); ++#define cdef_filter_8_0 cdef_filter_8_0_c ++ ++void cdef_filter_8_1_c(void *dst8, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height); ++#define cdef_filter_8_1 cdef_filter_8_1_c ++ ++void cdef_filter_8_2_c(void *dst8, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height); ++#define cdef_filter_8_2 cdef_filter_8_2_c ++ ++void cdef_filter_8_3_c(void *dst8, int dstride, const uint16_t *in, int pri_strength, int sec_strength, int dir, int pri_damping, int sec_damping, int coeff_shift, int block_width, int block_height); ++#define cdef_filter_8_3 cdef_filter_8_3_c ++ ++int cdef_find_dir_c(const uint16_t *img, int stride, int32_t *var, int coeff_shift); ++#define cdef_find_dir cdef_find_dir_c ++ ++void cdef_find_dir_dual_c(const uint16_t *img1, const uint16_t *img2, int stride, int32_t *var1, int32_t *var2, int coeff_shift, int *out1, int *out2); ++#define cdef_find_dir_dual cdef_find_dir_dual_c ++ ++cfl_subsample_lbd_fn cfl_get_luma_subsampling_420_lbd_c(TX_SIZE tx_size); ++#define cfl_get_luma_subsampling_420_lbd cfl_get_luma_subsampling_420_lbd_c ++ ++cfl_subsample_lbd_fn cfl_get_luma_subsampling_422_lbd_c(TX_SIZE tx_size); ++#define cfl_get_luma_subsampling_422_lbd cfl_get_luma_subsampling_422_lbd_c ++ ++cfl_subsample_lbd_fn cfl_get_luma_subsampling_444_lbd_c(TX_SIZE tx_size); ++#define cfl_get_luma_subsampling_444_lbd cfl_get_luma_subsampling_444_lbd_c ++ ++cfl_predict_lbd_fn cfl_get_predict_lbd_fn_c(TX_SIZE tx_size); ++#define cfl_get_predict_lbd_fn cfl_get_predict_lbd_fn_c ++ ++cfl_subtract_average_fn cfl_get_subtract_average_fn_c(TX_SIZE tx_size); ++cfl_subtract_average_fn cfl_get_subtract_average_fn_vsx(TX_SIZE tx_size); ++#define cfl_get_subtract_average_fn cfl_get_subtract_average_fn_vsx ++ ++void av1_rtcd(void); ++ ++#include "config/aom_config.h" ++ ++#ifdef RTCD_C ++#include "aom_ports/ppc.h" ++static void setup_rtcd_internal(void) ++{ ++ int flags = ppc_simd_caps(); ++ ++ (void)flags; ++ ++} ++#endif ++ ++#ifdef __cplusplus ++} // extern "C" ++#endif ++ ++#endif +Index: chromium-122.0.6261.128/third_party/libvpx/source/config/linux/ppc64/vp8_rtcd.h +=================================================================== +--- chromium-122.0.6261.128.orig/third_party/libvpx/source/config/linux/ppc64/vp8_rtcd.h ++++ /dev/null +@@ -1,320 +0,0 @@ +-// This file is generated. Do not edit. +-#ifndef VP8_RTCD_H_ +-#define VP8_RTCD_H_ +- +-#ifdef RTCD_C +-#define RTCD_EXTERN +-#else +-#define RTCD_EXTERN extern +-#endif +- +-/* +- * VP8 +- */ +- +-struct blockd; +-struct macroblockd; +-struct loop_filter_info; +- +-/* Encoder forward decls */ +-struct block; +-struct macroblock; +-struct variance_vtable; +-union int_mv; +-struct yv12_buffer_config; +- +-#ifdef __cplusplus +-extern "C" { +-#endif +- +-void vp8_bilinear_predict16x16_c(unsigned char* src_ptr, +- int src_pixels_per_line, +- int xoffset, +- int yoffset, +- unsigned char* dst_ptr, +- int dst_pitch); +-#define vp8_bilinear_predict16x16 vp8_bilinear_predict16x16_c +- +-void vp8_bilinear_predict4x4_c(unsigned char* src_ptr, +- int src_pixels_per_line, +- int xoffset, +- int yoffset, +- unsigned char* dst_ptr, +- int dst_pitch); +-#define vp8_bilinear_predict4x4 vp8_bilinear_predict4x4_c +- +-void vp8_bilinear_predict8x4_c(unsigned char* src_ptr, +- int src_pixels_per_line, +- int xoffset, +- int yoffset, +- unsigned char* dst_ptr, +- int dst_pitch); +-#define vp8_bilinear_predict8x4 vp8_bilinear_predict8x4_c +- +-void vp8_bilinear_predict8x8_c(unsigned char* src_ptr, +- int src_pixels_per_line, +- int xoffset, +- int yoffset, +- unsigned char* dst_ptr, +- int dst_pitch); +-#define vp8_bilinear_predict8x8 vp8_bilinear_predict8x8_c +- +-int vp8_block_error_c(short* coeff, short* dqcoeff); +-#define vp8_block_error vp8_block_error_c +- +-void vp8_copy32xn_c(const unsigned char* src_ptr, +- int src_stride, +- unsigned char* dst_ptr, +- int dst_stride, +- int height); +-#define vp8_copy32xn vp8_copy32xn_c +- +-void vp8_copy_mem16x16_c(unsigned char* src, +- int src_stride, +- unsigned char* dst, +- int dst_stride); +-#define vp8_copy_mem16x16 vp8_copy_mem16x16_c +- +-void vp8_copy_mem8x4_c(unsigned char* src, +- int src_stride, +- unsigned char* dst, +- int dst_stride); +-#define vp8_copy_mem8x4 vp8_copy_mem8x4_c +- +-void vp8_copy_mem8x8_c(unsigned char* src, +- int src_stride, +- unsigned char* dst, +- int dst_stride); +-#define vp8_copy_mem8x8 vp8_copy_mem8x8_c +- +-void vp8_dc_only_idct_add_c(short input_dc, +- unsigned char* pred_ptr, +- int pred_stride, +- unsigned char* dst_ptr, +- int dst_stride); +-#define vp8_dc_only_idct_add vp8_dc_only_idct_add_c +- +-int vp8_denoiser_filter_c(unsigned char* mc_running_avg_y, +- int mc_avg_y_stride, +- unsigned char* running_avg_y, +- int avg_y_stride, +- unsigned char* sig, +- int sig_stride, +- unsigned int motion_magnitude, +- int increase_denoising); +-#define vp8_denoiser_filter vp8_denoiser_filter_c +- +-int vp8_denoiser_filter_uv_c(unsigned char* mc_running_avg, +- int mc_avg_stride, +- unsigned char* running_avg, +- int avg_stride, +- unsigned char* sig, +- int sig_stride, +- unsigned int motion_magnitude, +- int increase_denoising); +-#define vp8_denoiser_filter_uv vp8_denoiser_filter_uv_c +- +-void vp8_dequant_idct_add_c(short* input, +- short* dq, +- unsigned char* dest, +- int stride); +-#define vp8_dequant_idct_add vp8_dequant_idct_add_c +- +-void vp8_dequant_idct_add_uv_block_c(short* q, +- short* dq, +- unsigned char* dst_u, +- unsigned char* dst_v, +- int stride, +- char* eobs); +-#define vp8_dequant_idct_add_uv_block vp8_dequant_idct_add_uv_block_c +- +-void vp8_dequant_idct_add_y_block_c(short* q, +- short* dq, +- unsigned char* dst, +- int stride, +- char* eobs); +-#define vp8_dequant_idct_add_y_block vp8_dequant_idct_add_y_block_c +- +-void vp8_dequantize_b_c(struct blockd*, short* DQC); +-#define vp8_dequantize_b vp8_dequantize_b_c +- +-int vp8_diamond_search_sad_c(struct macroblock* x, +- struct block* b, +- struct blockd* d, +- union int_mv* ref_mv, +- union int_mv* best_mv, +- int search_param, +- int sad_per_bit, +- int* num00, +- struct variance_vtable* fn_ptr, +- int* mvcost[2], +- union int_mv* center_mv); +-#define vp8_diamond_search_sad vp8_diamond_search_sad_c +- +-void vp8_fast_quantize_b_c(struct block*, struct blockd*); +-#define vp8_fast_quantize_b vp8_fast_quantize_b_c +- +-void vp8_filter_by_weight16x16_c(unsigned char* src, +- int src_stride, +- unsigned char* dst, +- int dst_stride, +- int src_weight); +-#define vp8_filter_by_weight16x16 vp8_filter_by_weight16x16_c +- +-void vp8_filter_by_weight4x4_c(unsigned char* src, +- int src_stride, +- unsigned char* dst, +- int dst_stride, +- int src_weight); +-#define vp8_filter_by_weight4x4 vp8_filter_by_weight4x4_c +- +-void vp8_filter_by_weight8x8_c(unsigned char* src, +- int src_stride, +- unsigned char* dst, +- int dst_stride, +- int src_weight); +-#define vp8_filter_by_weight8x8 vp8_filter_by_weight8x8_c +- +-void vp8_loop_filter_bh_c(unsigned char* y_ptr, +- unsigned char* u_ptr, +- unsigned char* v_ptr, +- int y_stride, +- int uv_stride, +- struct loop_filter_info* lfi); +-#define vp8_loop_filter_bh vp8_loop_filter_bh_c +- +-void vp8_loop_filter_bv_c(unsigned char* y_ptr, +- unsigned char* u_ptr, +- unsigned char* v_ptr, +- int y_stride, +- int uv_stride, +- struct loop_filter_info* lfi); +-#define vp8_loop_filter_bv vp8_loop_filter_bv_c +- +-void vp8_loop_filter_mbh_c(unsigned char* y_ptr, +- unsigned char* u_ptr, +- unsigned char* v_ptr, +- int y_stride, +- int uv_stride, +- struct loop_filter_info* lfi); +-#define vp8_loop_filter_mbh vp8_loop_filter_mbh_c +- +-void vp8_loop_filter_mbv_c(unsigned char* y_ptr, +- unsigned char* u_ptr, +- unsigned char* v_ptr, +- int y_stride, +- int uv_stride, +- struct loop_filter_info* lfi); +-#define vp8_loop_filter_mbv vp8_loop_filter_mbv_c +- +-void vp8_loop_filter_bhs_c(unsigned char* y_ptr, +- int y_stride, +- const unsigned char* blimit); +-#define vp8_loop_filter_simple_bh vp8_loop_filter_bhs_c +- +-void vp8_loop_filter_bvs_c(unsigned char* y_ptr, +- int y_stride, +- const unsigned char* blimit); +-#define vp8_loop_filter_simple_bv vp8_loop_filter_bvs_c +- +-void vp8_loop_filter_simple_horizontal_edge_c(unsigned char* y_ptr, +- int y_stride, +- const unsigned char* blimit); +-#define vp8_loop_filter_simple_mbh vp8_loop_filter_simple_horizontal_edge_c +- +-void vp8_loop_filter_simple_vertical_edge_c(unsigned char* y_ptr, +- int y_stride, +- const unsigned char* blimit); +-#define vp8_loop_filter_simple_mbv vp8_loop_filter_simple_vertical_edge_c +- +-int vp8_mbblock_error_c(struct macroblock* mb, int dc); +-#define vp8_mbblock_error vp8_mbblock_error_c +- +-int vp8_mbuverror_c(struct macroblock* mb); +-#define vp8_mbuverror vp8_mbuverror_c +- +-int vp8_refining_search_sad_c(struct macroblock* x, +- struct block* b, +- struct blockd* d, +- union int_mv* ref_mv, +- int error_per_bit, +- int search_range, +- struct variance_vtable* fn_ptr, +- int* mvcost[2], +- union int_mv* center_mv); +-#define vp8_refining_search_sad vp8_refining_search_sad_c +- +-void vp8_regular_quantize_b_c(struct block*, struct blockd*); +-#define vp8_regular_quantize_b vp8_regular_quantize_b_c +- +-void vp8_short_fdct4x4_c(short* input, short* output, int pitch); +-#define vp8_short_fdct4x4 vp8_short_fdct4x4_c +- +-void vp8_short_fdct8x4_c(short* input, short* output, int pitch); +-#define vp8_short_fdct8x4 vp8_short_fdct8x4_c +- +-void vp8_short_idct4x4llm_c(short* input, +- unsigned char* pred_ptr, +- int pred_stride, +- unsigned char* dst_ptr, +- int dst_stride); +-#define vp8_short_idct4x4llm vp8_short_idct4x4llm_c +- +-void vp8_short_inv_walsh4x4_c(short* input, short* mb_dqcoeff); +-#define vp8_short_inv_walsh4x4 vp8_short_inv_walsh4x4_c +- +-void vp8_short_inv_walsh4x4_1_c(short* input, short* mb_dqcoeff); +-#define vp8_short_inv_walsh4x4_1 vp8_short_inv_walsh4x4_1_c +- +-void vp8_short_walsh4x4_c(short* input, short* output, int pitch); +-#define vp8_short_walsh4x4 vp8_short_walsh4x4_c +- +-void vp8_sixtap_predict16x16_c(unsigned char* src_ptr, +- int src_pixels_per_line, +- int xoffset, +- int yoffset, +- unsigned char* dst_ptr, +- int dst_pitch); +-#define vp8_sixtap_predict16x16 vp8_sixtap_predict16x16_c +- +-void vp8_sixtap_predict4x4_c(unsigned char* src_ptr, +- int src_pixels_per_line, +- int xoffset, +- int yoffset, +- unsigned char* dst_ptr, +- int dst_pitch); +-#define vp8_sixtap_predict4x4 vp8_sixtap_predict4x4_c +- +-void vp8_sixtap_predict8x4_c(unsigned char* src_ptr, +- int src_pixels_per_line, +- int xoffset, +- int yoffset, +- unsigned char* dst_ptr, +- int dst_pitch); +-#define vp8_sixtap_predict8x4 vp8_sixtap_predict8x4_c +- +-void vp8_sixtap_predict8x8_c(unsigned char* src_ptr, +- int src_pixels_per_line, +- int xoffset, +- int yoffset, +- unsigned char* dst_ptr, +- int dst_pitch); +-#define vp8_sixtap_predict8x8 vp8_sixtap_predict8x8_c +- +-void vp8_rtcd(void); +- +-#include "vpx_config.h" +- +-#ifdef RTCD_C +-#include "vpx_ports/ppc.h" +-static void setup_rtcd_internal(void) { +- int flags = ppc_simd_caps(); +- (void)flags; +-} +-#endif +- +-#ifdef __cplusplus +-} // extern "C" +-#endif +- +-#endif +Index: chromium-122.0.6261.128/third_party/libvpx/source/config/linux/ppc64/vp9_rtcd.h +=================================================================== +--- chromium-122.0.6261.128.orig/third_party/libvpx/source/config/linux/ppc64/vp9_rtcd.h ++++ /dev/null +@@ -1,193 +0,0 @@ +-// This file is generated. Do not edit. +-#ifndef VP9_RTCD_H_ +-#define VP9_RTCD_H_ +- +-#ifdef RTCD_C +-#define RTCD_EXTERN +-#else +-#define RTCD_EXTERN extern +-#endif +- +-/* +- * VP9 +- */ +- +-#include "vp9/common/vp9_common.h" +-#include "vp9/common/vp9_enums.h" +-#include "vp9/common/vp9_filter.h" +-#include "vpx/vpx_integer.h" +- +-struct macroblockd; +- +-/* Encoder forward decls */ +-struct macroblock; +-struct macroblock_plane; +-struct vp9_sad_table; +-struct ScanOrder; +-struct search_site_config; +-struct mv; +-union int_mv; +-struct yv12_buffer_config; +- +-#ifdef __cplusplus +-extern "C" { +-#endif +- +-int64_t vp9_block_error_c(const tran_low_t* coeff, +- const tran_low_t* dqcoeff, +- intptr_t block_size, +- int64_t* ssz); +-#define vp9_block_error vp9_block_error_c +- +-int64_t vp9_block_error_fp_c(const tran_low_t* coeff, +- const tran_low_t* dqcoeff, +- int block_size); +-#define vp9_block_error_fp vp9_block_error_fp_c +- +-int vp9_denoiser_filter_c(const uint8_t* sig, +- int sig_stride, +- const uint8_t* mc_avg, +- int mc_avg_stride, +- uint8_t* avg, +- int avg_stride, +- int increase_denoising, +- BLOCK_SIZE bs, +- int motion_magnitude); +-#define vp9_denoiser_filter vp9_denoiser_filter_c +- +-int vp9_diamond_search_sad_c(const struct macroblock* x, +- const struct search_site_config* cfg, +- struct mv* ref_mv, +- uint32_t start_mv_sad, +- struct mv* best_mv, +- int search_param, +- int sad_per_bit, +- int* num00, +- const struct vp9_sad_table* sad_fn_ptr, +- const struct mv* center_mv); +-#define vp9_diamond_search_sad vp9_diamond_search_sad_c +- +-void vp9_fht16x16_c(const int16_t* input, +- tran_low_t* output, +- int stride, +- int tx_type); +-#define vp9_fht16x16 vp9_fht16x16_c +- +-void vp9_fht4x4_c(const int16_t* input, +- tran_low_t* output, +- int stride, +- int tx_type); +-#define vp9_fht4x4 vp9_fht4x4_c +- +-void vp9_fht8x8_c(const int16_t* input, +- tran_low_t* output, +- int stride, +- int tx_type); +-#define vp9_fht8x8 vp9_fht8x8_c +- +-void vp9_filter_by_weight16x16_c(const uint8_t* src, +- int src_stride, +- uint8_t* dst, +- int dst_stride, +- int src_weight); +-#define vp9_filter_by_weight16x16 vp9_filter_by_weight16x16_c +- +-void vp9_filter_by_weight8x8_c(const uint8_t* src, +- int src_stride, +- uint8_t* dst, +- int dst_stride, +- int src_weight); +-#define vp9_filter_by_weight8x8 vp9_filter_by_weight8x8_c +- +-void vp9_fwht4x4_c(const int16_t* input, tran_low_t* output, int stride); +-#define vp9_fwht4x4 vp9_fwht4x4_c +- +-void vp9_iht16x16_256_add_c(const tran_low_t* input, +- uint8_t* dest, +- int stride, +- int tx_type); +-void vp9_iht16x16_256_add_vsx(const tran_low_t* input, +- uint8_t* dest, +- int stride, +- int tx_type); +-#define vp9_iht16x16_256_add vp9_iht16x16_256_add_vsx +- +-void vp9_iht4x4_16_add_c(const tran_low_t* input, +- uint8_t* dest, +- int stride, +- int tx_type); +-void vp9_iht4x4_16_add_vsx(const tran_low_t* input, +- uint8_t* dest, +- int stride, +- int tx_type); +-#define vp9_iht4x4_16_add vp9_iht4x4_16_add_vsx +- +-void vp9_iht8x8_64_add_c(const tran_low_t* input, +- uint8_t* dest, +- int stride, +- int tx_type); +-void vp9_iht8x8_64_add_vsx(const tran_low_t* input, +- uint8_t* dest, +- int stride, +- int tx_type); +-#define vp9_iht8x8_64_add vp9_iht8x8_64_add_vsx +- +-void vp9_quantize_fp_c(const tran_low_t* coeff_ptr, +- intptr_t n_coeffs, +- const struct macroblock_plane* const mb_plane, +- tran_low_t* qcoeff_ptr, +- tran_low_t* dqcoeff_ptr, +- const int16_t* dequant_ptr, +- uint16_t* eob_ptr, +- const struct ScanOrder* const scan_order); +-void vp9_quantize_fp_vsx(const tran_low_t* coeff_ptr, +- intptr_t n_coeffs, +- const struct macroblock_plane* const mb_plane, +- tran_low_t* qcoeff_ptr, +- tran_low_t* dqcoeff_ptr, +- const int16_t* dequant_ptr, +- uint16_t* eob_ptr, +- const struct ScanOrder* const scan_order); +-#define vp9_quantize_fp vp9_quantize_fp_vsx +- +-void vp9_quantize_fp_32x32_c(const tran_low_t* coeff_ptr, +- intptr_t n_coeffs, +- const struct macroblock_plane* const mb_plane, +- tran_low_t* qcoeff_ptr, +- tran_low_t* dqcoeff_ptr, +- const int16_t* dequant_ptr, +- uint16_t* eob_ptr, +- const struct ScanOrder* const scan_order); +-void vp9_quantize_fp_32x32_vsx(const tran_low_t* coeff_ptr, +- intptr_t n_coeffs, +- const struct macroblock_plane* const mb_plane, +- tran_low_t* qcoeff_ptr, +- tran_low_t* dqcoeff_ptr, +- const int16_t* dequant_ptr, +- uint16_t* eob_ptr, +- const struct ScanOrder* const scan_order); +-#define vp9_quantize_fp_32x32 vp9_quantize_fp_32x32_vsx +- +-void vp9_scale_and_extend_frame_c(const struct yv12_buffer_config* src, +- struct yv12_buffer_config* dst, +- INTERP_FILTER filter_type, +- int phase_scaler); +-#define vp9_scale_and_extend_frame vp9_scale_and_extend_frame_c +- +-void vp9_rtcd(void); +- +-#include "vpx_config.h" +- +-#ifdef RTCD_C +-#include "vpx_ports/ppc.h" +-static void setup_rtcd_internal(void) { +- int flags = ppc_simd_caps(); +- (void)flags; +-} +-#endif +- +-#ifdef __cplusplus +-} // extern "C" +-#endif +- +-#endif +Index: chromium-122.0.6261.128/third_party/libvpx/source/config/linux/ppc64/vpx_config.asm +=================================================================== +--- chromium-122.0.6261.128.orig/third_party/libvpx/source/config/linux/ppc64/vpx_config.asm ++++ /dev/null +@@ -1,107 +0,0 @@ +-@ This file was created from a .asm file +-@ using the ads2gas.pl script. +-.syntax unified +-.equ VPX_ARCH_ARM , 0 +-.equ ARCH_ARM , 0 +-.equ VPX_ARCH_AARCH64 , 0 +-.equ ARCH_AARCH64 , 0 +-.equ VPX_ARCH_MIPS , 0 +-.equ ARCH_MIPS , 0 +-.equ VPX_ARCH_X86 , 0 +-.equ ARCH_X86 , 0 +-.equ VPX_ARCH_X86_64 , 0 +-.equ ARCH_X86_64 , 0 +-.equ VPX_ARCH_PPC , 1 +-.equ ARCH_PPC , 1 +-.equ VPX_ARCH_LOONGARCH , 0 +-.equ ARCH_LOONGARCH , 0 +-.equ HAVE_NEON_ASM , 0 +-.equ HAVE_NEON , 0 +-.equ HAVE_NEON_DOTPROD , 0 +-.equ HAVE_NEON_I8MM , 0 +-.equ HAVE_SVE , 0 +-.equ HAVE_MIPS32 , 0 +-.equ HAVE_DSPR2 , 0 +-.equ HAVE_MSA , 0 +-.equ HAVE_MIPS64 , 0 +-.equ HAVE_MMX , 0 +-.equ HAVE_SSE , 0 +-.equ HAVE_SSE2 , 0 +-.equ HAVE_SSE3 , 0 +-.equ HAVE_SSSE3 , 0 +-.equ HAVE_SSE4_1 , 0 +-.equ HAVE_AVX , 0 +-.equ HAVE_AVX2 , 0 +-.equ HAVE_AVX512 , 0 +-.equ HAVE_VSX , 0 +-.equ HAVE_MMI , 0 +-.equ HAVE_LSX , 0 +-.equ HAVE_LASX , 0 +-.equ HAVE_VPX_PORTS , 1 +-.equ HAVE_PTHREAD_H , 1 +-.equ HAVE_UNISTD_H , 0 +-.equ CONFIG_DEPENDENCY_TRACKING , 1 +-.equ CONFIG_EXTERNAL_BUILD , 1 +-.equ CONFIG_INSTALL_DOCS , 0 +-.equ CONFIG_INSTALL_BINS , 1 +-.equ CONFIG_INSTALL_LIBS , 1 +-.equ CONFIG_INSTALL_SRCS , 0 +-.equ CONFIG_DEBUG , 0 +-.equ CONFIG_GPROF , 0 +-.equ CONFIG_GCOV , 0 +-.equ CONFIG_RVCT , 0 +-.equ CONFIG_GCC , 1 +-.equ CONFIG_MSVS , 0 +-.equ CONFIG_PIC , 0 +-.equ CONFIG_BIG_ENDIAN , 0 +-.equ CONFIG_CODEC_SRCS , 0 +-.equ CONFIG_DEBUG_LIBS , 0 +-.equ CONFIG_DEQUANT_TOKENS , 0 +-.equ CONFIG_DC_RECON , 0 +-.equ CONFIG_RUNTIME_CPU_DETECT , 0 +-.equ CONFIG_POSTPROC , 1 +-.equ CONFIG_VP9_POSTPROC , 1 +-.equ CONFIG_MULTITHREAD , 1 +-.equ CONFIG_INTERNAL_STATS , 0 +-.equ CONFIG_VP8_ENCODER , 1 +-.equ CONFIG_VP8_DECODER , 1 +-.equ CONFIG_VP9_ENCODER , 1 +-.equ CONFIG_VP9_DECODER , 1 +-.equ CONFIG_VP8 , 1 +-.equ CONFIG_VP9 , 1 +-.equ CONFIG_ENCODERS , 1 +-.equ CONFIG_DECODERS , 1 +-.equ CONFIG_STATIC_MSVCRT , 0 +-.equ CONFIG_SPATIAL_RESAMPLING , 1 +-.equ CONFIG_REALTIME_ONLY , 1 +-.equ CONFIG_ONTHEFLY_BITPACKING , 0 +-.equ CONFIG_ERROR_CONCEALMENT , 0 +-.equ CONFIG_SHARED , 0 +-.equ CONFIG_STATIC , 1 +-.equ CONFIG_SMALL , 0 +-.equ CONFIG_POSTPROC_VISUALIZER , 0 +-.equ CONFIG_OS_SUPPORT , 1 +-.equ CONFIG_UNIT_TESTS , 1 +-.equ CONFIG_WEBM_IO , 1 +-.equ CONFIG_LIBYUV , 0 +-.equ CONFIG_DECODE_PERF_TESTS , 0 +-.equ CONFIG_ENCODE_PERF_TESTS , 0 +-.equ CONFIG_MULTI_RES_ENCODING , 1 +-.equ CONFIG_TEMPORAL_DENOISING , 1 +-.equ CONFIG_VP9_TEMPORAL_DENOISING , 1 +-.equ CONFIG_COEFFICIENT_RANGE_CHECKING , 0 +-.equ CONFIG_VP9_HIGHBITDEPTH , 0 +-.equ CONFIG_BETTER_HW_COMPATIBILITY , 0 +-.equ CONFIG_EXPERIMENTAL , 0 +-.equ CONFIG_SIZE_LIMIT , 1 +-.equ CONFIG_ALWAYS_ADJUST_BPM , 0 +-.equ CONFIG_BITSTREAM_DEBUG , 0 +-.equ CONFIG_MISMATCH_DEBUG , 0 +-.equ CONFIG_FP_MB_STATS , 0 +-.equ CONFIG_EMULATE_HARDWARE , 0 +-.equ CONFIG_NON_GREEDY_MV , 0 +-.equ CONFIG_RATE_CTRL , 0 +-.equ CONFIG_COLLECT_COMPONENT_TIMING , 0 +-.equ DECODE_WIDTH_LIMIT , 16384 +-.equ DECODE_HEIGHT_LIMIT , 16384 +- .section .note.GNU-stack,"",%progbits +Index: chromium-122.0.6261.128/third_party/libvpx/source/config/linux/ppc64/vpx_config.c +=================================================================== +--- chromium-122.0.6261.128.orig/third_party/libvpx/source/config/linux/ppc64/vpx_config.c ++++ /dev/null +@@ -1,10 +0,0 @@ +-/* Copyright (c) 2011 The WebM project authors. All Rights Reserved. */ +-/* */ +-/* Use of this source code is governed by a BSD-style license */ +-/* that can be found in the LICENSE file in the root of the source */ +-/* tree. An additional intellectual property rights grant can be found */ +-/* in the file PATENTS. All contributing project authors may */ +-/* be found in the AUTHORS file in the root of the source tree. */ +-#include "vpx/vpx_codec.h" +-static const char* const cfg = "--target=ppc64le-linux-gcc --enable-external-build --enable-postproc --enable-multi-res-encoding --enable-temporal-denoising --enable-vp9-temporal-denoising --enable-vp9-postproc --size-limit=16384x16384 --enable-realtime-only --disable-install-docs --disable-libyuv"; +-const char *vpx_codec_build_config(void) {return cfg;} +Index: chromium-122.0.6261.128/third_party/libvpx/source/config/linux/ppc64/vpx_config.h +=================================================================== +--- chromium-122.0.6261.128.orig/third_party/libvpx/source/config/linux/ppc64/vpx_config.h ++++ /dev/null +@@ -1,116 +0,0 @@ +-/* Copyright (c) 2011 The WebM project authors. All Rights Reserved. */ +-/* */ +-/* Use of this source code is governed by a BSD-style license */ +-/* that can be found in the LICENSE file in the root of the source */ +-/* tree. An additional intellectual property rights grant can be found */ +-/* in the file PATENTS. All contributing project authors may */ +-/* be found in the AUTHORS file in the root of the source tree. */ +-/* This file automatically generated by configure. Do not edit! */ +-#ifndef VPX_CONFIG_H +-#define VPX_CONFIG_H +-#define RESTRICT +-#define INLINE inline +-#define VPX_ARCH_ARM 0 +-#define ARCH_ARM 0 +-#define VPX_ARCH_AARCH64 0 +-#define ARCH_AARCH64 0 +-#define VPX_ARCH_MIPS 0 +-#define ARCH_MIPS 0 +-#define VPX_ARCH_X86 0 +-#define ARCH_X86 0 +-#define VPX_ARCH_X86_64 0 +-#define ARCH_X86_64 0 +-#define VPX_ARCH_PPC 1 +-#define ARCH_PPC 1 +-#define VPX_ARCH_LOONGARCH 0 +-#define ARCH_LOONGARCH 0 +-#define HAVE_NEON_ASM 0 +-#define HAVE_NEON 0 +-#define HAVE_NEON_DOTPROD 0 +-#define HAVE_NEON_I8MM 0 +-#define HAVE_SVE 0 +-#define HAVE_MIPS32 0 +-#define HAVE_DSPR2 0 +-#define HAVE_MSA 0 +-#define HAVE_MIPS64 0 +-#define HAVE_MMX 0 +-#define HAVE_SSE 0 +-#define HAVE_SSE2 0 +-#define HAVE_SSE3 0 +-#define HAVE_SSSE3 0 +-#define HAVE_SSE4_1 0 +-#define HAVE_AVX 0 +-#define HAVE_AVX2 0 +-#define HAVE_AVX512 0 +-#define HAVE_VSX 0 +-#define HAVE_MMI 0 +-#define HAVE_LSX 0 +-#define HAVE_LASX 0 +-#define HAVE_VPX_PORTS 1 +-#define HAVE_PTHREAD_H 1 +-#define HAVE_UNISTD_H 0 +-#define CONFIG_DEPENDENCY_TRACKING 1 +-#define CONFIG_EXTERNAL_BUILD 1 +-#define CONFIG_INSTALL_DOCS 0 +-#define CONFIG_INSTALL_BINS 1 +-#define CONFIG_INSTALL_LIBS 1 +-#define CONFIG_INSTALL_SRCS 0 +-#define CONFIG_DEBUG 0 +-#define CONFIG_GPROF 0 +-#define CONFIG_GCOV 0 +-#define CONFIG_RVCT 0 +-#define CONFIG_GCC 1 +-#define CONFIG_MSVS 0 +-#define CONFIG_PIC 0 +-#define CONFIG_BIG_ENDIAN 0 +-#define CONFIG_CODEC_SRCS 0 +-#define CONFIG_DEBUG_LIBS 0 +-#define CONFIG_DEQUANT_TOKENS 0 +-#define CONFIG_DC_RECON 0 +-#define CONFIG_RUNTIME_CPU_DETECT 0 +-#define CONFIG_POSTPROC 1 +-#define CONFIG_VP9_POSTPROC 1 +-#define CONFIG_MULTITHREAD 1 +-#define CONFIG_INTERNAL_STATS 0 +-#define CONFIG_VP8_ENCODER 1 +-#define CONFIG_VP8_DECODER 1 +-#define CONFIG_VP9_ENCODER 1 +-#define CONFIG_VP9_DECODER 1 +-#define CONFIG_VP8 1 +-#define CONFIG_VP9 1 +-#define CONFIG_ENCODERS 1 +-#define CONFIG_DECODERS 1 +-#define CONFIG_STATIC_MSVCRT 0 +-#define CONFIG_SPATIAL_RESAMPLING 1 +-#define CONFIG_REALTIME_ONLY 1 +-#define CONFIG_ONTHEFLY_BITPACKING 0 +-#define CONFIG_ERROR_CONCEALMENT 0 +-#define CONFIG_SHARED 0 +-#define CONFIG_STATIC 1 +-#define CONFIG_SMALL 0 +-#define CONFIG_POSTPROC_VISUALIZER 0 +-#define CONFIG_OS_SUPPORT 1 +-#define CONFIG_UNIT_TESTS 1 +-#define CONFIG_WEBM_IO 1 +-#define CONFIG_LIBYUV 0 +-#define CONFIG_DECODE_PERF_TESTS 0 +-#define CONFIG_ENCODE_PERF_TESTS 0 +-#define CONFIG_MULTI_RES_ENCODING 1 +-#define CONFIG_TEMPORAL_DENOISING 1 +-#define CONFIG_VP9_TEMPORAL_DENOISING 1 +-#define CONFIG_COEFFICIENT_RANGE_CHECKING 0 +-#define CONFIG_VP9_HIGHBITDEPTH 0 +-#define CONFIG_BETTER_HW_COMPATIBILITY 0 +-#define CONFIG_EXPERIMENTAL 0 +-#define CONFIG_SIZE_LIMIT 1 +-#define CONFIG_ALWAYS_ADJUST_BPM 0 +-#define CONFIG_BITSTREAM_DEBUG 0 +-#define CONFIG_MISMATCH_DEBUG 0 +-#define CONFIG_FP_MB_STATS 0 +-#define CONFIG_EMULATE_HARDWARE 0 +-#define CONFIG_NON_GREEDY_MV 0 +-#define CONFIG_RATE_CTRL 0 +-#define CONFIG_COLLECT_COMPONENT_TIMING 0 +-#define DECODE_WIDTH_LIMIT 16384 +-#define DECODE_HEIGHT_LIMIT 16384 +-#endif /* VPX_CONFIG_H */ +Index: chromium-122.0.6261.128/third_party/libvpx/source/config/linux/ppc64/vpx_dsp_rtcd.h +=================================================================== +--- chromium-122.0.6261.128.orig/third_party/libvpx/source/config/linux/ppc64/vpx_dsp_rtcd.h ++++ /dev/null +@@ -1,2128 +0,0 @@ +-// This file is generated. Do not edit. +-#ifndef VPX_DSP_RTCD_H_ +-#define VPX_DSP_RTCD_H_ +- +-#ifdef RTCD_C +-#define RTCD_EXTERN +-#else +-#define RTCD_EXTERN extern +-#endif +- +-/* +- * DSP +- */ +- +-#include "vpx/vpx_integer.h" +-#include "vpx_dsp/vpx_dsp_common.h" +-#include "vpx_dsp/vpx_filter.h" +-#if CONFIG_VP9_ENCODER +-struct macroblock_plane; +-struct ScanOrder; +-#endif +- +-#ifdef __cplusplus +-extern "C" { +-#endif +- +-unsigned int vpx_avg_4x4_c(const uint8_t*, int p); +-#define vpx_avg_4x4 vpx_avg_4x4_c +- +-unsigned int vpx_avg_8x8_c(const uint8_t*, int p); +-#define vpx_avg_8x8 vpx_avg_8x8_c +- +-void vpx_comp_avg_pred_c(uint8_t* comp_pred, +- const uint8_t* pred, +- int width, +- int height, +- const uint8_t* ref, +- int ref_stride); +-void vpx_comp_avg_pred_vsx(uint8_t* comp_pred, +- const uint8_t* pred, +- int width, +- int height, +- const uint8_t* ref, +- int ref_stride); +-#define vpx_comp_avg_pred vpx_comp_avg_pred_vsx +- +-void vpx_convolve8_c(const uint8_t* src, +- ptrdiff_t src_stride, +- uint8_t* dst, +- ptrdiff_t dst_stride, +- const InterpKernel* filter, +- int x0_q4, +- int x_step_q4, +- int y0_q4, +- int y_step_q4, +- int w, +- int h); +-void vpx_convolve8_vsx(const uint8_t* src, +- ptrdiff_t src_stride, +- uint8_t* dst, +- ptrdiff_t dst_stride, +- const InterpKernel* filter, +- int x0_q4, +- int x_step_q4, +- int y0_q4, +- int y_step_q4, +- int w, +- int h); +-#define vpx_convolve8 vpx_convolve8_vsx +- +-void vpx_convolve8_avg_c(const uint8_t* src, +- ptrdiff_t src_stride, +- uint8_t* dst, +- ptrdiff_t dst_stride, +- const InterpKernel* filter, +- int x0_q4, +- int x_step_q4, +- int y0_q4, +- int y_step_q4, +- int w, +- int h); +-void vpx_convolve8_avg_vsx(const uint8_t* src, +- ptrdiff_t src_stride, +- uint8_t* dst, +- ptrdiff_t dst_stride, +- const InterpKernel* filter, +- int x0_q4, +- int x_step_q4, +- int y0_q4, +- int y_step_q4, +- int w, +- int h); +-#define vpx_convolve8_avg vpx_convolve8_avg_vsx +- +-void vpx_convolve8_avg_horiz_c(const uint8_t* src, +- ptrdiff_t src_stride, +- uint8_t* dst, +- ptrdiff_t dst_stride, +- const InterpKernel* filter, +- int x0_q4, +- int x_step_q4, +- int y0_q4, +- int y_step_q4, +- int w, +- int h); +-void vpx_convolve8_avg_horiz_vsx(const uint8_t* src, +- ptrdiff_t src_stride, +- uint8_t* dst, +- ptrdiff_t dst_stride, +- const InterpKernel* filter, +- int x0_q4, +- int x_step_q4, +- int y0_q4, +- int y_step_q4, +- int w, +- int h); +-#define vpx_convolve8_avg_horiz vpx_convolve8_avg_horiz_vsx +- +-void vpx_convolve8_avg_vert_c(const uint8_t* src, +- ptrdiff_t src_stride, +- uint8_t* dst, +- ptrdiff_t dst_stride, +- const InterpKernel* filter, +- int x0_q4, +- int x_step_q4, +- int y0_q4, +- int y_step_q4, +- int w, +- int h); +-void vpx_convolve8_avg_vert_vsx(const uint8_t* src, +- ptrdiff_t src_stride, +- uint8_t* dst, +- ptrdiff_t dst_stride, +- const InterpKernel* filter, +- int x0_q4, +- int x_step_q4, +- int y0_q4, +- int y_step_q4, +- int w, +- int h); +-#define vpx_convolve8_avg_vert vpx_convolve8_avg_vert_vsx +- +-void vpx_convolve8_horiz_c(const uint8_t* src, +- ptrdiff_t src_stride, +- uint8_t* dst, +- ptrdiff_t dst_stride, +- const InterpKernel* filter, +- int x0_q4, +- int x_step_q4, +- int y0_q4, +- int y_step_q4, +- int w, +- int h); +-void vpx_convolve8_horiz_vsx(const uint8_t* src, +- ptrdiff_t src_stride, +- uint8_t* dst, +- ptrdiff_t dst_stride, +- const InterpKernel* filter, +- int x0_q4, +- int x_step_q4, +- int y0_q4, +- int y_step_q4, +- int w, +- int h); +-#define vpx_convolve8_horiz vpx_convolve8_horiz_vsx +- +-void vpx_convolve8_vert_c(const uint8_t* src, +- ptrdiff_t src_stride, +- uint8_t* dst, +- ptrdiff_t dst_stride, +- const InterpKernel* filter, +- int x0_q4, +- int x_step_q4, +- int y0_q4, +- int y_step_q4, +- int w, +- int h); +-void vpx_convolve8_vert_vsx(const uint8_t* src, +- ptrdiff_t src_stride, +- uint8_t* dst, +- ptrdiff_t dst_stride, +- const InterpKernel* filter, +- int x0_q4, +- int x_step_q4, +- int y0_q4, +- int y_step_q4, +- int w, +- int h); +-#define vpx_convolve8_vert vpx_convolve8_vert_vsx +- +-void vpx_convolve_avg_c(const uint8_t* src, +- ptrdiff_t src_stride, +- uint8_t* dst, +- ptrdiff_t dst_stride, +- const InterpKernel* filter, +- int x0_q4, +- int x_step_q4, +- int y0_q4, +- int y_step_q4, +- int w, +- int h); +-void vpx_convolve_avg_vsx(const uint8_t* src, +- ptrdiff_t src_stride, +- uint8_t* dst, +- ptrdiff_t dst_stride, +- const InterpKernel* filter, +- int x0_q4, +- int x_step_q4, +- int y0_q4, +- int y_step_q4, +- int w, +- int h); +-#define vpx_convolve_avg vpx_convolve_avg_vsx +- +-void vpx_convolve_copy_c(const uint8_t* src, +- ptrdiff_t src_stride, +- uint8_t* dst, +- ptrdiff_t dst_stride, +- const InterpKernel* filter, +- int x0_q4, +- int x_step_q4, +- int y0_q4, +- int y_step_q4, +- int w, +- int h); +-void vpx_convolve_copy_vsx(const uint8_t* src, +- ptrdiff_t src_stride, +- uint8_t* dst, +- ptrdiff_t dst_stride, +- const InterpKernel* filter, +- int x0_q4, +- int x_step_q4, +- int y0_q4, +- int y_step_q4, +- int w, +- int h); +-#define vpx_convolve_copy vpx_convolve_copy_vsx +- +-void vpx_d117_predictor_16x16_c(uint8_t* dst, +- ptrdiff_t stride, +- const uint8_t* above, +- const uint8_t* left); +-#define vpx_d117_predictor_16x16 vpx_d117_predictor_16x16_c +- +-void vpx_d117_predictor_32x32_c(uint8_t* dst, +- ptrdiff_t stride, +- const uint8_t* above, +- const uint8_t* left); +-#define vpx_d117_predictor_32x32 vpx_d117_predictor_32x32_c +- +-void vpx_d117_predictor_4x4_c(uint8_t* dst, +- ptrdiff_t stride, +- const uint8_t* above, +- const uint8_t* left); +-#define vpx_d117_predictor_4x4 vpx_d117_predictor_4x4_c +- +-void vpx_d117_predictor_8x8_c(uint8_t* dst, +- ptrdiff_t stride, +- const uint8_t* above, +- const uint8_t* left); +-#define vpx_d117_predictor_8x8 vpx_d117_predictor_8x8_c +- +-void vpx_d135_predictor_16x16_c(uint8_t* dst, +- ptrdiff_t stride, +- const uint8_t* above, +- const uint8_t* left); +-#define vpx_d135_predictor_16x16 vpx_d135_predictor_16x16_c +- +-void vpx_d135_predictor_32x32_c(uint8_t* dst, +- ptrdiff_t stride, +- const uint8_t* above, +- const uint8_t* left); +-#define vpx_d135_predictor_32x32 vpx_d135_predictor_32x32_c +- +-void vpx_d135_predictor_4x4_c(uint8_t* dst, +- ptrdiff_t stride, +- const uint8_t* above, +- const uint8_t* left); +-#define vpx_d135_predictor_4x4 vpx_d135_predictor_4x4_c +- +-void vpx_d135_predictor_8x8_c(uint8_t* dst, +- ptrdiff_t stride, +- const uint8_t* above, +- const uint8_t* left); +-#define vpx_d135_predictor_8x8 vpx_d135_predictor_8x8_c +- +-void vpx_d153_predictor_16x16_c(uint8_t* dst, +- ptrdiff_t stride, +- const uint8_t* above, +- const uint8_t* left); +-#define vpx_d153_predictor_16x16 vpx_d153_predictor_16x16_c +- +-void vpx_d153_predictor_32x32_c(uint8_t* dst, +- ptrdiff_t stride, +- const uint8_t* above, +- const uint8_t* left); +-#define vpx_d153_predictor_32x32 vpx_d153_predictor_32x32_c +- +-void vpx_d153_predictor_4x4_c(uint8_t* dst, +- ptrdiff_t stride, +- const uint8_t* above, +- const uint8_t* left); +-#define vpx_d153_predictor_4x4 vpx_d153_predictor_4x4_c +- +-void vpx_d153_predictor_8x8_c(uint8_t* dst, +- ptrdiff_t stride, +- const uint8_t* above, +- const uint8_t* left); +-#define vpx_d153_predictor_8x8 vpx_d153_predictor_8x8_c +- +-void vpx_d207_predictor_16x16_c(uint8_t* dst, +- ptrdiff_t stride, +- const uint8_t* above, +- const uint8_t* left); +-#define vpx_d207_predictor_16x16 vpx_d207_predictor_16x16_c +- +-void vpx_d207_predictor_32x32_c(uint8_t* dst, +- ptrdiff_t stride, +- const uint8_t* above, +- const uint8_t* left); +-#define vpx_d207_predictor_32x32 vpx_d207_predictor_32x32_c +- +-void vpx_d207_predictor_4x4_c(uint8_t* dst, +- ptrdiff_t stride, +- const uint8_t* above, +- const uint8_t* left); +-#define vpx_d207_predictor_4x4 vpx_d207_predictor_4x4_c +- +-void vpx_d207_predictor_8x8_c(uint8_t* dst, +- ptrdiff_t stride, +- const uint8_t* above, +- const uint8_t* left); +-#define vpx_d207_predictor_8x8 vpx_d207_predictor_8x8_c +- +-void vpx_d45_predictor_16x16_c(uint8_t* dst, +- ptrdiff_t stride, +- const uint8_t* above, +- const uint8_t* left); +-void vpx_d45_predictor_16x16_vsx(uint8_t* dst, +- ptrdiff_t stride, +- const uint8_t* above, +- const uint8_t* left); +-#define vpx_d45_predictor_16x16 vpx_d45_predictor_16x16_vsx +- +-void vpx_d45_predictor_32x32_c(uint8_t* dst, +- ptrdiff_t stride, +- const uint8_t* above, +- const uint8_t* left); +-void vpx_d45_predictor_32x32_vsx(uint8_t* dst, +- ptrdiff_t stride, +- const uint8_t* above, +- const uint8_t* left); +-#define vpx_d45_predictor_32x32 vpx_d45_predictor_32x32_vsx +- +-void vpx_d45_predictor_4x4_c(uint8_t* dst, +- ptrdiff_t stride, +- const uint8_t* above, +- const uint8_t* left); +-#define vpx_d45_predictor_4x4 vpx_d45_predictor_4x4_c +- +-void vpx_d45_predictor_8x8_c(uint8_t* dst, +- ptrdiff_t stride, +- const uint8_t* above, +- const uint8_t* left); +-#define vpx_d45_predictor_8x8 vpx_d45_predictor_8x8_c +- +-void vpx_d45e_predictor_4x4_c(uint8_t* dst, +- ptrdiff_t stride, +- const uint8_t* above, +- const uint8_t* left); +-#define vpx_d45e_predictor_4x4 vpx_d45e_predictor_4x4_c +- +-void vpx_d63_predictor_16x16_c(uint8_t* dst, +- ptrdiff_t stride, +- const uint8_t* above, +- const uint8_t* left); +-void vpx_d63_predictor_16x16_vsx(uint8_t* dst, +- ptrdiff_t stride, +- const uint8_t* above, +- const uint8_t* left); +-#define vpx_d63_predictor_16x16 vpx_d63_predictor_16x16_vsx +- +-void vpx_d63_predictor_32x32_c(uint8_t* dst, +- ptrdiff_t stride, +- const uint8_t* above, +- const uint8_t* left); +-void vpx_d63_predictor_32x32_vsx(uint8_t* dst, +- ptrdiff_t stride, +- const uint8_t* above, +- const uint8_t* left); +-#define vpx_d63_predictor_32x32 vpx_d63_predictor_32x32_vsx +- +-void vpx_d63_predictor_4x4_c(uint8_t* dst, +- ptrdiff_t stride, +- const uint8_t* above, +- const uint8_t* left); +-#define vpx_d63_predictor_4x4 vpx_d63_predictor_4x4_c +- +-void vpx_d63_predictor_8x8_c(uint8_t* dst, +- ptrdiff_t stride, +- const uint8_t* above, +- const uint8_t* left); +-#define vpx_d63_predictor_8x8 vpx_d63_predictor_8x8_c +- +-void vpx_d63e_predictor_4x4_c(uint8_t* dst, +- ptrdiff_t stride, +- const uint8_t* above, +- const uint8_t* left); +-#define vpx_d63e_predictor_4x4 vpx_d63e_predictor_4x4_c +- +-void vpx_dc_128_predictor_16x16_c(uint8_t* dst, +- ptrdiff_t stride, +- const uint8_t* above, +- const uint8_t* left); +-void vpx_dc_128_predictor_16x16_vsx(uint8_t* dst, +- ptrdiff_t stride, +- const uint8_t* above, +- const uint8_t* left); +-#define vpx_dc_128_predictor_16x16 vpx_dc_128_predictor_16x16_vsx +- +-void vpx_dc_128_predictor_32x32_c(uint8_t* dst, +- ptrdiff_t stride, +- const uint8_t* above, +- const uint8_t* left); +-void vpx_dc_128_predictor_32x32_vsx(uint8_t* dst, +- ptrdiff_t stride, +- const uint8_t* above, +- const uint8_t* left); +-#define vpx_dc_128_predictor_32x32 vpx_dc_128_predictor_32x32_vsx +- +-void vpx_dc_128_predictor_4x4_c(uint8_t* dst, +- ptrdiff_t stride, +- const uint8_t* above, +- const uint8_t* left); +-#define vpx_dc_128_predictor_4x4 vpx_dc_128_predictor_4x4_c +- +-void vpx_dc_128_predictor_8x8_c(uint8_t* dst, +- ptrdiff_t stride, +- const uint8_t* above, +- const uint8_t* left); +-#define vpx_dc_128_predictor_8x8 vpx_dc_128_predictor_8x8_c +- +-void vpx_dc_left_predictor_16x16_c(uint8_t* dst, +- ptrdiff_t stride, +- const uint8_t* above, +- const uint8_t* left); +-void vpx_dc_left_predictor_16x16_vsx(uint8_t* dst, +- ptrdiff_t stride, +- const uint8_t* above, +- const uint8_t* left); +-#define vpx_dc_left_predictor_16x16 vpx_dc_left_predictor_16x16_vsx +- +-void vpx_dc_left_predictor_32x32_c(uint8_t* dst, +- ptrdiff_t stride, +- const uint8_t* above, +- const uint8_t* left); +-void vpx_dc_left_predictor_32x32_vsx(uint8_t* dst, +- ptrdiff_t stride, +- const uint8_t* above, +- const uint8_t* left); +-#define vpx_dc_left_predictor_32x32 vpx_dc_left_predictor_32x32_vsx +- +-void vpx_dc_left_predictor_4x4_c(uint8_t* dst, +- ptrdiff_t stride, +- const uint8_t* above, +- const uint8_t* left); +-#define vpx_dc_left_predictor_4x4 vpx_dc_left_predictor_4x4_c +- +-void vpx_dc_left_predictor_8x8_c(uint8_t* dst, +- ptrdiff_t stride, +- const uint8_t* above, +- const uint8_t* left); +-#define vpx_dc_left_predictor_8x8 vpx_dc_left_predictor_8x8_c +- +-void vpx_dc_predictor_16x16_c(uint8_t* dst, +- ptrdiff_t stride, +- const uint8_t* above, +- const uint8_t* left); +-void vpx_dc_predictor_16x16_vsx(uint8_t* dst, +- ptrdiff_t stride, +- const uint8_t* above, +- const uint8_t* left); +-#define vpx_dc_predictor_16x16 vpx_dc_predictor_16x16_vsx +- +-void vpx_dc_predictor_32x32_c(uint8_t* dst, +- ptrdiff_t stride, +- const uint8_t* above, +- const uint8_t* left); +-void vpx_dc_predictor_32x32_vsx(uint8_t* dst, +- ptrdiff_t stride, +- const uint8_t* above, +- const uint8_t* left); +-#define vpx_dc_predictor_32x32 vpx_dc_predictor_32x32_vsx +- +-void vpx_dc_predictor_4x4_c(uint8_t* dst, +- ptrdiff_t stride, +- const uint8_t* above, +- const uint8_t* left); +-#define vpx_dc_predictor_4x4 vpx_dc_predictor_4x4_c +- +-void vpx_dc_predictor_8x8_c(uint8_t* dst, +- ptrdiff_t stride, +- const uint8_t* above, +- const uint8_t* left); +-#define vpx_dc_predictor_8x8 vpx_dc_predictor_8x8_c +- +-void vpx_dc_top_predictor_16x16_c(uint8_t* dst, +- ptrdiff_t stride, +- const uint8_t* above, +- const uint8_t* left); +-void vpx_dc_top_predictor_16x16_vsx(uint8_t* dst, +- ptrdiff_t stride, +- const uint8_t* above, +- const uint8_t* left); +-#define vpx_dc_top_predictor_16x16 vpx_dc_top_predictor_16x16_vsx +- +-void vpx_dc_top_predictor_32x32_c(uint8_t* dst, +- ptrdiff_t stride, +- const uint8_t* above, +- const uint8_t* left); +-void vpx_dc_top_predictor_32x32_vsx(uint8_t* dst, +- ptrdiff_t stride, +- const uint8_t* above, +- const uint8_t* left); +-#define vpx_dc_top_predictor_32x32 vpx_dc_top_predictor_32x32_vsx +- +-void vpx_dc_top_predictor_4x4_c(uint8_t* dst, +- ptrdiff_t stride, +- const uint8_t* above, +- const uint8_t* left); +-#define vpx_dc_top_predictor_4x4 vpx_dc_top_predictor_4x4_c +- +-void vpx_dc_top_predictor_8x8_c(uint8_t* dst, +- ptrdiff_t stride, +- const uint8_t* above, +- const uint8_t* left); +-#define vpx_dc_top_predictor_8x8 vpx_dc_top_predictor_8x8_c +- +-void vpx_fdct16x16_c(const int16_t* input, tran_low_t* output, int stride); +-#define vpx_fdct16x16 vpx_fdct16x16_c +- +-void vpx_fdct16x16_1_c(const int16_t* input, tran_low_t* output, int stride); +-#define vpx_fdct16x16_1 vpx_fdct16x16_1_c +- +-void vpx_fdct32x32_c(const int16_t* input, tran_low_t* output, int stride); +-#define vpx_fdct32x32 vpx_fdct32x32_c +- +-void vpx_fdct32x32_1_c(const int16_t* input, tran_low_t* output, int stride); +-#define vpx_fdct32x32_1 vpx_fdct32x32_1_c +- +-void vpx_fdct32x32_rd_c(const int16_t* input, tran_low_t* output, int stride); +-void vpx_fdct32x32_rd_vsx(const int16_t* input, tran_low_t* output, int stride); +-#define vpx_fdct32x32_rd vpx_fdct32x32_rd_vsx +- +-void vpx_fdct4x4_c(const int16_t* input, tran_low_t* output, int stride); +-#define vpx_fdct4x4 vpx_fdct4x4_c +- +-void vpx_fdct4x4_1_c(const int16_t* input, tran_low_t* output, int stride); +-#define vpx_fdct4x4_1 vpx_fdct4x4_1_c +- +-void vpx_fdct8x8_c(const int16_t* input, tran_low_t* output, int stride); +-#define vpx_fdct8x8 vpx_fdct8x8_c +- +-void vpx_fdct8x8_1_c(const int16_t* input, tran_low_t* output, int stride); +-#define vpx_fdct8x8_1 vpx_fdct8x8_1_c +- +-void vpx_get16x16var_c(const uint8_t* src_ptr, +- int src_stride, +- const uint8_t* ref_ptr, +- int ref_stride, +- unsigned int* sse, +- int* sum); +-void vpx_get16x16var_vsx(const uint8_t* src_ptr, +- int src_stride, +- const uint8_t* ref_ptr, +- int ref_stride, +- unsigned int* sse, +- int* sum); +-#define vpx_get16x16var vpx_get16x16var_vsx +- +-unsigned int vpx_get4x4sse_cs_c(const unsigned char* src_ptr, +- int src_stride, +- const unsigned char* ref_ptr, +- int ref_stride); +-unsigned int vpx_get4x4sse_cs_vsx(const unsigned char* src_ptr, +- int src_stride, +- const unsigned char* ref_ptr, +- int ref_stride); +-#define vpx_get4x4sse_cs vpx_get4x4sse_cs_vsx +- +-void vpx_get8x8var_c(const uint8_t* src_ptr, +- int src_stride, +- const uint8_t* ref_ptr, +- int ref_stride, +- unsigned int* sse, +- int* sum); +-void vpx_get8x8var_vsx(const uint8_t* src_ptr, +- int src_stride, +- const uint8_t* ref_ptr, +- int ref_stride, +- unsigned int* sse, +- int* sum); +-#define vpx_get8x8var vpx_get8x8var_vsx +- +-unsigned int vpx_get_mb_ss_c(const int16_t*); +-unsigned int vpx_get_mb_ss_vsx(const int16_t*); +-#define vpx_get_mb_ss vpx_get_mb_ss_vsx +- +-void vpx_h_predictor_16x16_c(uint8_t* dst, +- ptrdiff_t stride, +- const uint8_t* above, +- const uint8_t* left); +-void vpx_h_predictor_16x16_vsx(uint8_t* dst, +- ptrdiff_t stride, +- const uint8_t* above, +- const uint8_t* left); +-#define vpx_h_predictor_16x16 vpx_h_predictor_16x16_vsx +- +-void vpx_h_predictor_32x32_c(uint8_t* dst, +- ptrdiff_t stride, +- const uint8_t* above, +- const uint8_t* left); +-void vpx_h_predictor_32x32_vsx(uint8_t* dst, +- ptrdiff_t stride, +- const uint8_t* above, +- const uint8_t* left); +-#define vpx_h_predictor_32x32 vpx_h_predictor_32x32_vsx +- +-void vpx_h_predictor_4x4_c(uint8_t* dst, +- ptrdiff_t stride, +- const uint8_t* above, +- const uint8_t* left); +-#define vpx_h_predictor_4x4 vpx_h_predictor_4x4_c +- +-void vpx_h_predictor_8x8_c(uint8_t* dst, +- ptrdiff_t stride, +- const uint8_t* above, +- const uint8_t* left); +-#define vpx_h_predictor_8x8 vpx_h_predictor_8x8_c +- +-void vpx_hadamard_16x16_c(const int16_t* src_diff, +- ptrdiff_t src_stride, +- int16_t* coeff); +-void vpx_hadamard_16x16_vsx(const int16_t* src_diff, +- ptrdiff_t src_stride, +- int16_t* coeff); +-#define vpx_hadamard_16x16 vpx_hadamard_16x16_vsx +- +-void vpx_hadamard_32x32_c(const int16_t* src_diff, +- ptrdiff_t src_stride, +- int16_t* coeff); +-#define vpx_hadamard_32x32 vpx_hadamard_32x32_c +- +-void vpx_hadamard_8x8_c(const int16_t* src_diff, +- ptrdiff_t src_stride, +- int16_t* coeff); +-void vpx_hadamard_8x8_vsx(const int16_t* src_diff, +- ptrdiff_t src_stride, +- int16_t* coeff); +-#define vpx_hadamard_8x8 vpx_hadamard_8x8_vsx +- +-void vpx_he_predictor_4x4_c(uint8_t* dst, +- ptrdiff_t stride, +- const uint8_t* above, +- const uint8_t* left); +-#define vpx_he_predictor_4x4 vpx_he_predictor_4x4_c +- +-void vpx_idct16x16_10_add_c(const tran_low_t* input, uint8_t* dest, int stride); +-#define vpx_idct16x16_10_add vpx_idct16x16_10_add_c +- +-void vpx_idct16x16_1_add_c(const tran_low_t* input, uint8_t* dest, int stride); +-#define vpx_idct16x16_1_add vpx_idct16x16_1_add_c +- +-void vpx_idct16x16_256_add_c(const tran_low_t* input, +- uint8_t* dest, +- int stride); +-void vpx_idct16x16_256_add_vsx(const tran_low_t* input, +- uint8_t* dest, +- int stride); +-#define vpx_idct16x16_256_add vpx_idct16x16_256_add_vsx +- +-void vpx_idct16x16_38_add_c(const tran_low_t* input, uint8_t* dest, int stride); +-#define vpx_idct16x16_38_add vpx_idct16x16_38_add_c +- +-void vpx_idct32x32_1024_add_c(const tran_low_t* input, +- uint8_t* dest, +- int stride); +-void vpx_idct32x32_1024_add_vsx(const tran_low_t* input, +- uint8_t* dest, +- int stride); +-#define vpx_idct32x32_1024_add vpx_idct32x32_1024_add_vsx +- +-void vpx_idct32x32_135_add_c(const tran_low_t* input, +- uint8_t* dest, +- int stride); +-#define vpx_idct32x32_135_add vpx_idct32x32_135_add_c +- +-void vpx_idct32x32_1_add_c(const tran_low_t* input, uint8_t* dest, int stride); +-#define vpx_idct32x32_1_add vpx_idct32x32_1_add_c +- +-void vpx_idct32x32_34_add_c(const tran_low_t* input, uint8_t* dest, int stride); +-#define vpx_idct32x32_34_add vpx_idct32x32_34_add_c +- +-void vpx_idct4x4_16_add_c(const tran_low_t* input, uint8_t* dest, int stride); +-void vpx_idct4x4_16_add_vsx(const tran_low_t* input, uint8_t* dest, int stride); +-#define vpx_idct4x4_16_add vpx_idct4x4_16_add_vsx +- +-void vpx_idct4x4_1_add_c(const tran_low_t* input, uint8_t* dest, int stride); +-#define vpx_idct4x4_1_add vpx_idct4x4_1_add_c +- +-void vpx_idct8x8_12_add_c(const tran_low_t* input, uint8_t* dest, int stride); +-#define vpx_idct8x8_12_add vpx_idct8x8_12_add_c +- +-void vpx_idct8x8_1_add_c(const tran_low_t* input, uint8_t* dest, int stride); +-#define vpx_idct8x8_1_add vpx_idct8x8_1_add_c +- +-void vpx_idct8x8_64_add_c(const tran_low_t* input, uint8_t* dest, int stride); +-void vpx_idct8x8_64_add_vsx(const tran_low_t* input, uint8_t* dest, int stride); +-#define vpx_idct8x8_64_add vpx_idct8x8_64_add_vsx +- +-int16_t vpx_int_pro_col_c(const uint8_t* ref, const int width); +-#define vpx_int_pro_col vpx_int_pro_col_c +- +-void vpx_int_pro_row_c(int16_t hbuf[16], +- const uint8_t* ref, +- const int ref_stride, +- const int height); +-#define vpx_int_pro_row vpx_int_pro_row_c +- +-void vpx_iwht4x4_16_add_c(const tran_low_t* input, uint8_t* dest, int stride); +-void vpx_iwht4x4_16_add_vsx(const tran_low_t* input, uint8_t* dest, int stride); +-#define vpx_iwht4x4_16_add vpx_iwht4x4_16_add_vsx +- +-void vpx_iwht4x4_1_add_c(const tran_low_t* input, uint8_t* dest, int stride); +-#define vpx_iwht4x4_1_add vpx_iwht4x4_1_add_c +- +-void vpx_lpf_horizontal_16_c(uint8_t* s, +- int pitch, +- const uint8_t* blimit, +- const uint8_t* limit, +- const uint8_t* thresh); +-#define vpx_lpf_horizontal_16 vpx_lpf_horizontal_16_c +- +-void vpx_lpf_horizontal_16_dual_c(uint8_t* s, +- int pitch, +- const uint8_t* blimit, +- const uint8_t* limit, +- const uint8_t* thresh); +-#define vpx_lpf_horizontal_16_dual vpx_lpf_horizontal_16_dual_c +- +-void vpx_lpf_horizontal_4_c(uint8_t* s, +- int pitch, +- const uint8_t* blimit, +- const uint8_t* limit, +- const uint8_t* thresh); +-#define vpx_lpf_horizontal_4 vpx_lpf_horizontal_4_c +- +-void vpx_lpf_horizontal_4_dual_c(uint8_t* s, +- int pitch, +- const uint8_t* blimit0, +- const uint8_t* limit0, +- const uint8_t* thresh0, +- const uint8_t* blimit1, +- const uint8_t* limit1, +- const uint8_t* thresh1); +-#define vpx_lpf_horizontal_4_dual vpx_lpf_horizontal_4_dual_c +- +-void vpx_lpf_horizontal_8_c(uint8_t* s, +- int pitch, +- const uint8_t* blimit, +- const uint8_t* limit, +- const uint8_t* thresh); +-#define vpx_lpf_horizontal_8 vpx_lpf_horizontal_8_c +- +-void vpx_lpf_horizontal_8_dual_c(uint8_t* s, +- int pitch, +- const uint8_t* blimit0, +- const uint8_t* limit0, +- const uint8_t* thresh0, +- const uint8_t* blimit1, +- const uint8_t* limit1, +- const uint8_t* thresh1); +-#define vpx_lpf_horizontal_8_dual vpx_lpf_horizontal_8_dual_c +- +-void vpx_lpf_vertical_16_c(uint8_t* s, +- int pitch, +- const uint8_t* blimit, +- const uint8_t* limit, +- const uint8_t* thresh); +-#define vpx_lpf_vertical_16 vpx_lpf_vertical_16_c +- +-void vpx_lpf_vertical_16_dual_c(uint8_t* s, +- int pitch, +- const uint8_t* blimit, +- const uint8_t* limit, +- const uint8_t* thresh); +-#define vpx_lpf_vertical_16_dual vpx_lpf_vertical_16_dual_c +- +-void vpx_lpf_vertical_4_c(uint8_t* s, +- int pitch, +- const uint8_t* blimit, +- const uint8_t* limit, +- const uint8_t* thresh); +-#define vpx_lpf_vertical_4 vpx_lpf_vertical_4_c +- +-void vpx_lpf_vertical_4_dual_c(uint8_t* s, +- int pitch, +- const uint8_t* blimit0, +- const uint8_t* limit0, +- const uint8_t* thresh0, +- const uint8_t* blimit1, +- const uint8_t* limit1, +- const uint8_t* thresh1); +-#define vpx_lpf_vertical_4_dual vpx_lpf_vertical_4_dual_c +- +-void vpx_lpf_vertical_8_c(uint8_t* s, +- int pitch, +- const uint8_t* blimit, +- const uint8_t* limit, +- const uint8_t* thresh); +-#define vpx_lpf_vertical_8 vpx_lpf_vertical_8_c +- +-void vpx_lpf_vertical_8_dual_c(uint8_t* s, +- int pitch, +- const uint8_t* blimit0, +- const uint8_t* limit0, +- const uint8_t* thresh0, +- const uint8_t* blimit1, +- const uint8_t* limit1, +- const uint8_t* thresh1); +-#define vpx_lpf_vertical_8_dual vpx_lpf_vertical_8_dual_c +- +-void vpx_mbpost_proc_across_ip_c(unsigned char* src, +- int pitch, +- int rows, +- int cols, +- int flimit); +-void vpx_mbpost_proc_across_ip_vsx(unsigned char* src, +- int pitch, +- int rows, +- int cols, +- int flimit); +-#define vpx_mbpost_proc_across_ip vpx_mbpost_proc_across_ip_vsx +- +-void vpx_mbpost_proc_down_c(unsigned char* dst, +- int pitch, +- int rows, +- int cols, +- int flimit); +-void vpx_mbpost_proc_down_vsx(unsigned char* dst, +- int pitch, +- int rows, +- int cols, +- int flimit); +-#define vpx_mbpost_proc_down vpx_mbpost_proc_down_vsx +- +-void vpx_minmax_8x8_c(const uint8_t* s, +- int p, +- const uint8_t* d, +- int dp, +- int* min, +- int* max); +-#define vpx_minmax_8x8 vpx_minmax_8x8_c +- +-unsigned int vpx_mse16x16_c(const uint8_t* src_ptr, +- int src_stride, +- const uint8_t* ref_ptr, +- int ref_stride, +- unsigned int* sse); +-unsigned int vpx_mse16x16_vsx(const uint8_t* src_ptr, +- int src_stride, +- const uint8_t* ref_ptr, +- int ref_stride, +- unsigned int* sse); +-#define vpx_mse16x16 vpx_mse16x16_vsx +- +-unsigned int vpx_mse16x8_c(const uint8_t* src_ptr, +- int src_stride, +- const uint8_t* ref_ptr, +- int ref_stride, +- unsigned int* sse); +-unsigned int vpx_mse16x8_vsx(const uint8_t* src_ptr, +- int src_stride, +- const uint8_t* ref_ptr, +- int ref_stride, +- unsigned int* sse); +-#define vpx_mse16x8 vpx_mse16x8_vsx +- +-unsigned int vpx_mse8x16_c(const uint8_t* src_ptr, +- int src_stride, +- const uint8_t* ref_ptr, +- int ref_stride, +- unsigned int* sse); +-unsigned int vpx_mse8x16_vsx(const uint8_t* src_ptr, +- int src_stride, +- const uint8_t* ref_ptr, +- int ref_stride, +- unsigned int* sse); +-#define vpx_mse8x16 vpx_mse8x16_vsx +- +-unsigned int vpx_mse8x8_c(const uint8_t* src_ptr, +- int src_stride, +- const uint8_t* ref_ptr, +- int ref_stride, +- unsigned int* sse); +-unsigned int vpx_mse8x8_vsx(const uint8_t* src_ptr, +- int src_stride, +- const uint8_t* ref_ptr, +- int ref_stride, +- unsigned int* sse); +-#define vpx_mse8x8 vpx_mse8x8_vsx +- +-void vpx_plane_add_noise_c(uint8_t* start, +- const int8_t* noise, +- int blackclamp, +- int whiteclamp, +- int width, +- int height, +- int pitch); +-#define vpx_plane_add_noise vpx_plane_add_noise_c +- +-void vpx_post_proc_down_and_across_mb_row_c(unsigned char* src, +- unsigned char* dst, +- int src_pitch, +- int dst_pitch, +- int cols, +- unsigned char* flimits, +- int size); +-void vpx_post_proc_down_and_across_mb_row_vsx(unsigned char* src, +- unsigned char* dst, +- int src_pitch, +- int dst_pitch, +- int cols, +- unsigned char* flimits, +- int size); +-#define vpx_post_proc_down_and_across_mb_row \ +- vpx_post_proc_down_and_across_mb_row_vsx +- +-void vpx_quantize_b_c(const tran_low_t* coeff_ptr, +- intptr_t n_coeffs, +- const struct macroblock_plane* const mb_plane, +- tran_low_t* qcoeff_ptr, +- tran_low_t* dqcoeff_ptr, +- const int16_t* dequant_ptr, +- uint16_t* eob_ptr, +- const struct ScanOrder* const scan_order); +-void vpx_quantize_b_vsx(const tran_low_t* coeff_ptr, +- intptr_t n_coeffs, +- const struct macroblock_plane* const mb_plane, +- tran_low_t* qcoeff_ptr, +- tran_low_t* dqcoeff_ptr, +- const int16_t* dequant_ptr, +- uint16_t* eob_ptr, +- const struct ScanOrder* const scan_order); +-#define vpx_quantize_b vpx_quantize_b_vsx +- +-void vpx_quantize_b_32x32_c(const tran_low_t* coeff_ptr, +- const struct macroblock_plane* const mb_plane, +- tran_low_t* qcoeff_ptr, +- tran_low_t* dqcoeff_ptr, +- const int16_t* dequant_ptr, +- uint16_t* eob_ptr, +- const struct ScanOrder* const scan_order); +-void vpx_quantize_b_32x32_vsx(const tran_low_t* coeff_ptr, +- const struct macroblock_plane* const mb_plane, +- tran_low_t* qcoeff_ptr, +- tran_low_t* dqcoeff_ptr, +- const int16_t* dequant_ptr, +- uint16_t* eob_ptr, +- const struct ScanOrder* const scan_order); +-#define vpx_quantize_b_32x32 vpx_quantize_b_32x32_vsx +- +-unsigned int vpx_sad16x16_c(const uint8_t* src_ptr, +- int src_stride, +- const uint8_t* ref_ptr, +- int ref_stride); +-unsigned int vpx_sad16x16_vsx(const uint8_t* src_ptr, +- int src_stride, +- const uint8_t* ref_ptr, +- int ref_stride); +-#define vpx_sad16x16 vpx_sad16x16_vsx +- +-unsigned int vpx_sad16x16_avg_c(const uint8_t* src_ptr, +- int src_stride, +- const uint8_t* ref_ptr, +- int ref_stride, +- const uint8_t* second_pred); +-unsigned int vpx_sad16x16_avg_vsx(const uint8_t* src_ptr, +- int src_stride, +- const uint8_t* ref_ptr, +- int ref_stride, +- const uint8_t* second_pred); +-#define vpx_sad16x16_avg vpx_sad16x16_avg_vsx +- +-void vpx_sad16x16x4d_c(const uint8_t* src_ptr, +- int src_stride, +- const uint8_t* const ref_array[4], +- int ref_stride, +- uint32_t sad_array[4]); +-void vpx_sad16x16x4d_vsx(const uint8_t* src_ptr, +- int src_stride, +- const uint8_t* const ref_array[4], +- int ref_stride, +- uint32_t sad_array[4]); +-#define vpx_sad16x16x4d vpx_sad16x16x4d_vsx +- +-unsigned int vpx_sad16x32_c(const uint8_t* src_ptr, +- int src_stride, +- const uint8_t* ref_ptr, +- int ref_stride); +-unsigned int vpx_sad16x32_vsx(const uint8_t* src_ptr, +- int src_stride, +- const uint8_t* ref_ptr, +- int ref_stride); +-#define vpx_sad16x32 vpx_sad16x32_vsx +- +-unsigned int vpx_sad16x32_avg_c(const uint8_t* src_ptr, +- int src_stride, +- const uint8_t* ref_ptr, +- int ref_stride, +- const uint8_t* second_pred); +-unsigned int vpx_sad16x32_avg_vsx(const uint8_t* src_ptr, +- int src_stride, +- const uint8_t* ref_ptr, +- int ref_stride, +- const uint8_t* second_pred); +-#define vpx_sad16x32_avg vpx_sad16x32_avg_vsx +- +-void vpx_sad16x32x4d_c(const uint8_t* src_ptr, +- int src_stride, +- const uint8_t* const ref_array[4], +- int ref_stride, +- uint32_t sad_array[4]); +-void vpx_sad16x32x4d_vsx(const uint8_t* src_ptr, +- int src_stride, +- const uint8_t* const ref_array[4], +- int ref_stride, +- uint32_t sad_array[4]); +-#define vpx_sad16x32x4d vpx_sad16x32x4d_vsx +- +-unsigned int vpx_sad16x8_c(const uint8_t* src_ptr, +- int src_stride, +- const uint8_t* ref_ptr, +- int ref_stride); +-unsigned int vpx_sad16x8_vsx(const uint8_t* src_ptr, +- int src_stride, +- const uint8_t* ref_ptr, +- int ref_stride); +-#define vpx_sad16x8 vpx_sad16x8_vsx +- +-unsigned int vpx_sad16x8_avg_c(const uint8_t* src_ptr, +- int src_stride, +- const uint8_t* ref_ptr, +- int ref_stride, +- const uint8_t* second_pred); +-unsigned int vpx_sad16x8_avg_vsx(const uint8_t* src_ptr, +- int src_stride, +- const uint8_t* ref_ptr, +- int ref_stride, +- const uint8_t* second_pred); +-#define vpx_sad16x8_avg vpx_sad16x8_avg_vsx +- +-void vpx_sad16x8x4d_c(const uint8_t* src_ptr, +- int src_stride, +- const uint8_t* const ref_array[4], +- int ref_stride, +- uint32_t sad_array[4]); +-void vpx_sad16x8x4d_vsx(const uint8_t* src_ptr, +- int src_stride, +- const uint8_t* const ref_array[4], +- int ref_stride, +- uint32_t sad_array[4]); +-#define vpx_sad16x8x4d vpx_sad16x8x4d_vsx +- +-unsigned int vpx_sad32x16_c(const uint8_t* src_ptr, +- int src_stride, +- const uint8_t* ref_ptr, +- int ref_stride); +-unsigned int vpx_sad32x16_vsx(const uint8_t* src_ptr, +- int src_stride, +- const uint8_t* ref_ptr, +- int ref_stride); +-#define vpx_sad32x16 vpx_sad32x16_vsx +- +-unsigned int vpx_sad32x16_avg_c(const uint8_t* src_ptr, +- int src_stride, +- const uint8_t* ref_ptr, +- int ref_stride, +- const uint8_t* second_pred); +-unsigned int vpx_sad32x16_avg_vsx(const uint8_t* src_ptr, +- int src_stride, +- const uint8_t* ref_ptr, +- int ref_stride, +- const uint8_t* second_pred); +-#define vpx_sad32x16_avg vpx_sad32x16_avg_vsx +- +-void vpx_sad32x16x4d_c(const uint8_t* src_ptr, +- int src_stride, +- const uint8_t* const ref_array[4], +- int ref_stride, +- uint32_t sad_array[4]); +-void vpx_sad32x16x4d_vsx(const uint8_t* src_ptr, +- int src_stride, +- const uint8_t* const ref_array[4], +- int ref_stride, +- uint32_t sad_array[4]); +-#define vpx_sad32x16x4d vpx_sad32x16x4d_vsx +- +-unsigned int vpx_sad32x32_c(const uint8_t* src_ptr, +- int src_stride, +- const uint8_t* ref_ptr, +- int ref_stride); +-unsigned int vpx_sad32x32_vsx(const uint8_t* src_ptr, +- int src_stride, +- const uint8_t* ref_ptr, +- int ref_stride); +-#define vpx_sad32x32 vpx_sad32x32_vsx +- +-unsigned int vpx_sad32x32_avg_c(const uint8_t* src_ptr, +- int src_stride, +- const uint8_t* ref_ptr, +- int ref_stride, +- const uint8_t* second_pred); +-unsigned int vpx_sad32x32_avg_vsx(const uint8_t* src_ptr, +- int src_stride, +- const uint8_t* ref_ptr, +- int ref_stride, +- const uint8_t* second_pred); +-#define vpx_sad32x32_avg vpx_sad32x32_avg_vsx +- +-void vpx_sad32x32x4d_c(const uint8_t* src_ptr, +- int src_stride, +- const uint8_t* const ref_array[4], +- int ref_stride, +- uint32_t sad_array[4]); +-void vpx_sad32x32x4d_vsx(const uint8_t* src_ptr, +- int src_stride, +- const uint8_t* const ref_array[4], +- int ref_stride, +- uint32_t sad_array[4]); +-#define vpx_sad32x32x4d vpx_sad32x32x4d_vsx +- +-unsigned int vpx_sad32x64_c(const uint8_t* src_ptr, +- int src_stride, +- const uint8_t* ref_ptr, +- int ref_stride); +-unsigned int vpx_sad32x64_vsx(const uint8_t* src_ptr, +- int src_stride, +- const uint8_t* ref_ptr, +- int ref_stride); +-#define vpx_sad32x64 vpx_sad32x64_vsx +- +-unsigned int vpx_sad32x64_avg_c(const uint8_t* src_ptr, +- int src_stride, +- const uint8_t* ref_ptr, +- int ref_stride, +- const uint8_t* second_pred); +-unsigned int vpx_sad32x64_avg_vsx(const uint8_t* src_ptr, +- int src_stride, +- const uint8_t* ref_ptr, +- int ref_stride, +- const uint8_t* second_pred); +-#define vpx_sad32x64_avg vpx_sad32x64_avg_vsx +- +-void vpx_sad32x64x4d_c(const uint8_t* src_ptr, +- int src_stride, +- const uint8_t* const ref_array[4], +- int ref_stride, +- uint32_t sad_array[4]); +-void vpx_sad32x64x4d_vsx(const uint8_t* src_ptr, +- int src_stride, +- const uint8_t* const ref_array[4], +- int ref_stride, +- uint32_t sad_array[4]); +-#define vpx_sad32x64x4d vpx_sad32x64x4d_vsx +- +-unsigned int vpx_sad4x4_c(const uint8_t* src_ptr, +- int src_stride, +- const uint8_t* ref_ptr, +- int ref_stride); +-#define vpx_sad4x4 vpx_sad4x4_c +- +-unsigned int vpx_sad4x4_avg_c(const uint8_t* src_ptr, +- int src_stride, +- const uint8_t* ref_ptr, +- int ref_stride, +- const uint8_t* second_pred); +-#define vpx_sad4x4_avg vpx_sad4x4_avg_c +- +-void vpx_sad4x4x4d_c(const uint8_t* src_ptr, +- int src_stride, +- const uint8_t* const ref_array[4], +- int ref_stride, +- uint32_t sad_array[4]); +-#define vpx_sad4x4x4d vpx_sad4x4x4d_c +- +-unsigned int vpx_sad4x8_c(const uint8_t* src_ptr, +- int src_stride, +- const uint8_t* ref_ptr, +- int ref_stride); +-#define vpx_sad4x8 vpx_sad4x8_c +- +-unsigned int vpx_sad4x8_avg_c(const uint8_t* src_ptr, +- int src_stride, +- const uint8_t* ref_ptr, +- int ref_stride, +- const uint8_t* second_pred); +-#define vpx_sad4x8_avg vpx_sad4x8_avg_c +- +-void vpx_sad4x8x4d_c(const uint8_t* src_ptr, +- int src_stride, +- const uint8_t* const ref_array[4], +- int ref_stride, +- uint32_t sad_array[4]); +-#define vpx_sad4x8x4d vpx_sad4x8x4d_c +- +-unsigned int vpx_sad64x32_c(const uint8_t* src_ptr, +- int src_stride, +- const uint8_t* ref_ptr, +- int ref_stride); +-unsigned int vpx_sad64x32_vsx(const uint8_t* src_ptr, +- int src_stride, +- const uint8_t* ref_ptr, +- int ref_stride); +-#define vpx_sad64x32 vpx_sad64x32_vsx +- +-unsigned int vpx_sad64x32_avg_c(const uint8_t* src_ptr, +- int src_stride, +- const uint8_t* ref_ptr, +- int ref_stride, +- const uint8_t* second_pred); +-unsigned int vpx_sad64x32_avg_vsx(const uint8_t* src_ptr, +- int src_stride, +- const uint8_t* ref_ptr, +- int ref_stride, +- const uint8_t* second_pred); +-#define vpx_sad64x32_avg vpx_sad64x32_avg_vsx +- +-void vpx_sad64x32x4d_c(const uint8_t* src_ptr, +- int src_stride, +- const uint8_t* const ref_array[4], +- int ref_stride, +- uint32_t sad_array[4]); +-void vpx_sad64x32x4d_vsx(const uint8_t* src_ptr, +- int src_stride, +- const uint8_t* const ref_array[4], +- int ref_stride, +- uint32_t sad_array[4]); +-#define vpx_sad64x32x4d vpx_sad64x32x4d_vsx +- +-unsigned int vpx_sad64x64_c(const uint8_t* src_ptr, +- int src_stride, +- const uint8_t* ref_ptr, +- int ref_stride); +-unsigned int vpx_sad64x64_vsx(const uint8_t* src_ptr, +- int src_stride, +- const uint8_t* ref_ptr, +- int ref_stride); +-#define vpx_sad64x64 vpx_sad64x64_vsx +- +-unsigned int vpx_sad64x64_avg_c(const uint8_t* src_ptr, +- int src_stride, +- const uint8_t* ref_ptr, +- int ref_stride, +- const uint8_t* second_pred); +-unsigned int vpx_sad64x64_avg_vsx(const uint8_t* src_ptr, +- int src_stride, +- const uint8_t* ref_ptr, +- int ref_stride, +- const uint8_t* second_pred); +-#define vpx_sad64x64_avg vpx_sad64x64_avg_vsx +- +-void vpx_sad64x64x4d_c(const uint8_t* src_ptr, +- int src_stride, +- const uint8_t* const ref_array[4], +- int ref_stride, +- uint32_t sad_array[4]); +-void vpx_sad64x64x4d_vsx(const uint8_t* src_ptr, +- int src_stride, +- const uint8_t* const ref_array[4], +- int ref_stride, +- uint32_t sad_array[4]); +-#define vpx_sad64x64x4d vpx_sad64x64x4d_vsx +- +-unsigned int vpx_sad8x16_c(const uint8_t* src_ptr, +- int src_stride, +- const uint8_t* ref_ptr, +- int ref_stride); +-unsigned int vpx_sad8x16_vsx(const uint8_t* src_ptr, +- int src_stride, +- const uint8_t* ref_ptr, +- int ref_stride); +-#define vpx_sad8x16 vpx_sad8x16_vsx +- +-unsigned int vpx_sad8x16_avg_c(const uint8_t* src_ptr, +- int src_stride, +- const uint8_t* ref_ptr, +- int ref_stride, +- const uint8_t* second_pred); +-#define vpx_sad8x16_avg vpx_sad8x16_avg_c +- +-void vpx_sad8x16x4d_c(const uint8_t* src_ptr, +- int src_stride, +- const uint8_t* const ref_array[4], +- int ref_stride, +- uint32_t sad_array[4]); +-#define vpx_sad8x16x4d vpx_sad8x16x4d_c +- +-unsigned int vpx_sad8x4_c(const uint8_t* src_ptr, +- int src_stride, +- const uint8_t* ref_ptr, +- int ref_stride); +-unsigned int vpx_sad8x4_vsx(const uint8_t* src_ptr, +- int src_stride, +- const uint8_t* ref_ptr, +- int ref_stride); +-#define vpx_sad8x4 vpx_sad8x4_vsx +- +-unsigned int vpx_sad8x4_avg_c(const uint8_t* src_ptr, +- int src_stride, +- const uint8_t* ref_ptr, +- int ref_stride, +- const uint8_t* second_pred); +-#define vpx_sad8x4_avg vpx_sad8x4_avg_c +- +-void vpx_sad8x4x4d_c(const uint8_t* src_ptr, +- int src_stride, +- const uint8_t* const ref_array[4], +- int ref_stride, +- uint32_t sad_array[4]); +-#define vpx_sad8x4x4d vpx_sad8x4x4d_c +- +-unsigned int vpx_sad8x8_c(const uint8_t* src_ptr, +- int src_stride, +- const uint8_t* ref_ptr, +- int ref_stride); +-unsigned int vpx_sad8x8_vsx(const uint8_t* src_ptr, +- int src_stride, +- const uint8_t* ref_ptr, +- int ref_stride); +-#define vpx_sad8x8 vpx_sad8x8_vsx +- +-unsigned int vpx_sad8x8_avg_c(const uint8_t* src_ptr, +- int src_stride, +- const uint8_t* ref_ptr, +- int ref_stride, +- const uint8_t* second_pred); +-#define vpx_sad8x8_avg vpx_sad8x8_avg_c +- +-void vpx_sad8x8x4d_c(const uint8_t* src_ptr, +- int src_stride, +- const uint8_t* const ref_array[4], +- int ref_stride, +- uint32_t sad_array[4]); +-#define vpx_sad8x8x4d vpx_sad8x8x4d_c +- +-unsigned int vpx_sad_skip_16x16_c(const uint8_t* src_ptr, +- int src_stride, +- const uint8_t* ref_ptr, +- int ref_stride); +-#define vpx_sad_skip_16x16 vpx_sad_skip_16x16_c +- +-void vpx_sad_skip_16x16x4d_c(const uint8_t* src_ptr, +- int src_stride, +- const uint8_t* const ref_array[4], +- int ref_stride, +- uint32_t sad_array[4]); +-#define vpx_sad_skip_16x16x4d vpx_sad_skip_16x16x4d_c +- +-unsigned int vpx_sad_skip_16x32_c(const uint8_t* src_ptr, +- int src_stride, +- const uint8_t* ref_ptr, +- int ref_stride); +-#define vpx_sad_skip_16x32 vpx_sad_skip_16x32_c +- +-void vpx_sad_skip_16x32x4d_c(const uint8_t* src_ptr, +- int src_stride, +- const uint8_t* const ref_array[4], +- int ref_stride, +- uint32_t sad_array[4]); +-#define vpx_sad_skip_16x32x4d vpx_sad_skip_16x32x4d_c +- +-unsigned int vpx_sad_skip_16x8_c(const uint8_t* src_ptr, +- int src_stride, +- const uint8_t* ref_ptr, +- int ref_stride); +-#define vpx_sad_skip_16x8 vpx_sad_skip_16x8_c +- +-void vpx_sad_skip_16x8x4d_c(const uint8_t* src_ptr, +- int src_stride, +- const uint8_t* const ref_array[4], +- int ref_stride, +- uint32_t sad_array[4]); +-#define vpx_sad_skip_16x8x4d vpx_sad_skip_16x8x4d_c +- +-unsigned int vpx_sad_skip_32x16_c(const uint8_t* src_ptr, +- int src_stride, +- const uint8_t* ref_ptr, +- int ref_stride); +-#define vpx_sad_skip_32x16 vpx_sad_skip_32x16_c +- +-void vpx_sad_skip_32x16x4d_c(const uint8_t* src_ptr, +- int src_stride, +- const uint8_t* const ref_array[4], +- int ref_stride, +- uint32_t sad_array[4]); +-#define vpx_sad_skip_32x16x4d vpx_sad_skip_32x16x4d_c +- +-unsigned int vpx_sad_skip_32x32_c(const uint8_t* src_ptr, +- int src_stride, +- const uint8_t* ref_ptr, +- int ref_stride); +-#define vpx_sad_skip_32x32 vpx_sad_skip_32x32_c +- +-void vpx_sad_skip_32x32x4d_c(const uint8_t* src_ptr, +- int src_stride, +- const uint8_t* const ref_array[4], +- int ref_stride, +- uint32_t sad_array[4]); +-#define vpx_sad_skip_32x32x4d vpx_sad_skip_32x32x4d_c +- +-unsigned int vpx_sad_skip_32x64_c(const uint8_t* src_ptr, +- int src_stride, +- const uint8_t* ref_ptr, +- int ref_stride); +-#define vpx_sad_skip_32x64 vpx_sad_skip_32x64_c +- +-void vpx_sad_skip_32x64x4d_c(const uint8_t* src_ptr, +- int src_stride, +- const uint8_t* const ref_array[4], +- int ref_stride, +- uint32_t sad_array[4]); +-#define vpx_sad_skip_32x64x4d vpx_sad_skip_32x64x4d_c +- +-unsigned int vpx_sad_skip_4x4_c(const uint8_t* src_ptr, +- int src_stride, +- const uint8_t* ref_ptr, +- int ref_stride); +-#define vpx_sad_skip_4x4 vpx_sad_skip_4x4_c +- +-void vpx_sad_skip_4x4x4d_c(const uint8_t* src_ptr, +- int src_stride, +- const uint8_t* const ref_array[4], +- int ref_stride, +- uint32_t sad_array[4]); +-#define vpx_sad_skip_4x4x4d vpx_sad_skip_4x4x4d_c +- +-unsigned int vpx_sad_skip_4x8_c(const uint8_t* src_ptr, +- int src_stride, +- const uint8_t* ref_ptr, +- int ref_stride); +-#define vpx_sad_skip_4x8 vpx_sad_skip_4x8_c +- +-void vpx_sad_skip_4x8x4d_c(const uint8_t* src_ptr, +- int src_stride, +- const uint8_t* const ref_array[4], +- int ref_stride, +- uint32_t sad_array[4]); +-#define vpx_sad_skip_4x8x4d vpx_sad_skip_4x8x4d_c +- +-unsigned int vpx_sad_skip_64x32_c(const uint8_t* src_ptr, +- int src_stride, +- const uint8_t* ref_ptr, +- int ref_stride); +-#define vpx_sad_skip_64x32 vpx_sad_skip_64x32_c +- +-void vpx_sad_skip_64x32x4d_c(const uint8_t* src_ptr, +- int src_stride, +- const uint8_t* const ref_array[4], +- int ref_stride, +- uint32_t sad_array[4]); +-#define vpx_sad_skip_64x32x4d vpx_sad_skip_64x32x4d_c +- +-unsigned int vpx_sad_skip_64x64_c(const uint8_t* src_ptr, +- int src_stride, +- const uint8_t* ref_ptr, +- int ref_stride); +-#define vpx_sad_skip_64x64 vpx_sad_skip_64x64_c +- +-void vpx_sad_skip_64x64x4d_c(const uint8_t* src_ptr, +- int src_stride, +- const uint8_t* const ref_array[4], +- int ref_stride, +- uint32_t sad_array[4]); +-#define vpx_sad_skip_64x64x4d vpx_sad_skip_64x64x4d_c +- +-unsigned int vpx_sad_skip_8x16_c(const uint8_t* src_ptr, +- int src_stride, +- const uint8_t* ref_ptr, +- int ref_stride); +-#define vpx_sad_skip_8x16 vpx_sad_skip_8x16_c +- +-void vpx_sad_skip_8x16x4d_c(const uint8_t* src_ptr, +- int src_stride, +- const uint8_t* const ref_array[4], +- int ref_stride, +- uint32_t sad_array[4]); +-#define vpx_sad_skip_8x16x4d vpx_sad_skip_8x16x4d_c +- +-unsigned int vpx_sad_skip_8x4_c(const uint8_t* src_ptr, +- int src_stride, +- const uint8_t* ref_ptr, +- int ref_stride); +-#define vpx_sad_skip_8x4 vpx_sad_skip_8x4_c +- +-void vpx_sad_skip_8x4x4d_c(const uint8_t* src_ptr, +- int src_stride, +- const uint8_t* const ref_array[4], +- int ref_stride, +- uint32_t sad_array[4]); +-#define vpx_sad_skip_8x4x4d vpx_sad_skip_8x4x4d_c +- +-unsigned int vpx_sad_skip_8x8_c(const uint8_t* src_ptr, +- int src_stride, +- const uint8_t* ref_ptr, +- int ref_stride); +-#define vpx_sad_skip_8x8 vpx_sad_skip_8x8_c +- +-void vpx_sad_skip_8x8x4d_c(const uint8_t* src_ptr, +- int src_stride, +- const uint8_t* const ref_array[4], +- int ref_stride, +- uint32_t sad_array[4]); +-#define vpx_sad_skip_8x8x4d vpx_sad_skip_8x8x4d_c +- +-int vpx_satd_c(const int16_t* coeff, int length); +-#define vpx_satd vpx_satd_c +- +-void vpx_scaled_2d_c(const uint8_t* src, +- ptrdiff_t src_stride, +- uint8_t* dst, +- ptrdiff_t dst_stride, +- const InterpKernel* filter, +- int x0_q4, +- int x_step_q4, +- int y0_q4, +- int y_step_q4, +- int w, +- int h); +-#define vpx_scaled_2d vpx_scaled_2d_c +- +-void vpx_scaled_avg_2d_c(const uint8_t* src, +- ptrdiff_t src_stride, +- uint8_t* dst, +- ptrdiff_t dst_stride, +- const InterpKernel* filter, +- int x0_q4, +- int x_step_q4, +- int y0_q4, +- int y_step_q4, +- int w, +- int h); +-#define vpx_scaled_avg_2d vpx_scaled_avg_2d_c +- +-void vpx_scaled_avg_horiz_c(const uint8_t* src, +- ptrdiff_t src_stride, +- uint8_t* dst, +- ptrdiff_t dst_stride, +- const InterpKernel* filter, +- int x0_q4, +- int x_step_q4, +- int y0_q4, +- int y_step_q4, +- int w, +- int h); +-#define vpx_scaled_avg_horiz vpx_scaled_avg_horiz_c +- +-void vpx_scaled_avg_vert_c(const uint8_t* src, +- ptrdiff_t src_stride, +- uint8_t* dst, +- ptrdiff_t dst_stride, +- const InterpKernel* filter, +- int x0_q4, +- int x_step_q4, +- int y0_q4, +- int y_step_q4, +- int w, +- int h); +-#define vpx_scaled_avg_vert vpx_scaled_avg_vert_c +- +-void vpx_scaled_horiz_c(const uint8_t* src, +- ptrdiff_t src_stride, +- uint8_t* dst, +- ptrdiff_t dst_stride, +- const InterpKernel* filter, +- int x0_q4, +- int x_step_q4, +- int y0_q4, +- int y_step_q4, +- int w, +- int h); +-#define vpx_scaled_horiz vpx_scaled_horiz_c +- +-void vpx_scaled_vert_c(const uint8_t* src, +- ptrdiff_t src_stride, +- uint8_t* dst, +- ptrdiff_t dst_stride, +- const InterpKernel* filter, +- int x0_q4, +- int x_step_q4, +- int y0_q4, +- int y_step_q4, +- int w, +- int h); +-#define vpx_scaled_vert vpx_scaled_vert_c +- +-int64_t vpx_sse_c(const uint8_t* src, +- int src_stride, +- const uint8_t* ref, +- int ref_stride, +- int width, +- int height); +-#define vpx_sse vpx_sse_c +- +-uint32_t vpx_sub_pixel_avg_variance16x16_c(const uint8_t* src_ptr, +- int src_stride, +- int x_offset, +- int y_offset, +- const uint8_t* ref_ptr, +- int ref_stride, +- uint32_t* sse, +- const uint8_t* second_pred); +-#define vpx_sub_pixel_avg_variance16x16 vpx_sub_pixel_avg_variance16x16_c +- +-uint32_t vpx_sub_pixel_avg_variance16x32_c(const uint8_t* src_ptr, +- int src_stride, +- int x_offset, +- int y_offset, +- const uint8_t* ref_ptr, +- int ref_stride, +- uint32_t* sse, +- const uint8_t* second_pred); +-#define vpx_sub_pixel_avg_variance16x32 vpx_sub_pixel_avg_variance16x32_c +- +-uint32_t vpx_sub_pixel_avg_variance16x8_c(const uint8_t* src_ptr, +- int src_stride, +- int x_offset, +- int y_offset, +- const uint8_t* ref_ptr, +- int ref_stride, +- uint32_t* sse, +- const uint8_t* second_pred); +-#define vpx_sub_pixel_avg_variance16x8 vpx_sub_pixel_avg_variance16x8_c +- +-uint32_t vpx_sub_pixel_avg_variance32x16_c(const uint8_t* src_ptr, +- int src_stride, +- int x_offset, +- int y_offset, +- const uint8_t* ref_ptr, +- int ref_stride, +- uint32_t* sse, +- const uint8_t* second_pred); +-#define vpx_sub_pixel_avg_variance32x16 vpx_sub_pixel_avg_variance32x16_c +- +-uint32_t vpx_sub_pixel_avg_variance32x32_c(const uint8_t* src_ptr, +- int src_stride, +- int x_offset, +- int y_offset, +- const uint8_t* ref_ptr, +- int ref_stride, +- uint32_t* sse, +- const uint8_t* second_pred); +-#define vpx_sub_pixel_avg_variance32x32 vpx_sub_pixel_avg_variance32x32_c +- +-uint32_t vpx_sub_pixel_avg_variance32x64_c(const uint8_t* src_ptr, +- int src_stride, +- int x_offset, +- int y_offset, +- const uint8_t* ref_ptr, +- int ref_stride, +- uint32_t* sse, +- const uint8_t* second_pred); +-#define vpx_sub_pixel_avg_variance32x64 vpx_sub_pixel_avg_variance32x64_c +- +-uint32_t vpx_sub_pixel_avg_variance4x4_c(const uint8_t* src_ptr, +- int src_stride, +- int x_offset, +- int y_offset, +- const uint8_t* ref_ptr, +- int ref_stride, +- uint32_t* sse, +- const uint8_t* second_pred); +-#define vpx_sub_pixel_avg_variance4x4 vpx_sub_pixel_avg_variance4x4_c +- +-uint32_t vpx_sub_pixel_avg_variance4x8_c(const uint8_t* src_ptr, +- int src_stride, +- int x_offset, +- int y_offset, +- const uint8_t* ref_ptr, +- int ref_stride, +- uint32_t* sse, +- const uint8_t* second_pred); +-#define vpx_sub_pixel_avg_variance4x8 vpx_sub_pixel_avg_variance4x8_c +- +-uint32_t vpx_sub_pixel_avg_variance64x32_c(const uint8_t* src_ptr, +- int src_stride, +- int x_offset, +- int y_offset, +- const uint8_t* ref_ptr, +- int ref_stride, +- uint32_t* sse, +- const uint8_t* second_pred); +-#define vpx_sub_pixel_avg_variance64x32 vpx_sub_pixel_avg_variance64x32_c +- +-uint32_t vpx_sub_pixel_avg_variance64x64_c(const uint8_t* src_ptr, +- int src_stride, +- int x_offset, +- int y_offset, +- const uint8_t* ref_ptr, +- int ref_stride, +- uint32_t* sse, +- const uint8_t* second_pred); +-#define vpx_sub_pixel_avg_variance64x64 vpx_sub_pixel_avg_variance64x64_c +- +-uint32_t vpx_sub_pixel_avg_variance8x16_c(const uint8_t* src_ptr, +- int src_stride, +- int x_offset, +- int y_offset, +- const uint8_t* ref_ptr, +- int ref_stride, +- uint32_t* sse, +- const uint8_t* second_pred); +-#define vpx_sub_pixel_avg_variance8x16 vpx_sub_pixel_avg_variance8x16_c +- +-uint32_t vpx_sub_pixel_avg_variance8x4_c(const uint8_t* src_ptr, +- int src_stride, +- int x_offset, +- int y_offset, +- const uint8_t* ref_ptr, +- int ref_stride, +- uint32_t* sse, +- const uint8_t* second_pred); +-#define vpx_sub_pixel_avg_variance8x4 vpx_sub_pixel_avg_variance8x4_c +- +-uint32_t vpx_sub_pixel_avg_variance8x8_c(const uint8_t* src_ptr, +- int src_stride, +- int x_offset, +- int y_offset, +- const uint8_t* ref_ptr, +- int ref_stride, +- uint32_t* sse, +- const uint8_t* second_pred); +-#define vpx_sub_pixel_avg_variance8x8 vpx_sub_pixel_avg_variance8x8_c +- +-uint32_t vpx_sub_pixel_variance16x16_c(const uint8_t* src_ptr, +- int src_stride, +- int x_offset, +- int y_offset, +- const uint8_t* ref_ptr, +- int ref_stride, +- uint32_t* sse); +-#define vpx_sub_pixel_variance16x16 vpx_sub_pixel_variance16x16_c +- +-uint32_t vpx_sub_pixel_variance16x32_c(const uint8_t* src_ptr, +- int src_stride, +- int x_offset, +- int y_offset, +- const uint8_t* ref_ptr, +- int ref_stride, +- uint32_t* sse); +-#define vpx_sub_pixel_variance16x32 vpx_sub_pixel_variance16x32_c +- +-uint32_t vpx_sub_pixel_variance16x8_c(const uint8_t* src_ptr, +- int src_stride, +- int x_offset, +- int y_offset, +- const uint8_t* ref_ptr, +- int ref_stride, +- uint32_t* sse); +-#define vpx_sub_pixel_variance16x8 vpx_sub_pixel_variance16x8_c +- +-uint32_t vpx_sub_pixel_variance32x16_c(const uint8_t* src_ptr, +- int src_stride, +- int x_offset, +- int y_offset, +- const uint8_t* ref_ptr, +- int ref_stride, +- uint32_t* sse); +-#define vpx_sub_pixel_variance32x16 vpx_sub_pixel_variance32x16_c +- +-uint32_t vpx_sub_pixel_variance32x32_c(const uint8_t* src_ptr, +- int src_stride, +- int x_offset, +- int y_offset, +- const uint8_t* ref_ptr, +- int ref_stride, +- uint32_t* sse); +-#define vpx_sub_pixel_variance32x32 vpx_sub_pixel_variance32x32_c +- +-uint32_t vpx_sub_pixel_variance32x64_c(const uint8_t* src_ptr, +- int src_stride, +- int x_offset, +- int y_offset, +- const uint8_t* ref_ptr, +- int ref_stride, +- uint32_t* sse); +-#define vpx_sub_pixel_variance32x64 vpx_sub_pixel_variance32x64_c +- +-uint32_t vpx_sub_pixel_variance4x4_c(const uint8_t* src_ptr, +- int src_stride, +- int x_offset, +- int y_offset, +- const uint8_t* ref_ptr, +- int ref_stride, +- uint32_t* sse); +-#define vpx_sub_pixel_variance4x4 vpx_sub_pixel_variance4x4_c +- +-uint32_t vpx_sub_pixel_variance4x8_c(const uint8_t* src_ptr, +- int src_stride, +- int x_offset, +- int y_offset, +- const uint8_t* ref_ptr, +- int ref_stride, +- uint32_t* sse); +-#define vpx_sub_pixel_variance4x8 vpx_sub_pixel_variance4x8_c +- +-uint32_t vpx_sub_pixel_variance64x32_c(const uint8_t* src_ptr, +- int src_stride, +- int x_offset, +- int y_offset, +- const uint8_t* ref_ptr, +- int ref_stride, +- uint32_t* sse); +-#define vpx_sub_pixel_variance64x32 vpx_sub_pixel_variance64x32_c +- +-uint32_t vpx_sub_pixel_variance64x64_c(const uint8_t* src_ptr, +- int src_stride, +- int x_offset, +- int y_offset, +- const uint8_t* ref_ptr, +- int ref_stride, +- uint32_t* sse); +-#define vpx_sub_pixel_variance64x64 vpx_sub_pixel_variance64x64_c +- +-uint32_t vpx_sub_pixel_variance8x16_c(const uint8_t* src_ptr, +- int src_stride, +- int x_offset, +- int y_offset, +- const uint8_t* ref_ptr, +- int ref_stride, +- uint32_t* sse); +-#define vpx_sub_pixel_variance8x16 vpx_sub_pixel_variance8x16_c +- +-uint32_t vpx_sub_pixel_variance8x4_c(const uint8_t* src_ptr, +- int src_stride, +- int x_offset, +- int y_offset, +- const uint8_t* ref_ptr, +- int ref_stride, +- uint32_t* sse); +-#define vpx_sub_pixel_variance8x4 vpx_sub_pixel_variance8x4_c +- +-uint32_t vpx_sub_pixel_variance8x8_c(const uint8_t* src_ptr, +- int src_stride, +- int x_offset, +- int y_offset, +- const uint8_t* ref_ptr, +- int ref_stride, +- uint32_t* sse); +-#define vpx_sub_pixel_variance8x8 vpx_sub_pixel_variance8x8_c +- +-void vpx_subtract_block_c(int rows, +- int cols, +- int16_t* diff_ptr, +- ptrdiff_t diff_stride, +- const uint8_t* src_ptr, +- ptrdiff_t src_stride, +- const uint8_t* pred_ptr, +- ptrdiff_t pred_stride); +-void vpx_subtract_block_vsx(int rows, +- int cols, +- int16_t* diff_ptr, +- ptrdiff_t diff_stride, +- const uint8_t* src_ptr, +- ptrdiff_t src_stride, +- const uint8_t* pred_ptr, +- ptrdiff_t pred_stride); +-#define vpx_subtract_block vpx_subtract_block_vsx +- +-uint64_t vpx_sum_squares_2d_i16_c(const int16_t* src, int stride, int size); +-#define vpx_sum_squares_2d_i16 vpx_sum_squares_2d_i16_c +- +-void vpx_tm_predictor_16x16_c(uint8_t* dst, +- ptrdiff_t stride, +- const uint8_t* above, +- const uint8_t* left); +-void vpx_tm_predictor_16x16_vsx(uint8_t* dst, +- ptrdiff_t stride, +- const uint8_t* above, +- const uint8_t* left); +-#define vpx_tm_predictor_16x16 vpx_tm_predictor_16x16_vsx +- +-void vpx_tm_predictor_32x32_c(uint8_t* dst, +- ptrdiff_t stride, +- const uint8_t* above, +- const uint8_t* left); +-void vpx_tm_predictor_32x32_vsx(uint8_t* dst, +- ptrdiff_t stride, +- const uint8_t* above, +- const uint8_t* left); +-#define vpx_tm_predictor_32x32 vpx_tm_predictor_32x32_vsx +- +-void vpx_tm_predictor_4x4_c(uint8_t* dst, +- ptrdiff_t stride, +- const uint8_t* above, +- const uint8_t* left); +-#define vpx_tm_predictor_4x4 vpx_tm_predictor_4x4_c +- +-void vpx_tm_predictor_8x8_c(uint8_t* dst, +- ptrdiff_t stride, +- const uint8_t* above, +- const uint8_t* left); +-#define vpx_tm_predictor_8x8 vpx_tm_predictor_8x8_c +- +-void vpx_v_predictor_16x16_c(uint8_t* dst, +- ptrdiff_t stride, +- const uint8_t* above, +- const uint8_t* left); +-void vpx_v_predictor_16x16_vsx(uint8_t* dst, +- ptrdiff_t stride, +- const uint8_t* above, +- const uint8_t* left); +-#define vpx_v_predictor_16x16 vpx_v_predictor_16x16_vsx +- +-void vpx_v_predictor_32x32_c(uint8_t* dst, +- ptrdiff_t stride, +- const uint8_t* above, +- const uint8_t* left); +-void vpx_v_predictor_32x32_vsx(uint8_t* dst, +- ptrdiff_t stride, +- const uint8_t* above, +- const uint8_t* left); +-#define vpx_v_predictor_32x32 vpx_v_predictor_32x32_vsx +- +-void vpx_v_predictor_4x4_c(uint8_t* dst, +- ptrdiff_t stride, +- const uint8_t* above, +- const uint8_t* left); +-#define vpx_v_predictor_4x4 vpx_v_predictor_4x4_c +- +-void vpx_v_predictor_8x8_c(uint8_t* dst, +- ptrdiff_t stride, +- const uint8_t* above, +- const uint8_t* left); +-#define vpx_v_predictor_8x8 vpx_v_predictor_8x8_c +- +-unsigned int vpx_variance16x16_c(const uint8_t* src_ptr, +- int src_stride, +- const uint8_t* ref_ptr, +- int ref_stride, +- unsigned int* sse); +-unsigned int vpx_variance16x16_vsx(const uint8_t* src_ptr, +- int src_stride, +- const uint8_t* ref_ptr, +- int ref_stride, +- unsigned int* sse); +-#define vpx_variance16x16 vpx_variance16x16_vsx +- +-unsigned int vpx_variance16x32_c(const uint8_t* src_ptr, +- int src_stride, +- const uint8_t* ref_ptr, +- int ref_stride, +- unsigned int* sse); +-unsigned int vpx_variance16x32_vsx(const uint8_t* src_ptr, +- int src_stride, +- const uint8_t* ref_ptr, +- int ref_stride, +- unsigned int* sse); +-#define vpx_variance16x32 vpx_variance16x32_vsx +- +-unsigned int vpx_variance16x8_c(const uint8_t* src_ptr, +- int src_stride, +- const uint8_t* ref_ptr, +- int ref_stride, +- unsigned int* sse); +-unsigned int vpx_variance16x8_vsx(const uint8_t* src_ptr, +- int src_stride, +- const uint8_t* ref_ptr, +- int ref_stride, +- unsigned int* sse); +-#define vpx_variance16x8 vpx_variance16x8_vsx +- +-unsigned int vpx_variance32x16_c(const uint8_t* src_ptr, +- int src_stride, +- const uint8_t* ref_ptr, +- int ref_stride, +- unsigned int* sse); +-unsigned int vpx_variance32x16_vsx(const uint8_t* src_ptr, +- int src_stride, +- const uint8_t* ref_ptr, +- int ref_stride, +- unsigned int* sse); +-#define vpx_variance32x16 vpx_variance32x16_vsx +- +-unsigned int vpx_variance32x32_c(const uint8_t* src_ptr, +- int src_stride, +- const uint8_t* ref_ptr, +- int ref_stride, +- unsigned int* sse); +-unsigned int vpx_variance32x32_vsx(const uint8_t* src_ptr, +- int src_stride, +- const uint8_t* ref_ptr, +- int ref_stride, +- unsigned int* sse); +-#define vpx_variance32x32 vpx_variance32x32_vsx +- +-unsigned int vpx_variance32x64_c(const uint8_t* src_ptr, +- int src_stride, +- const uint8_t* ref_ptr, +- int ref_stride, +- unsigned int* sse); +-unsigned int vpx_variance32x64_vsx(const uint8_t* src_ptr, +- int src_stride, +- const uint8_t* ref_ptr, +- int ref_stride, +- unsigned int* sse); +-#define vpx_variance32x64 vpx_variance32x64_vsx +- +-unsigned int vpx_variance4x4_c(const uint8_t* src_ptr, +- int src_stride, +- const uint8_t* ref_ptr, +- int ref_stride, +- unsigned int* sse); +-unsigned int vpx_variance4x4_vsx(const uint8_t* src_ptr, +- int src_stride, +- const uint8_t* ref_ptr, +- int ref_stride, +- unsigned int* sse); +-#define vpx_variance4x4 vpx_variance4x4_vsx +- +-unsigned int vpx_variance4x8_c(const uint8_t* src_ptr, +- int src_stride, +- const uint8_t* ref_ptr, +- int ref_stride, +- unsigned int* sse); +-unsigned int vpx_variance4x8_vsx(const uint8_t* src_ptr, +- int src_stride, +- const uint8_t* ref_ptr, +- int ref_stride, +- unsigned int* sse); +-#define vpx_variance4x8 vpx_variance4x8_vsx +- +-unsigned int vpx_variance64x32_c(const uint8_t* src_ptr, +- int src_stride, +- const uint8_t* ref_ptr, +- int ref_stride, +- unsigned int* sse); +-unsigned int vpx_variance64x32_vsx(const uint8_t* src_ptr, +- int src_stride, +- const uint8_t* ref_ptr, +- int ref_stride, +- unsigned int* sse); +-#define vpx_variance64x32 vpx_variance64x32_vsx +- +-unsigned int vpx_variance64x64_c(const uint8_t* src_ptr, +- int src_stride, +- const uint8_t* ref_ptr, +- int ref_stride, +- unsigned int* sse); +-unsigned int vpx_variance64x64_vsx(const uint8_t* src_ptr, +- int src_stride, +- const uint8_t* ref_ptr, +- int ref_stride, +- unsigned int* sse); +-#define vpx_variance64x64 vpx_variance64x64_vsx +- +-unsigned int vpx_variance8x16_c(const uint8_t* src_ptr, +- int src_stride, +- const uint8_t* ref_ptr, +- int ref_stride, +- unsigned int* sse); +-unsigned int vpx_variance8x16_vsx(const uint8_t* src_ptr, +- int src_stride, +- const uint8_t* ref_ptr, +- int ref_stride, +- unsigned int* sse); +-#define vpx_variance8x16 vpx_variance8x16_vsx +- +-unsigned int vpx_variance8x4_c(const uint8_t* src_ptr, +- int src_stride, +- const uint8_t* ref_ptr, +- int ref_stride, +- unsigned int* sse); +-unsigned int vpx_variance8x4_vsx(const uint8_t* src_ptr, +- int src_stride, +- const uint8_t* ref_ptr, +- int ref_stride, +- unsigned int* sse); +-#define vpx_variance8x4 vpx_variance8x4_vsx +- +-unsigned int vpx_variance8x8_c(const uint8_t* src_ptr, +- int src_stride, +- const uint8_t* ref_ptr, +- int ref_stride, +- unsigned int* sse); +-unsigned int vpx_variance8x8_vsx(const uint8_t* src_ptr, +- int src_stride, +- const uint8_t* ref_ptr, +- int ref_stride, +- unsigned int* sse); +-#define vpx_variance8x8 vpx_variance8x8_vsx +- +-void vpx_ve_predictor_4x4_c(uint8_t* dst, +- ptrdiff_t stride, +- const uint8_t* above, +- const uint8_t* left); +-#define vpx_ve_predictor_4x4 vpx_ve_predictor_4x4_c +- +-int vpx_vector_var_c(const int16_t* ref, const int16_t* src, const int bwl); +-#define vpx_vector_var vpx_vector_var_c +- +-void vpx_dsp_rtcd(void); +- +-#include "vpx_config.h" +- +-#ifdef RTCD_C +-#include "vpx_ports/ppc.h" +-static void setup_rtcd_internal(void) { +- int flags = ppc_simd_caps(); +- (void)flags; +-} +-#endif +- +-#ifdef __cplusplus +-} // extern "C" +-#endif +- +-#endif +Index: chromium-122.0.6261.128/third_party/libvpx/source/config/linux/ppc64/vpx_scale_rtcd.h +=================================================================== +--- chromium-122.0.6261.128.orig/third_party/libvpx/source/config/linux/ppc64/vpx_scale_rtcd.h ++++ /dev/null +@@ -1,100 +0,0 @@ +-// This file is generated. Do not edit. +-#ifndef VPX_SCALE_RTCD_H_ +-#define VPX_SCALE_RTCD_H_ +- +-#ifdef RTCD_C +-#define RTCD_EXTERN +-#else +-#define RTCD_EXTERN extern +-#endif +- +-struct yv12_buffer_config; +- +-#ifdef __cplusplus +-extern "C" { +-#endif +- +-void vp8_horizontal_line_2_1_scale_c(const unsigned char* source, +- unsigned int source_width, +- unsigned char* dest, +- unsigned int dest_width); +-#define vp8_horizontal_line_2_1_scale vp8_horizontal_line_2_1_scale_c +- +-void vp8_horizontal_line_5_3_scale_c(const unsigned char* source, +- unsigned int source_width, +- unsigned char* dest, +- unsigned int dest_width); +-#define vp8_horizontal_line_5_3_scale vp8_horizontal_line_5_3_scale_c +- +-void vp8_horizontal_line_5_4_scale_c(const unsigned char* source, +- unsigned int source_width, +- unsigned char* dest, +- unsigned int dest_width); +-#define vp8_horizontal_line_5_4_scale vp8_horizontal_line_5_4_scale_c +- +-void vp8_vertical_band_2_1_scale_c(unsigned char* source, +- unsigned int src_pitch, +- unsigned char* dest, +- unsigned int dest_pitch, +- unsigned int dest_width); +-#define vp8_vertical_band_2_1_scale vp8_vertical_band_2_1_scale_c +- +-void vp8_vertical_band_2_1_scale_i_c(unsigned char* source, +- unsigned int src_pitch, +- unsigned char* dest, +- unsigned int dest_pitch, +- unsigned int dest_width); +-#define vp8_vertical_band_2_1_scale_i vp8_vertical_band_2_1_scale_i_c +- +-void vp8_vertical_band_5_3_scale_c(unsigned char* source, +- unsigned int src_pitch, +- unsigned char* dest, +- unsigned int dest_pitch, +- unsigned int dest_width); +-#define vp8_vertical_band_5_3_scale vp8_vertical_band_5_3_scale_c +- +-void vp8_vertical_band_5_4_scale_c(unsigned char* source, +- unsigned int src_pitch, +- unsigned char* dest, +- unsigned int dest_pitch, +- unsigned int dest_width); +-#define vp8_vertical_band_5_4_scale vp8_vertical_band_5_4_scale_c +- +-void vp8_yv12_copy_frame_c(const struct yv12_buffer_config* src_ybc, +- struct yv12_buffer_config* dst_ybc); +-#define vp8_yv12_copy_frame vp8_yv12_copy_frame_c +- +-void vp8_yv12_extend_frame_borders_c(struct yv12_buffer_config* ybf); +-#define vp8_yv12_extend_frame_borders vp8_yv12_extend_frame_borders_c +- +-void vpx_extend_frame_borders_c(struct yv12_buffer_config* ybf); +-#define vpx_extend_frame_borders vpx_extend_frame_borders_c +- +-void vpx_extend_frame_inner_borders_c(struct yv12_buffer_config* ybf); +-#define vpx_extend_frame_inner_borders vpx_extend_frame_inner_borders_c +- +-void vpx_yv12_copy_frame_c(const struct yv12_buffer_config* src_ybc, +- struct yv12_buffer_config* dst_ybc); +-#define vpx_yv12_copy_frame vpx_yv12_copy_frame_c +- +-void vpx_yv12_copy_y_c(const struct yv12_buffer_config* src_ybc, +- struct yv12_buffer_config* dst_ybc); +-#define vpx_yv12_copy_y vpx_yv12_copy_y_c +- +-void vpx_scale_rtcd(void); +- +-#include "vpx_config.h" +- +-#ifdef RTCD_C +-#include "vpx_ports/ppc.h" +-static void setup_rtcd_internal(void) { +- int flags = ppc_simd_caps(); +- (void)flags; +-} +-#endif +- +-#ifdef __cplusplus +-} // extern "C" +-#endif +- +-#endif +Index: chromium-122.0.6261.128/third_party/boringssl/BUILD.generated.gni +=================================================================== +--- chromium-122.0.6261.128.orig/third_party/boringssl/BUILD.generated.gni ++++ chromium-122.0.6261.128/third_party/boringssl/BUILD.generated.gni +@@ -94,6 +94,7 @@ crypto_sources = [ + "src/crypto/cpu_arm_linux.c", + "src/crypto/cpu_arm_linux.h", + "src/crypto/cpu_intel.c", ++ "src/crypto/cpu_ppc64le.c", + "src/crypto/crypto.c", + "src/crypto/curve25519/curve25519.c", + "src/crypto/curve25519/curve25519_64_adx.c", +@@ -401,6 +402,9 @@ crypto_sources_asm = [ + "linux-arm/crypto/fipsmodule/sha512-armv4-linux.S", + "linux-arm/crypto/fipsmodule/vpaes-armv7-linux.S", + "linux-arm/crypto/test/trampoline-armv4-linux.S", ++ "linux-ppc64le/crypto/fipsmodule/aesp8-ppc-linux.S", ++ "linux-ppc64le/crypto/fipsmodule/ghashp8-ppc-linux.S", ++ "linux-ppc64le/crypto/test/trampoline-ppc-linux.S", + "linux-x86/crypto/chacha/chacha-x86-linux.S", + "linux-x86/crypto/fipsmodule/aesni-x86-linux.S", + "linux-x86/crypto/fipsmodule/bn-586-linux.S", +Index: chromium-122.0.6261.128/third_party/boringssl/linux-ppc64le/crypto/fipsmodule/aesp8-ppc-linux.S +=================================================================== +--- /dev/null ++++ chromium-122.0.6261.128/third_party/boringssl/linux-ppc64le/crypto/fipsmodule/aesp8-ppc-linux.S +@@ -0,0 +1,3673 @@ ++// This file is generated from a similarly-named Perl script in the BoringSSL ++// source tree. Do not edit by hand. ++ ++#if defined(__has_feature) ++#if __has_feature(memory_sanitizer) && !defined(OPENSSL_NO_ASM) ++#define OPENSSL_NO_ASM ++#endif ++#endif ++ ++#if !defined(OPENSSL_NO_ASM) && defined(__powerpc64__) && defined(__ELF__) ++.machine "any" ++ ++.abiversion 2 ++.text ++ ++.align 7 ++.Lrcon: ++.byte 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01 ++.byte 0x00,0x00,0x00,0x1b,0x00,0x00,0x00,0x1b,0x00,0x00,0x00,0x1b,0x00,0x00,0x00,0x1b ++.byte 0x0c,0x0f,0x0e,0x0d,0x0c,0x0f,0x0e,0x0d,0x0c,0x0f,0x0e,0x0d,0x0c,0x0f,0x0e,0x0d ++.byte 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 ++.Lconsts: ++ mflr 0 ++ bcl 20,31,$+4 ++ mflr 6 ++ addi 6,6,-0x48 ++ mtlr 0 ++ blr ++.long 0 ++.byte 0,12,0x14,0,0,0,0,0 ++.byte 65,69,83,32,102,111,114,32,80,111,119,101,114,73,83,65,32,50,46,48,55,44,32,67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103,62,0 ++.align 2 ++ ++.globl aes_hw_set_encrypt_key ++.type aes_hw_set_encrypt_key,@function ++.align 5 ++aes_hw_set_encrypt_key: ++.localentry aes_hw_set_encrypt_key,0 ++ ++.Lset_encrypt_key: ++ mflr 11 ++ std 11,16(1) ++ ++ li 6,-1 ++ cmpldi 3,0 ++ beq- .Lenc_key_abort ++ cmpldi 5,0 ++ beq- .Lenc_key_abort ++ li 6,-2 ++ cmpwi 4,128 ++ blt- .Lenc_key_abort ++ cmpwi 4,256 ++ bgt- .Lenc_key_abort ++ andi. 0,4,0x3f ++ bne- .Lenc_key_abort ++ ++ lis 0,0xfff0 ++ li 12,-1 ++ or 0,0,0 ++ ++ bl .Lconsts ++ mtlr 11 ++ ++ neg 9,3 ++ lvx 1,0,3 ++ addi 3,3,15 ++ lvsr 3,0,9 ++ li 8,0x20 ++ cmpwi 4,192 ++ lvx 2,0,3 ++ vspltisb 5,0x0f ++ lvx 4,0,6 ++ vxor 3,3,5 ++ lvx 5,8,6 ++ addi 6,6,0x10 ++ vperm 1,1,2,3 ++ li 7,8 ++ vxor 0,0,0 ++ mtctr 7 ++ ++ lvsl 8,0,5 ++ vspltisb 9,-1 ++ lvx 10,0,5 ++ vperm 9,9,0,8 ++ ++ blt .Loop128 ++ addi 3,3,8 ++ beq .L192 ++ addi 3,3,8 ++ b .L256 ++ ++.align 4 ++.Loop128: ++ vperm 3,1,1,5 ++ vsldoi 6,0,1,12 ++ vperm 11,1,1,8 ++ vsel 7,10,11,9 ++ vor 10,11,11 ++ .long 0x10632509 ++ stvx 7,0,5 ++ addi 5,5,16 ++ ++ vxor 1,1,6 ++ vsldoi 6,0,6,12 ++ vxor 1,1,6 ++ vsldoi 6,0,6,12 ++ vxor 1,1,6 ++ vadduwm 4,4,4 ++ vxor 1,1,3 ++ bdnz .Loop128 ++ ++ lvx 4,0,6 ++ ++ vperm 3,1,1,5 ++ vsldoi 6,0,1,12 ++ vperm 11,1,1,8 ++ vsel 7,10,11,9 ++ vor 10,11,11 ++ .long 0x10632509 ++ stvx 7,0,5 ++ addi 5,5,16 ++ ++ vxor 1,1,6 ++ vsldoi 6,0,6,12 ++ vxor 1,1,6 ++ vsldoi 6,0,6,12 ++ vxor 1,1,6 ++ vadduwm 4,4,4 ++ vxor 1,1,3 ++ ++ vperm 3,1,1,5 ++ vsldoi 6,0,1,12 ++ vperm 11,1,1,8 ++ vsel 7,10,11,9 ++ vor 10,11,11 ++ .long 0x10632509 ++ stvx 7,0,5 ++ addi 5,5,16 ++ ++ vxor 1,1,6 ++ vsldoi 6,0,6,12 ++ vxor 1,1,6 ++ vsldoi 6,0,6,12 ++ vxor 1,1,6 ++ vxor 1,1,3 ++ vperm 11,1,1,8 ++ vsel 7,10,11,9 ++ vor 10,11,11 ++ stvx 7,0,5 ++ ++ addi 3,5,15 ++ addi 5,5,0x50 ++ ++ li 8,10 ++ b .Ldone ++ ++.align 4 ++.L192: ++ lvx 6,0,3 ++ li 7,4 ++ vperm 11,1,1,8 ++ vsel 7,10,11,9 ++ vor 10,11,11 ++ stvx 7,0,5 ++ addi 5,5,16 ++ vperm 2,2,6,3 ++ vspltisb 3,8 ++ mtctr 7 ++ vsububm 5,5,3 ++ ++.Loop192: ++ vperm 3,2,2,5 ++ vsldoi 6,0,1,12 ++ .long 0x10632509 ++ ++ vxor 1,1,6 ++ vsldoi 6,0,6,12 ++ vxor 1,1,6 ++ vsldoi 6,0,6,12 ++ vxor 1,1,6 ++ ++ vsldoi 7,0,2,8 ++ vspltw 6,1,3 ++ vxor 6,6,2 ++ vsldoi 2,0,2,12 ++ vadduwm 4,4,4 ++ vxor 2,2,6 ++ vxor 1,1,3 ++ vxor 2,2,3 ++ vsldoi 7,7,1,8 ++ ++ vperm 3,2,2,5 ++ vsldoi 6,0,1,12 ++ vperm 11,7,7,8 ++ vsel 7,10,11,9 ++ vor 10,11,11 ++ .long 0x10632509 ++ stvx 7,0,5 ++ addi 5,5,16 ++ ++ vsldoi 7,1,2,8 ++ vxor 1,1,6 ++ vsldoi 6,0,6,12 ++ vperm 11,7,7,8 ++ vsel 7,10,11,9 ++ vor 10,11,11 ++ vxor 1,1,6 ++ vsldoi 6,0,6,12 ++ vxor 1,1,6 ++ stvx 7,0,5 ++ addi 5,5,16 ++ ++ vspltw 6,1,3 ++ vxor 6,6,2 ++ vsldoi 2,0,2,12 ++ vadduwm 4,4,4 ++ vxor 2,2,6 ++ vxor 1,1,3 ++ vxor 2,2,3 ++ vperm 11,1,1,8 ++ vsel 7,10,11,9 ++ vor 10,11,11 ++ stvx 7,0,5 ++ addi 3,5,15 ++ addi 5,5,16 ++ bdnz .Loop192 ++ ++ li 8,12 ++ addi 5,5,0x20 ++ b .Ldone ++ ++.align 4 ++.L256: ++ lvx 6,0,3 ++ li 7,7 ++ li 8,14 ++ vperm 11,1,1,8 ++ vsel 7,10,11,9 ++ vor 10,11,11 ++ stvx 7,0,5 ++ addi 5,5,16 ++ vperm 2,2,6,3 ++ mtctr 7 ++ ++.Loop256: ++ vperm 3,2,2,5 ++ vsldoi 6,0,1,12 ++ vperm 11,2,2,8 ++ vsel 7,10,11,9 ++ vor 10,11,11 ++ .long 0x10632509 ++ stvx 7,0,5 ++ addi 5,5,16 ++ ++ vxor 1,1,6 ++ vsldoi 6,0,6,12 ++ vxor 1,1,6 ++ vsldoi 6,0,6,12 ++ vxor 1,1,6 ++ vadduwm 4,4,4 ++ vxor 1,1,3 ++ vperm 11,1,1,8 ++ vsel 7,10,11,9 ++ vor 10,11,11 ++ stvx 7,0,5 ++ addi 3,5,15 ++ addi 5,5,16 ++ bdz .Ldone ++ ++ vspltw 3,1,3 ++ vsldoi 6,0,2,12 ++ .long 0x106305C8 ++ ++ vxor 2,2,6 ++ vsldoi 6,0,6,12 ++ vxor 2,2,6 ++ vsldoi 6,0,6,12 ++ vxor 2,2,6 ++ ++ vxor 2,2,3 ++ b .Loop256 ++ ++.align 4 ++.Ldone: ++ lvx 2,0,3 ++ vsel 2,10,2,9 ++ stvx 2,0,3 ++ li 6,0 ++ or 12,12,12 ++ stw 8,0(5) ++ ++.Lenc_key_abort: ++ mr 3,6 ++ blr ++.long 0 ++.byte 0,12,0x14,1,0,0,3,0 ++.long 0 ++.size aes_hw_set_encrypt_key,.-aes_hw_set_encrypt_key ++ ++.globl aes_hw_set_decrypt_key ++.type aes_hw_set_decrypt_key,@function ++.align 5 ++aes_hw_set_decrypt_key: ++.localentry aes_hw_set_decrypt_key,0 ++ ++ stdu 1,-64(1) ++ mflr 10 ++ std 10,80(1) ++ bl .Lset_encrypt_key ++ mtlr 10 ++ ++ cmpwi 3,0 ++ bne- .Ldec_key_abort ++ ++ slwi 7,8,4 ++ subi 3,5,240 ++ srwi 8,8,1 ++ add 5,3,7 ++ mtctr 8 ++ ++.Ldeckey: ++ lwz 0, 0(3) ++ lwz 6, 4(3) ++ lwz 7, 8(3) ++ lwz 8, 12(3) ++ addi 3,3,16 ++ lwz 9, 0(5) ++ lwz 10,4(5) ++ lwz 11,8(5) ++ lwz 12,12(5) ++ stw 0, 0(5) ++ stw 6, 4(5) ++ stw 7, 8(5) ++ stw 8, 12(5) ++ subi 5,5,16 ++ stw 9, -16(3) ++ stw 10,-12(3) ++ stw 11,-8(3) ++ stw 12,-4(3) ++ bdnz .Ldeckey ++ ++ xor 3,3,3 ++.Ldec_key_abort: ++ addi 1,1,64 ++ blr ++.long 0 ++.byte 0,12,4,1,0x80,0,3,0 ++.long 0 ++.size aes_hw_set_decrypt_key,.-aes_hw_set_decrypt_key ++.globl aes_hw_encrypt ++.type aes_hw_encrypt,@function ++.align 5 ++aes_hw_encrypt: ++.localentry aes_hw_encrypt,0 ++ ++ lwz 6,240(5) ++ lis 0,0xfc00 ++ li 12,-1 ++ li 7,15 ++ or 0,0,0 ++ ++ lvx 0,0,3 ++ neg 11,4 ++ lvx 1,7,3 ++ lvsl 2,0,3 ++ vspltisb 4,0x0f ++ lvsr 3,0,11 ++ vxor 2,2,4 ++ li 7,16 ++ vperm 0,0,1,2 ++ lvx 1,0,5 ++ lvsr 5,0,5 ++ srwi 6,6,1 ++ lvx 2,7,5 ++ addi 7,7,16 ++ subi 6,6,1 ++ vperm 1,2,1,5 ++ ++ vxor 0,0,1 ++ lvx 1,7,5 ++ addi 7,7,16 ++ mtctr 6 ++ ++.Loop_enc: ++ vperm 2,1,2,5 ++ .long 0x10001508 ++ lvx 2,7,5 ++ addi 7,7,16 ++ vperm 1,2,1,5 ++ .long 0x10000D08 ++ lvx 1,7,5 ++ addi 7,7,16 ++ bdnz .Loop_enc ++ ++ vperm 2,1,2,5 ++ .long 0x10001508 ++ lvx 2,7,5 ++ vperm 1,2,1,5 ++ .long 0x10000D09 ++ ++ vspltisb 2,-1 ++ vxor 1,1,1 ++ li 7,15 ++ vperm 2,2,1,3 ++ vxor 3,3,4 ++ lvx 1,0,4 ++ vperm 0,0,0,3 ++ vsel 1,1,0,2 ++ lvx 4,7,4 ++ stvx 1,0,4 ++ vsel 0,0,4,2 ++ stvx 0,7,4 ++ ++ or 12,12,12 ++ blr ++.long 0 ++.byte 0,12,0x14,0,0,0,3,0 ++.long 0 ++.size aes_hw_encrypt,.-aes_hw_encrypt ++.globl aes_hw_decrypt ++.type aes_hw_decrypt,@function ++.align 5 ++aes_hw_decrypt: ++.localentry aes_hw_decrypt,0 ++ ++ lwz 6,240(5) ++ lis 0,0xfc00 ++ li 12,-1 ++ li 7,15 ++ or 0,0,0 ++ ++ lvx 0,0,3 ++ neg 11,4 ++ lvx 1,7,3 ++ lvsl 2,0,3 ++ vspltisb 4,0x0f ++ lvsr 3,0,11 ++ vxor 2,2,4 ++ li 7,16 ++ vperm 0,0,1,2 ++ lvx 1,0,5 ++ lvsr 5,0,5 ++ srwi 6,6,1 ++ lvx 2,7,5 ++ addi 7,7,16 ++ subi 6,6,1 ++ vperm 1,2,1,5 ++ ++ vxor 0,0,1 ++ lvx 1,7,5 ++ addi 7,7,16 ++ mtctr 6 ++ ++.Loop_dec: ++ vperm 2,1,2,5 ++ .long 0x10001548 ++ lvx 2,7,5 ++ addi 7,7,16 ++ vperm 1,2,1,5 ++ .long 0x10000D48 ++ lvx 1,7,5 ++ addi 7,7,16 ++ bdnz .Loop_dec ++ ++ vperm 2,1,2,5 ++ .long 0x10001548 ++ lvx 2,7,5 ++ vperm 1,2,1,5 ++ .long 0x10000D49 ++ ++ vspltisb 2,-1 ++ vxor 1,1,1 ++ li 7,15 ++ vperm 2,2,1,3 ++ vxor 3,3,4 ++ lvx 1,0,4 ++ vperm 0,0,0,3 ++ vsel 1,1,0,2 ++ lvx 4,7,4 ++ stvx 1,0,4 ++ vsel 0,0,4,2 ++ stvx 0,7,4 ++ ++ or 12,12,12 ++ blr ++.long 0 ++.byte 0,12,0x14,0,0,0,3,0 ++.long 0 ++.size aes_hw_decrypt,.-aes_hw_decrypt ++.globl aes_hw_cbc_encrypt ++.type aes_hw_cbc_encrypt,@function ++.align 5 ++aes_hw_cbc_encrypt: ++.localentry aes_hw_cbc_encrypt,0 ++ ++ cmpldi 5,16 ++ .long 0x4dc00020 ++ ++ cmpwi 8,0 ++ lis 0,0xffe0 ++ li 12,-1 ++ or 0,0,0 ++ ++ li 10,15 ++ vxor 0,0,0 ++ vspltisb 3,0x0f ++ ++ lvx 4,0,7 ++ lvsl 6,0,7 ++ lvx 5,10,7 ++ vxor 6,6,3 ++ vperm 4,4,5,6 ++ ++ neg 11,3 ++ lvsr 10,0,6 ++ lwz 9,240(6) ++ ++ lvsr 6,0,11 ++ lvx 5,0,3 ++ addi 3,3,15 ++ vxor 6,6,3 ++ ++ lvsl 8,0,4 ++ vspltisb 9,-1 ++ lvx 7,0,4 ++ vperm 9,9,0,8 ++ vxor 8,8,3 ++ ++ srwi 9,9,1 ++ li 10,16 ++ subi 9,9,1 ++ beq .Lcbc_dec ++ ++.Lcbc_enc: ++ vor 2,5,5 ++ lvx 5,0,3 ++ addi 3,3,16 ++ mtctr 9 ++ subi 5,5,16 ++ ++ lvx 0,0,6 ++ vperm 2,2,5,6 ++ lvx 1,10,6 ++ addi 10,10,16 ++ vperm 0,1,0,10 ++ vxor 2,2,0 ++ lvx 0,10,6 ++ addi 10,10,16 ++ vxor 2,2,4 ++ ++.Loop_cbc_enc: ++ vperm 1,0,1,10 ++ .long 0x10420D08 ++ lvx 1,10,6 ++ addi 10,10,16 ++ vperm 0,1,0,10 ++ .long 0x10420508 ++ lvx 0,10,6 ++ addi 10,10,16 ++ bdnz .Loop_cbc_enc ++ ++ vperm 1,0,1,10 ++ .long 0x10420D08 ++ lvx 1,10,6 ++ li 10,16 ++ vperm 0,1,0,10 ++ .long 0x10820509 ++ cmpldi 5,16 ++ ++ vperm 3,4,4,8 ++ vsel 2,7,3,9 ++ vor 7,3,3 ++ stvx 2,0,4 ++ addi 4,4,16 ++ bge .Lcbc_enc ++ ++ b .Lcbc_done ++ ++.align 4 ++.Lcbc_dec: ++ cmpldi 5,128 ++ bge _aesp8_cbc_decrypt8x ++ vor 3,5,5 ++ lvx 5,0,3 ++ addi 3,3,16 ++ mtctr 9 ++ subi 5,5,16 ++ ++ lvx 0,0,6 ++ vperm 3,3,5,6 ++ lvx 1,10,6 ++ addi 10,10,16 ++ vperm 0,1,0,10 ++ vxor 2,3,0 ++ lvx 0,10,6 ++ addi 10,10,16 ++ ++.Loop_cbc_dec: ++ vperm 1,0,1,10 ++ .long 0x10420D48 ++ lvx 1,10,6 ++ addi 10,10,16 ++ vperm 0,1,0,10 ++ .long 0x10420548 ++ lvx 0,10,6 ++ addi 10,10,16 ++ bdnz .Loop_cbc_dec ++ ++ vperm 1,0,1,10 ++ .long 0x10420D48 ++ lvx 1,10,6 ++ li 10,16 ++ vperm 0,1,0,10 ++ .long 0x10420549 ++ cmpldi 5,16 ++ ++ vxor 2,2,4 ++ vor 4,3,3 ++ vperm 3,2,2,8 ++ vsel 2,7,3,9 ++ vor 7,3,3 ++ stvx 2,0,4 ++ addi 4,4,16 ++ bge .Lcbc_dec ++ ++.Lcbc_done: ++ addi 4,4,-1 ++ lvx 2,0,4 ++ vsel 2,7,2,9 ++ stvx 2,0,4 ++ ++ neg 8,7 ++ li 10,15 ++ vxor 0,0,0 ++ vspltisb 9,-1 ++ vspltisb 3,0x0f ++ lvsr 8,0,8 ++ vperm 9,9,0,8 ++ vxor 8,8,3 ++ lvx 7,0,7 ++ vperm 4,4,4,8 ++ vsel 2,7,4,9 ++ lvx 5,10,7 ++ stvx 2,0,7 ++ vsel 2,4,5,9 ++ stvx 2,10,7 ++ ++ or 12,12,12 ++ blr ++.long 0 ++.byte 0,12,0x14,0,0,0,6,0 ++.long 0 ++.align 5 ++_aesp8_cbc_decrypt8x: ++ stdu 1,-448(1) ++ li 10,207 ++ li 11,223 ++ stvx 20,10,1 ++ addi 10,10,32 ++ stvx 21,11,1 ++ addi 11,11,32 ++ stvx 22,10,1 ++ addi 10,10,32 ++ stvx 23,11,1 ++ addi 11,11,32 ++ stvx 24,10,1 ++ addi 10,10,32 ++ stvx 25,11,1 ++ addi 11,11,32 ++ stvx 26,10,1 ++ addi 10,10,32 ++ stvx 27,11,1 ++ addi 11,11,32 ++ stvx 28,10,1 ++ addi 10,10,32 ++ stvx 29,11,1 ++ addi 11,11,32 ++ stvx 30,10,1 ++ stvx 31,11,1 ++ li 0,-1 ++ stw 12,396(1) ++ li 8,0x10 ++ std 26,400(1) ++ li 26,0x20 ++ std 27,408(1) ++ li 27,0x30 ++ std 28,416(1) ++ li 28,0x40 ++ std 29,424(1) ++ li 29,0x50 ++ std 30,432(1) ++ li 30,0x60 ++ std 31,440(1) ++ li 31,0x70 ++ or 0,0,0 ++ ++ subi 9,9,3 ++ subi 5,5,128 ++ ++ lvx 23,0,6 ++ lvx 30,8,6 ++ addi 6,6,0x20 ++ lvx 31,0,6 ++ vperm 23,30,23,10 ++ addi 11,1,79 ++ mtctr 9 ++ ++.Load_cbc_dec_key: ++ vperm 24,31,30,10 ++ lvx 30,8,6 ++ addi 6,6,0x20 ++ stvx 24,0,11 ++ vperm 25,30,31,10 ++ lvx 31,0,6 ++ stvx 25,8,11 ++ addi 11,11,0x20 ++ bdnz .Load_cbc_dec_key ++ ++ lvx 26,8,6 ++ vperm 24,31,30,10 ++ lvx 27,26,6 ++ stvx 24,0,11 ++ vperm 25,26,31,10 ++ lvx 28,27,6 ++ stvx 25,8,11 ++ addi 11,1,79 ++ vperm 26,27,26,10 ++ lvx 29,28,6 ++ vperm 27,28,27,10 ++ lvx 30,29,6 ++ vperm 28,29,28,10 ++ lvx 31,30,6 ++ vperm 29,30,29,10 ++ lvx 14,31,6 ++ vperm 30,31,30,10 ++ lvx 24,0,11 ++ vperm 31,14,31,10 ++ lvx 25,8,11 ++ ++ ++ ++ subi 3,3,15 ++ ++ li 10,8 ++ .long 0x7C001E99 ++ lvsl 6,0,10 ++ vspltisb 3,0x0f ++ .long 0x7C281E99 ++ vxor 6,6,3 ++ .long 0x7C5A1E99 ++ vperm 0,0,0,6 ++ .long 0x7C7B1E99 ++ vperm 1,1,1,6 ++ .long 0x7D5C1E99 ++ vperm 2,2,2,6 ++ vxor 14,0,23 ++ .long 0x7D7D1E99 ++ vperm 3,3,3,6 ++ vxor 15,1,23 ++ .long 0x7D9E1E99 ++ vperm 10,10,10,6 ++ vxor 16,2,23 ++ .long 0x7DBF1E99 ++ addi 3,3,0x80 ++ vperm 11,11,11,6 ++ vxor 17,3,23 ++ vperm 12,12,12,6 ++ vxor 18,10,23 ++ vperm 13,13,13,6 ++ vxor 19,11,23 ++ vxor 20,12,23 ++ vxor 21,13,23 ++ ++ mtctr 9 ++ b .Loop_cbc_dec8x ++.align 5 ++.Loop_cbc_dec8x: ++ .long 0x11CEC548 ++ .long 0x11EFC548 ++ .long 0x1210C548 ++ .long 0x1231C548 ++ .long 0x1252C548 ++ .long 0x1273C548 ++ .long 0x1294C548 ++ .long 0x12B5C548 ++ lvx 24,26,11 ++ addi 11,11,0x20 ++ ++ .long 0x11CECD48 ++ .long 0x11EFCD48 ++ .long 0x1210CD48 ++ .long 0x1231CD48 ++ .long 0x1252CD48 ++ .long 0x1273CD48 ++ .long 0x1294CD48 ++ .long 0x12B5CD48 ++ lvx 25,8,11 ++ bdnz .Loop_cbc_dec8x ++ ++ subic 5,5,128 ++ .long 0x11CEC548 ++ .long 0x11EFC548 ++ .long 0x1210C548 ++ .long 0x1231C548 ++ .long 0x1252C548 ++ .long 0x1273C548 ++ .long 0x1294C548 ++ .long 0x12B5C548 ++ ++ subfe. 0,0,0 ++ .long 0x11CECD48 ++ .long 0x11EFCD48 ++ .long 0x1210CD48 ++ .long 0x1231CD48 ++ .long 0x1252CD48 ++ .long 0x1273CD48 ++ .long 0x1294CD48 ++ .long 0x12B5CD48 ++ ++ and 0,0,5 ++ .long 0x11CED548 ++ .long 0x11EFD548 ++ .long 0x1210D548 ++ .long 0x1231D548 ++ .long 0x1252D548 ++ .long 0x1273D548 ++ .long 0x1294D548 ++ .long 0x12B5D548 ++ ++ add 3,3,0 ++ ++ ++ ++ .long 0x11CEDD48 ++ .long 0x11EFDD48 ++ .long 0x1210DD48 ++ .long 0x1231DD48 ++ .long 0x1252DD48 ++ .long 0x1273DD48 ++ .long 0x1294DD48 ++ .long 0x12B5DD48 ++ ++ addi 11,1,79 ++ .long 0x11CEE548 ++ .long 0x11EFE548 ++ .long 0x1210E548 ++ .long 0x1231E548 ++ .long 0x1252E548 ++ .long 0x1273E548 ++ .long 0x1294E548 ++ .long 0x12B5E548 ++ lvx 24,0,11 ++ ++ .long 0x11CEED48 ++ .long 0x11EFED48 ++ .long 0x1210ED48 ++ .long 0x1231ED48 ++ .long 0x1252ED48 ++ .long 0x1273ED48 ++ .long 0x1294ED48 ++ .long 0x12B5ED48 ++ lvx 25,8,11 ++ ++ .long 0x11CEF548 ++ vxor 4,4,31 ++ .long 0x11EFF548 ++ vxor 0,0,31 ++ .long 0x1210F548 ++ vxor 1,1,31 ++ .long 0x1231F548 ++ vxor 2,2,31 ++ .long 0x1252F548 ++ vxor 3,3,31 ++ .long 0x1273F548 ++ vxor 10,10,31 ++ .long 0x1294F548 ++ vxor 11,11,31 ++ .long 0x12B5F548 ++ vxor 12,12,31 ++ ++ .long 0x11CE2549 ++ .long 0x11EF0549 ++ .long 0x7C001E99 ++ .long 0x12100D49 ++ .long 0x7C281E99 ++ .long 0x12311549 ++ vperm 0,0,0,6 ++ .long 0x7C5A1E99 ++ .long 0x12521D49 ++ vperm 1,1,1,6 ++ .long 0x7C7B1E99 ++ .long 0x12735549 ++ vperm 2,2,2,6 ++ .long 0x7D5C1E99 ++ .long 0x12945D49 ++ vperm 3,3,3,6 ++ .long 0x7D7D1E99 ++ .long 0x12B56549 ++ vperm 10,10,10,6 ++ .long 0x7D9E1E99 ++ vor 4,13,13 ++ vperm 11,11,11,6 ++ .long 0x7DBF1E99 ++ addi 3,3,0x80 ++ ++ vperm 14,14,14,6 ++ vperm 15,15,15,6 ++ .long 0x7DC02799 ++ vperm 12,12,12,6 ++ vxor 14,0,23 ++ vperm 16,16,16,6 ++ .long 0x7DE82799 ++ vperm 13,13,13,6 ++ vxor 15,1,23 ++ vperm 17,17,17,6 ++ .long 0x7E1A2799 ++ vxor 16,2,23 ++ vperm 18,18,18,6 ++ .long 0x7E3B2799 ++ vxor 17,3,23 ++ vperm 19,19,19,6 ++ .long 0x7E5C2799 ++ vxor 18,10,23 ++ vperm 20,20,20,6 ++ .long 0x7E7D2799 ++ vxor 19,11,23 ++ vperm 21,21,21,6 ++ .long 0x7E9E2799 ++ vxor 20,12,23 ++ .long 0x7EBF2799 ++ addi 4,4,0x80 ++ vxor 21,13,23 ++ ++ mtctr 9 ++ beq .Loop_cbc_dec8x ++ ++ addic. 5,5,128 ++ beq .Lcbc_dec8x_done ++ nop ++ nop ++ ++.Loop_cbc_dec8x_tail: ++ .long 0x11EFC548 ++ .long 0x1210C548 ++ .long 0x1231C548 ++ .long 0x1252C548 ++ .long 0x1273C548 ++ .long 0x1294C548 ++ .long 0x12B5C548 ++ lvx 24,26,11 ++ addi 11,11,0x20 ++ ++ .long 0x11EFCD48 ++ .long 0x1210CD48 ++ .long 0x1231CD48 ++ .long 0x1252CD48 ++ .long 0x1273CD48 ++ .long 0x1294CD48 ++ .long 0x12B5CD48 ++ lvx 25,8,11 ++ bdnz .Loop_cbc_dec8x_tail ++ ++ .long 0x11EFC548 ++ .long 0x1210C548 ++ .long 0x1231C548 ++ .long 0x1252C548 ++ .long 0x1273C548 ++ .long 0x1294C548 ++ .long 0x12B5C548 ++ ++ .long 0x11EFCD48 ++ .long 0x1210CD48 ++ .long 0x1231CD48 ++ .long 0x1252CD48 ++ .long 0x1273CD48 ++ .long 0x1294CD48 ++ .long 0x12B5CD48 ++ ++ .long 0x11EFD548 ++ .long 0x1210D548 ++ .long 0x1231D548 ++ .long 0x1252D548 ++ .long 0x1273D548 ++ .long 0x1294D548 ++ .long 0x12B5D548 ++ ++ .long 0x11EFDD48 ++ .long 0x1210DD48 ++ .long 0x1231DD48 ++ .long 0x1252DD48 ++ .long 0x1273DD48 ++ .long 0x1294DD48 ++ .long 0x12B5DD48 ++ ++ .long 0x11EFE548 ++ .long 0x1210E548 ++ .long 0x1231E548 ++ .long 0x1252E548 ++ .long 0x1273E548 ++ .long 0x1294E548 ++ .long 0x12B5E548 ++ ++ .long 0x11EFED48 ++ .long 0x1210ED48 ++ .long 0x1231ED48 ++ .long 0x1252ED48 ++ .long 0x1273ED48 ++ .long 0x1294ED48 ++ .long 0x12B5ED48 ++ ++ .long 0x11EFF548 ++ vxor 4,4,31 ++ .long 0x1210F548 ++ vxor 1,1,31 ++ .long 0x1231F548 ++ vxor 2,2,31 ++ .long 0x1252F548 ++ vxor 3,3,31 ++ .long 0x1273F548 ++ vxor 10,10,31 ++ .long 0x1294F548 ++ vxor 11,11,31 ++ .long 0x12B5F548 ++ vxor 12,12,31 ++ ++ cmplwi 5,32 ++ blt .Lcbc_dec8x_one ++ nop ++ beq .Lcbc_dec8x_two ++ cmplwi 5,64 ++ blt .Lcbc_dec8x_three ++ nop ++ beq .Lcbc_dec8x_four ++ cmplwi 5,96 ++ blt .Lcbc_dec8x_five ++ nop ++ beq .Lcbc_dec8x_six ++ ++.Lcbc_dec8x_seven: ++ .long 0x11EF2549 ++ .long 0x12100D49 ++ .long 0x12311549 ++ .long 0x12521D49 ++ .long 0x12735549 ++ .long 0x12945D49 ++ .long 0x12B56549 ++ vor 4,13,13 ++ ++ vperm 15,15,15,6 ++ vperm 16,16,16,6 ++ .long 0x7DE02799 ++ vperm 17,17,17,6 ++ .long 0x7E082799 ++ vperm 18,18,18,6 ++ .long 0x7E3A2799 ++ vperm 19,19,19,6 ++ .long 0x7E5B2799 ++ vperm 20,20,20,6 ++ .long 0x7E7C2799 ++ vperm 21,21,21,6 ++ .long 0x7E9D2799 ++ .long 0x7EBE2799 ++ addi 4,4,0x70 ++ b .Lcbc_dec8x_done ++ ++.align 5 ++.Lcbc_dec8x_six: ++ .long 0x12102549 ++ .long 0x12311549 ++ .long 0x12521D49 ++ .long 0x12735549 ++ .long 0x12945D49 ++ .long 0x12B56549 ++ vor 4,13,13 ++ ++ vperm 16,16,16,6 ++ vperm 17,17,17,6 ++ .long 0x7E002799 ++ vperm 18,18,18,6 ++ .long 0x7E282799 ++ vperm 19,19,19,6 ++ .long 0x7E5A2799 ++ vperm 20,20,20,6 ++ .long 0x7E7B2799 ++ vperm 21,21,21,6 ++ .long 0x7E9C2799 ++ .long 0x7EBD2799 ++ addi 4,4,0x60 ++ b .Lcbc_dec8x_done ++ ++.align 5 ++.Lcbc_dec8x_five: ++ .long 0x12312549 ++ .long 0x12521D49 ++ .long 0x12735549 ++ .long 0x12945D49 ++ .long 0x12B56549 ++ vor 4,13,13 ++ ++ vperm 17,17,17,6 ++ vperm 18,18,18,6 ++ .long 0x7E202799 ++ vperm 19,19,19,6 ++ .long 0x7E482799 ++ vperm 20,20,20,6 ++ .long 0x7E7A2799 ++ vperm 21,21,21,6 ++ .long 0x7E9B2799 ++ .long 0x7EBC2799 ++ addi 4,4,0x50 ++ b .Lcbc_dec8x_done ++ ++.align 5 ++.Lcbc_dec8x_four: ++ .long 0x12522549 ++ .long 0x12735549 ++ .long 0x12945D49 ++ .long 0x12B56549 ++ vor 4,13,13 ++ ++ vperm 18,18,18,6 ++ vperm 19,19,19,6 ++ .long 0x7E402799 ++ vperm 20,20,20,6 ++ .long 0x7E682799 ++ vperm 21,21,21,6 ++ .long 0x7E9A2799 ++ .long 0x7EBB2799 ++ addi 4,4,0x40 ++ b .Lcbc_dec8x_done ++ ++.align 5 ++.Lcbc_dec8x_three: ++ .long 0x12732549 ++ .long 0x12945D49 ++ .long 0x12B56549 ++ vor 4,13,13 ++ ++ vperm 19,19,19,6 ++ vperm 20,20,20,6 ++ .long 0x7E602799 ++ vperm 21,21,21,6 ++ .long 0x7E882799 ++ .long 0x7EBA2799 ++ addi 4,4,0x30 ++ b .Lcbc_dec8x_done ++ ++.align 5 ++.Lcbc_dec8x_two: ++ .long 0x12942549 ++ .long 0x12B56549 ++ vor 4,13,13 ++ ++ vperm 20,20,20,6 ++ vperm 21,21,21,6 ++ .long 0x7E802799 ++ .long 0x7EA82799 ++ addi 4,4,0x20 ++ b .Lcbc_dec8x_done ++ ++.align 5 ++.Lcbc_dec8x_one: ++ .long 0x12B52549 ++ vor 4,13,13 ++ ++ vperm 21,21,21,6 ++ .long 0x7EA02799 ++ addi 4,4,0x10 ++ ++.Lcbc_dec8x_done: ++ vperm 4,4,4,6 ++ .long 0x7C803F99 ++ ++ li 10,79 ++ li 11,95 ++ stvx 6,10,1 ++ addi 10,10,32 ++ stvx 6,11,1 ++ addi 11,11,32 ++ stvx 6,10,1 ++ addi 10,10,32 ++ stvx 6,11,1 ++ addi 11,11,32 ++ stvx 6,10,1 ++ addi 10,10,32 ++ stvx 6,11,1 ++ addi 11,11,32 ++ stvx 6,10,1 ++ addi 10,10,32 ++ stvx 6,11,1 ++ addi 11,11,32 ++ ++ or 12,12,12 ++ lvx 20,10,1 ++ addi 10,10,32 ++ lvx 21,11,1 ++ addi 11,11,32 ++ lvx 22,10,1 ++ addi 10,10,32 ++ lvx 23,11,1 ++ addi 11,11,32 ++ lvx 24,10,1 ++ addi 10,10,32 ++ lvx 25,11,1 ++ addi 11,11,32 ++ lvx 26,10,1 ++ addi 10,10,32 ++ lvx 27,11,1 ++ addi 11,11,32 ++ lvx 28,10,1 ++ addi 10,10,32 ++ lvx 29,11,1 ++ addi 11,11,32 ++ lvx 30,10,1 ++ lvx 31,11,1 ++ ld 26,400(1) ++ ld 27,408(1) ++ ld 28,416(1) ++ ld 29,424(1) ++ ld 30,432(1) ++ ld 31,440(1) ++ addi 1,1,448 ++ blr ++.long 0 ++.byte 0,12,0x04,0,0x80,6,6,0 ++.long 0 ++.size aes_hw_cbc_encrypt,.-aes_hw_cbc_encrypt ++.globl aes_hw_ctr32_encrypt_blocks ++.type aes_hw_ctr32_encrypt_blocks,@function ++.align 5 ++aes_hw_ctr32_encrypt_blocks: ++.localentry aes_hw_ctr32_encrypt_blocks,0 ++ ++ cmpldi 5,1 ++ .long 0x4dc00020 ++ ++ lis 0,0xfff0 ++ li 12,-1 ++ or 0,0,0 ++ ++ li 10,15 ++ vxor 0,0,0 ++ vspltisb 3,0x0f ++ ++ lvx 4,0,7 ++ lvsl 6,0,7 ++ lvx 5,10,7 ++ vspltisb 11,1 ++ vxor 6,6,3 ++ vperm 4,4,5,6 ++ vsldoi 11,0,11,1 ++ ++ neg 11,3 ++ lvsr 10,0,6 ++ lwz 9,240(6) ++ ++ lvsr 6,0,11 ++ lvx 5,0,3 ++ addi 3,3,15 ++ vxor 6,6,3 ++ ++ srwi 9,9,1 ++ li 10,16 ++ subi 9,9,1 ++ ++ cmpldi 5,8 ++ bge _aesp8_ctr32_encrypt8x ++ ++ lvsl 8,0,4 ++ vspltisb 9,-1 ++ lvx 7,0,4 ++ vperm 9,9,0,8 ++ vxor 8,8,3 ++ ++ lvx 0,0,6 ++ mtctr 9 ++ lvx 1,10,6 ++ addi 10,10,16 ++ vperm 0,1,0,10 ++ vxor 2,4,0 ++ lvx 0,10,6 ++ addi 10,10,16 ++ b .Loop_ctr32_enc ++ ++.align 5 ++.Loop_ctr32_enc: ++ vperm 1,0,1,10 ++ .long 0x10420D08 ++ lvx 1,10,6 ++ addi 10,10,16 ++ vperm 0,1,0,10 ++ .long 0x10420508 ++ lvx 0,10,6 ++ addi 10,10,16 ++ bdnz .Loop_ctr32_enc ++ ++ vadduwm 4,4,11 ++ vor 3,5,5 ++ lvx 5,0,3 ++ addi 3,3,16 ++ subic. 5,5,1 ++ ++ vperm 1,0,1,10 ++ .long 0x10420D08 ++ lvx 1,10,6 ++ vperm 3,3,5,6 ++ li 10,16 ++ vperm 1,1,0,10 ++ lvx 0,0,6 ++ vxor 3,3,1 ++ .long 0x10421D09 ++ ++ lvx 1,10,6 ++ addi 10,10,16 ++ vperm 2,2,2,8 ++ vsel 3,7,2,9 ++ mtctr 9 ++ vperm 0,1,0,10 ++ vor 7,2,2 ++ vxor 2,4,0 ++ lvx 0,10,6 ++ addi 10,10,16 ++ stvx 3,0,4 ++ addi 4,4,16 ++ bne .Loop_ctr32_enc ++ ++ addi 4,4,-1 ++ lvx 2,0,4 ++ vsel 2,7,2,9 ++ stvx 2,0,4 ++ ++ or 12,12,12 ++ blr ++.long 0 ++.byte 0,12,0x14,0,0,0,6,0 ++.long 0 ++.align 5 ++_aesp8_ctr32_encrypt8x: ++ stdu 1,-448(1) ++ li 10,207 ++ li 11,223 ++ stvx 20,10,1 ++ addi 10,10,32 ++ stvx 21,11,1 ++ addi 11,11,32 ++ stvx 22,10,1 ++ addi 10,10,32 ++ stvx 23,11,1 ++ addi 11,11,32 ++ stvx 24,10,1 ++ addi 10,10,32 ++ stvx 25,11,1 ++ addi 11,11,32 ++ stvx 26,10,1 ++ addi 10,10,32 ++ stvx 27,11,1 ++ addi 11,11,32 ++ stvx 28,10,1 ++ addi 10,10,32 ++ stvx 29,11,1 ++ addi 11,11,32 ++ stvx 30,10,1 ++ stvx 31,11,1 ++ li 0,-1 ++ stw 12,396(1) ++ li 8,0x10 ++ std 26,400(1) ++ li 26,0x20 ++ std 27,408(1) ++ li 27,0x30 ++ std 28,416(1) ++ li 28,0x40 ++ std 29,424(1) ++ li 29,0x50 ++ std 30,432(1) ++ li 30,0x60 ++ std 31,440(1) ++ li 31,0x70 ++ or 0,0,0 ++ ++ subi 9,9,3 ++ ++ lvx 23,0,6 ++ lvx 30,8,6 ++ addi 6,6,0x20 ++ lvx 31,0,6 ++ vperm 23,30,23,10 ++ addi 11,1,79 ++ mtctr 9 ++ ++.Load_ctr32_enc_key: ++ vperm 24,31,30,10 ++ lvx 30,8,6 ++ addi 6,6,0x20 ++ stvx 24,0,11 ++ vperm 25,30,31,10 ++ lvx 31,0,6 ++ stvx 25,8,11 ++ addi 11,11,0x20 ++ bdnz .Load_ctr32_enc_key ++ ++ lvx 26,8,6 ++ vperm 24,31,30,10 ++ lvx 27,26,6 ++ stvx 24,0,11 ++ vperm 25,26,31,10 ++ lvx 28,27,6 ++ stvx 25,8,11 ++ addi 11,1,79 ++ vperm 26,27,26,10 ++ lvx 29,28,6 ++ vperm 27,28,27,10 ++ lvx 30,29,6 ++ vperm 28,29,28,10 ++ lvx 31,30,6 ++ vperm 29,30,29,10 ++ lvx 15,31,6 ++ vperm 30,31,30,10 ++ lvx 24,0,11 ++ vperm 31,15,31,10 ++ lvx 25,8,11 ++ ++ vadduwm 7,11,11 ++ subi 3,3,15 ++ sldi 5,5,4 ++ ++ vadduwm 16,4,11 ++ vadduwm 17,4,7 ++ vxor 15,4,23 ++ li 10,8 ++ vadduwm 18,16,7 ++ vxor 16,16,23 ++ lvsl 6,0,10 ++ vadduwm 19,17,7 ++ vxor 17,17,23 ++ vspltisb 3,0x0f ++ vadduwm 20,18,7 ++ vxor 18,18,23 ++ vxor 6,6,3 ++ vadduwm 21,19,7 ++ vxor 19,19,23 ++ vadduwm 22,20,7 ++ vxor 20,20,23 ++ vadduwm 4,21,7 ++ vxor 21,21,23 ++ vxor 22,22,23 ++ ++ mtctr 9 ++ b .Loop_ctr32_enc8x ++.align 5 ++.Loop_ctr32_enc8x: ++ .long 0x11EFC508 ++ .long 0x1210C508 ++ .long 0x1231C508 ++ .long 0x1252C508 ++ .long 0x1273C508 ++ .long 0x1294C508 ++ .long 0x12B5C508 ++ .long 0x12D6C508 ++.Loop_ctr32_enc8x_middle: ++ lvx 24,26,11 ++ addi 11,11,0x20 ++ ++ .long 0x11EFCD08 ++ .long 0x1210CD08 ++ .long 0x1231CD08 ++ .long 0x1252CD08 ++ .long 0x1273CD08 ++ .long 0x1294CD08 ++ .long 0x12B5CD08 ++ .long 0x12D6CD08 ++ lvx 25,8,11 ++ bdnz .Loop_ctr32_enc8x ++ ++ subic 11,5,256 ++ .long 0x11EFC508 ++ .long 0x1210C508 ++ .long 0x1231C508 ++ .long 0x1252C508 ++ .long 0x1273C508 ++ .long 0x1294C508 ++ .long 0x12B5C508 ++ .long 0x12D6C508 ++ ++ subfe 0,0,0 ++ .long 0x11EFCD08 ++ .long 0x1210CD08 ++ .long 0x1231CD08 ++ .long 0x1252CD08 ++ .long 0x1273CD08 ++ .long 0x1294CD08 ++ .long 0x12B5CD08 ++ .long 0x12D6CD08 ++ ++ and 0,0,11 ++ addi 11,1,79 ++ .long 0x11EFD508 ++ .long 0x1210D508 ++ .long 0x1231D508 ++ .long 0x1252D508 ++ .long 0x1273D508 ++ .long 0x1294D508 ++ .long 0x12B5D508 ++ .long 0x12D6D508 ++ lvx 24,0,11 ++ ++ subic 5,5,129 ++ .long 0x11EFDD08 ++ addi 5,5,1 ++ .long 0x1210DD08 ++ .long 0x1231DD08 ++ .long 0x1252DD08 ++ .long 0x1273DD08 ++ .long 0x1294DD08 ++ .long 0x12B5DD08 ++ .long 0x12D6DD08 ++ lvx 25,8,11 ++ ++ .long 0x11EFE508 ++ .long 0x7C001E99 ++ .long 0x1210E508 ++ .long 0x7C281E99 ++ .long 0x1231E508 ++ .long 0x7C5A1E99 ++ .long 0x1252E508 ++ .long 0x7C7B1E99 ++ .long 0x1273E508 ++ .long 0x7D5C1E99 ++ .long 0x1294E508 ++ .long 0x7D9D1E99 ++ .long 0x12B5E508 ++ .long 0x7DBE1E99 ++ .long 0x12D6E508 ++ .long 0x7DDF1E99 ++ addi 3,3,0x80 ++ ++ .long 0x11EFED08 ++ vperm 0,0,0,6 ++ .long 0x1210ED08 ++ vperm 1,1,1,6 ++ .long 0x1231ED08 ++ vperm 2,2,2,6 ++ .long 0x1252ED08 ++ vperm 3,3,3,6 ++ .long 0x1273ED08 ++ vperm 10,10,10,6 ++ .long 0x1294ED08 ++ vperm 12,12,12,6 ++ .long 0x12B5ED08 ++ vperm 13,13,13,6 ++ .long 0x12D6ED08 ++ vperm 14,14,14,6 ++ ++ add 3,3,0 ++ ++ ++ ++ subfe. 0,0,0 ++ .long 0x11EFF508 ++ vxor 0,0,31 ++ .long 0x1210F508 ++ vxor 1,1,31 ++ .long 0x1231F508 ++ vxor 2,2,31 ++ .long 0x1252F508 ++ vxor 3,3,31 ++ .long 0x1273F508 ++ vxor 10,10,31 ++ .long 0x1294F508 ++ vxor 12,12,31 ++ .long 0x12B5F508 ++ vxor 13,13,31 ++ .long 0x12D6F508 ++ vxor 14,14,31 ++ ++ bne .Lctr32_enc8x_break ++ ++ .long 0x100F0509 ++ .long 0x10300D09 ++ vadduwm 16,4,11 ++ .long 0x10511509 ++ vadduwm 17,4,7 ++ vxor 15,4,23 ++ .long 0x10721D09 ++ vadduwm 18,16,7 ++ vxor 16,16,23 ++ .long 0x11535509 ++ vadduwm 19,17,7 ++ vxor 17,17,23 ++ .long 0x11946509 ++ vadduwm 20,18,7 ++ vxor 18,18,23 ++ .long 0x11B56D09 ++ vadduwm 21,19,7 ++ vxor 19,19,23 ++ .long 0x11D67509 ++ vadduwm 22,20,7 ++ vxor 20,20,23 ++ vperm 0,0,0,6 ++ vadduwm 4,21,7 ++ vxor 21,21,23 ++ vperm 1,1,1,6 ++ vxor 22,22,23 ++ mtctr 9 ++ ++ .long 0x11EFC508 ++ .long 0x7C002799 ++ vperm 2,2,2,6 ++ .long 0x1210C508 ++ .long 0x7C282799 ++ vperm 3,3,3,6 ++ .long 0x1231C508 ++ .long 0x7C5A2799 ++ vperm 10,10,10,6 ++ .long 0x1252C508 ++ .long 0x7C7B2799 ++ vperm 12,12,12,6 ++ .long 0x1273C508 ++ .long 0x7D5C2799 ++ vperm 13,13,13,6 ++ .long 0x1294C508 ++ .long 0x7D9D2799 ++ vperm 14,14,14,6 ++ .long 0x12B5C508 ++ .long 0x7DBE2799 ++ .long 0x12D6C508 ++ .long 0x7DDF2799 ++ addi 4,4,0x80 ++ ++ b .Loop_ctr32_enc8x_middle ++ ++.align 5 ++.Lctr32_enc8x_break: ++ cmpwi 5,-0x60 ++ blt .Lctr32_enc8x_one ++ nop ++ beq .Lctr32_enc8x_two ++ cmpwi 5,-0x40 ++ blt .Lctr32_enc8x_three ++ nop ++ beq .Lctr32_enc8x_four ++ cmpwi 5,-0x20 ++ blt .Lctr32_enc8x_five ++ nop ++ beq .Lctr32_enc8x_six ++ cmpwi 5,0x00 ++ blt .Lctr32_enc8x_seven ++ ++.Lctr32_enc8x_eight: ++ .long 0x11EF0509 ++ .long 0x12100D09 ++ .long 0x12311509 ++ .long 0x12521D09 ++ .long 0x12735509 ++ .long 0x12946509 ++ .long 0x12B56D09 ++ .long 0x12D67509 ++ ++ vperm 15,15,15,6 ++ vperm 16,16,16,6 ++ .long 0x7DE02799 ++ vperm 17,17,17,6 ++ .long 0x7E082799 ++ vperm 18,18,18,6 ++ .long 0x7E3A2799 ++ vperm 19,19,19,6 ++ .long 0x7E5B2799 ++ vperm 20,20,20,6 ++ .long 0x7E7C2799 ++ vperm 21,21,21,6 ++ .long 0x7E9D2799 ++ vperm 22,22,22,6 ++ .long 0x7EBE2799 ++ .long 0x7EDF2799 ++ addi 4,4,0x80 ++ b .Lctr32_enc8x_done ++ ++.align 5 ++.Lctr32_enc8x_seven: ++ .long 0x11EF0D09 ++ .long 0x12101509 ++ .long 0x12311D09 ++ .long 0x12525509 ++ .long 0x12736509 ++ .long 0x12946D09 ++ .long 0x12B57509 ++ ++ vperm 15,15,15,6 ++ vperm 16,16,16,6 ++ .long 0x7DE02799 ++ vperm 17,17,17,6 ++ .long 0x7E082799 ++ vperm 18,18,18,6 ++ .long 0x7E3A2799 ++ vperm 19,19,19,6 ++ .long 0x7E5B2799 ++ vperm 20,20,20,6 ++ .long 0x7E7C2799 ++ vperm 21,21,21,6 ++ .long 0x7E9D2799 ++ .long 0x7EBE2799 ++ addi 4,4,0x70 ++ b .Lctr32_enc8x_done ++ ++.align 5 ++.Lctr32_enc8x_six: ++ .long 0x11EF1509 ++ .long 0x12101D09 ++ .long 0x12315509 ++ .long 0x12526509 ++ .long 0x12736D09 ++ .long 0x12947509 ++ ++ vperm 15,15,15,6 ++ vperm 16,16,16,6 ++ .long 0x7DE02799 ++ vperm 17,17,17,6 ++ .long 0x7E082799 ++ vperm 18,18,18,6 ++ .long 0x7E3A2799 ++ vperm 19,19,19,6 ++ .long 0x7E5B2799 ++ vperm 20,20,20,6 ++ .long 0x7E7C2799 ++ .long 0x7E9D2799 ++ addi 4,4,0x60 ++ b .Lctr32_enc8x_done ++ ++.align 5 ++.Lctr32_enc8x_five: ++ .long 0x11EF1D09 ++ .long 0x12105509 ++ .long 0x12316509 ++ .long 0x12526D09 ++ .long 0x12737509 ++ ++ vperm 15,15,15,6 ++ vperm 16,16,16,6 ++ .long 0x7DE02799 ++ vperm 17,17,17,6 ++ .long 0x7E082799 ++ vperm 18,18,18,6 ++ .long 0x7E3A2799 ++ vperm 19,19,19,6 ++ .long 0x7E5B2799 ++ .long 0x7E7C2799 ++ addi 4,4,0x50 ++ b .Lctr32_enc8x_done ++ ++.align 5 ++.Lctr32_enc8x_four: ++ .long 0x11EF5509 ++ .long 0x12106509 ++ .long 0x12316D09 ++ .long 0x12527509 ++ ++ vperm 15,15,15,6 ++ vperm 16,16,16,6 ++ .long 0x7DE02799 ++ vperm 17,17,17,6 ++ .long 0x7E082799 ++ vperm 18,18,18,6 ++ .long 0x7E3A2799 ++ .long 0x7E5B2799 ++ addi 4,4,0x40 ++ b .Lctr32_enc8x_done ++ ++.align 5 ++.Lctr32_enc8x_three: ++ .long 0x11EF6509 ++ .long 0x12106D09 ++ .long 0x12317509 ++ ++ vperm 15,15,15,6 ++ vperm 16,16,16,6 ++ .long 0x7DE02799 ++ vperm 17,17,17,6 ++ .long 0x7E082799 ++ .long 0x7E3A2799 ++ addi 4,4,0x30 ++ b .Lctr32_enc8x_done ++ ++.align 5 ++.Lctr32_enc8x_two: ++ .long 0x11EF6D09 ++ .long 0x12107509 ++ ++ vperm 15,15,15,6 ++ vperm 16,16,16,6 ++ .long 0x7DE02799 ++ .long 0x7E082799 ++ addi 4,4,0x20 ++ b .Lctr32_enc8x_done ++ ++.align 5 ++.Lctr32_enc8x_one: ++ .long 0x11EF7509 ++ ++ vperm 15,15,15,6 ++ .long 0x7DE02799 ++ addi 4,4,0x10 ++ ++.Lctr32_enc8x_done: ++ li 10,79 ++ li 11,95 ++ stvx 6,10,1 ++ addi 10,10,32 ++ stvx 6,11,1 ++ addi 11,11,32 ++ stvx 6,10,1 ++ addi 10,10,32 ++ stvx 6,11,1 ++ addi 11,11,32 ++ stvx 6,10,1 ++ addi 10,10,32 ++ stvx 6,11,1 ++ addi 11,11,32 ++ stvx 6,10,1 ++ addi 10,10,32 ++ stvx 6,11,1 ++ addi 11,11,32 ++ ++ or 12,12,12 ++ lvx 20,10,1 ++ addi 10,10,32 ++ lvx 21,11,1 ++ addi 11,11,32 ++ lvx 22,10,1 ++ addi 10,10,32 ++ lvx 23,11,1 ++ addi 11,11,32 ++ lvx 24,10,1 ++ addi 10,10,32 ++ lvx 25,11,1 ++ addi 11,11,32 ++ lvx 26,10,1 ++ addi 10,10,32 ++ lvx 27,11,1 ++ addi 11,11,32 ++ lvx 28,10,1 ++ addi 10,10,32 ++ lvx 29,11,1 ++ addi 11,11,32 ++ lvx 30,10,1 ++ lvx 31,11,1 ++ ld 26,400(1) ++ ld 27,408(1) ++ ld 28,416(1) ++ ld 29,424(1) ++ ld 30,432(1) ++ ld 31,440(1) ++ addi 1,1,448 ++ blr ++.long 0 ++.byte 0,12,0x04,0,0x80,6,6,0 ++.long 0 ++.size aes_hw_ctr32_encrypt_blocks,.-aes_hw_ctr32_encrypt_blocks ++.globl aes_hw_xts_encrypt ++.type aes_hw_xts_encrypt,@function ++.align 5 ++aes_hw_xts_encrypt: ++.localentry aes_hw_xts_encrypt,0 ++ ++ mr 10,3 ++ li 3,-1 ++ cmpldi 5,16 ++ .long 0x4dc00020 ++ ++ lis 0,0xfff0 ++ li 12,-1 ++ li 11,0 ++ or 0,0,0 ++ ++ vspltisb 9,0x07 ++ lvsl 6,11,11 ++ vspltisb 11,0x0f ++ vxor 6,6,9 ++ ++ li 3,15 ++ lvx 8,0,8 ++ lvsl 5,0,8 ++ lvx 4,3,8 ++ vxor 5,5,11 ++ vperm 8,8,4,5 ++ ++ neg 11,10 ++ lvsr 5,0,11 ++ lvx 2,0,10 ++ addi 10,10,15 ++ vxor 5,5,11 ++ ++ cmpldi 7,0 ++ beq .Lxts_enc_no_key2 ++ ++ lvsr 7,0,7 ++ lwz 9,240(7) ++ srwi 9,9,1 ++ subi 9,9,1 ++ li 3,16 ++ ++ lvx 0,0,7 ++ lvx 1,3,7 ++ addi 3,3,16 ++ vperm 0,1,0,7 ++ vxor 8,8,0 ++ lvx 0,3,7 ++ addi 3,3,16 ++ mtctr 9 ++ ++.Ltweak_xts_enc: ++ vperm 1,0,1,7 ++ .long 0x11080D08 ++ lvx 1,3,7 ++ addi 3,3,16 ++ vperm 0,1,0,7 ++ .long 0x11080508 ++ lvx 0,3,7 ++ addi 3,3,16 ++ bdnz .Ltweak_xts_enc ++ ++ vperm 1,0,1,7 ++ .long 0x11080D08 ++ lvx 1,3,7 ++ vperm 0,1,0,7 ++ .long 0x11080509 ++ ++ li 8,0 ++ b .Lxts_enc ++ ++.Lxts_enc_no_key2: ++ li 3,-16 ++ and 5,5,3 ++ ++ ++.Lxts_enc: ++ lvx 4,0,10 ++ addi 10,10,16 ++ ++ lvsr 7,0,6 ++ lwz 9,240(6) ++ srwi 9,9,1 ++ subi 9,9,1 ++ li 3,16 ++ ++ vslb 10,9,9 ++ vor 10,10,9 ++ vspltisb 11,1 ++ vsldoi 10,10,11,15 ++ ++ cmpldi 5,96 ++ bge _aesp8_xts_encrypt6x ++ ++ andi. 7,5,15 ++ subic 0,5,32 ++ subi 7,7,16 ++ subfe 0,0,0 ++ and 0,0,7 ++ add 10,10,0 ++ ++ lvx 0,0,6 ++ lvx 1,3,6 ++ addi 3,3,16 ++ vperm 2,2,4,5 ++ vperm 0,1,0,7 ++ vxor 2,2,8 ++ vxor 2,2,0 ++ lvx 0,3,6 ++ addi 3,3,16 ++ mtctr 9 ++ b .Loop_xts_enc ++ ++.align 5 ++.Loop_xts_enc: ++ vperm 1,0,1,7 ++ .long 0x10420D08 ++ lvx 1,3,6 ++ addi 3,3,16 ++ vperm 0,1,0,7 ++ .long 0x10420508 ++ lvx 0,3,6 ++ addi 3,3,16 ++ bdnz .Loop_xts_enc ++ ++ vperm 1,0,1,7 ++ .long 0x10420D08 ++ lvx 1,3,6 ++ li 3,16 ++ vperm 0,1,0,7 ++ vxor 0,0,8 ++ .long 0x10620509 ++ ++ vperm 11,3,3,6 ++ ++ .long 0x7D602799 ++ ++ addi 4,4,16 ++ ++ subic. 5,5,16 ++ beq .Lxts_enc_done ++ ++ vor 2,4,4 ++ lvx 4,0,10 ++ addi 10,10,16 ++ lvx 0,0,6 ++ lvx 1,3,6 ++ addi 3,3,16 ++ ++ subic 0,5,32 ++ subfe 0,0,0 ++ and 0,0,7 ++ add 10,10,0 ++ ++ vsrab 11,8,9 ++ vaddubm 8,8,8 ++ vsldoi 11,11,11,15 ++ vand 11,11,10 ++ vxor 8,8,11 ++ ++ vperm 2,2,4,5 ++ vperm 0,1,0,7 ++ vxor 2,2,8 ++ vxor 3,3,0 ++ vxor 2,2,0 ++ lvx 0,3,6 ++ addi 3,3,16 ++ ++ mtctr 9 ++ cmpldi 5,16 ++ bge .Loop_xts_enc ++ ++ vxor 3,3,8 ++ lvsr 5,0,5 ++ vxor 4,4,4 ++ vspltisb 11,-1 ++ vperm 4,4,11,5 ++ vsel 2,2,3,4 ++ ++ subi 11,4,17 ++ subi 4,4,16 ++ mtctr 5 ++ li 5,16 ++.Loop_xts_enc_steal: ++ lbzu 0,1(11) ++ stb 0,16(11) ++ bdnz .Loop_xts_enc_steal ++ ++ mtctr 9 ++ b .Loop_xts_enc ++ ++.Lxts_enc_done: ++ cmpldi 8,0 ++ beq .Lxts_enc_ret ++ ++ vsrab 11,8,9 ++ vaddubm 8,8,8 ++ vsldoi 11,11,11,15 ++ vand 11,11,10 ++ vxor 8,8,11 ++ ++ vperm 8,8,8,6 ++ .long 0x7D004799 ++ ++.Lxts_enc_ret: ++ or 12,12,12 ++ li 3,0 ++ blr ++.long 0 ++.byte 0,12,0x04,0,0x80,6,6,0 ++.long 0 ++.size aes_hw_xts_encrypt,.-aes_hw_xts_encrypt ++ ++.globl aes_hw_xts_decrypt ++.type aes_hw_xts_decrypt,@function ++.align 5 ++aes_hw_xts_decrypt: ++.localentry aes_hw_xts_decrypt,0 ++ ++ mr 10,3 ++ li 3,-1 ++ cmpldi 5,16 ++ .long 0x4dc00020 ++ ++ lis 0,0xfff8 ++ li 12,-1 ++ li 11,0 ++ or 0,0,0 ++ ++ andi. 0,5,15 ++ neg 0,0 ++ andi. 0,0,16 ++ sub 5,5,0 ++ ++ vspltisb 9,0x07 ++ lvsl 6,11,11 ++ vspltisb 11,0x0f ++ vxor 6,6,9 ++ ++ li 3,15 ++ lvx 8,0,8 ++ lvsl 5,0,8 ++ lvx 4,3,8 ++ vxor 5,5,11 ++ vperm 8,8,4,5 ++ ++ neg 11,10 ++ lvsr 5,0,11 ++ lvx 2,0,10 ++ addi 10,10,15 ++ vxor 5,5,11 ++ ++ cmpldi 7,0 ++ beq .Lxts_dec_no_key2 ++ ++ lvsr 7,0,7 ++ lwz 9,240(7) ++ srwi 9,9,1 ++ subi 9,9,1 ++ li 3,16 ++ ++ lvx 0,0,7 ++ lvx 1,3,7 ++ addi 3,3,16 ++ vperm 0,1,0,7 ++ vxor 8,8,0 ++ lvx 0,3,7 ++ addi 3,3,16 ++ mtctr 9 ++ ++.Ltweak_xts_dec: ++ vperm 1,0,1,7 ++ .long 0x11080D08 ++ lvx 1,3,7 ++ addi 3,3,16 ++ vperm 0,1,0,7 ++ .long 0x11080508 ++ lvx 0,3,7 ++ addi 3,3,16 ++ bdnz .Ltweak_xts_dec ++ ++ vperm 1,0,1,7 ++ .long 0x11080D08 ++ lvx 1,3,7 ++ vperm 0,1,0,7 ++ .long 0x11080509 ++ ++ li 8,0 ++ b .Lxts_dec ++ ++.Lxts_dec_no_key2: ++ neg 3,5 ++ andi. 3,3,15 ++ add 5,5,3 ++ ++ ++.Lxts_dec: ++ lvx 4,0,10 ++ addi 10,10,16 ++ ++ lvsr 7,0,6 ++ lwz 9,240(6) ++ srwi 9,9,1 ++ subi 9,9,1 ++ li 3,16 ++ ++ vslb 10,9,9 ++ vor 10,10,9 ++ vspltisb 11,1 ++ vsldoi 10,10,11,15 ++ ++ cmpldi 5,96 ++ bge _aesp8_xts_decrypt6x ++ ++ lvx 0,0,6 ++ lvx 1,3,6 ++ addi 3,3,16 ++ vperm 2,2,4,5 ++ vperm 0,1,0,7 ++ vxor 2,2,8 ++ vxor 2,2,0 ++ lvx 0,3,6 ++ addi 3,3,16 ++ mtctr 9 ++ ++ cmpldi 5,16 ++ blt .Ltail_xts_dec ++ ++ ++.align 5 ++.Loop_xts_dec: ++ vperm 1,0,1,7 ++ .long 0x10420D48 ++ lvx 1,3,6 ++ addi 3,3,16 ++ vperm 0,1,0,7 ++ .long 0x10420548 ++ lvx 0,3,6 ++ addi 3,3,16 ++ bdnz .Loop_xts_dec ++ ++ vperm 1,0,1,7 ++ .long 0x10420D48 ++ lvx 1,3,6 ++ li 3,16 ++ vperm 0,1,0,7 ++ vxor 0,0,8 ++ .long 0x10620549 ++ ++ vperm 11,3,3,6 ++ ++ .long 0x7D602799 ++ ++ addi 4,4,16 ++ ++ subic. 5,5,16 ++ beq .Lxts_dec_done ++ ++ vor 2,4,4 ++ lvx 4,0,10 ++ addi 10,10,16 ++ lvx 0,0,6 ++ lvx 1,3,6 ++ addi 3,3,16 ++ ++ vsrab 11,8,9 ++ vaddubm 8,8,8 ++ vsldoi 11,11,11,15 ++ vand 11,11,10 ++ vxor 8,8,11 ++ ++ vperm 2,2,4,5 ++ vperm 0,1,0,7 ++ vxor 2,2,8 ++ vxor 2,2,0 ++ lvx 0,3,6 ++ addi 3,3,16 ++ ++ mtctr 9 ++ cmpldi 5,16 ++ bge .Loop_xts_dec ++ ++.Ltail_xts_dec: ++ vsrab 11,8,9 ++ vaddubm 12,8,8 ++ vsldoi 11,11,11,15 ++ vand 11,11,10 ++ vxor 12,12,11 ++ ++ subi 10,10,16 ++ add 10,10,5 ++ ++ vxor 2,2,8 ++ vxor 2,2,12 ++ ++.Loop_xts_dec_short: ++ vperm 1,0,1,7 ++ .long 0x10420D48 ++ lvx 1,3,6 ++ addi 3,3,16 ++ vperm 0,1,0,7 ++ .long 0x10420548 ++ lvx 0,3,6 ++ addi 3,3,16 ++ bdnz .Loop_xts_dec_short ++ ++ vperm 1,0,1,7 ++ .long 0x10420D48 ++ lvx 1,3,6 ++ li 3,16 ++ vperm 0,1,0,7 ++ vxor 0,0,12 ++ .long 0x10620549 ++ ++ vperm 11,3,3,6 ++ ++ .long 0x7D602799 ++ ++ ++ vor 2,4,4 ++ lvx 4,0,10 ++ ++ lvx 0,0,6 ++ lvx 1,3,6 ++ addi 3,3,16 ++ vperm 2,2,4,5 ++ vperm 0,1,0,7 ++ ++ lvsr 5,0,5 ++ vxor 4,4,4 ++ vspltisb 11,-1 ++ vperm 4,4,11,5 ++ vsel 2,2,3,4 ++ ++ vxor 0,0,8 ++ vxor 2,2,0 ++ lvx 0,3,6 ++ addi 3,3,16 ++ ++ subi 11,4,1 ++ mtctr 5 ++ li 5,16 ++.Loop_xts_dec_steal: ++ lbzu 0,1(11) ++ stb 0,16(11) ++ bdnz .Loop_xts_dec_steal ++ ++ mtctr 9 ++ b .Loop_xts_dec ++ ++.Lxts_dec_done: ++ cmpldi 8,0 ++ beq .Lxts_dec_ret ++ ++ vsrab 11,8,9 ++ vaddubm 8,8,8 ++ vsldoi 11,11,11,15 ++ vand 11,11,10 ++ vxor 8,8,11 ++ ++ vperm 8,8,8,6 ++ .long 0x7D004799 ++ ++.Lxts_dec_ret: ++ or 12,12,12 ++ li 3,0 ++ blr ++.long 0 ++.byte 0,12,0x04,0,0x80,6,6,0 ++.long 0 ++.size aes_hw_xts_decrypt,.-aes_hw_xts_decrypt ++.align 5 ++_aesp8_xts_encrypt6x: ++ stdu 1,-448(1) ++ mflr 11 ++ li 7,207 ++ li 3,223 ++ std 11,464(1) ++ stvx 20,7,1 ++ addi 7,7,32 ++ stvx 21,3,1 ++ addi 3,3,32 ++ stvx 22,7,1 ++ addi 7,7,32 ++ stvx 23,3,1 ++ addi 3,3,32 ++ stvx 24,7,1 ++ addi 7,7,32 ++ stvx 25,3,1 ++ addi 3,3,32 ++ stvx 26,7,1 ++ addi 7,7,32 ++ stvx 27,3,1 ++ addi 3,3,32 ++ stvx 28,7,1 ++ addi 7,7,32 ++ stvx 29,3,1 ++ addi 3,3,32 ++ stvx 30,7,1 ++ stvx 31,3,1 ++ li 0,-1 ++ stw 12,396(1) ++ li 3,0x10 ++ std 26,400(1) ++ li 26,0x20 ++ std 27,408(1) ++ li 27,0x30 ++ std 28,416(1) ++ li 28,0x40 ++ std 29,424(1) ++ li 29,0x50 ++ std 30,432(1) ++ li 30,0x60 ++ std 31,440(1) ++ li 31,0x70 ++ or 0,0,0 ++ ++ subi 9,9,3 ++ ++ lvx 23,0,6 ++ lvx 30,3,6 ++ addi 6,6,0x20 ++ lvx 31,0,6 ++ vperm 23,30,23,7 ++ addi 7,1,79 ++ mtctr 9 ++ ++.Load_xts_enc_key: ++ vperm 24,31,30,7 ++ lvx 30,3,6 ++ addi 6,6,0x20 ++ stvx 24,0,7 ++ vperm 25,30,31,7 ++ lvx 31,0,6 ++ stvx 25,3,7 ++ addi 7,7,0x20 ++ bdnz .Load_xts_enc_key ++ ++ lvx 26,3,6 ++ vperm 24,31,30,7 ++ lvx 27,26,6 ++ stvx 24,0,7 ++ vperm 25,26,31,7 ++ lvx 28,27,6 ++ stvx 25,3,7 ++ addi 7,1,79 ++ vperm 26,27,26,7 ++ lvx 29,28,6 ++ vperm 27,28,27,7 ++ lvx 30,29,6 ++ vperm 28,29,28,7 ++ lvx 31,30,6 ++ vperm 29,30,29,7 ++ lvx 22,31,6 ++ vperm 30,31,30,7 ++ lvx 24,0,7 ++ vperm 31,22,31,7 ++ lvx 25,3,7 ++ ++ vperm 0,2,4,5 ++ subi 10,10,31 ++ vxor 17,8,23 ++ vsrab 11,8,9 ++ vaddubm 8,8,8 ++ vsldoi 11,11,11,15 ++ vand 11,11,10 ++ vxor 7,0,17 ++ vxor 8,8,11 ++ ++ .long 0x7C235699 ++ vxor 18,8,23 ++ vsrab 11,8,9 ++ vaddubm 8,8,8 ++ vsldoi 11,11,11,15 ++ vperm 1,1,1,6 ++ vand 11,11,10 ++ vxor 12,1,18 ++ vxor 8,8,11 ++ ++ .long 0x7C5A5699 ++ andi. 31,5,15 ++ vxor 19,8,23 ++ vsrab 11,8,9 ++ vaddubm 8,8,8 ++ vsldoi 11,11,11,15 ++ vperm 2,2,2,6 ++ vand 11,11,10 ++ vxor 13,2,19 ++ vxor 8,8,11 ++ ++ .long 0x7C7B5699 ++ sub 5,5,31 ++ vxor 20,8,23 ++ vsrab 11,8,9 ++ vaddubm 8,8,8 ++ vsldoi 11,11,11,15 ++ vperm 3,3,3,6 ++ vand 11,11,10 ++ vxor 14,3,20 ++ vxor 8,8,11 ++ ++ .long 0x7C9C5699 ++ subi 5,5,0x60 ++ vxor 21,8,23 ++ vsrab 11,8,9 ++ vaddubm 8,8,8 ++ vsldoi 11,11,11,15 ++ vperm 4,4,4,6 ++ vand 11,11,10 ++ vxor 15,4,21 ++ vxor 8,8,11 ++ ++ .long 0x7CBD5699 ++ addi 10,10,0x60 ++ vxor 22,8,23 ++ vsrab 11,8,9 ++ vaddubm 8,8,8 ++ vsldoi 11,11,11,15 ++ vperm 5,5,5,6 ++ vand 11,11,10 ++ vxor 16,5,22 ++ vxor 8,8,11 ++ ++ vxor 31,31,23 ++ mtctr 9 ++ b .Loop_xts_enc6x ++ ++.align 5 ++.Loop_xts_enc6x: ++ .long 0x10E7C508 ++ .long 0x118CC508 ++ .long 0x11ADC508 ++ .long 0x11CEC508 ++ .long 0x11EFC508 ++ .long 0x1210C508 ++ lvx 24,26,7 ++ addi 7,7,0x20 ++ ++ .long 0x10E7CD08 ++ .long 0x118CCD08 ++ .long 0x11ADCD08 ++ .long 0x11CECD08 ++ .long 0x11EFCD08 ++ .long 0x1210CD08 ++ lvx 25,3,7 ++ bdnz .Loop_xts_enc6x ++ ++ subic 5,5,96 ++ vxor 0,17,31 ++ .long 0x10E7C508 ++ .long 0x118CC508 ++ vsrab 11,8,9 ++ vxor 17,8,23 ++ vaddubm 8,8,8 ++ .long 0x11ADC508 ++ .long 0x11CEC508 ++ vsldoi 11,11,11,15 ++ .long 0x11EFC508 ++ .long 0x1210C508 ++ ++ subfe. 0,0,0 ++ vand 11,11,10 ++ .long 0x10E7CD08 ++ .long 0x118CCD08 ++ vxor 8,8,11 ++ .long 0x11ADCD08 ++ .long 0x11CECD08 ++ vxor 1,18,31 ++ vsrab 11,8,9 ++ vxor 18,8,23 ++ .long 0x11EFCD08 ++ .long 0x1210CD08 ++ ++ and 0,0,5 ++ vaddubm 8,8,8 ++ vsldoi 11,11,11,15 ++ .long 0x10E7D508 ++ .long 0x118CD508 ++ vand 11,11,10 ++ .long 0x11ADD508 ++ .long 0x11CED508 ++ vxor 8,8,11 ++ .long 0x11EFD508 ++ .long 0x1210D508 ++ ++ add 10,10,0 ++ ++ ++ ++ vxor 2,19,31 ++ vsrab 11,8,9 ++ vxor 19,8,23 ++ vaddubm 8,8,8 ++ .long 0x10E7DD08 ++ .long 0x118CDD08 ++ vsldoi 11,11,11,15 ++ .long 0x11ADDD08 ++ .long 0x11CEDD08 ++ vand 11,11,10 ++ .long 0x11EFDD08 ++ .long 0x1210DD08 ++ ++ addi 7,1,79 ++ vxor 8,8,11 ++ .long 0x10E7E508 ++ .long 0x118CE508 ++ vxor 3,20,31 ++ vsrab 11,8,9 ++ vxor 20,8,23 ++ .long 0x11ADE508 ++ .long 0x11CEE508 ++ vaddubm 8,8,8 ++ vsldoi 11,11,11,15 ++ .long 0x11EFE508 ++ .long 0x1210E508 ++ lvx 24,0,7 ++ vand 11,11,10 ++ ++ .long 0x10E7ED08 ++ .long 0x118CED08 ++ vxor 8,8,11 ++ .long 0x11ADED08 ++ .long 0x11CEED08 ++ vxor 4,21,31 ++ vsrab 11,8,9 ++ vxor 21,8,23 ++ .long 0x11EFED08 ++ .long 0x1210ED08 ++ lvx 25,3,7 ++ vaddubm 8,8,8 ++ vsldoi 11,11,11,15 ++ ++ .long 0x10E7F508 ++ .long 0x118CF508 ++ vand 11,11,10 ++ .long 0x11ADF508 ++ .long 0x11CEF508 ++ vxor 8,8,11 ++ .long 0x11EFF508 ++ .long 0x1210F508 ++ vxor 5,22,31 ++ vsrab 11,8,9 ++ vxor 22,8,23 ++ ++ .long 0x10E70509 ++ .long 0x7C005699 ++ vaddubm 8,8,8 ++ vsldoi 11,11,11,15 ++ .long 0x118C0D09 ++ .long 0x7C235699 ++ .long 0x11AD1509 ++ vperm 0,0,0,6 ++ .long 0x7C5A5699 ++ vand 11,11,10 ++ .long 0x11CE1D09 ++ vperm 1,1,1,6 ++ .long 0x7C7B5699 ++ .long 0x11EF2509 ++ vperm 2,2,2,6 ++ .long 0x7C9C5699 ++ vxor 8,8,11 ++ .long 0x11702D09 ++ ++ vperm 3,3,3,6 ++ .long 0x7CBD5699 ++ addi 10,10,0x60 ++ vperm 4,4,4,6 ++ vperm 5,5,5,6 ++ ++ vperm 7,7,7,6 ++ vperm 12,12,12,6 ++ .long 0x7CE02799 ++ vxor 7,0,17 ++ vperm 13,13,13,6 ++ .long 0x7D832799 ++ vxor 12,1,18 ++ vperm 14,14,14,6 ++ .long 0x7DBA2799 ++ vxor 13,2,19 ++ vperm 15,15,15,6 ++ .long 0x7DDB2799 ++ vxor 14,3,20 ++ vperm 16,11,11,6 ++ .long 0x7DFC2799 ++ vxor 15,4,21 ++ .long 0x7E1D2799 ++ ++ vxor 16,5,22 ++ addi 4,4,0x60 ++ ++ mtctr 9 ++ beq .Loop_xts_enc6x ++ ++ addic. 5,5,0x60 ++ beq .Lxts_enc6x_zero ++ cmpwi 5,0x20 ++ blt .Lxts_enc6x_one ++ nop ++ beq .Lxts_enc6x_two ++ cmpwi 5,0x40 ++ blt .Lxts_enc6x_three ++ nop ++ beq .Lxts_enc6x_four ++ ++.Lxts_enc6x_five: ++ vxor 7,1,17 ++ vxor 12,2,18 ++ vxor 13,3,19 ++ vxor 14,4,20 ++ vxor 15,5,21 ++ ++ bl _aesp8_xts_enc5x ++ ++ vperm 7,7,7,6 ++ vor 17,22,22 ++ vperm 12,12,12,6 ++ .long 0x7CE02799 ++ vperm 13,13,13,6 ++ .long 0x7D832799 ++ vperm 14,14,14,6 ++ .long 0x7DBA2799 ++ vxor 11,15,22 ++ vperm 15,15,15,6 ++ .long 0x7DDB2799 ++ .long 0x7DFC2799 ++ addi 4,4,0x50 ++ bne .Lxts_enc6x_steal ++ b .Lxts_enc6x_done ++ ++.align 4 ++.Lxts_enc6x_four: ++ vxor 7,2,17 ++ vxor 12,3,18 ++ vxor 13,4,19 ++ vxor 14,5,20 ++ vxor 15,15,15 ++ ++ bl _aesp8_xts_enc5x ++ ++ vperm 7,7,7,6 ++ vor 17,21,21 ++ vperm 12,12,12,6 ++ .long 0x7CE02799 ++ vperm 13,13,13,6 ++ .long 0x7D832799 ++ vxor 11,14,21 ++ vperm 14,14,14,6 ++ .long 0x7DBA2799 ++ .long 0x7DDB2799 ++ addi 4,4,0x40 ++ bne .Lxts_enc6x_steal ++ b .Lxts_enc6x_done ++ ++.align 4 ++.Lxts_enc6x_three: ++ vxor 7,3,17 ++ vxor 12,4,18 ++ vxor 13,5,19 ++ vxor 14,14,14 ++ vxor 15,15,15 ++ ++ bl _aesp8_xts_enc5x ++ ++ vperm 7,7,7,6 ++ vor 17,20,20 ++ vperm 12,12,12,6 ++ .long 0x7CE02799 ++ vxor 11,13,20 ++ vperm 13,13,13,6 ++ .long 0x7D832799 ++ .long 0x7DBA2799 ++ addi 4,4,0x30 ++ bne .Lxts_enc6x_steal ++ b .Lxts_enc6x_done ++ ++.align 4 ++.Lxts_enc6x_two: ++ vxor 7,4,17 ++ vxor 12,5,18 ++ vxor 13,13,13 ++ vxor 14,14,14 ++ vxor 15,15,15 ++ ++ bl _aesp8_xts_enc5x ++ ++ vperm 7,7,7,6 ++ vor 17,19,19 ++ vxor 11,12,19 ++ vperm 12,12,12,6 ++ .long 0x7CE02799 ++ .long 0x7D832799 ++ addi 4,4,0x20 ++ bne .Lxts_enc6x_steal ++ b .Lxts_enc6x_done ++ ++.align 4 ++.Lxts_enc6x_one: ++ vxor 7,5,17 ++ nop ++.Loop_xts_enc1x: ++ .long 0x10E7C508 ++ lvx 24,26,7 ++ addi 7,7,0x20 ++ ++ .long 0x10E7CD08 ++ lvx 25,3,7 ++ bdnz .Loop_xts_enc1x ++ ++ add 10,10,31 ++ cmpwi 31,0 ++ .long 0x10E7C508 ++ ++ subi 10,10,16 ++ .long 0x10E7CD08 ++ ++ lvsr 5,0,31 ++ .long 0x10E7D508 ++ ++ .long 0x7C005699 ++ .long 0x10E7DD08 ++ ++ addi 7,1,79 ++ .long 0x10E7E508 ++ lvx 24,0,7 ++ ++ .long 0x10E7ED08 ++ lvx 25,3,7 ++ vxor 17,17,31 ++ ++ vperm 0,0,0,6 ++ .long 0x10E7F508 ++ ++ vperm 0,0,0,5 ++ .long 0x10E78D09 ++ ++ vor 17,18,18 ++ vxor 11,7,18 ++ vperm 7,7,7,6 ++ .long 0x7CE02799 ++ addi 4,4,0x10 ++ bne .Lxts_enc6x_steal ++ b .Lxts_enc6x_done ++ ++.align 4 ++.Lxts_enc6x_zero: ++ cmpwi 31,0 ++ beq .Lxts_enc6x_done ++ ++ add 10,10,31 ++ subi 10,10,16 ++ .long 0x7C005699 ++ lvsr 5,0,31 ++ vperm 0,0,0,6 ++ vperm 0,0,0,5 ++ vxor 11,11,17 ++.Lxts_enc6x_steal: ++ vxor 0,0,17 ++ vxor 7,7,7 ++ vspltisb 12,-1 ++ vperm 7,7,12,5 ++ vsel 7,0,11,7 ++ ++ subi 30,4,17 ++ subi 4,4,16 ++ mtctr 31 ++.Loop_xts_enc6x_steal: ++ lbzu 0,1(30) ++ stb 0,16(30) ++ bdnz .Loop_xts_enc6x_steal ++ ++ li 31,0 ++ mtctr 9 ++ b .Loop_xts_enc1x ++ ++.align 4 ++.Lxts_enc6x_done: ++ cmpldi 8,0 ++ beq .Lxts_enc6x_ret ++ ++ vxor 8,17,23 ++ vperm 8,8,8,6 ++ .long 0x7D004799 ++ ++.Lxts_enc6x_ret: ++ mtlr 11 ++ li 10,79 ++ li 11,95 ++ stvx 9,10,1 ++ addi 10,10,32 ++ stvx 9,11,1 ++ addi 11,11,32 ++ stvx 9,10,1 ++ addi 10,10,32 ++ stvx 9,11,1 ++ addi 11,11,32 ++ stvx 9,10,1 ++ addi 10,10,32 ++ stvx 9,11,1 ++ addi 11,11,32 ++ stvx 9,10,1 ++ addi 10,10,32 ++ stvx 9,11,1 ++ addi 11,11,32 ++ ++ or 12,12,12 ++ lvx 20,10,1 ++ addi 10,10,32 ++ lvx 21,11,1 ++ addi 11,11,32 ++ lvx 22,10,1 ++ addi 10,10,32 ++ lvx 23,11,1 ++ addi 11,11,32 ++ lvx 24,10,1 ++ addi 10,10,32 ++ lvx 25,11,1 ++ addi 11,11,32 ++ lvx 26,10,1 ++ addi 10,10,32 ++ lvx 27,11,1 ++ addi 11,11,32 ++ lvx 28,10,1 ++ addi 10,10,32 ++ lvx 29,11,1 ++ addi 11,11,32 ++ lvx 30,10,1 ++ lvx 31,11,1 ++ ld 26,400(1) ++ ld 27,408(1) ++ ld 28,416(1) ++ ld 29,424(1) ++ ld 30,432(1) ++ ld 31,440(1) ++ addi 1,1,448 ++ blr ++.long 0 ++.byte 0,12,0x04,1,0x80,6,6,0 ++.long 0 ++ ++.align 5 ++_aesp8_xts_enc5x: ++ .long 0x10E7C508 ++ .long 0x118CC508 ++ .long 0x11ADC508 ++ .long 0x11CEC508 ++ .long 0x11EFC508 ++ lvx 24,26,7 ++ addi 7,7,0x20 ++ ++ .long 0x10E7CD08 ++ .long 0x118CCD08 ++ .long 0x11ADCD08 ++ .long 0x11CECD08 ++ .long 0x11EFCD08 ++ lvx 25,3,7 ++ bdnz _aesp8_xts_enc5x ++ ++ add 10,10,31 ++ cmpwi 31,0 ++ .long 0x10E7C508 ++ .long 0x118CC508 ++ .long 0x11ADC508 ++ .long 0x11CEC508 ++ .long 0x11EFC508 ++ ++ subi 10,10,16 ++ .long 0x10E7CD08 ++ .long 0x118CCD08 ++ .long 0x11ADCD08 ++ .long 0x11CECD08 ++ .long 0x11EFCD08 ++ vxor 17,17,31 ++ ++ .long 0x10E7D508 ++ lvsr 5,0,31 ++ .long 0x118CD508 ++ .long 0x11ADD508 ++ .long 0x11CED508 ++ .long 0x11EFD508 ++ vxor 1,18,31 ++ ++ .long 0x10E7DD08 ++ .long 0x7C005699 ++ .long 0x118CDD08 ++ .long 0x11ADDD08 ++ .long 0x11CEDD08 ++ .long 0x11EFDD08 ++ vxor 2,19,31 ++ ++ addi 7,1,79 ++ .long 0x10E7E508 ++ .long 0x118CE508 ++ .long 0x11ADE508 ++ .long 0x11CEE508 ++ .long 0x11EFE508 ++ lvx 24,0,7 ++ vxor 3,20,31 ++ ++ .long 0x10E7ED08 ++ vperm 0,0,0,6 ++ .long 0x118CED08 ++ .long 0x11ADED08 ++ .long 0x11CEED08 ++ .long 0x11EFED08 ++ lvx 25,3,7 ++ vxor 4,21,31 ++ ++ .long 0x10E7F508 ++ vperm 0,0,0,5 ++ .long 0x118CF508 ++ .long 0x11ADF508 ++ .long 0x11CEF508 ++ .long 0x11EFF508 ++ ++ .long 0x10E78D09 ++ .long 0x118C0D09 ++ .long 0x11AD1509 ++ .long 0x11CE1D09 ++ .long 0x11EF2509 ++ blr ++.long 0 ++.byte 0,12,0x14,0,0,0,0,0 ++ ++.align 5 ++_aesp8_xts_decrypt6x: ++ stdu 1,-448(1) ++ mflr 11 ++ li 7,207 ++ li 3,223 ++ std 11,464(1) ++ stvx 20,7,1 ++ addi 7,7,32 ++ stvx 21,3,1 ++ addi 3,3,32 ++ stvx 22,7,1 ++ addi 7,7,32 ++ stvx 23,3,1 ++ addi 3,3,32 ++ stvx 24,7,1 ++ addi 7,7,32 ++ stvx 25,3,1 ++ addi 3,3,32 ++ stvx 26,7,1 ++ addi 7,7,32 ++ stvx 27,3,1 ++ addi 3,3,32 ++ stvx 28,7,1 ++ addi 7,7,32 ++ stvx 29,3,1 ++ addi 3,3,32 ++ stvx 30,7,1 ++ stvx 31,3,1 ++ li 0,-1 ++ stw 12,396(1) ++ li 3,0x10 ++ std 26,400(1) ++ li 26,0x20 ++ std 27,408(1) ++ li 27,0x30 ++ std 28,416(1) ++ li 28,0x40 ++ std 29,424(1) ++ li 29,0x50 ++ std 30,432(1) ++ li 30,0x60 ++ std 31,440(1) ++ li 31,0x70 ++ or 0,0,0 ++ ++ subi 9,9,3 ++ ++ lvx 23,0,6 ++ lvx 30,3,6 ++ addi 6,6,0x20 ++ lvx 31,0,6 ++ vperm 23,30,23,7 ++ addi 7,1,79 ++ mtctr 9 ++ ++.Load_xts_dec_key: ++ vperm 24,31,30,7 ++ lvx 30,3,6 ++ addi 6,6,0x20 ++ stvx 24,0,7 ++ vperm 25,30,31,7 ++ lvx 31,0,6 ++ stvx 25,3,7 ++ addi 7,7,0x20 ++ bdnz .Load_xts_dec_key ++ ++ lvx 26,3,6 ++ vperm 24,31,30,7 ++ lvx 27,26,6 ++ stvx 24,0,7 ++ vperm 25,26,31,7 ++ lvx 28,27,6 ++ stvx 25,3,7 ++ addi 7,1,79 ++ vperm 26,27,26,7 ++ lvx 29,28,6 ++ vperm 27,28,27,7 ++ lvx 30,29,6 ++ vperm 28,29,28,7 ++ lvx 31,30,6 ++ vperm 29,30,29,7 ++ lvx 22,31,6 ++ vperm 30,31,30,7 ++ lvx 24,0,7 ++ vperm 31,22,31,7 ++ lvx 25,3,7 ++ ++ vperm 0,2,4,5 ++ subi 10,10,31 ++ vxor 17,8,23 ++ vsrab 11,8,9 ++ vaddubm 8,8,8 ++ vsldoi 11,11,11,15 ++ vand 11,11,10 ++ vxor 7,0,17 ++ vxor 8,8,11 ++ ++ .long 0x7C235699 ++ vxor 18,8,23 ++ vsrab 11,8,9 ++ vaddubm 8,8,8 ++ vsldoi 11,11,11,15 ++ vperm 1,1,1,6 ++ vand 11,11,10 ++ vxor 12,1,18 ++ vxor 8,8,11 ++ ++ .long 0x7C5A5699 ++ andi. 31,5,15 ++ vxor 19,8,23 ++ vsrab 11,8,9 ++ vaddubm 8,8,8 ++ vsldoi 11,11,11,15 ++ vperm 2,2,2,6 ++ vand 11,11,10 ++ vxor 13,2,19 ++ vxor 8,8,11 ++ ++ .long 0x7C7B5699 ++ sub 5,5,31 ++ vxor 20,8,23 ++ vsrab 11,8,9 ++ vaddubm 8,8,8 ++ vsldoi 11,11,11,15 ++ vperm 3,3,3,6 ++ vand 11,11,10 ++ vxor 14,3,20 ++ vxor 8,8,11 ++ ++ .long 0x7C9C5699 ++ subi 5,5,0x60 ++ vxor 21,8,23 ++ vsrab 11,8,9 ++ vaddubm 8,8,8 ++ vsldoi 11,11,11,15 ++ vperm 4,4,4,6 ++ vand 11,11,10 ++ vxor 15,4,21 ++ vxor 8,8,11 ++ ++ .long 0x7CBD5699 ++ addi 10,10,0x60 ++ vxor 22,8,23 ++ vsrab 11,8,9 ++ vaddubm 8,8,8 ++ vsldoi 11,11,11,15 ++ vperm 5,5,5,6 ++ vand 11,11,10 ++ vxor 16,5,22 ++ vxor 8,8,11 ++ ++ vxor 31,31,23 ++ mtctr 9 ++ b .Loop_xts_dec6x ++ ++.align 5 ++.Loop_xts_dec6x: ++ .long 0x10E7C548 ++ .long 0x118CC548 ++ .long 0x11ADC548 ++ .long 0x11CEC548 ++ .long 0x11EFC548 ++ .long 0x1210C548 ++ lvx 24,26,7 ++ addi 7,7,0x20 ++ ++ .long 0x10E7CD48 ++ .long 0x118CCD48 ++ .long 0x11ADCD48 ++ .long 0x11CECD48 ++ .long 0x11EFCD48 ++ .long 0x1210CD48 ++ lvx 25,3,7 ++ bdnz .Loop_xts_dec6x ++ ++ subic 5,5,96 ++ vxor 0,17,31 ++ .long 0x10E7C548 ++ .long 0x118CC548 ++ vsrab 11,8,9 ++ vxor 17,8,23 ++ vaddubm 8,8,8 ++ .long 0x11ADC548 ++ .long 0x11CEC548 ++ vsldoi 11,11,11,15 ++ .long 0x11EFC548 ++ .long 0x1210C548 ++ ++ subfe. 0,0,0 ++ vand 11,11,10 ++ .long 0x10E7CD48 ++ .long 0x118CCD48 ++ vxor 8,8,11 ++ .long 0x11ADCD48 ++ .long 0x11CECD48 ++ vxor 1,18,31 ++ vsrab 11,8,9 ++ vxor 18,8,23 ++ .long 0x11EFCD48 ++ .long 0x1210CD48 ++ ++ and 0,0,5 ++ vaddubm 8,8,8 ++ vsldoi 11,11,11,15 ++ .long 0x10E7D548 ++ .long 0x118CD548 ++ vand 11,11,10 ++ .long 0x11ADD548 ++ .long 0x11CED548 ++ vxor 8,8,11 ++ .long 0x11EFD548 ++ .long 0x1210D548 ++ ++ add 10,10,0 ++ ++ ++ ++ vxor 2,19,31 ++ vsrab 11,8,9 ++ vxor 19,8,23 ++ vaddubm 8,8,8 ++ .long 0x10E7DD48 ++ .long 0x118CDD48 ++ vsldoi 11,11,11,15 ++ .long 0x11ADDD48 ++ .long 0x11CEDD48 ++ vand 11,11,10 ++ .long 0x11EFDD48 ++ .long 0x1210DD48 ++ ++ addi 7,1,79 ++ vxor 8,8,11 ++ .long 0x10E7E548 ++ .long 0x118CE548 ++ vxor 3,20,31 ++ vsrab 11,8,9 ++ vxor 20,8,23 ++ .long 0x11ADE548 ++ .long 0x11CEE548 ++ vaddubm 8,8,8 ++ vsldoi 11,11,11,15 ++ .long 0x11EFE548 ++ .long 0x1210E548 ++ lvx 24,0,7 ++ vand 11,11,10 ++ ++ .long 0x10E7ED48 ++ .long 0x118CED48 ++ vxor 8,8,11 ++ .long 0x11ADED48 ++ .long 0x11CEED48 ++ vxor 4,21,31 ++ vsrab 11,8,9 ++ vxor 21,8,23 ++ .long 0x11EFED48 ++ .long 0x1210ED48 ++ lvx 25,3,7 ++ vaddubm 8,8,8 ++ vsldoi 11,11,11,15 ++ ++ .long 0x10E7F548 ++ .long 0x118CF548 ++ vand 11,11,10 ++ .long 0x11ADF548 ++ .long 0x11CEF548 ++ vxor 8,8,11 ++ .long 0x11EFF548 ++ .long 0x1210F548 ++ vxor 5,22,31 ++ vsrab 11,8,9 ++ vxor 22,8,23 ++ ++ .long 0x10E70549 ++ .long 0x7C005699 ++ vaddubm 8,8,8 ++ vsldoi 11,11,11,15 ++ .long 0x118C0D49 ++ .long 0x7C235699 ++ .long 0x11AD1549 ++ vperm 0,0,0,6 ++ .long 0x7C5A5699 ++ vand 11,11,10 ++ .long 0x11CE1D49 ++ vperm 1,1,1,6 ++ .long 0x7C7B5699 ++ .long 0x11EF2549 ++ vperm 2,2,2,6 ++ .long 0x7C9C5699 ++ vxor 8,8,11 ++ .long 0x12102D49 ++ vperm 3,3,3,6 ++ .long 0x7CBD5699 ++ addi 10,10,0x60 ++ vperm 4,4,4,6 ++ vperm 5,5,5,6 ++ ++ vperm 7,7,7,6 ++ vperm 12,12,12,6 ++ .long 0x7CE02799 ++ vxor 7,0,17 ++ vperm 13,13,13,6 ++ .long 0x7D832799 ++ vxor 12,1,18 ++ vperm 14,14,14,6 ++ .long 0x7DBA2799 ++ vxor 13,2,19 ++ vperm 15,15,15,6 ++ .long 0x7DDB2799 ++ vxor 14,3,20 ++ vperm 16,16,16,6 ++ .long 0x7DFC2799 ++ vxor 15,4,21 ++ .long 0x7E1D2799 ++ vxor 16,5,22 ++ addi 4,4,0x60 ++ ++ mtctr 9 ++ beq .Loop_xts_dec6x ++ ++ addic. 5,5,0x60 ++ beq .Lxts_dec6x_zero ++ cmpwi 5,0x20 ++ blt .Lxts_dec6x_one ++ nop ++ beq .Lxts_dec6x_two ++ cmpwi 5,0x40 ++ blt .Lxts_dec6x_three ++ nop ++ beq .Lxts_dec6x_four ++ ++.Lxts_dec6x_five: ++ vxor 7,1,17 ++ vxor 12,2,18 ++ vxor 13,3,19 ++ vxor 14,4,20 ++ vxor 15,5,21 ++ ++ bl _aesp8_xts_dec5x ++ ++ vperm 7,7,7,6 ++ vor 17,22,22 ++ vxor 18,8,23 ++ vperm 12,12,12,6 ++ .long 0x7CE02799 ++ vxor 7,0,18 ++ vperm 13,13,13,6 ++ .long 0x7D832799 ++ vperm 14,14,14,6 ++ .long 0x7DBA2799 ++ vperm 15,15,15,6 ++ .long 0x7DDB2799 ++ .long 0x7DFC2799 ++ addi 4,4,0x50 ++ bne .Lxts_dec6x_steal ++ b .Lxts_dec6x_done ++ ++.align 4 ++.Lxts_dec6x_four: ++ vxor 7,2,17 ++ vxor 12,3,18 ++ vxor 13,4,19 ++ vxor 14,5,20 ++ vxor 15,15,15 ++ ++ bl _aesp8_xts_dec5x ++ ++ vperm 7,7,7,6 ++ vor 17,21,21 ++ vor 18,22,22 ++ vperm 12,12,12,6 ++ .long 0x7CE02799 ++ vxor 7,0,22 ++ vperm 13,13,13,6 ++ .long 0x7D832799 ++ vperm 14,14,14,6 ++ .long 0x7DBA2799 ++ .long 0x7DDB2799 ++ addi 4,4,0x40 ++ bne .Lxts_dec6x_steal ++ b .Lxts_dec6x_done ++ ++.align 4 ++.Lxts_dec6x_three: ++ vxor 7,3,17 ++ vxor 12,4,18 ++ vxor 13,5,19 ++ vxor 14,14,14 ++ vxor 15,15,15 ++ ++ bl _aesp8_xts_dec5x ++ ++ vperm 7,7,7,6 ++ vor 17,20,20 ++ vor 18,21,21 ++ vperm 12,12,12,6 ++ .long 0x7CE02799 ++ vxor 7,0,21 ++ vperm 13,13,13,6 ++ .long 0x7D832799 ++ .long 0x7DBA2799 ++ addi 4,4,0x30 ++ bne .Lxts_dec6x_steal ++ b .Lxts_dec6x_done ++ ++.align 4 ++.Lxts_dec6x_two: ++ vxor 7,4,17 ++ vxor 12,5,18 ++ vxor 13,13,13 ++ vxor 14,14,14 ++ vxor 15,15,15 ++ ++ bl _aesp8_xts_dec5x ++ ++ vperm 7,7,7,6 ++ vor 17,19,19 ++ vor 18,20,20 ++ vperm 12,12,12,6 ++ .long 0x7CE02799 ++ vxor 7,0,20 ++ .long 0x7D832799 ++ addi 4,4,0x20 ++ bne .Lxts_dec6x_steal ++ b .Lxts_dec6x_done ++ ++.align 4 ++.Lxts_dec6x_one: ++ vxor 7,5,17 ++ nop ++.Loop_xts_dec1x: ++ .long 0x10E7C548 ++ lvx 24,26,7 ++ addi 7,7,0x20 ++ ++ .long 0x10E7CD48 ++ lvx 25,3,7 ++ bdnz .Loop_xts_dec1x ++ ++ subi 0,31,1 ++ .long 0x10E7C548 ++ ++ andi. 0,0,16 ++ cmpwi 31,0 ++ .long 0x10E7CD48 ++ ++ sub 10,10,0 ++ .long 0x10E7D548 ++ ++ .long 0x7C005699 ++ .long 0x10E7DD48 ++ ++ addi 7,1,79 ++ .long 0x10E7E548 ++ lvx 24,0,7 ++ ++ .long 0x10E7ED48 ++ lvx 25,3,7 ++ vxor 17,17,31 ++ ++ vperm 0,0,0,6 ++ .long 0x10E7F548 ++ ++ mtctr 9 ++ .long 0x10E78D49 ++ ++ vor 17,18,18 ++ vor 18,19,19 ++ vperm 7,7,7,6 ++ .long 0x7CE02799 ++ addi 4,4,0x10 ++ vxor 7,0,19 ++ bne .Lxts_dec6x_steal ++ b .Lxts_dec6x_done ++ ++.align 4 ++.Lxts_dec6x_zero: ++ cmpwi 31,0 ++ beq .Lxts_dec6x_done ++ ++ .long 0x7C005699 ++ vperm 0,0,0,6 ++ vxor 7,0,18 ++.Lxts_dec6x_steal: ++ .long 0x10E7C548 ++ lvx 24,26,7 ++ addi 7,7,0x20 ++ ++ .long 0x10E7CD48 ++ lvx 25,3,7 ++ bdnz .Lxts_dec6x_steal ++ ++ add 10,10,31 ++ .long 0x10E7C548 ++ ++ cmpwi 31,0 ++ .long 0x10E7CD48 ++ ++ .long 0x7C005699 ++ .long 0x10E7D548 ++ ++ lvsr 5,0,31 ++ .long 0x10E7DD48 ++ ++ addi 7,1,79 ++ .long 0x10E7E548 ++ lvx 24,0,7 ++ ++ .long 0x10E7ED48 ++ lvx 25,3,7 ++ vxor 18,18,31 ++ ++ vperm 0,0,0,6 ++ .long 0x10E7F548 ++ ++ vperm 0,0,0,5 ++ .long 0x11679549 ++ ++ vperm 7,11,11,6 ++ .long 0x7CE02799 ++ ++ ++ vxor 7,7,7 ++ vspltisb 12,-1 ++ vperm 7,7,12,5 ++ vsel 7,0,11,7 ++ vxor 7,7,17 ++ ++ subi 30,4,1 ++ mtctr 31 ++.Loop_xts_dec6x_steal: ++ lbzu 0,1(30) ++ stb 0,16(30) ++ bdnz .Loop_xts_dec6x_steal ++ ++ li 31,0 ++ mtctr 9 ++ b .Loop_xts_dec1x ++ ++.align 4 ++.Lxts_dec6x_done: ++ cmpldi 8,0 ++ beq .Lxts_dec6x_ret ++ ++ vxor 8,17,23 ++ vperm 8,8,8,6 ++ .long 0x7D004799 ++ ++.Lxts_dec6x_ret: ++ mtlr 11 ++ li 10,79 ++ li 11,95 ++ stvx 9,10,1 ++ addi 10,10,32 ++ stvx 9,11,1 ++ addi 11,11,32 ++ stvx 9,10,1 ++ addi 10,10,32 ++ stvx 9,11,1 ++ addi 11,11,32 ++ stvx 9,10,1 ++ addi 10,10,32 ++ stvx 9,11,1 ++ addi 11,11,32 ++ stvx 9,10,1 ++ addi 10,10,32 ++ stvx 9,11,1 ++ addi 11,11,32 ++ ++ or 12,12,12 ++ lvx 20,10,1 ++ addi 10,10,32 ++ lvx 21,11,1 ++ addi 11,11,32 ++ lvx 22,10,1 ++ addi 10,10,32 ++ lvx 23,11,1 ++ addi 11,11,32 ++ lvx 24,10,1 ++ addi 10,10,32 ++ lvx 25,11,1 ++ addi 11,11,32 ++ lvx 26,10,1 ++ addi 10,10,32 ++ lvx 27,11,1 ++ addi 11,11,32 ++ lvx 28,10,1 ++ addi 10,10,32 ++ lvx 29,11,1 ++ addi 11,11,32 ++ lvx 30,10,1 ++ lvx 31,11,1 ++ ld 26,400(1) ++ ld 27,408(1) ++ ld 28,416(1) ++ ld 29,424(1) ++ ld 30,432(1) ++ ld 31,440(1) ++ addi 1,1,448 ++ blr ++.long 0 ++.byte 0,12,0x04,1,0x80,6,6,0 ++.long 0 ++ ++.align 5 ++_aesp8_xts_dec5x: ++ .long 0x10E7C548 ++ .long 0x118CC548 ++ .long 0x11ADC548 ++ .long 0x11CEC548 ++ .long 0x11EFC548 ++ lvx 24,26,7 ++ addi 7,7,0x20 ++ ++ .long 0x10E7CD48 ++ .long 0x118CCD48 ++ .long 0x11ADCD48 ++ .long 0x11CECD48 ++ .long 0x11EFCD48 ++ lvx 25,3,7 ++ bdnz _aesp8_xts_dec5x ++ ++ subi 0,31,1 ++ .long 0x10E7C548 ++ .long 0x118CC548 ++ .long 0x11ADC548 ++ .long 0x11CEC548 ++ .long 0x11EFC548 ++ ++ andi. 0,0,16 ++ cmpwi 31,0 ++ .long 0x10E7CD48 ++ .long 0x118CCD48 ++ .long 0x11ADCD48 ++ .long 0x11CECD48 ++ .long 0x11EFCD48 ++ vxor 17,17,31 ++ ++ sub 10,10,0 ++ .long 0x10E7D548 ++ .long 0x118CD548 ++ .long 0x11ADD548 ++ .long 0x11CED548 ++ .long 0x11EFD548 ++ vxor 1,18,31 ++ ++ .long 0x10E7DD48 ++ .long 0x7C005699 ++ .long 0x118CDD48 ++ .long 0x11ADDD48 ++ .long 0x11CEDD48 ++ .long 0x11EFDD48 ++ vxor 2,19,31 ++ ++ addi 7,1,79 ++ .long 0x10E7E548 ++ .long 0x118CE548 ++ .long 0x11ADE548 ++ .long 0x11CEE548 ++ .long 0x11EFE548 ++ lvx 24,0,7 ++ vxor 3,20,31 ++ ++ .long 0x10E7ED48 ++ vperm 0,0,0,6 ++ .long 0x118CED48 ++ .long 0x11ADED48 ++ .long 0x11CEED48 ++ .long 0x11EFED48 ++ lvx 25,3,7 ++ vxor 4,21,31 ++ ++ .long 0x10E7F548 ++ .long 0x118CF548 ++ .long 0x11ADF548 ++ .long 0x11CEF548 ++ .long 0x11EFF548 ++ ++ .long 0x10E78D49 ++ .long 0x118C0D49 ++ .long 0x11AD1549 ++ .long 0x11CE1D49 ++ .long 0x11EF2549 ++ mtctr 9 ++ blr ++.long 0 ++.byte 0,12,0x14,0,0,0,0,0 ++#endif // !OPENSSL_NO_ASM && __powerpc64__ && __ELF__ ++#if defined(__ELF__) ++// See https://www.airs.com/blog/archives/518. ++.section .note.GNU-stack,"",%progbits ++#endif +Index: chromium-122.0.6261.128/third_party/boringssl/linux-ppc64le/crypto/fipsmodule/ghashp8-ppc-linux.S +=================================================================== +--- /dev/null ++++ chromium-122.0.6261.128/third_party/boringssl/linux-ppc64le/crypto/fipsmodule/ghashp8-ppc-linux.S +@@ -0,0 +1,590 @@ ++// This file is generated from a similarly-named Perl script in the BoringSSL ++// source tree. Do not edit by hand. ++ ++#if defined(__has_feature) ++#if __has_feature(memory_sanitizer) && !defined(OPENSSL_NO_ASM) ++#define OPENSSL_NO_ASM ++#endif ++#endif ++ ++#if !defined(OPENSSL_NO_ASM) && defined(__powerpc64__) && defined(__ELF__) ++.machine "any" ++ ++.abiversion 2 ++.text ++ ++.globl gcm_init_p8 ++.type gcm_init_p8,@function ++.align 5 ++gcm_init_p8: ++.localentry gcm_init_p8,0 ++ ++ li 0,-4096 ++ li 8,0x10 ++ li 12,-1 ++ li 9,0x20 ++ or 0,0,0 ++ li 10,0x30 ++ .long 0x7D202699 ++ ++ vspltisb 8,-16 ++ vspltisb 5,1 ++ vaddubm 8,8,8 ++ vxor 4,4,4 ++ vor 8,8,5 ++ vsldoi 8,8,4,15 ++ vsldoi 6,4,5,1 ++ vaddubm 8,8,8 ++ vspltisb 7,7 ++ vor 8,8,6 ++ vspltb 6,9,0 ++ vsl 9,9,5 ++ vsrab 6,6,7 ++ vand 6,6,8 ++ vxor 3,9,6 ++ ++ vsldoi 9,3,3,8 ++ vsldoi 8,4,8,8 ++ vsldoi 11,4,9,8 ++ vsldoi 10,9,4,8 ++ ++ .long 0x7D001F99 ++ .long 0x7D681F99 ++ li 8,0x40 ++ .long 0x7D291F99 ++ li 9,0x50 ++ .long 0x7D4A1F99 ++ li 10,0x60 ++ ++ .long 0x10035CC8 ++ .long 0x10234CC8 ++ .long 0x104354C8 ++ ++ .long 0x10E044C8 ++ ++ vsldoi 5,1,4,8 ++ vsldoi 6,4,1,8 ++ vxor 0,0,5 ++ vxor 2,2,6 ++ ++ vsldoi 0,0,0,8 ++ vxor 0,0,7 ++ ++ vsldoi 6,0,0,8 ++ .long 0x100044C8 ++ vxor 6,6,2 ++ vxor 16,0,6 ++ ++ vsldoi 17,16,16,8 ++ vsldoi 19,4,17,8 ++ vsldoi 18,17,4,8 ++ ++ .long 0x7E681F99 ++ li 8,0x70 ++ .long 0x7E291F99 ++ li 9,0x80 ++ .long 0x7E4A1F99 ++ li 10,0x90 ++ .long 0x10039CC8 ++ .long 0x11B09CC8 ++ .long 0x10238CC8 ++ .long 0x11D08CC8 ++ .long 0x104394C8 ++ .long 0x11F094C8 ++ ++ .long 0x10E044C8 ++ .long 0x114D44C8 ++ ++ vsldoi 5,1,4,8 ++ vsldoi 6,4,1,8 ++ vsldoi 11,14,4,8 ++ vsldoi 9,4,14,8 ++ vxor 0,0,5 ++ vxor 2,2,6 ++ vxor 13,13,11 ++ vxor 15,15,9 ++ ++ vsldoi 0,0,0,8 ++ vsldoi 13,13,13,8 ++ vxor 0,0,7 ++ vxor 13,13,10 ++ ++ vsldoi 6,0,0,8 ++ vsldoi 9,13,13,8 ++ .long 0x100044C8 ++ .long 0x11AD44C8 ++ vxor 6,6,2 ++ vxor 9,9,15 ++ vxor 0,0,6 ++ vxor 13,13,9 ++ ++ vsldoi 9,0,0,8 ++ vsldoi 17,13,13,8 ++ vsldoi 11,4,9,8 ++ vsldoi 10,9,4,8 ++ vsldoi 19,4,17,8 ++ vsldoi 18,17,4,8 ++ ++ .long 0x7D681F99 ++ li 8,0xa0 ++ .long 0x7D291F99 ++ li 9,0xb0 ++ .long 0x7D4A1F99 ++ li 10,0xc0 ++ .long 0x7E681F99 ++ .long 0x7E291F99 ++ .long 0x7E4A1F99 ++ ++ or 12,12,12 ++ blr ++.long 0 ++.byte 0,12,0x14,0,0,0,2,0 ++.long 0 ++.size gcm_init_p8,.-gcm_init_p8 ++.globl gcm_gmult_p8 ++.type gcm_gmult_p8,@function ++.align 5 ++gcm_gmult_p8: ++.localentry gcm_gmult_p8,0 ++ ++ lis 0,0xfff8 ++ li 8,0x10 ++ li 12,-1 ++ li 9,0x20 ++ or 0,0,0 ++ li 10,0x30 ++ .long 0x7C601E99 ++ ++ .long 0x7D682699 ++ lvsl 12,0,0 ++ .long 0x7D292699 ++ vspltisb 5,0x07 ++ .long 0x7D4A2699 ++ vxor 12,12,5 ++ .long 0x7D002699 ++ vperm 3,3,3,12 ++ vxor 4,4,4 ++ ++ .long 0x10035CC8 ++ .long 0x10234CC8 ++ .long 0x104354C8 ++ ++ .long 0x10E044C8 ++ ++ vsldoi 5,1,4,8 ++ vsldoi 6,4,1,8 ++ vxor 0,0,5 ++ vxor 2,2,6 ++ ++ vsldoi 0,0,0,8 ++ vxor 0,0,7 ++ ++ vsldoi 6,0,0,8 ++ .long 0x100044C8 ++ vxor 6,6,2 ++ vxor 0,0,6 ++ ++ vperm 0,0,0,12 ++ .long 0x7C001F99 ++ ++ or 12,12,12 ++ blr ++.long 0 ++.byte 0,12,0x14,0,0,0,2,0 ++.long 0 ++.size gcm_gmult_p8,.-gcm_gmult_p8 ++ ++.globl gcm_ghash_p8 ++.type gcm_ghash_p8,@function ++.align 5 ++gcm_ghash_p8: ++.localentry gcm_ghash_p8,0 ++ ++ li 0,-4096 ++ li 8,0x10 ++ li 12,-1 ++ li 9,0x20 ++ or 0,0,0 ++ li 10,0x30 ++ .long 0x7C001E99 ++ ++ .long 0x7D682699 ++ li 8,0x40 ++ lvsl 12,0,0 ++ .long 0x7D292699 ++ li 9,0x50 ++ vspltisb 5,0x07 ++ .long 0x7D4A2699 ++ li 10,0x60 ++ vxor 12,12,5 ++ .long 0x7D002699 ++ vperm 0,0,0,12 ++ vxor 4,4,4 ++ ++ cmpldi 6,64 ++ bge .Lgcm_ghash_p8_4x ++ ++ .long 0x7C602E99 ++ addi 5,5,16 ++ subic. 6,6,16 ++ vperm 3,3,3,12 ++ vxor 3,3,0 ++ beq .Lshort ++ ++ .long 0x7E682699 ++ li 8,16 ++ .long 0x7E292699 ++ add 9,5,6 ++ .long 0x7E4A2699 ++ ++ ++.align 5 ++.Loop_2x: ++ .long 0x7E002E99 ++ vperm 16,16,16,12 ++ ++ subic 6,6,32 ++ .long 0x10039CC8 ++ .long 0x11B05CC8 ++ subfe 0,0,0 ++ .long 0x10238CC8 ++ .long 0x11D04CC8 ++ and 0,0,6 ++ .long 0x104394C8 ++ .long 0x11F054C8 ++ add 5,5,0 ++ ++ vxor 0,0,13 ++ vxor 1,1,14 ++ ++ .long 0x10E044C8 ++ ++ vsldoi 5,1,4,8 ++ vsldoi 6,4,1,8 ++ vxor 2,2,15 ++ vxor 0,0,5 ++ vxor 2,2,6 ++ ++ vsldoi 0,0,0,8 ++ vxor 0,0,7 ++ .long 0x7C682E99 ++ addi 5,5,32 ++ ++ vsldoi 6,0,0,8 ++ .long 0x100044C8 ++ vperm 3,3,3,12 ++ vxor 6,6,2 ++ vxor 3,3,6 ++ vxor 3,3,0 ++ cmpld 9,5 ++ bgt .Loop_2x ++ ++ cmplwi 6,0 ++ bne .Leven ++ ++.Lshort: ++ .long 0x10035CC8 ++ .long 0x10234CC8 ++ .long 0x104354C8 ++ ++ .long 0x10E044C8 ++ ++ vsldoi 5,1,4,8 ++ vsldoi 6,4,1,8 ++ vxor 0,0,5 ++ vxor 2,2,6 ++ ++ vsldoi 0,0,0,8 ++ vxor 0,0,7 ++ ++ vsldoi 6,0,0,8 ++ .long 0x100044C8 ++ vxor 6,6,2 ++ ++.Leven: ++ vxor 0,0,6 ++ vperm 0,0,0,12 ++ .long 0x7C001F99 ++ ++ or 12,12,12 ++ blr ++.long 0 ++.byte 0,12,0x14,0,0,0,4,0 ++.long 0 ++.align 5 ++.gcm_ghash_p8_4x: ++.Lgcm_ghash_p8_4x: ++ stdu 1,-256(1) ++ li 10,63 ++ li 11,79 ++ stvx 20,10,1 ++ addi 10,10,32 ++ stvx 21,11,1 ++ addi 11,11,32 ++ stvx 22,10,1 ++ addi 10,10,32 ++ stvx 23,11,1 ++ addi 11,11,32 ++ stvx 24,10,1 ++ addi 10,10,32 ++ stvx 25,11,1 ++ addi 11,11,32 ++ stvx 26,10,1 ++ addi 10,10,32 ++ stvx 27,11,1 ++ addi 11,11,32 ++ stvx 28,10,1 ++ addi 10,10,32 ++ stvx 29,11,1 ++ addi 11,11,32 ++ stvx 30,10,1 ++ li 10,0x60 ++ stvx 31,11,1 ++ li 0,-1 ++ stw 12,252(1) ++ or 0,0,0 ++ ++ lvsl 5,0,8 ++ ++ li 8,0x70 ++ .long 0x7E292699 ++ li 9,0x80 ++ vspltisb 6,8 ++ ++ li 10,0x90 ++ .long 0x7EE82699 ++ li 8,0xa0 ++ .long 0x7F092699 ++ li 9,0xb0 ++ .long 0x7F2A2699 ++ li 10,0xc0 ++ .long 0x7FA82699 ++ li 8,0x10 ++ .long 0x7FC92699 ++ li 9,0x20 ++ .long 0x7FEA2699 ++ li 10,0x30 ++ ++ vsldoi 7,4,6,8 ++ vaddubm 18,5,7 ++ vaddubm 19,6,18 ++ ++ srdi 6,6,4 ++ ++ .long 0x7C602E99 ++ .long 0x7E082E99 ++ subic. 6,6,8 ++ .long 0x7EC92E99 ++ .long 0x7F8A2E99 ++ addi 5,5,0x40 ++ vperm 3,3,3,12 ++ vperm 16,16,16,12 ++ vperm 22,22,22,12 ++ vperm 28,28,28,12 ++ ++ vxor 2,3,0 ++ ++ .long 0x11B0BCC8 ++ .long 0x11D0C4C8 ++ .long 0x11F0CCC8 ++ ++ vperm 11,17,9,18 ++ vperm 5,22,28,19 ++ vperm 10,17,9,19 ++ vperm 6,22,28,18 ++ .long 0x12B68CC8 ++ .long 0x12855CC8 ++ .long 0x137C4CC8 ++ .long 0x134654C8 ++ ++ vxor 21,21,14 ++ vxor 20,20,13 ++ vxor 27,27,21 ++ vxor 26,26,15 ++ ++ blt .Ltail_4x ++ ++.Loop_4x: ++ .long 0x7C602E99 ++ .long 0x7E082E99 ++ subic. 6,6,4 ++ .long 0x7EC92E99 ++ .long 0x7F8A2E99 ++ addi 5,5,0x40 ++ vperm 16,16,16,12 ++ vperm 22,22,22,12 ++ vperm 28,28,28,12 ++ vperm 3,3,3,12 ++ ++ .long 0x1002ECC8 ++ .long 0x1022F4C8 ++ .long 0x1042FCC8 ++ .long 0x11B0BCC8 ++ .long 0x11D0C4C8 ++ .long 0x11F0CCC8 ++ ++ vxor 0,0,20 ++ vxor 1,1,27 ++ vxor 2,2,26 ++ vperm 5,22,28,19 ++ vperm 6,22,28,18 ++ ++ .long 0x10E044C8 ++ .long 0x12855CC8 ++ .long 0x134654C8 ++ ++ vsldoi 5,1,4,8 ++ vsldoi 6,4,1,8 ++ vxor 0,0,5 ++ vxor 2,2,6 ++ ++ vsldoi 0,0,0,8 ++ vxor 0,0,7 ++ ++ vsldoi 6,0,0,8 ++ .long 0x12B68CC8 ++ .long 0x137C4CC8 ++ .long 0x100044C8 ++ ++ vxor 20,20,13 ++ vxor 26,26,15 ++ vxor 2,2,3 ++ vxor 21,21,14 ++ vxor 2,2,6 ++ vxor 27,27,21 ++ vxor 2,2,0 ++ bge .Loop_4x ++ ++.Ltail_4x: ++ .long 0x1002ECC8 ++ .long 0x1022F4C8 ++ .long 0x1042FCC8 ++ ++ vxor 0,0,20 ++ vxor 1,1,27 ++ ++ .long 0x10E044C8 ++ ++ vsldoi 5,1,4,8 ++ vsldoi 6,4,1,8 ++ vxor 2,2,26 ++ vxor 0,0,5 ++ vxor 2,2,6 ++ ++ vsldoi 0,0,0,8 ++ vxor 0,0,7 ++ ++ vsldoi 6,0,0,8 ++ .long 0x100044C8 ++ vxor 6,6,2 ++ vxor 0,0,6 ++ ++ addic. 6,6,4 ++ beq .Ldone_4x ++ ++ .long 0x7C602E99 ++ cmpldi 6,2 ++ li 6,-4 ++ blt .Lone ++ .long 0x7E082E99 ++ beq .Ltwo ++ ++.Lthree: ++ .long 0x7EC92E99 ++ vperm 3,3,3,12 ++ vperm 16,16,16,12 ++ vperm 22,22,22,12 ++ ++ vxor 2,3,0 ++ vor 29,23,23 ++ vor 30, 24, 24 ++ vor 31,25,25 ++ ++ vperm 5,16,22,19 ++ vperm 6,16,22,18 ++ .long 0x12B08CC8 ++ .long 0x13764CC8 ++ .long 0x12855CC8 ++ .long 0x134654C8 ++ ++ vxor 27,27,21 ++ b .Ltail_4x ++ ++.align 4 ++.Ltwo: ++ vperm 3,3,3,12 ++ vperm 16,16,16,12 ++ ++ vxor 2,3,0 ++ vperm 5,4,16,19 ++ vperm 6,4,16,18 ++ ++ vsldoi 29,4,17,8 ++ vor 30, 17, 17 ++ vsldoi 31,17,4,8 ++ ++ .long 0x12855CC8 ++ .long 0x13704CC8 ++ .long 0x134654C8 ++ ++ b .Ltail_4x ++ ++.align 4 ++.Lone: ++ vperm 3,3,3,12 ++ ++ vsldoi 29,4,9,8 ++ vor 30, 9, 9 ++ vsldoi 31,9,4,8 ++ ++ vxor 2,3,0 ++ vxor 20,20,20 ++ vxor 27,27,27 ++ vxor 26,26,26 ++ ++ b .Ltail_4x ++ ++.Ldone_4x: ++ vperm 0,0,0,12 ++ .long 0x7C001F99 ++ ++ li 10,63 ++ li 11,79 ++ or 12,12,12 ++ lvx 20,10,1 ++ addi 10,10,32 ++ lvx 21,11,1 ++ addi 11,11,32 ++ lvx 22,10,1 ++ addi 10,10,32 ++ lvx 23,11,1 ++ addi 11,11,32 ++ lvx 24,10,1 ++ addi 10,10,32 ++ lvx 25,11,1 ++ addi 11,11,32 ++ lvx 26,10,1 ++ addi 10,10,32 ++ lvx 27,11,1 ++ addi 11,11,32 ++ lvx 28,10,1 ++ addi 10,10,32 ++ lvx 29,11,1 ++ addi 11,11,32 ++ lvx 30,10,1 ++ lvx 31,11,1 ++ addi 1,1,256 ++ blr ++.long 0 ++.byte 0,12,0x04,0,0x80,0,4,0 ++.long 0 ++.size gcm_ghash_p8,.-gcm_ghash_p8 ++ ++.byte 71,72,65,83,72,32,102,111,114,32,80,111,119,101,114,73,83,65,32,50,46,48,55,44,32,67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103,62,0 ++.align 2 ++.align 2 ++#endif // !OPENSSL_NO_ASM && __powerpc64__ && __ELF__ ++#if defined(__ELF__) ++// See https://www.airs.com/blog/archives/518. ++.section .note.GNU-stack,"",%progbits ++#endif +Index: chromium-122.0.6261.128/third_party/boringssl/linux-ppc64le/crypto/test/trampoline-ppc-linux.S +=================================================================== +--- /dev/null ++++ chromium-122.0.6261.128/third_party/boringssl/linux-ppc64le/crypto/test/trampoline-ppc-linux.S +@@ -0,0 +1,1413 @@ ++// This file is generated from a similarly-named Perl script in the BoringSSL ++// source tree. Do not edit by hand. ++ ++#if defined(__has_feature) ++#if __has_feature(memory_sanitizer) && !defined(OPENSSL_NO_ASM) ++#define OPENSSL_NO_ASM ++#endif ++#endif ++ ++#if !defined(OPENSSL_NO_ASM) && defined(__powerpc64__) && defined(__ELF__) ++.machine "any" ++.abiversion 2 ++.text ++ ++ ++ ++ ++ ++ ++ ++.globl abi_test_trampoline ++.type abi_test_trampoline,@function ++.align 5 ++abi_test_trampoline: ++.localentry abi_test_trampoline,0 ++ ++ ++ mflr 0 ++ std 0, 16(1) ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ stdu 1, -528(1) ++ ++ mfcr 0 ++ std 0, 8(1) ++ std 2, 24(1) ++ std 4, 32(1) ++ li 11, 48 ++ stvx 20, 11, 1 ++ li 11, 64 ++ stvx 21, 11, 1 ++ li 11, 80 ++ stvx 22, 11, 1 ++ li 11, 96 ++ stvx 23, 11, 1 ++ li 11, 112 ++ stvx 24, 11, 1 ++ li 11, 128 ++ stvx 25, 11, 1 ++ li 11, 144 ++ stvx 26, 11, 1 ++ li 11, 160 ++ stvx 27, 11, 1 ++ li 11, 176 ++ stvx 28, 11, 1 ++ li 11, 192 ++ stvx 29, 11, 1 ++ li 11, 208 ++ stvx 30, 11, 1 ++ li 11, 224 ++ stvx 31, 11, 1 ++ std 14, 240(1) ++ std 15, 248(1) ++ std 16, 256(1) ++ std 17, 264(1) ++ std 18, 272(1) ++ std 19, 280(1) ++ std 20, 288(1) ++ std 21, 296(1) ++ std 22, 304(1) ++ std 23, 312(1) ++ std 24, 320(1) ++ std 25, 328(1) ++ std 26, 336(1) ++ std 27, 344(1) ++ std 28, 352(1) ++ std 29, 360(1) ++ std 30, 368(1) ++ std 31, 376(1) ++ stfd 14, 384(1) ++ stfd 15, 392(1) ++ stfd 16, 400(1) ++ stfd 17, 408(1) ++ stfd 18, 416(1) ++ stfd 19, 424(1) ++ stfd 20, 432(1) ++ stfd 21, 440(1) ++ stfd 22, 448(1) ++ stfd 23, 456(1) ++ stfd 24, 464(1) ++ stfd 25, 472(1) ++ stfd 26, 480(1) ++ stfd 27, 488(1) ++ stfd 28, 496(1) ++ stfd 29, 504(1) ++ stfd 30, 512(1) ++ stfd 31, 520(1) ++ li 11, 0 ++ lvx 20, 11, 4 ++ li 11, 16 ++ lvx 21, 11, 4 ++ li 11, 32 ++ lvx 22, 11, 4 ++ li 11, 48 ++ lvx 23, 11, 4 ++ li 11, 64 ++ lvx 24, 11, 4 ++ li 11, 80 ++ lvx 25, 11, 4 ++ li 11, 96 ++ lvx 26, 11, 4 ++ li 11, 112 ++ lvx 27, 11, 4 ++ li 11, 128 ++ lvx 28, 11, 4 ++ li 11, 144 ++ lvx 29, 11, 4 ++ li 11, 160 ++ lvx 30, 11, 4 ++ li 11, 176 ++ lvx 31, 11, 4 ++ ld 14, 192(4) ++ ld 15, 200(4) ++ ld 16, 208(4) ++ ld 17, 216(4) ++ ld 18, 224(4) ++ ld 19, 232(4) ++ ld 20, 240(4) ++ ld 21, 248(4) ++ ld 22, 256(4) ++ ld 23, 264(4) ++ ld 24, 272(4) ++ ld 25, 280(4) ++ ld 26, 288(4) ++ ld 27, 296(4) ++ ld 28, 304(4) ++ ld 29, 312(4) ++ ld 30, 320(4) ++ ld 31, 328(4) ++ lfd 14, 336(4) ++ lfd 15, 344(4) ++ lfd 16, 352(4) ++ lfd 17, 360(4) ++ lfd 18, 368(4) ++ lfd 19, 376(4) ++ lfd 20, 384(4) ++ lfd 21, 392(4) ++ lfd 22, 400(4) ++ lfd 23, 408(4) ++ lfd 24, 416(4) ++ lfd 25, 424(4) ++ lfd 26, 432(4) ++ lfd 27, 440(4) ++ lfd 28, 448(4) ++ lfd 29, 456(4) ++ lfd 30, 464(4) ++ lfd 31, 472(4) ++ ++ ld 0, 480(4) ++ mtcr 0 ++ ++ ++ addi 11, 5, -8 ++ mr 12, 3 ++ ++ ++ cmpdi 6, 0 ++ beq .Largs_done ++ mtctr 6 ++ ldu 3, 8(11) ++ bdz .Largs_done ++ ldu 4, 8(11) ++ bdz .Largs_done ++ ldu 5, 8(11) ++ bdz .Largs_done ++ ldu 6, 8(11) ++ bdz .Largs_done ++ ldu 7, 8(11) ++ bdz .Largs_done ++ ldu 8, 8(11) ++ bdz .Largs_done ++ ldu 9, 8(11) ++ bdz .Largs_done ++ ldu 10, 8(11) ++ ++.Largs_done: ++ li 2, 0 ++ mtctr 12 ++ bctrl ++ ld 2, 24(1) ++ ++ ld 4, 32(1) ++ li 11, 0 ++ stvx 20, 11, 4 ++ li 11, 16 ++ stvx 21, 11, 4 ++ li 11, 32 ++ stvx 22, 11, 4 ++ li 11, 48 ++ stvx 23, 11, 4 ++ li 11, 64 ++ stvx 24, 11, 4 ++ li 11, 80 ++ stvx 25, 11, 4 ++ li 11, 96 ++ stvx 26, 11, 4 ++ li 11, 112 ++ stvx 27, 11, 4 ++ li 11, 128 ++ stvx 28, 11, 4 ++ li 11, 144 ++ stvx 29, 11, 4 ++ li 11, 160 ++ stvx 30, 11, 4 ++ li 11, 176 ++ stvx 31, 11, 4 ++ std 14, 192(4) ++ std 15, 200(4) ++ std 16, 208(4) ++ std 17, 216(4) ++ std 18, 224(4) ++ std 19, 232(4) ++ std 20, 240(4) ++ std 21, 248(4) ++ std 22, 256(4) ++ std 23, 264(4) ++ std 24, 272(4) ++ std 25, 280(4) ++ std 26, 288(4) ++ std 27, 296(4) ++ std 28, 304(4) ++ std 29, 312(4) ++ std 30, 320(4) ++ std 31, 328(4) ++ stfd 14, 336(4) ++ stfd 15, 344(4) ++ stfd 16, 352(4) ++ stfd 17, 360(4) ++ stfd 18, 368(4) ++ stfd 19, 376(4) ++ stfd 20, 384(4) ++ stfd 21, 392(4) ++ stfd 22, 400(4) ++ stfd 23, 408(4) ++ stfd 24, 416(4) ++ stfd 25, 424(4) ++ stfd 26, 432(4) ++ stfd 27, 440(4) ++ stfd 28, 448(4) ++ stfd 29, 456(4) ++ stfd 30, 464(4) ++ stfd 31, 472(4) ++ li 11, 48 ++ lvx 20, 11, 1 ++ li 11, 64 ++ lvx 21, 11, 1 ++ li 11, 80 ++ lvx 22, 11, 1 ++ li 11, 96 ++ lvx 23, 11, 1 ++ li 11, 112 ++ lvx 24, 11, 1 ++ li 11, 128 ++ lvx 25, 11, 1 ++ li 11, 144 ++ lvx 26, 11, 1 ++ li 11, 160 ++ lvx 27, 11, 1 ++ li 11, 176 ++ lvx 28, 11, 1 ++ li 11, 192 ++ lvx 29, 11, 1 ++ li 11, 208 ++ lvx 30, 11, 1 ++ li 11, 224 ++ lvx 31, 11, 1 ++ ld 14, 240(1) ++ ld 15, 248(1) ++ ld 16, 256(1) ++ ld 17, 264(1) ++ ld 18, 272(1) ++ ld 19, 280(1) ++ ld 20, 288(1) ++ ld 21, 296(1) ++ ld 22, 304(1) ++ ld 23, 312(1) ++ ld 24, 320(1) ++ ld 25, 328(1) ++ ld 26, 336(1) ++ ld 27, 344(1) ++ ld 28, 352(1) ++ ld 29, 360(1) ++ ld 30, 368(1) ++ ld 31, 376(1) ++ lfd 14, 384(1) ++ lfd 15, 392(1) ++ lfd 16, 400(1) ++ lfd 17, 408(1) ++ lfd 18, 416(1) ++ lfd 19, 424(1) ++ lfd 20, 432(1) ++ lfd 21, 440(1) ++ lfd 22, 448(1) ++ lfd 23, 456(1) ++ lfd 24, 464(1) ++ lfd 25, 472(1) ++ lfd 26, 480(1) ++ lfd 27, 488(1) ++ lfd 28, 496(1) ++ lfd 29, 504(1) ++ lfd 30, 512(1) ++ lfd 31, 520(1) ++ mfcr 0 ++ std 0, 480(4) ++ ld 0, 8(1) ++ mtcrf 0b00111000, 0 ++ addi 1, 1, 528 ++ ld 0, 16(1) ++ mtlr 0 ++ blr ++.size abi_test_trampoline,.-abi_test_trampoline ++.globl abi_test_clobber_r0 ++.type abi_test_clobber_r0,@function ++.align 5 ++abi_test_clobber_r0: ++.localentry abi_test_clobber_r0,0 ++ ++ li 0, 0 ++ blr ++.size abi_test_clobber_r0,.-abi_test_clobber_r0 ++.globl abi_test_clobber_r2 ++.type abi_test_clobber_r2,@function ++.align 5 ++abi_test_clobber_r2: ++.localentry abi_test_clobber_r2,0 ++ ++ li 2, 0 ++ blr ++.size abi_test_clobber_r2,.-abi_test_clobber_r2 ++.globl abi_test_clobber_r3 ++.type abi_test_clobber_r3,@function ++.align 5 ++abi_test_clobber_r3: ++.localentry abi_test_clobber_r3,0 ++ ++ li 3, 0 ++ blr ++.size abi_test_clobber_r3,.-abi_test_clobber_r3 ++.globl abi_test_clobber_r4 ++.type abi_test_clobber_r4,@function ++.align 5 ++abi_test_clobber_r4: ++.localentry abi_test_clobber_r4,0 ++ ++ li 4, 0 ++ blr ++.size abi_test_clobber_r4,.-abi_test_clobber_r4 ++.globl abi_test_clobber_r5 ++.type abi_test_clobber_r5,@function ++.align 5 ++abi_test_clobber_r5: ++.localentry abi_test_clobber_r5,0 ++ ++ li 5, 0 ++ blr ++.size abi_test_clobber_r5,.-abi_test_clobber_r5 ++.globl abi_test_clobber_r6 ++.type abi_test_clobber_r6,@function ++.align 5 ++abi_test_clobber_r6: ++.localentry abi_test_clobber_r6,0 ++ ++ li 6, 0 ++ blr ++.size abi_test_clobber_r6,.-abi_test_clobber_r6 ++.globl abi_test_clobber_r7 ++.type abi_test_clobber_r7,@function ++.align 5 ++abi_test_clobber_r7: ++.localentry abi_test_clobber_r7,0 ++ ++ li 7, 0 ++ blr ++.size abi_test_clobber_r7,.-abi_test_clobber_r7 ++.globl abi_test_clobber_r8 ++.type abi_test_clobber_r8,@function ++.align 5 ++abi_test_clobber_r8: ++.localentry abi_test_clobber_r8,0 ++ ++ li 8, 0 ++ blr ++.size abi_test_clobber_r8,.-abi_test_clobber_r8 ++.globl abi_test_clobber_r9 ++.type abi_test_clobber_r9,@function ++.align 5 ++abi_test_clobber_r9: ++.localentry abi_test_clobber_r9,0 ++ ++ li 9, 0 ++ blr ++.size abi_test_clobber_r9,.-abi_test_clobber_r9 ++.globl abi_test_clobber_r10 ++.type abi_test_clobber_r10,@function ++.align 5 ++abi_test_clobber_r10: ++.localentry abi_test_clobber_r10,0 ++ ++ li 10, 0 ++ blr ++.size abi_test_clobber_r10,.-abi_test_clobber_r10 ++.globl abi_test_clobber_r11 ++.type abi_test_clobber_r11,@function ++.align 5 ++abi_test_clobber_r11: ++.localentry abi_test_clobber_r11,0 ++ ++ li 11, 0 ++ blr ++.size abi_test_clobber_r11,.-abi_test_clobber_r11 ++.globl abi_test_clobber_r12 ++.type abi_test_clobber_r12,@function ++.align 5 ++abi_test_clobber_r12: ++.localentry abi_test_clobber_r12,0 ++ ++ li 12, 0 ++ blr ++.size abi_test_clobber_r12,.-abi_test_clobber_r12 ++.globl abi_test_clobber_r14 ++.type abi_test_clobber_r14,@function ++.align 5 ++abi_test_clobber_r14: ++.localentry abi_test_clobber_r14,0 ++ ++ li 14, 0 ++ blr ++.size abi_test_clobber_r14,.-abi_test_clobber_r14 ++.globl abi_test_clobber_r15 ++.type abi_test_clobber_r15,@function ++.align 5 ++abi_test_clobber_r15: ++.localentry abi_test_clobber_r15,0 ++ ++ li 15, 0 ++ blr ++.size abi_test_clobber_r15,.-abi_test_clobber_r15 ++.globl abi_test_clobber_r16 ++.type abi_test_clobber_r16,@function ++.align 5 ++abi_test_clobber_r16: ++.localentry abi_test_clobber_r16,0 ++ ++ li 16, 0 ++ blr ++.size abi_test_clobber_r16,.-abi_test_clobber_r16 ++.globl abi_test_clobber_r17 ++.type abi_test_clobber_r17,@function ++.align 5 ++abi_test_clobber_r17: ++.localentry abi_test_clobber_r17,0 ++ ++ li 17, 0 ++ blr ++.size abi_test_clobber_r17,.-abi_test_clobber_r17 ++.globl abi_test_clobber_r18 ++.type abi_test_clobber_r18,@function ++.align 5 ++abi_test_clobber_r18: ++.localentry abi_test_clobber_r18,0 ++ ++ li 18, 0 ++ blr ++.size abi_test_clobber_r18,.-abi_test_clobber_r18 ++.globl abi_test_clobber_r19 ++.type abi_test_clobber_r19,@function ++.align 5 ++abi_test_clobber_r19: ++.localentry abi_test_clobber_r19,0 ++ ++ li 19, 0 ++ blr ++.size abi_test_clobber_r19,.-abi_test_clobber_r19 ++.globl abi_test_clobber_r20 ++.type abi_test_clobber_r20,@function ++.align 5 ++abi_test_clobber_r20: ++.localentry abi_test_clobber_r20,0 ++ ++ li 20, 0 ++ blr ++.size abi_test_clobber_r20,.-abi_test_clobber_r20 ++.globl abi_test_clobber_r21 ++.type abi_test_clobber_r21,@function ++.align 5 ++abi_test_clobber_r21: ++.localentry abi_test_clobber_r21,0 ++ ++ li 21, 0 ++ blr ++.size abi_test_clobber_r21,.-abi_test_clobber_r21 ++.globl abi_test_clobber_r22 ++.type abi_test_clobber_r22,@function ++.align 5 ++abi_test_clobber_r22: ++.localentry abi_test_clobber_r22,0 ++ ++ li 22, 0 ++ blr ++.size abi_test_clobber_r22,.-abi_test_clobber_r22 ++.globl abi_test_clobber_r23 ++.type abi_test_clobber_r23,@function ++.align 5 ++abi_test_clobber_r23: ++.localentry abi_test_clobber_r23,0 ++ ++ li 23, 0 ++ blr ++.size abi_test_clobber_r23,.-abi_test_clobber_r23 ++.globl abi_test_clobber_r24 ++.type abi_test_clobber_r24,@function ++.align 5 ++abi_test_clobber_r24: ++.localentry abi_test_clobber_r24,0 ++ ++ li 24, 0 ++ blr ++.size abi_test_clobber_r24,.-abi_test_clobber_r24 ++.globl abi_test_clobber_r25 ++.type abi_test_clobber_r25,@function ++.align 5 ++abi_test_clobber_r25: ++.localentry abi_test_clobber_r25,0 ++ ++ li 25, 0 ++ blr ++.size abi_test_clobber_r25,.-abi_test_clobber_r25 ++.globl abi_test_clobber_r26 ++.type abi_test_clobber_r26,@function ++.align 5 ++abi_test_clobber_r26: ++.localentry abi_test_clobber_r26,0 ++ ++ li 26, 0 ++ blr ++.size abi_test_clobber_r26,.-abi_test_clobber_r26 ++.globl abi_test_clobber_r27 ++.type abi_test_clobber_r27,@function ++.align 5 ++abi_test_clobber_r27: ++.localentry abi_test_clobber_r27,0 ++ ++ li 27, 0 ++ blr ++.size abi_test_clobber_r27,.-abi_test_clobber_r27 ++.globl abi_test_clobber_r28 ++.type abi_test_clobber_r28,@function ++.align 5 ++abi_test_clobber_r28: ++.localentry abi_test_clobber_r28,0 ++ ++ li 28, 0 ++ blr ++.size abi_test_clobber_r28,.-abi_test_clobber_r28 ++.globl abi_test_clobber_r29 ++.type abi_test_clobber_r29,@function ++.align 5 ++abi_test_clobber_r29: ++.localentry abi_test_clobber_r29,0 ++ ++ li 29, 0 ++ blr ++.size abi_test_clobber_r29,.-abi_test_clobber_r29 ++.globl abi_test_clobber_r30 ++.type abi_test_clobber_r30,@function ++.align 5 ++abi_test_clobber_r30: ++.localentry abi_test_clobber_r30,0 ++ ++ li 30, 0 ++ blr ++.size abi_test_clobber_r30,.-abi_test_clobber_r30 ++.globl abi_test_clobber_r31 ++.type abi_test_clobber_r31,@function ++.align 5 ++abi_test_clobber_r31: ++.localentry abi_test_clobber_r31,0 ++ ++ li 31, 0 ++ blr ++.size abi_test_clobber_r31,.-abi_test_clobber_r31 ++.globl abi_test_clobber_f0 ++.type abi_test_clobber_f0,@function ++.align 4 ++abi_test_clobber_f0: ++.localentry abi_test_clobber_f0,0 ++ ++ li 0, 0 ++ ++ std 0, -8(1) ++ lfd 0, -8(1) ++ blr ++.size abi_test_clobber_f0,.-abi_test_clobber_f0 ++.globl abi_test_clobber_f1 ++.type abi_test_clobber_f1,@function ++.align 4 ++abi_test_clobber_f1: ++.localentry abi_test_clobber_f1,0 ++ ++ li 0, 0 ++ ++ std 0, -8(1) ++ lfd 1, -8(1) ++ blr ++.size abi_test_clobber_f1,.-abi_test_clobber_f1 ++.globl abi_test_clobber_f2 ++.type abi_test_clobber_f2,@function ++.align 4 ++abi_test_clobber_f2: ++.localentry abi_test_clobber_f2,0 ++ ++ li 0, 0 ++ ++ std 0, -8(1) ++ lfd 2, -8(1) ++ blr ++.size abi_test_clobber_f2,.-abi_test_clobber_f2 ++.globl abi_test_clobber_f3 ++.type abi_test_clobber_f3,@function ++.align 4 ++abi_test_clobber_f3: ++.localentry abi_test_clobber_f3,0 ++ ++ li 0, 0 ++ ++ std 0, -8(1) ++ lfd 3, -8(1) ++ blr ++.size abi_test_clobber_f3,.-abi_test_clobber_f3 ++.globl abi_test_clobber_f4 ++.type abi_test_clobber_f4,@function ++.align 4 ++abi_test_clobber_f4: ++.localentry abi_test_clobber_f4,0 ++ ++ li 0, 0 ++ ++ std 0, -8(1) ++ lfd 4, -8(1) ++ blr ++.size abi_test_clobber_f4,.-abi_test_clobber_f4 ++.globl abi_test_clobber_f5 ++.type abi_test_clobber_f5,@function ++.align 4 ++abi_test_clobber_f5: ++.localentry abi_test_clobber_f5,0 ++ ++ li 0, 0 ++ ++ std 0, -8(1) ++ lfd 5, -8(1) ++ blr ++.size abi_test_clobber_f5,.-abi_test_clobber_f5 ++.globl abi_test_clobber_f6 ++.type abi_test_clobber_f6,@function ++.align 4 ++abi_test_clobber_f6: ++.localentry abi_test_clobber_f6,0 ++ ++ li 0, 0 ++ ++ std 0, -8(1) ++ lfd 6, -8(1) ++ blr ++.size abi_test_clobber_f6,.-abi_test_clobber_f6 ++.globl abi_test_clobber_f7 ++.type abi_test_clobber_f7,@function ++.align 4 ++abi_test_clobber_f7: ++.localentry abi_test_clobber_f7,0 ++ ++ li 0, 0 ++ ++ std 0, -8(1) ++ lfd 7, -8(1) ++ blr ++.size abi_test_clobber_f7,.-abi_test_clobber_f7 ++.globl abi_test_clobber_f8 ++.type abi_test_clobber_f8,@function ++.align 4 ++abi_test_clobber_f8: ++.localentry abi_test_clobber_f8,0 ++ ++ li 0, 0 ++ ++ std 0, -8(1) ++ lfd 8, -8(1) ++ blr ++.size abi_test_clobber_f8,.-abi_test_clobber_f8 ++.globl abi_test_clobber_f9 ++.type abi_test_clobber_f9,@function ++.align 4 ++abi_test_clobber_f9: ++.localentry abi_test_clobber_f9,0 ++ ++ li 0, 0 ++ ++ std 0, -8(1) ++ lfd 9, -8(1) ++ blr ++.size abi_test_clobber_f9,.-abi_test_clobber_f9 ++.globl abi_test_clobber_f10 ++.type abi_test_clobber_f10,@function ++.align 4 ++abi_test_clobber_f10: ++.localentry abi_test_clobber_f10,0 ++ ++ li 0, 0 ++ ++ std 0, -8(1) ++ lfd 10, -8(1) ++ blr ++.size abi_test_clobber_f10,.-abi_test_clobber_f10 ++.globl abi_test_clobber_f11 ++.type abi_test_clobber_f11,@function ++.align 4 ++abi_test_clobber_f11: ++.localentry abi_test_clobber_f11,0 ++ ++ li 0, 0 ++ ++ std 0, -8(1) ++ lfd 11, -8(1) ++ blr ++.size abi_test_clobber_f11,.-abi_test_clobber_f11 ++.globl abi_test_clobber_f12 ++.type abi_test_clobber_f12,@function ++.align 4 ++abi_test_clobber_f12: ++.localentry abi_test_clobber_f12,0 ++ ++ li 0, 0 ++ ++ std 0, -8(1) ++ lfd 12, -8(1) ++ blr ++.size abi_test_clobber_f12,.-abi_test_clobber_f12 ++.globl abi_test_clobber_f13 ++.type abi_test_clobber_f13,@function ++.align 4 ++abi_test_clobber_f13: ++.localentry abi_test_clobber_f13,0 ++ ++ li 0, 0 ++ ++ std 0, -8(1) ++ lfd 13, -8(1) ++ blr ++.size abi_test_clobber_f13,.-abi_test_clobber_f13 ++.globl abi_test_clobber_f14 ++.type abi_test_clobber_f14,@function ++.align 4 ++abi_test_clobber_f14: ++.localentry abi_test_clobber_f14,0 ++ ++ li 0, 0 ++ ++ std 0, -8(1) ++ lfd 14, -8(1) ++ blr ++.size abi_test_clobber_f14,.-abi_test_clobber_f14 ++.globl abi_test_clobber_f15 ++.type abi_test_clobber_f15,@function ++.align 4 ++abi_test_clobber_f15: ++.localentry abi_test_clobber_f15,0 ++ ++ li 0, 0 ++ ++ std 0, -8(1) ++ lfd 15, -8(1) ++ blr ++.size abi_test_clobber_f15,.-abi_test_clobber_f15 ++.globl abi_test_clobber_f16 ++.type abi_test_clobber_f16,@function ++.align 4 ++abi_test_clobber_f16: ++.localentry abi_test_clobber_f16,0 ++ ++ li 0, 0 ++ ++ std 0, -8(1) ++ lfd 16, -8(1) ++ blr ++.size abi_test_clobber_f16,.-abi_test_clobber_f16 ++.globl abi_test_clobber_f17 ++.type abi_test_clobber_f17,@function ++.align 4 ++abi_test_clobber_f17: ++.localentry abi_test_clobber_f17,0 ++ ++ li 0, 0 ++ ++ std 0, -8(1) ++ lfd 17, -8(1) ++ blr ++.size abi_test_clobber_f17,.-abi_test_clobber_f17 ++.globl abi_test_clobber_f18 ++.type abi_test_clobber_f18,@function ++.align 4 ++abi_test_clobber_f18: ++.localentry abi_test_clobber_f18,0 ++ ++ li 0, 0 ++ ++ std 0, -8(1) ++ lfd 18, -8(1) ++ blr ++.size abi_test_clobber_f18,.-abi_test_clobber_f18 ++.globl abi_test_clobber_f19 ++.type abi_test_clobber_f19,@function ++.align 4 ++abi_test_clobber_f19: ++.localentry abi_test_clobber_f19,0 ++ ++ li 0, 0 ++ ++ std 0, -8(1) ++ lfd 19, -8(1) ++ blr ++.size abi_test_clobber_f19,.-abi_test_clobber_f19 ++.globl abi_test_clobber_f20 ++.type abi_test_clobber_f20,@function ++.align 4 ++abi_test_clobber_f20: ++.localentry abi_test_clobber_f20,0 ++ ++ li 0, 0 ++ ++ std 0, -8(1) ++ lfd 20, -8(1) ++ blr ++.size abi_test_clobber_f20,.-abi_test_clobber_f20 ++.globl abi_test_clobber_f21 ++.type abi_test_clobber_f21,@function ++.align 4 ++abi_test_clobber_f21: ++.localentry abi_test_clobber_f21,0 ++ ++ li 0, 0 ++ ++ std 0, -8(1) ++ lfd 21, -8(1) ++ blr ++.size abi_test_clobber_f21,.-abi_test_clobber_f21 ++.globl abi_test_clobber_f22 ++.type abi_test_clobber_f22,@function ++.align 4 ++abi_test_clobber_f22: ++.localentry abi_test_clobber_f22,0 ++ ++ li 0, 0 ++ ++ std 0, -8(1) ++ lfd 22, -8(1) ++ blr ++.size abi_test_clobber_f22,.-abi_test_clobber_f22 ++.globl abi_test_clobber_f23 ++.type abi_test_clobber_f23,@function ++.align 4 ++abi_test_clobber_f23: ++.localentry abi_test_clobber_f23,0 ++ ++ li 0, 0 ++ ++ std 0, -8(1) ++ lfd 23, -8(1) ++ blr ++.size abi_test_clobber_f23,.-abi_test_clobber_f23 ++.globl abi_test_clobber_f24 ++.type abi_test_clobber_f24,@function ++.align 4 ++abi_test_clobber_f24: ++.localentry abi_test_clobber_f24,0 ++ ++ li 0, 0 ++ ++ std 0, -8(1) ++ lfd 24, -8(1) ++ blr ++.size abi_test_clobber_f24,.-abi_test_clobber_f24 ++.globl abi_test_clobber_f25 ++.type abi_test_clobber_f25,@function ++.align 4 ++abi_test_clobber_f25: ++.localentry abi_test_clobber_f25,0 ++ ++ li 0, 0 ++ ++ std 0, -8(1) ++ lfd 25, -8(1) ++ blr ++.size abi_test_clobber_f25,.-abi_test_clobber_f25 ++.globl abi_test_clobber_f26 ++.type abi_test_clobber_f26,@function ++.align 4 ++abi_test_clobber_f26: ++.localentry abi_test_clobber_f26,0 ++ ++ li 0, 0 ++ ++ std 0, -8(1) ++ lfd 26, -8(1) ++ blr ++.size abi_test_clobber_f26,.-abi_test_clobber_f26 ++.globl abi_test_clobber_f27 ++.type abi_test_clobber_f27,@function ++.align 4 ++abi_test_clobber_f27: ++.localentry abi_test_clobber_f27,0 ++ ++ li 0, 0 ++ ++ std 0, -8(1) ++ lfd 27, -8(1) ++ blr ++.size abi_test_clobber_f27,.-abi_test_clobber_f27 ++.globl abi_test_clobber_f28 ++.type abi_test_clobber_f28,@function ++.align 4 ++abi_test_clobber_f28: ++.localentry abi_test_clobber_f28,0 ++ ++ li 0, 0 ++ ++ std 0, -8(1) ++ lfd 28, -8(1) ++ blr ++.size abi_test_clobber_f28,.-abi_test_clobber_f28 ++.globl abi_test_clobber_f29 ++.type abi_test_clobber_f29,@function ++.align 4 ++abi_test_clobber_f29: ++.localentry abi_test_clobber_f29,0 ++ ++ li 0, 0 ++ ++ std 0, -8(1) ++ lfd 29, -8(1) ++ blr ++.size abi_test_clobber_f29,.-abi_test_clobber_f29 ++.globl abi_test_clobber_f30 ++.type abi_test_clobber_f30,@function ++.align 4 ++abi_test_clobber_f30: ++.localentry abi_test_clobber_f30,0 ++ ++ li 0, 0 ++ ++ std 0, -8(1) ++ lfd 30, -8(1) ++ blr ++.size abi_test_clobber_f30,.-abi_test_clobber_f30 ++.globl abi_test_clobber_f31 ++.type abi_test_clobber_f31,@function ++.align 4 ++abi_test_clobber_f31: ++.localentry abi_test_clobber_f31,0 ++ ++ li 0, 0 ++ ++ std 0, -8(1) ++ lfd 31, -8(1) ++ blr ++.size abi_test_clobber_f31,.-abi_test_clobber_f31 ++.globl abi_test_clobber_v0 ++.type abi_test_clobber_v0,@function ++.align 4 ++abi_test_clobber_v0: ++.localentry abi_test_clobber_v0,0 ++ ++ vxor 0, 0, 0 ++ blr ++.size abi_test_clobber_v0,.-abi_test_clobber_v0 ++.globl abi_test_clobber_v1 ++.type abi_test_clobber_v1,@function ++.align 4 ++abi_test_clobber_v1: ++.localentry abi_test_clobber_v1,0 ++ ++ vxor 1, 1, 1 ++ blr ++.size abi_test_clobber_v1,.-abi_test_clobber_v1 ++.globl abi_test_clobber_v2 ++.type abi_test_clobber_v2,@function ++.align 4 ++abi_test_clobber_v2: ++.localentry abi_test_clobber_v2,0 ++ ++ vxor 2, 2, 2 ++ blr ++.size abi_test_clobber_v2,.-abi_test_clobber_v2 ++.globl abi_test_clobber_v3 ++.type abi_test_clobber_v3,@function ++.align 4 ++abi_test_clobber_v3: ++.localentry abi_test_clobber_v3,0 ++ ++ vxor 3, 3, 3 ++ blr ++.size abi_test_clobber_v3,.-abi_test_clobber_v3 ++.globl abi_test_clobber_v4 ++.type abi_test_clobber_v4,@function ++.align 4 ++abi_test_clobber_v4: ++.localentry abi_test_clobber_v4,0 ++ ++ vxor 4, 4, 4 ++ blr ++.size abi_test_clobber_v4,.-abi_test_clobber_v4 ++.globl abi_test_clobber_v5 ++.type abi_test_clobber_v5,@function ++.align 4 ++abi_test_clobber_v5: ++.localentry abi_test_clobber_v5,0 ++ ++ vxor 5, 5, 5 ++ blr ++.size abi_test_clobber_v5,.-abi_test_clobber_v5 ++.globl abi_test_clobber_v6 ++.type abi_test_clobber_v6,@function ++.align 4 ++abi_test_clobber_v6: ++.localentry abi_test_clobber_v6,0 ++ ++ vxor 6, 6, 6 ++ blr ++.size abi_test_clobber_v6,.-abi_test_clobber_v6 ++.globl abi_test_clobber_v7 ++.type abi_test_clobber_v7,@function ++.align 4 ++abi_test_clobber_v7: ++.localentry abi_test_clobber_v7,0 ++ ++ vxor 7, 7, 7 ++ blr ++.size abi_test_clobber_v7,.-abi_test_clobber_v7 ++.globl abi_test_clobber_v8 ++.type abi_test_clobber_v8,@function ++.align 4 ++abi_test_clobber_v8: ++.localentry abi_test_clobber_v8,0 ++ ++ vxor 8, 8, 8 ++ blr ++.size abi_test_clobber_v8,.-abi_test_clobber_v8 ++.globl abi_test_clobber_v9 ++.type abi_test_clobber_v9,@function ++.align 4 ++abi_test_clobber_v9: ++.localentry abi_test_clobber_v9,0 ++ ++ vxor 9, 9, 9 ++ blr ++.size abi_test_clobber_v9,.-abi_test_clobber_v9 ++.globl abi_test_clobber_v10 ++.type abi_test_clobber_v10,@function ++.align 4 ++abi_test_clobber_v10: ++.localentry abi_test_clobber_v10,0 ++ ++ vxor 10, 10, 10 ++ blr ++.size abi_test_clobber_v10,.-abi_test_clobber_v10 ++.globl abi_test_clobber_v11 ++.type abi_test_clobber_v11,@function ++.align 4 ++abi_test_clobber_v11: ++.localentry abi_test_clobber_v11,0 ++ ++ vxor 11, 11, 11 ++ blr ++.size abi_test_clobber_v11,.-abi_test_clobber_v11 ++.globl abi_test_clobber_v12 ++.type abi_test_clobber_v12,@function ++.align 4 ++abi_test_clobber_v12: ++.localentry abi_test_clobber_v12,0 ++ ++ vxor 12, 12, 12 ++ blr ++.size abi_test_clobber_v12,.-abi_test_clobber_v12 ++.globl abi_test_clobber_v13 ++.type abi_test_clobber_v13,@function ++.align 4 ++abi_test_clobber_v13: ++.localentry abi_test_clobber_v13,0 ++ ++ vxor 13, 13, 13 ++ blr ++.size abi_test_clobber_v13,.-abi_test_clobber_v13 ++.globl abi_test_clobber_v14 ++.type abi_test_clobber_v14,@function ++.align 4 ++abi_test_clobber_v14: ++.localentry abi_test_clobber_v14,0 ++ ++ vxor 14, 14, 14 ++ blr ++.size abi_test_clobber_v14,.-abi_test_clobber_v14 ++.globl abi_test_clobber_v15 ++.type abi_test_clobber_v15,@function ++.align 4 ++abi_test_clobber_v15: ++.localentry abi_test_clobber_v15,0 ++ ++ vxor 15, 15, 15 ++ blr ++.size abi_test_clobber_v15,.-abi_test_clobber_v15 ++.globl abi_test_clobber_v16 ++.type abi_test_clobber_v16,@function ++.align 4 ++abi_test_clobber_v16: ++.localentry abi_test_clobber_v16,0 ++ ++ vxor 16, 16, 16 ++ blr ++.size abi_test_clobber_v16,.-abi_test_clobber_v16 ++.globl abi_test_clobber_v17 ++.type abi_test_clobber_v17,@function ++.align 4 ++abi_test_clobber_v17: ++.localentry abi_test_clobber_v17,0 ++ ++ vxor 17, 17, 17 ++ blr ++.size abi_test_clobber_v17,.-abi_test_clobber_v17 ++.globl abi_test_clobber_v18 ++.type abi_test_clobber_v18,@function ++.align 4 ++abi_test_clobber_v18: ++.localentry abi_test_clobber_v18,0 ++ ++ vxor 18, 18, 18 ++ blr ++.size abi_test_clobber_v18,.-abi_test_clobber_v18 ++.globl abi_test_clobber_v19 ++.type abi_test_clobber_v19,@function ++.align 4 ++abi_test_clobber_v19: ++.localentry abi_test_clobber_v19,0 ++ ++ vxor 19, 19, 19 ++ blr ++.size abi_test_clobber_v19,.-abi_test_clobber_v19 ++.globl abi_test_clobber_v20 ++.type abi_test_clobber_v20,@function ++.align 4 ++abi_test_clobber_v20: ++.localentry abi_test_clobber_v20,0 ++ ++ vxor 20, 20, 20 ++ blr ++.size abi_test_clobber_v20,.-abi_test_clobber_v20 ++.globl abi_test_clobber_v21 ++.type abi_test_clobber_v21,@function ++.align 4 ++abi_test_clobber_v21: ++.localentry abi_test_clobber_v21,0 ++ ++ vxor 21, 21, 21 ++ blr ++.size abi_test_clobber_v21,.-abi_test_clobber_v21 ++.globl abi_test_clobber_v22 ++.type abi_test_clobber_v22,@function ++.align 4 ++abi_test_clobber_v22: ++.localentry abi_test_clobber_v22,0 ++ ++ vxor 22, 22, 22 ++ blr ++.size abi_test_clobber_v22,.-abi_test_clobber_v22 ++.globl abi_test_clobber_v23 ++.type abi_test_clobber_v23,@function ++.align 4 ++abi_test_clobber_v23: ++.localentry abi_test_clobber_v23,0 ++ ++ vxor 23, 23, 23 ++ blr ++.size abi_test_clobber_v23,.-abi_test_clobber_v23 ++.globl abi_test_clobber_v24 ++.type abi_test_clobber_v24,@function ++.align 4 ++abi_test_clobber_v24: ++.localentry abi_test_clobber_v24,0 ++ ++ vxor 24, 24, 24 ++ blr ++.size abi_test_clobber_v24,.-abi_test_clobber_v24 ++.globl abi_test_clobber_v25 ++.type abi_test_clobber_v25,@function ++.align 4 ++abi_test_clobber_v25: ++.localentry abi_test_clobber_v25,0 ++ ++ vxor 25, 25, 25 ++ blr ++.size abi_test_clobber_v25,.-abi_test_clobber_v25 ++.globl abi_test_clobber_v26 ++.type abi_test_clobber_v26,@function ++.align 4 ++abi_test_clobber_v26: ++.localentry abi_test_clobber_v26,0 ++ ++ vxor 26, 26, 26 ++ blr ++.size abi_test_clobber_v26,.-abi_test_clobber_v26 ++.globl abi_test_clobber_v27 ++.type abi_test_clobber_v27,@function ++.align 4 ++abi_test_clobber_v27: ++.localentry abi_test_clobber_v27,0 ++ ++ vxor 27, 27, 27 ++ blr ++.size abi_test_clobber_v27,.-abi_test_clobber_v27 ++.globl abi_test_clobber_v28 ++.type abi_test_clobber_v28,@function ++.align 4 ++abi_test_clobber_v28: ++.localentry abi_test_clobber_v28,0 ++ ++ vxor 28, 28, 28 ++ blr ++.size abi_test_clobber_v28,.-abi_test_clobber_v28 ++.globl abi_test_clobber_v29 ++.type abi_test_clobber_v29,@function ++.align 4 ++abi_test_clobber_v29: ++.localentry abi_test_clobber_v29,0 ++ ++ vxor 29, 29, 29 ++ blr ++.size abi_test_clobber_v29,.-abi_test_clobber_v29 ++.globl abi_test_clobber_v30 ++.type abi_test_clobber_v30,@function ++.align 4 ++abi_test_clobber_v30: ++.localentry abi_test_clobber_v30,0 ++ ++ vxor 30, 30, 30 ++ blr ++.size abi_test_clobber_v30,.-abi_test_clobber_v30 ++.globl abi_test_clobber_v31 ++.type abi_test_clobber_v31,@function ++.align 4 ++abi_test_clobber_v31: ++.localentry abi_test_clobber_v31,0 ++ ++ vxor 31, 31, 31 ++ blr ++.size abi_test_clobber_v31,.-abi_test_clobber_v31 ++.globl abi_test_clobber_cr0 ++.type abi_test_clobber_cr0,@function ++.align 4 ++abi_test_clobber_cr0: ++.localentry abi_test_clobber_cr0,0 ++ ++ ++ ++ mfcr 0 ++ not 0, 0 ++ mtcrf 128, 0 ++ blr ++.size abi_test_clobber_cr0,.-abi_test_clobber_cr0 ++.globl abi_test_clobber_cr1 ++.type abi_test_clobber_cr1,@function ++.align 4 ++abi_test_clobber_cr1: ++.localentry abi_test_clobber_cr1,0 ++ ++ ++ ++ mfcr 0 ++ not 0, 0 ++ mtcrf 64, 0 ++ blr ++.size abi_test_clobber_cr1,.-abi_test_clobber_cr1 ++.globl abi_test_clobber_cr2 ++.type abi_test_clobber_cr2,@function ++.align 4 ++abi_test_clobber_cr2: ++.localentry abi_test_clobber_cr2,0 ++ ++ ++ ++ mfcr 0 ++ not 0, 0 ++ mtcrf 32, 0 ++ blr ++.size abi_test_clobber_cr2,.-abi_test_clobber_cr2 ++.globl abi_test_clobber_cr3 ++.type abi_test_clobber_cr3,@function ++.align 4 ++abi_test_clobber_cr3: ++.localentry abi_test_clobber_cr3,0 ++ ++ ++ ++ mfcr 0 ++ not 0, 0 ++ mtcrf 16, 0 ++ blr ++.size abi_test_clobber_cr3,.-abi_test_clobber_cr3 ++.globl abi_test_clobber_cr4 ++.type abi_test_clobber_cr4,@function ++.align 4 ++abi_test_clobber_cr4: ++.localentry abi_test_clobber_cr4,0 ++ ++ ++ ++ mfcr 0 ++ not 0, 0 ++ mtcrf 8, 0 ++ blr ++.size abi_test_clobber_cr4,.-abi_test_clobber_cr4 ++.globl abi_test_clobber_cr5 ++.type abi_test_clobber_cr5,@function ++.align 4 ++abi_test_clobber_cr5: ++.localentry abi_test_clobber_cr5,0 ++ ++ ++ ++ mfcr 0 ++ not 0, 0 ++ mtcrf 4, 0 ++ blr ++.size abi_test_clobber_cr5,.-abi_test_clobber_cr5 ++.globl abi_test_clobber_cr6 ++.type abi_test_clobber_cr6,@function ++.align 4 ++abi_test_clobber_cr6: ++.localentry abi_test_clobber_cr6,0 ++ ++ ++ ++ mfcr 0 ++ not 0, 0 ++ mtcrf 2, 0 ++ blr ++.size abi_test_clobber_cr6,.-abi_test_clobber_cr6 ++.globl abi_test_clobber_cr7 ++.type abi_test_clobber_cr7,@function ++.align 4 ++abi_test_clobber_cr7: ++.localentry abi_test_clobber_cr7,0 ++ ++ ++ ++ mfcr 0 ++ not 0, 0 ++ mtcrf 1, 0 ++ blr ++.size abi_test_clobber_cr7,.-abi_test_clobber_cr7 ++.globl abi_test_clobber_ctr ++.type abi_test_clobber_ctr,@function ++.align 4 ++abi_test_clobber_ctr: ++.localentry abi_test_clobber_ctr,0 ++ ++ li 0, 0 ++ mtctr 0 ++ blr ++.size abi_test_clobber_ctr,.-abi_test_clobber_ctr ++ ++.globl abi_test_clobber_lr ++.type abi_test_clobber_lr,@function ++.align 4 ++abi_test_clobber_lr: ++.localentry abi_test_clobber_lr,0 ++ ++ mflr 0 ++ mtctr 0 ++ li 0, 0 ++ mtlr 0 ++ bctr ++.size abi_test_clobber_lr,.-abi_test_clobber_lr ++ ++#endif // !OPENSSL_NO_ASM && __powerpc64__ && __ELF__ ++#if defined(__ELF__) ++// See https://www.airs.com/blog/archives/518. ++.section .note.GNU-stack,"",%progbits ++#endif +Index: chromium-122.0.6261.128/third_party/libvpx/source/config/linux/ppc64/vp8_rtcd.h +=================================================================== +--- /dev/null ++++ chromium-122.0.6261.128/third_party/libvpx/source/config/linux/ppc64/vp8_rtcd.h +@@ -0,0 +1,316 @@ ++// This file is generated. Do not edit. ++#ifndef VP8_RTCD_H_ ++#define VP8_RTCD_H_ ++ ++#ifdef RTCD_C ++#define RTCD_EXTERN ++#else ++#define RTCD_EXTERN extern ++#endif ++ ++/* ++ * VP8 ++ */ ++ ++struct blockd; ++struct macroblockd; ++struct loop_filter_info; ++ ++/* Encoder forward decls */ ++struct block; ++struct macroblock; ++struct variance_vtable; ++union int_mv; ++struct yv12_buffer_config; ++ ++#ifdef __cplusplus ++extern "C" { ++#endif ++ ++void vp8_bilinear_predict16x16_c(unsigned char* src_ptr, ++ int src_pixels_per_line, ++ int xoffset, ++ int yoffset, ++ unsigned char* dst_ptr, ++ int dst_pitch); ++#define vp8_bilinear_predict16x16 vp8_bilinear_predict16x16_c ++ ++void vp8_bilinear_predict4x4_c(unsigned char* src_ptr, ++ int src_pixels_per_line, ++ int xoffset, ++ int yoffset, ++ unsigned char* dst_ptr, ++ int dst_pitch); ++#define vp8_bilinear_predict4x4 vp8_bilinear_predict4x4_c ++ ++void vp8_bilinear_predict8x4_c(unsigned char* src_ptr, ++ int src_pixels_per_line, ++ int xoffset, ++ int yoffset, ++ unsigned char* dst_ptr, ++ int dst_pitch); ++#define vp8_bilinear_predict8x4 vp8_bilinear_predict8x4_c ++ ++void vp8_bilinear_predict8x8_c(unsigned char* src_ptr, ++ int src_pixels_per_line, ++ int xoffset, ++ int yoffset, ++ unsigned char* dst_ptr, ++ int dst_pitch); ++#define vp8_bilinear_predict8x8 vp8_bilinear_predict8x8_c ++ ++int vp8_block_error_c(short* coeff, short* dqcoeff); ++#define vp8_block_error vp8_block_error_c ++ ++void vp8_copy32xn_c(const unsigned char* src_ptr, ++ int src_stride, ++ unsigned char* dst_ptr, ++ int dst_stride, ++ int height); ++#define vp8_copy32xn vp8_copy32xn_c ++ ++void vp8_copy_mem16x16_c(unsigned char* src, ++ int src_stride, ++ unsigned char* dst, ++ int dst_stride); ++#define vp8_copy_mem16x16 vp8_copy_mem16x16_c ++ ++void vp8_copy_mem8x4_c(unsigned char* src, ++ int src_stride, ++ unsigned char* dst, ++ int dst_stride); ++#define vp8_copy_mem8x4 vp8_copy_mem8x4_c ++ ++void vp8_copy_mem8x8_c(unsigned char* src, ++ int src_stride, ++ unsigned char* dst, ++ int dst_stride); ++#define vp8_copy_mem8x8 vp8_copy_mem8x8_c ++ ++void vp8_dc_only_idct_add_c(short input_dc, ++ unsigned char* pred_ptr, ++ int pred_stride, ++ unsigned char* dst_ptr, ++ int dst_stride); ++#define vp8_dc_only_idct_add vp8_dc_only_idct_add_c ++ ++int vp8_denoiser_filter_c(unsigned char* mc_running_avg_y, ++ int mc_avg_y_stride, ++ unsigned char* running_avg_y, ++ int avg_y_stride, ++ unsigned char* sig, ++ int sig_stride, ++ unsigned int motion_magnitude, ++ int increase_denoising); ++#define vp8_denoiser_filter vp8_denoiser_filter_c ++ ++int vp8_denoiser_filter_uv_c(unsigned char* mc_running_avg, ++ int mc_avg_stride, ++ unsigned char* running_avg, ++ int avg_stride, ++ unsigned char* sig, ++ int sig_stride, ++ unsigned int motion_magnitude, ++ int increase_denoising); ++#define vp8_denoiser_filter_uv vp8_denoiser_filter_uv_c ++ ++void vp8_dequant_idct_add_c(short* input, ++ short* dq, ++ unsigned char* dest, ++ int stride); ++#define vp8_dequant_idct_add vp8_dequant_idct_add_c ++ ++void vp8_dequant_idct_add_uv_block_c(short* q, ++ short* dq, ++ unsigned char* dst_u, ++ unsigned char* dst_v, ++ int stride, ++ char* eobs); ++#define vp8_dequant_idct_add_uv_block vp8_dequant_idct_add_uv_block_c ++ ++void vp8_dequant_idct_add_y_block_c(short* q, ++ short* dq, ++ unsigned char* dst, ++ int stride, ++ char* eobs); ++#define vp8_dequant_idct_add_y_block vp8_dequant_idct_add_y_block_c ++ ++void vp8_dequantize_b_c(struct blockd*, short* DQC); ++#define vp8_dequantize_b vp8_dequantize_b_c ++ ++int vp8_diamond_search_sad_c(struct macroblock* x, ++ struct block* b, ++ struct blockd* d, ++ union int_mv* ref_mv, ++ union int_mv* best_mv, ++ int search_param, ++ int sad_per_bit, ++ int* num00, ++ struct variance_vtable* fn_ptr, ++ int* mvcost[2], ++ union int_mv* center_mv); ++#define vp8_diamond_search_sad vp8_diamond_search_sad_c ++ ++void vp8_fast_quantize_b_c(struct block*, struct blockd*); ++#define vp8_fast_quantize_b vp8_fast_quantize_b_c ++ ++void vp8_filter_by_weight16x16_c(unsigned char* src, ++ int src_stride, ++ unsigned char* dst, ++ int dst_stride, ++ int src_weight); ++#define vp8_filter_by_weight16x16 vp8_filter_by_weight16x16_c ++ ++void vp8_filter_by_weight4x4_c(unsigned char* src, ++ int src_stride, ++ unsigned char* dst, ++ int dst_stride, ++ int src_weight); ++#define vp8_filter_by_weight4x4 vp8_filter_by_weight4x4_c ++ ++void vp8_filter_by_weight8x8_c(unsigned char* src, ++ int src_stride, ++ unsigned char* dst, ++ int dst_stride, ++ int src_weight); ++#define vp8_filter_by_weight8x8 vp8_filter_by_weight8x8_c ++ ++void vp8_loop_filter_bh_c(unsigned char* y_ptr, ++ unsigned char* u_ptr, ++ unsigned char* v_ptr, ++ int y_stride, ++ int uv_stride, ++ struct loop_filter_info* lfi); ++#define vp8_loop_filter_bh vp8_loop_filter_bh_c ++ ++void vp8_loop_filter_bv_c(unsigned char* y_ptr, ++ unsigned char* u_ptr, ++ unsigned char* v_ptr, ++ int y_stride, ++ int uv_stride, ++ struct loop_filter_info* lfi); ++#define vp8_loop_filter_bv vp8_loop_filter_bv_c ++ ++void vp8_loop_filter_mbh_c(unsigned char* y_ptr, ++ unsigned char* u_ptr, ++ unsigned char* v_ptr, ++ int y_stride, ++ int uv_stride, ++ struct loop_filter_info* lfi); ++#define vp8_loop_filter_mbh vp8_loop_filter_mbh_c ++ ++void vp8_loop_filter_mbv_c(unsigned char* y_ptr, ++ unsigned char* u_ptr, ++ unsigned char* v_ptr, ++ int y_stride, ++ int uv_stride, ++ struct loop_filter_info* lfi); ++#define vp8_loop_filter_mbv vp8_loop_filter_mbv_c ++ ++void vp8_loop_filter_bhs_c(unsigned char* y_ptr, ++ int y_stride, ++ const unsigned char* blimit); ++#define vp8_loop_filter_simple_bh vp8_loop_filter_bhs_c ++ ++void vp8_loop_filter_bvs_c(unsigned char* y_ptr, ++ int y_stride, ++ const unsigned char* blimit); ++#define vp8_loop_filter_simple_bv vp8_loop_filter_bvs_c ++ ++void vp8_loop_filter_simple_horizontal_edge_c(unsigned char* y_ptr, ++ int y_stride, ++ const unsigned char* blimit); ++#define vp8_loop_filter_simple_mbh vp8_loop_filter_simple_horizontal_edge_c ++ ++void vp8_loop_filter_simple_vertical_edge_c(unsigned char* y_ptr, ++ int y_stride, ++ const unsigned char* blimit); ++#define vp8_loop_filter_simple_mbv vp8_loop_filter_simple_vertical_edge_c ++ ++int vp8_mbblock_error_c(struct macroblock* mb, int dc); ++#define vp8_mbblock_error vp8_mbblock_error_c ++ ++int vp8_mbuverror_c(struct macroblock* mb); ++#define vp8_mbuverror vp8_mbuverror_c ++ ++int vp8_refining_search_sad_c(struct macroblock* x, ++ struct block* b, ++ struct blockd* d, ++ union int_mv* ref_mv, ++ int error_per_bit, ++ int search_range, ++ struct variance_vtable* fn_ptr, ++ int* mvcost[2], ++ union int_mv* center_mv); ++#define vp8_refining_search_sad vp8_refining_search_sad_c ++ ++void vp8_regular_quantize_b_c(struct block*, struct blockd*); ++#define vp8_regular_quantize_b vp8_regular_quantize_b_c ++ ++void vp8_short_fdct4x4_c(short* input, short* output, int pitch); ++#define vp8_short_fdct4x4 vp8_short_fdct4x4_c ++ ++void vp8_short_fdct8x4_c(short* input, short* output, int pitch); ++#define vp8_short_fdct8x4 vp8_short_fdct8x4_c ++ ++void vp8_short_idct4x4llm_c(short* input, ++ unsigned char* pred_ptr, ++ int pred_stride, ++ unsigned char* dst_ptr, ++ int dst_stride); ++#define vp8_short_idct4x4llm vp8_short_idct4x4llm_c ++ ++void vp8_short_inv_walsh4x4_c(short* input, short* mb_dqcoeff); ++#define vp8_short_inv_walsh4x4 vp8_short_inv_walsh4x4_c ++ ++void vp8_short_inv_walsh4x4_1_c(short* input, short* mb_dqcoeff); ++#define vp8_short_inv_walsh4x4_1 vp8_short_inv_walsh4x4_1_c ++ ++void vp8_short_walsh4x4_c(short* input, short* output, int pitch); ++#define vp8_short_walsh4x4 vp8_short_walsh4x4_c ++ ++void vp8_sixtap_predict16x16_c(unsigned char* src_ptr, ++ int src_pixels_per_line, ++ int xoffset, ++ int yoffset, ++ unsigned char* dst_ptr, ++ int dst_pitch); ++#define vp8_sixtap_predict16x16 vp8_sixtap_predict16x16_c ++ ++void vp8_sixtap_predict4x4_c(unsigned char* src_ptr, ++ int src_pixels_per_line, ++ int xoffset, ++ int yoffset, ++ unsigned char* dst_ptr, ++ int dst_pitch); ++#define vp8_sixtap_predict4x4 vp8_sixtap_predict4x4_c ++ ++void vp8_sixtap_predict8x4_c(unsigned char* src_ptr, ++ int src_pixels_per_line, ++ int xoffset, ++ int yoffset, ++ unsigned char* dst_ptr, ++ int dst_pitch); ++#define vp8_sixtap_predict8x4 vp8_sixtap_predict8x4_c ++ ++void vp8_sixtap_predict8x8_c(unsigned char* src_ptr, ++ int src_pixels_per_line, ++ int xoffset, ++ int yoffset, ++ unsigned char* dst_ptr, ++ int dst_pitch); ++#define vp8_sixtap_predict8x8 vp8_sixtap_predict8x8_c ++ ++void vp8_rtcd(void); ++ ++#include "vpx_config.h" ++ ++#ifdef RTCD_C ++static void setup_rtcd_internal(void) {} ++#endif ++ ++#ifdef __cplusplus ++} // extern "C" ++#endif ++ ++#endif +Index: chromium-122.0.6261.128/third_party/libvpx/source/config/linux/ppc64/vp9_rtcd.h +=================================================================== +--- /dev/null ++++ chromium-122.0.6261.128/third_party/libvpx/source/config/linux/ppc64/vp9_rtcd.h +@@ -0,0 +1,267 @@ ++// This file is generated. Do not edit. ++#ifndef VP9_RTCD_H_ ++#define VP9_RTCD_H_ ++ ++#ifdef RTCD_C ++#define RTCD_EXTERN ++#else ++#define RTCD_EXTERN extern ++#endif ++ ++/* ++ * VP9 ++ */ ++ ++#include "vp9/common/vp9_common.h" ++#include "vp9/common/vp9_enums.h" ++#include "vp9/common/vp9_filter.h" ++#include "vpx/vpx_integer.h" ++ ++struct macroblockd; ++ ++/* Encoder forward decls */ ++struct macroblock; ++struct macroblock_plane; ++struct vp9_sad_table; ++struct ScanOrder; ++struct search_site_config; ++struct mv; ++union int_mv; ++struct yv12_buffer_config; ++ ++#ifdef __cplusplus ++extern "C" { ++#endif ++ ++int64_t vp9_block_error_c(const tran_low_t* coeff, ++ const tran_low_t* dqcoeff, ++ intptr_t block_size, ++ int64_t* ssz); ++#define vp9_block_error vp9_block_error_c ++ ++int64_t vp9_block_error_fp_c(const tran_low_t* coeff, ++ const tran_low_t* dqcoeff, ++ int block_size); ++#define vp9_block_error_fp vp9_block_error_fp_c ++ ++int vp9_denoiser_filter_c(const uint8_t* sig, ++ int sig_stride, ++ const uint8_t* mc_avg, ++ int mc_avg_stride, ++ uint8_t* avg, ++ int avg_stride, ++ int increase_denoising, ++ BLOCK_SIZE bs, ++ int motion_magnitude); ++#define vp9_denoiser_filter vp9_denoiser_filter_c ++ ++int vp9_diamond_search_sad_c(const struct macroblock* x, ++ const struct search_site_config* cfg, ++ struct mv* ref_mv, ++ uint32_t start_mv_sad, ++ struct mv* best_mv, ++ int search_param, ++ int sad_per_bit, ++ int* num00, ++ const struct vp9_sad_table* sad_fn_ptr, ++ const struct mv* center_mv); ++#define vp9_diamond_search_sad vp9_diamond_search_sad_c ++ ++void vp9_fht16x16_c(const int16_t* input, ++ tran_low_t* output, ++ int stride, ++ int tx_type); ++#define vp9_fht16x16 vp9_fht16x16_c ++ ++void vp9_fht4x4_c(const int16_t* input, ++ tran_low_t* output, ++ int stride, ++ int tx_type); ++#define vp9_fht4x4 vp9_fht4x4_c ++ ++void vp9_fht8x8_c(const int16_t* input, ++ tran_low_t* output, ++ int stride, ++ int tx_type); ++#define vp9_fht8x8 vp9_fht8x8_c ++ ++void vp9_filter_by_weight16x16_c(const uint8_t* src, ++ int src_stride, ++ uint8_t* dst, ++ int dst_stride, ++ int src_weight); ++#define vp9_filter_by_weight16x16 vp9_filter_by_weight16x16_c ++ ++void vp9_filter_by_weight8x8_c(const uint8_t* src, ++ int src_stride, ++ uint8_t* dst, ++ int dst_stride, ++ int src_weight); ++#define vp9_filter_by_weight8x8 vp9_filter_by_weight8x8_c ++ ++void vp9_fwht4x4_c(const int16_t* input, tran_low_t* output, int stride); ++#define vp9_fwht4x4 vp9_fwht4x4_c ++ ++int64_t vp9_highbd_block_error_c(const tran_low_t* coeff, ++ const tran_low_t* dqcoeff, ++ intptr_t block_size, ++ int64_t* ssz, ++ int bd); ++#define vp9_highbd_block_error vp9_highbd_block_error_c ++ ++void vp9_highbd_fht16x16_c(const int16_t* input, ++ tran_low_t* output, ++ int stride, ++ int tx_type); ++#define vp9_highbd_fht16x16 vp9_highbd_fht16x16_c ++ ++void vp9_highbd_fht4x4_c(const int16_t* input, ++ tran_low_t* output, ++ int stride, ++ int tx_type); ++#define vp9_highbd_fht4x4 vp9_highbd_fht4x4_c ++ ++void vp9_highbd_fht8x8_c(const int16_t* input, ++ tran_low_t* output, ++ int stride, ++ int tx_type); ++#define vp9_highbd_fht8x8 vp9_highbd_fht8x8_c ++ ++void vp9_highbd_fwht4x4_c(const int16_t* input, tran_low_t* output, int stride); ++#define vp9_highbd_fwht4x4 vp9_highbd_fwht4x4_c ++ ++void vp9_highbd_iht16x16_256_add_c(const tran_low_t* input, ++ uint16_t* dest, ++ int stride, ++ int tx_type, ++ int bd); ++#define vp9_highbd_iht16x16_256_add vp9_highbd_iht16x16_256_add_c ++ ++void vp9_highbd_iht4x4_16_add_c(const tran_low_t* input, ++ uint16_t* dest, ++ int stride, ++ int tx_type, ++ int bd); ++#define vp9_highbd_iht4x4_16_add vp9_highbd_iht4x4_16_add_c ++ ++void vp9_highbd_iht8x8_64_add_c(const tran_low_t* input, ++ uint16_t* dest, ++ int stride, ++ int tx_type, ++ int bd); ++#define vp9_highbd_iht8x8_64_add vp9_highbd_iht8x8_64_add_c ++ ++void vp9_highbd_mbpost_proc_across_ip_c(uint16_t* src, ++ int pitch, ++ int rows, ++ int cols, ++ int flimit); ++#define vp9_highbd_mbpost_proc_across_ip vp9_highbd_mbpost_proc_across_ip_c ++ ++void vp9_highbd_mbpost_proc_down_c(uint16_t* dst, ++ int pitch, ++ int rows, ++ int cols, ++ int flimit); ++#define vp9_highbd_mbpost_proc_down vp9_highbd_mbpost_proc_down_c ++ ++void vp9_highbd_post_proc_down_and_across_c(const uint16_t* src_ptr, ++ uint16_t* dst_ptr, ++ int src_pixels_per_line, ++ int dst_pixels_per_line, ++ int rows, ++ int cols, ++ int flimit); ++#define vp9_highbd_post_proc_down_and_across \ ++ vp9_highbd_post_proc_down_and_across_c ++ ++void vp9_highbd_quantize_fp_c(const tran_low_t* coeff_ptr, ++ intptr_t n_coeffs, ++ const struct macroblock_plane* const mb_plane, ++ tran_low_t* qcoeff_ptr, ++ tran_low_t* dqcoeff_ptr, ++ const int16_t* dequant_ptr, ++ uint16_t* eob_ptr, ++ const struct ScanOrder* const scan_order); ++#define vp9_highbd_quantize_fp vp9_highbd_quantize_fp_c ++ ++void vp9_highbd_quantize_fp_32x32_c( ++ const tran_low_t* coeff_ptr, ++ intptr_t n_coeffs, ++ const struct macroblock_plane* const mb_plane, ++ tran_low_t* qcoeff_ptr, ++ tran_low_t* dqcoeff_ptr, ++ const int16_t* dequant_ptr, ++ uint16_t* eob_ptr, ++ const struct ScanOrder* const scan_order); ++#define vp9_highbd_quantize_fp_32x32 vp9_highbd_quantize_fp_32x32_c ++ ++void vp9_highbd_temporal_filter_apply_c(const uint8_t* frame1, ++ unsigned int stride, ++ const uint8_t* frame2, ++ unsigned int block_width, ++ unsigned int block_height, ++ int strength, ++ int* blk_fw, ++ int use_32x32, ++ uint32_t* accumulator, ++ uint16_t* count); ++#define vp9_highbd_temporal_filter_apply vp9_highbd_temporal_filter_apply_c ++ ++void vp9_iht16x16_256_add_c(const tran_low_t* input, ++ uint8_t* dest, ++ int stride, ++ int tx_type); ++#define vp9_iht16x16_256_add vp9_iht16x16_256_add_c ++ ++void vp9_iht4x4_16_add_c(const tran_low_t* input, ++ uint8_t* dest, ++ int stride, ++ int tx_type); ++#define vp9_iht4x4_16_add vp9_iht4x4_16_add_c ++ ++void vp9_iht8x8_64_add_c(const tran_low_t* input, ++ uint8_t* dest, ++ int stride, ++ int tx_type); ++#define vp9_iht8x8_64_add vp9_iht8x8_64_add_c ++ ++void vp9_quantize_fp_c(const tran_low_t* coeff_ptr, ++ intptr_t n_coeffs, ++ const struct macroblock_plane* const mb_plane, ++ tran_low_t* qcoeff_ptr, ++ tran_low_t* dqcoeff_ptr, ++ const int16_t* dequant_ptr, ++ uint16_t* eob_ptr, ++ const struct ScanOrder* const scan_order); ++#define vp9_quantize_fp vp9_quantize_fp_c ++ ++void vp9_quantize_fp_32x32_c(const tran_low_t* coeff_ptr, ++ intptr_t n_coeffs, ++ const struct macroblock_plane* const mb_plane, ++ tran_low_t* qcoeff_ptr, ++ tran_low_t* dqcoeff_ptr, ++ const int16_t* dequant_ptr, ++ uint16_t* eob_ptr, ++ const struct ScanOrder* const scan_order); ++#define vp9_quantize_fp_32x32 vp9_quantize_fp_32x32_c ++ ++void vp9_scale_and_extend_frame_c(const struct yv12_buffer_config* src, ++ struct yv12_buffer_config* dst, ++ INTERP_FILTER filter_type, ++ int phase_scaler); ++#define vp9_scale_and_extend_frame vp9_scale_and_extend_frame_c ++ ++void vp9_rtcd(void); ++ ++#include "vpx_config.h" ++ ++#ifdef RTCD_C ++static void setup_rtcd_internal(void) {} ++#endif ++ ++#ifdef __cplusplus ++} // extern "C" ++#endif ++ ++#endif +Index: chromium-122.0.6261.128/third_party/libvpx/source/config/linux/ppc64/vpx_config.asm +=================================================================== +--- /dev/null ++++ chromium-122.0.6261.128/third_party/libvpx/source/config/linux/ppc64/vpx_config.asm +@@ -0,0 +1,107 @@ ++@ This file was created from a .asm file ++@ using the ads2gas.pl script. ++.syntax unified ++.equ VPX_ARCH_ARM , 0 ++.equ ARCH_ARM , 0 ++.equ VPX_ARCH_AARCH64 , 0 ++.equ ARCH_AARCH64 , 0 ++.equ VPX_ARCH_MIPS , 0 ++.equ ARCH_MIPS , 0 ++.equ VPX_ARCH_X86 , 0 ++.equ ARCH_X86 , 0 ++.equ VPX_ARCH_X86_64 , 0 ++.equ ARCH_X86_64 , 0 ++.equ VPX_ARCH_PPC , 0 ++.equ ARCH_PPC , 0 ++.equ VPX_ARCH_LOONGARCH , 0 ++.equ ARCH_LOONGARCH , 0 ++.equ HAVE_NEON_ASM , 0 ++.equ HAVE_NEON , 0 ++.equ HAVE_NEON_DOTPROD , 0 ++.equ HAVE_NEON_I8MM , 0 ++.equ HAVE_SVE , 0 ++.equ HAVE_MIPS32 , 0 ++.equ HAVE_DSPR2 , 0 ++.equ HAVE_MSA , 0 ++.equ HAVE_MIPS64 , 0 ++.equ HAVE_MMX , 0 ++.equ HAVE_SSE , 0 ++.equ HAVE_SSE2 , 0 ++.equ HAVE_SSE3 , 0 ++.equ HAVE_SSSE3 , 0 ++.equ HAVE_SSE4_1 , 0 ++.equ HAVE_AVX , 0 ++.equ HAVE_AVX2 , 0 ++.equ HAVE_AVX512 , 0 ++.equ HAVE_VSX , 0 ++.equ HAVE_MMI , 0 ++.equ HAVE_LSX , 0 ++.equ HAVE_LASX , 0 ++.equ HAVE_VPX_PORTS , 1 ++.equ HAVE_PTHREAD_H , 1 ++.equ HAVE_UNISTD_H , 0 ++.equ CONFIG_DEPENDENCY_TRACKING , 1 ++.equ CONFIG_EXTERNAL_BUILD , 1 ++.equ CONFIG_INSTALL_DOCS , 0 ++.equ CONFIG_INSTALL_BINS , 1 ++.equ CONFIG_INSTALL_LIBS , 1 ++.equ CONFIG_INSTALL_SRCS , 0 ++.equ CONFIG_DEBUG , 0 ++.equ CONFIG_GPROF , 0 ++.equ CONFIG_GCOV , 0 ++.equ CONFIG_RVCT , 0 ++.equ CONFIG_GCC , 1 ++.equ CONFIG_MSVS , 0 ++.equ CONFIG_PIC , 0 ++.equ CONFIG_BIG_ENDIAN , 0 ++.equ CONFIG_CODEC_SRCS , 0 ++.equ CONFIG_DEBUG_LIBS , 0 ++.equ CONFIG_DEQUANT_TOKENS , 0 ++.equ CONFIG_DC_RECON , 0 ++.equ CONFIG_RUNTIME_CPU_DETECT , 0 ++.equ CONFIG_POSTPROC , 1 ++.equ CONFIG_VP9_POSTPROC , 1 ++.equ CONFIG_MULTITHREAD , 1 ++.equ CONFIG_INTERNAL_STATS , 0 ++.equ CONFIG_VP8_ENCODER , 1 ++.equ CONFIG_VP8_DECODER , 1 ++.equ CONFIG_VP9_ENCODER , 1 ++.equ CONFIG_VP9_DECODER , 1 ++.equ CONFIG_VP8 , 1 ++.equ CONFIG_VP9 , 1 ++.equ CONFIG_ENCODERS , 1 ++.equ CONFIG_DECODERS , 1 ++.equ CONFIG_STATIC_MSVCRT , 0 ++.equ CONFIG_SPATIAL_RESAMPLING , 1 ++.equ CONFIG_REALTIME_ONLY , 1 ++.equ CONFIG_ONTHEFLY_BITPACKING , 0 ++.equ CONFIG_ERROR_CONCEALMENT , 0 ++.equ CONFIG_SHARED , 0 ++.equ CONFIG_STATIC , 1 ++.equ CONFIG_SMALL , 0 ++.equ CONFIG_POSTPROC_VISUALIZER , 0 ++.equ CONFIG_OS_SUPPORT , 1 ++.equ CONFIG_UNIT_TESTS , 1 ++.equ CONFIG_WEBM_IO , 1 ++.equ CONFIG_LIBYUV , 0 ++.equ CONFIG_DECODE_PERF_TESTS , 0 ++.equ CONFIG_ENCODE_PERF_TESTS , 0 ++.equ CONFIG_MULTI_RES_ENCODING , 1 ++.equ CONFIG_TEMPORAL_DENOISING , 1 ++.equ CONFIG_VP9_TEMPORAL_DENOISING , 1 ++.equ CONFIG_COEFFICIENT_RANGE_CHECKING , 0 ++.equ CONFIG_VP9_HIGHBITDEPTH , 1 ++.equ CONFIG_BETTER_HW_COMPATIBILITY , 0 ++.equ CONFIG_EXPERIMENTAL , 0 ++.equ CONFIG_SIZE_LIMIT , 1 ++.equ CONFIG_ALWAYS_ADJUST_BPM , 0 ++.equ CONFIG_BITSTREAM_DEBUG , 0 ++.equ CONFIG_MISMATCH_DEBUG , 0 ++.equ CONFIG_FP_MB_STATS , 0 ++.equ CONFIG_EMULATE_HARDWARE , 0 ++.equ CONFIG_NON_GREEDY_MV , 0 ++.equ CONFIG_RATE_CTRL , 0 ++.equ CONFIG_COLLECT_COMPONENT_TIMING , 0 ++.equ DECODE_WIDTH_LIMIT , 16384 ++.equ DECODE_HEIGHT_LIMIT , 16384 ++ .section .note.GNU-stack,"",%progbits +Index: chromium-122.0.6261.128/third_party/libvpx/source/config/linux/ppc64/vpx_config.c +=================================================================== +--- /dev/null ++++ chromium-122.0.6261.128/third_party/libvpx/source/config/linux/ppc64/vpx_config.c +@@ -0,0 +1,10 @@ ++/* Copyright (c) 2011 The WebM project authors. All Rights Reserved. */ ++/* */ ++/* Use of this source code is governed by a BSD-style license */ ++/* that can be found in the LICENSE file in the root of the source */ ++/* tree. An additional intellectual property rights grant can be found */ ++/* in the file PATENTS. All contributing project authors may */ ++/* be found in the AUTHORS file in the root of the source tree. */ ++#include "vpx/vpx_codec.h" ++static const char* const cfg = "--target=generic-gnu --enable-vp9-highbitdepth --enable-external-build --enable-postproc --enable-multi-res-encoding --enable-temporal-denoising --enable-vp9-temporal-denoising --enable-vp9-postproc --size-limit=16384x16384 --enable-realtime-only --disable-install-docs --disable-libyuv"; ++const char *vpx_codec_build_config(void) {return cfg;} +Index: chromium-122.0.6261.128/third_party/libvpx/source/config/linux/ppc64/vpx_config.h +=================================================================== +--- /dev/null ++++ chromium-122.0.6261.128/third_party/libvpx/source/config/linux/ppc64/vpx_config.h +@@ -0,0 +1,116 @@ ++/* Copyright (c) 2011 The WebM project authors. All Rights Reserved. */ ++/* */ ++/* Use of this source code is governed by a BSD-style license */ ++/* that can be found in the LICENSE file in the root of the source */ ++/* tree. An additional intellectual property rights grant can be found */ ++/* in the file PATENTS. All contributing project authors may */ ++/* be found in the AUTHORS file in the root of the source tree. */ ++/* This file automatically generated by configure. Do not edit! */ ++#ifndef VPX_CONFIG_H ++#define VPX_CONFIG_H ++#define RESTRICT ++#define INLINE inline ++#define VPX_ARCH_ARM 0 ++#define ARCH_ARM 0 ++#define VPX_ARCH_AARCH64 0 ++#define ARCH_AARCH64 0 ++#define VPX_ARCH_MIPS 0 ++#define ARCH_MIPS 0 ++#define VPX_ARCH_X86 0 ++#define ARCH_X86 0 ++#define VPX_ARCH_X86_64 0 ++#define ARCH_X86_64 0 ++#define VPX_ARCH_PPC 0 ++#define ARCH_PPC 0 ++#define VPX_ARCH_LOONGARCH 0 ++#define ARCH_LOONGARCH 0 ++#define HAVE_NEON_ASM 0 ++#define HAVE_NEON 0 ++#define HAVE_NEON_DOTPROD 0 ++#define HAVE_NEON_I8MM 0 ++#define HAVE_SVE 0 ++#define HAVE_MIPS32 0 ++#define HAVE_DSPR2 0 ++#define HAVE_MSA 0 ++#define HAVE_MIPS64 0 ++#define HAVE_MMX 0 ++#define HAVE_SSE 0 ++#define HAVE_SSE2 0 ++#define HAVE_SSE3 0 ++#define HAVE_SSSE3 0 ++#define HAVE_SSE4_1 0 ++#define HAVE_AVX 0 ++#define HAVE_AVX2 0 ++#define HAVE_AVX512 0 ++#define HAVE_VSX 0 ++#define HAVE_MMI 0 ++#define HAVE_LSX 0 ++#define HAVE_LASX 0 ++#define HAVE_VPX_PORTS 1 ++#define HAVE_PTHREAD_H 1 ++#define HAVE_UNISTD_H 0 ++#define CONFIG_DEPENDENCY_TRACKING 1 ++#define CONFIG_EXTERNAL_BUILD 1 ++#define CONFIG_INSTALL_DOCS 0 ++#define CONFIG_INSTALL_BINS 1 ++#define CONFIG_INSTALL_LIBS 1 ++#define CONFIG_INSTALL_SRCS 0 ++#define CONFIG_DEBUG 0 ++#define CONFIG_GPROF 0 ++#define CONFIG_GCOV 0 ++#define CONFIG_RVCT 0 ++#define CONFIG_GCC 1 ++#define CONFIG_MSVS 0 ++#define CONFIG_PIC 0 ++#define CONFIG_BIG_ENDIAN 0 ++#define CONFIG_CODEC_SRCS 0 ++#define CONFIG_DEBUG_LIBS 0 ++#define CONFIG_DEQUANT_TOKENS 0 ++#define CONFIG_DC_RECON 0 ++#define CONFIG_RUNTIME_CPU_DETECT 0 ++#define CONFIG_POSTPROC 1 ++#define CONFIG_VP9_POSTPROC 1 ++#define CONFIG_MULTITHREAD 1 ++#define CONFIG_INTERNAL_STATS 0 ++#define CONFIG_VP8_ENCODER 1 ++#define CONFIG_VP8_DECODER 1 ++#define CONFIG_VP9_ENCODER 1 ++#define CONFIG_VP9_DECODER 1 ++#define CONFIG_VP8 1 ++#define CONFIG_VP9 1 ++#define CONFIG_ENCODERS 1 ++#define CONFIG_DECODERS 1 ++#define CONFIG_STATIC_MSVCRT 0 ++#define CONFIG_SPATIAL_RESAMPLING 1 ++#define CONFIG_REALTIME_ONLY 1 ++#define CONFIG_ONTHEFLY_BITPACKING 0 ++#define CONFIG_ERROR_CONCEALMENT 0 ++#define CONFIG_SHARED 0 ++#define CONFIG_STATIC 1 ++#define CONFIG_SMALL 0 ++#define CONFIG_POSTPROC_VISUALIZER 0 ++#define CONFIG_OS_SUPPORT 1 ++#define CONFIG_UNIT_TESTS 1 ++#define CONFIG_WEBM_IO 1 ++#define CONFIG_LIBYUV 0 ++#define CONFIG_DECODE_PERF_TESTS 0 ++#define CONFIG_ENCODE_PERF_TESTS 0 ++#define CONFIG_MULTI_RES_ENCODING 1 ++#define CONFIG_TEMPORAL_DENOISING 1 ++#define CONFIG_VP9_TEMPORAL_DENOISING 1 ++#define CONFIG_COEFFICIENT_RANGE_CHECKING 0 ++#define CONFIG_VP9_HIGHBITDEPTH 1 ++#define CONFIG_BETTER_HW_COMPATIBILITY 0 ++#define CONFIG_EXPERIMENTAL 0 ++#define CONFIG_SIZE_LIMIT 1 ++#define CONFIG_ALWAYS_ADJUST_BPM 0 ++#define CONFIG_BITSTREAM_DEBUG 0 ++#define CONFIG_MISMATCH_DEBUG 0 ++#define CONFIG_FP_MB_STATS 0 ++#define CONFIG_EMULATE_HARDWARE 0 ++#define CONFIG_NON_GREEDY_MV 0 ++#define CONFIG_RATE_CTRL 0 ++#define CONFIG_COLLECT_COMPONENT_TIMING 0 ++#define DECODE_WIDTH_LIMIT 16384 ++#define DECODE_HEIGHT_LIMIT 16384 ++#endif /* VPX_CONFIG_H */ +Index: chromium-122.0.6261.128/third_party/libvpx/source/config/linux/ppc64/vpx_dsp_rtcd.h +=================================================================== +--- /dev/null ++++ chromium-122.0.6261.128/third_party/libvpx/source/config/linux/ppc64/vpx_dsp_rtcd.h +@@ -0,0 +1,4128 @@ ++// This file is generated. Do not edit. ++#ifndef VPX_DSP_RTCD_H_ ++#define VPX_DSP_RTCD_H_ ++ ++#ifdef RTCD_C ++#define RTCD_EXTERN ++#else ++#define RTCD_EXTERN extern ++#endif ++ ++/* ++ * DSP ++ */ ++ ++#include "vpx/vpx_integer.h" ++#include "vpx_dsp/vpx_dsp_common.h" ++#include "vpx_dsp/vpx_filter.h" ++#if CONFIG_VP9_ENCODER ++struct macroblock_plane; ++struct ScanOrder; ++#endif ++ ++#ifdef __cplusplus ++extern "C" { ++#endif ++ ++unsigned int vpx_avg_4x4_c(const uint8_t*, int p); ++#define vpx_avg_4x4 vpx_avg_4x4_c ++ ++unsigned int vpx_avg_8x8_c(const uint8_t*, int p); ++#define vpx_avg_8x8 vpx_avg_8x8_c ++ ++void vpx_comp_avg_pred_c(uint8_t* comp_pred, ++ const uint8_t* pred, ++ int width, ++ int height, ++ const uint8_t* ref, ++ int ref_stride); ++#define vpx_comp_avg_pred vpx_comp_avg_pred_c ++ ++void vpx_convolve8_c(const uint8_t* src, ++ ptrdiff_t src_stride, ++ uint8_t* dst, ++ ptrdiff_t dst_stride, ++ const InterpKernel* filter, ++ int x0_q4, ++ int x_step_q4, ++ int y0_q4, ++ int y_step_q4, ++ int w, ++ int h); ++#define vpx_convolve8 vpx_convolve8_c ++ ++void vpx_convolve8_avg_c(const uint8_t* src, ++ ptrdiff_t src_stride, ++ uint8_t* dst, ++ ptrdiff_t dst_stride, ++ const InterpKernel* filter, ++ int x0_q4, ++ int x_step_q4, ++ int y0_q4, ++ int y_step_q4, ++ int w, ++ int h); ++#define vpx_convolve8_avg vpx_convolve8_avg_c ++ ++void vpx_convolve8_avg_horiz_c(const uint8_t* src, ++ ptrdiff_t src_stride, ++ uint8_t* dst, ++ ptrdiff_t dst_stride, ++ const InterpKernel* filter, ++ int x0_q4, ++ int x_step_q4, ++ int y0_q4, ++ int y_step_q4, ++ int w, ++ int h); ++#define vpx_convolve8_avg_horiz vpx_convolve8_avg_horiz_c ++ ++void vpx_convolve8_avg_vert_c(const uint8_t* src, ++ ptrdiff_t src_stride, ++ uint8_t* dst, ++ ptrdiff_t dst_stride, ++ const InterpKernel* filter, ++ int x0_q4, ++ int x_step_q4, ++ int y0_q4, ++ int y_step_q4, ++ int w, ++ int h); ++#define vpx_convolve8_avg_vert vpx_convolve8_avg_vert_c ++ ++void vpx_convolve8_horiz_c(const uint8_t* src, ++ ptrdiff_t src_stride, ++ uint8_t* dst, ++ ptrdiff_t dst_stride, ++ const InterpKernel* filter, ++ int x0_q4, ++ int x_step_q4, ++ int y0_q4, ++ int y_step_q4, ++ int w, ++ int h); ++#define vpx_convolve8_horiz vpx_convolve8_horiz_c ++ ++void vpx_convolve8_vert_c(const uint8_t* src, ++ ptrdiff_t src_stride, ++ uint8_t* dst, ++ ptrdiff_t dst_stride, ++ const InterpKernel* filter, ++ int x0_q4, ++ int x_step_q4, ++ int y0_q4, ++ int y_step_q4, ++ int w, ++ int h); ++#define vpx_convolve8_vert vpx_convolve8_vert_c ++ ++void vpx_convolve_avg_c(const uint8_t* src, ++ ptrdiff_t src_stride, ++ uint8_t* dst, ++ ptrdiff_t dst_stride, ++ const InterpKernel* filter, ++ int x0_q4, ++ int x_step_q4, ++ int y0_q4, ++ int y_step_q4, ++ int w, ++ int h); ++#define vpx_convolve_avg vpx_convolve_avg_c ++ ++void vpx_convolve_copy_c(const uint8_t* src, ++ ptrdiff_t src_stride, ++ uint8_t* dst, ++ ptrdiff_t dst_stride, ++ const InterpKernel* filter, ++ int x0_q4, ++ int x_step_q4, ++ int y0_q4, ++ int y_step_q4, ++ int w, ++ int h); ++#define vpx_convolve_copy vpx_convolve_copy_c ++ ++void vpx_d117_predictor_16x16_c(uint8_t* dst, ++ ptrdiff_t stride, ++ const uint8_t* above, ++ const uint8_t* left); ++#define vpx_d117_predictor_16x16 vpx_d117_predictor_16x16_c ++ ++void vpx_d117_predictor_32x32_c(uint8_t* dst, ++ ptrdiff_t stride, ++ const uint8_t* above, ++ const uint8_t* left); ++#define vpx_d117_predictor_32x32 vpx_d117_predictor_32x32_c ++ ++void vpx_d117_predictor_4x4_c(uint8_t* dst, ++ ptrdiff_t stride, ++ const uint8_t* above, ++ const uint8_t* left); ++#define vpx_d117_predictor_4x4 vpx_d117_predictor_4x4_c ++ ++void vpx_d117_predictor_8x8_c(uint8_t* dst, ++ ptrdiff_t stride, ++ const uint8_t* above, ++ const uint8_t* left); ++#define vpx_d117_predictor_8x8 vpx_d117_predictor_8x8_c ++ ++void vpx_d135_predictor_16x16_c(uint8_t* dst, ++ ptrdiff_t stride, ++ const uint8_t* above, ++ const uint8_t* left); ++#define vpx_d135_predictor_16x16 vpx_d135_predictor_16x16_c ++ ++void vpx_d135_predictor_32x32_c(uint8_t* dst, ++ ptrdiff_t stride, ++ const uint8_t* above, ++ const uint8_t* left); ++#define vpx_d135_predictor_32x32 vpx_d135_predictor_32x32_c ++ ++void vpx_d135_predictor_4x4_c(uint8_t* dst, ++ ptrdiff_t stride, ++ const uint8_t* above, ++ const uint8_t* left); ++#define vpx_d135_predictor_4x4 vpx_d135_predictor_4x4_c ++ ++void vpx_d135_predictor_8x8_c(uint8_t* dst, ++ ptrdiff_t stride, ++ const uint8_t* above, ++ const uint8_t* left); ++#define vpx_d135_predictor_8x8 vpx_d135_predictor_8x8_c ++ ++void vpx_d153_predictor_16x16_c(uint8_t* dst, ++ ptrdiff_t stride, ++ const uint8_t* above, ++ const uint8_t* left); ++#define vpx_d153_predictor_16x16 vpx_d153_predictor_16x16_c ++ ++void vpx_d153_predictor_32x32_c(uint8_t* dst, ++ ptrdiff_t stride, ++ const uint8_t* above, ++ const uint8_t* left); ++#define vpx_d153_predictor_32x32 vpx_d153_predictor_32x32_c ++ ++void vpx_d153_predictor_4x4_c(uint8_t* dst, ++ ptrdiff_t stride, ++ const uint8_t* above, ++ const uint8_t* left); ++#define vpx_d153_predictor_4x4 vpx_d153_predictor_4x4_c ++ ++void vpx_d153_predictor_8x8_c(uint8_t* dst, ++ ptrdiff_t stride, ++ const uint8_t* above, ++ const uint8_t* left); ++#define vpx_d153_predictor_8x8 vpx_d153_predictor_8x8_c ++ ++void vpx_d207_predictor_16x16_c(uint8_t* dst, ++ ptrdiff_t stride, ++ const uint8_t* above, ++ const uint8_t* left); ++#define vpx_d207_predictor_16x16 vpx_d207_predictor_16x16_c ++ ++void vpx_d207_predictor_32x32_c(uint8_t* dst, ++ ptrdiff_t stride, ++ const uint8_t* above, ++ const uint8_t* left); ++#define vpx_d207_predictor_32x32 vpx_d207_predictor_32x32_c ++ ++void vpx_d207_predictor_4x4_c(uint8_t* dst, ++ ptrdiff_t stride, ++ const uint8_t* above, ++ const uint8_t* left); ++#define vpx_d207_predictor_4x4 vpx_d207_predictor_4x4_c ++ ++void vpx_d207_predictor_8x8_c(uint8_t* dst, ++ ptrdiff_t stride, ++ const uint8_t* above, ++ const uint8_t* left); ++#define vpx_d207_predictor_8x8 vpx_d207_predictor_8x8_c ++ ++void vpx_d45_predictor_16x16_c(uint8_t* dst, ++ ptrdiff_t stride, ++ const uint8_t* above, ++ const uint8_t* left); ++#define vpx_d45_predictor_16x16 vpx_d45_predictor_16x16_c ++ ++void vpx_d45_predictor_32x32_c(uint8_t* dst, ++ ptrdiff_t stride, ++ const uint8_t* above, ++ const uint8_t* left); ++#define vpx_d45_predictor_32x32 vpx_d45_predictor_32x32_c ++ ++void vpx_d45_predictor_4x4_c(uint8_t* dst, ++ ptrdiff_t stride, ++ const uint8_t* above, ++ const uint8_t* left); ++#define vpx_d45_predictor_4x4 vpx_d45_predictor_4x4_c ++ ++void vpx_d45_predictor_8x8_c(uint8_t* dst, ++ ptrdiff_t stride, ++ const uint8_t* above, ++ const uint8_t* left); ++#define vpx_d45_predictor_8x8 vpx_d45_predictor_8x8_c ++ ++void vpx_d45e_predictor_4x4_c(uint8_t* dst, ++ ptrdiff_t stride, ++ const uint8_t* above, ++ const uint8_t* left); ++#define vpx_d45e_predictor_4x4 vpx_d45e_predictor_4x4_c ++ ++void vpx_d63_predictor_16x16_c(uint8_t* dst, ++ ptrdiff_t stride, ++ const uint8_t* above, ++ const uint8_t* left); ++#define vpx_d63_predictor_16x16 vpx_d63_predictor_16x16_c ++ ++void vpx_d63_predictor_32x32_c(uint8_t* dst, ++ ptrdiff_t stride, ++ const uint8_t* above, ++ const uint8_t* left); ++#define vpx_d63_predictor_32x32 vpx_d63_predictor_32x32_c ++ ++void vpx_d63_predictor_4x4_c(uint8_t* dst, ++ ptrdiff_t stride, ++ const uint8_t* above, ++ const uint8_t* left); ++#define vpx_d63_predictor_4x4 vpx_d63_predictor_4x4_c ++ ++void vpx_d63_predictor_8x8_c(uint8_t* dst, ++ ptrdiff_t stride, ++ const uint8_t* above, ++ const uint8_t* left); ++#define vpx_d63_predictor_8x8 vpx_d63_predictor_8x8_c ++ ++void vpx_d63e_predictor_4x4_c(uint8_t* dst, ++ ptrdiff_t stride, ++ const uint8_t* above, ++ const uint8_t* left); ++#define vpx_d63e_predictor_4x4 vpx_d63e_predictor_4x4_c ++ ++void vpx_dc_128_predictor_16x16_c(uint8_t* dst, ++ ptrdiff_t stride, ++ const uint8_t* above, ++ const uint8_t* left); ++#define vpx_dc_128_predictor_16x16 vpx_dc_128_predictor_16x16_c ++ ++void vpx_dc_128_predictor_32x32_c(uint8_t* dst, ++ ptrdiff_t stride, ++ const uint8_t* above, ++ const uint8_t* left); ++#define vpx_dc_128_predictor_32x32 vpx_dc_128_predictor_32x32_c ++ ++void vpx_dc_128_predictor_4x4_c(uint8_t* dst, ++ ptrdiff_t stride, ++ const uint8_t* above, ++ const uint8_t* left); ++#define vpx_dc_128_predictor_4x4 vpx_dc_128_predictor_4x4_c ++ ++void vpx_dc_128_predictor_8x8_c(uint8_t* dst, ++ ptrdiff_t stride, ++ const uint8_t* above, ++ const uint8_t* left); ++#define vpx_dc_128_predictor_8x8 vpx_dc_128_predictor_8x8_c ++ ++void vpx_dc_left_predictor_16x16_c(uint8_t* dst, ++ ptrdiff_t stride, ++ const uint8_t* above, ++ const uint8_t* left); ++#define vpx_dc_left_predictor_16x16 vpx_dc_left_predictor_16x16_c ++ ++void vpx_dc_left_predictor_32x32_c(uint8_t* dst, ++ ptrdiff_t stride, ++ const uint8_t* above, ++ const uint8_t* left); ++#define vpx_dc_left_predictor_32x32 vpx_dc_left_predictor_32x32_c ++ ++void vpx_dc_left_predictor_4x4_c(uint8_t* dst, ++ ptrdiff_t stride, ++ const uint8_t* above, ++ const uint8_t* left); ++#define vpx_dc_left_predictor_4x4 vpx_dc_left_predictor_4x4_c ++ ++void vpx_dc_left_predictor_8x8_c(uint8_t* dst, ++ ptrdiff_t stride, ++ const uint8_t* above, ++ const uint8_t* left); ++#define vpx_dc_left_predictor_8x8 vpx_dc_left_predictor_8x8_c ++ ++void vpx_dc_predictor_16x16_c(uint8_t* dst, ++ ptrdiff_t stride, ++ const uint8_t* above, ++ const uint8_t* left); ++#define vpx_dc_predictor_16x16 vpx_dc_predictor_16x16_c ++ ++void vpx_dc_predictor_32x32_c(uint8_t* dst, ++ ptrdiff_t stride, ++ const uint8_t* above, ++ const uint8_t* left); ++#define vpx_dc_predictor_32x32 vpx_dc_predictor_32x32_c ++ ++void vpx_dc_predictor_4x4_c(uint8_t* dst, ++ ptrdiff_t stride, ++ const uint8_t* above, ++ const uint8_t* left); ++#define vpx_dc_predictor_4x4 vpx_dc_predictor_4x4_c ++ ++void vpx_dc_predictor_8x8_c(uint8_t* dst, ++ ptrdiff_t stride, ++ const uint8_t* above, ++ const uint8_t* left); ++#define vpx_dc_predictor_8x8 vpx_dc_predictor_8x8_c ++ ++void vpx_dc_top_predictor_16x16_c(uint8_t* dst, ++ ptrdiff_t stride, ++ const uint8_t* above, ++ const uint8_t* left); ++#define vpx_dc_top_predictor_16x16 vpx_dc_top_predictor_16x16_c ++ ++void vpx_dc_top_predictor_32x32_c(uint8_t* dst, ++ ptrdiff_t stride, ++ const uint8_t* above, ++ const uint8_t* left); ++#define vpx_dc_top_predictor_32x32 vpx_dc_top_predictor_32x32_c ++ ++void vpx_dc_top_predictor_4x4_c(uint8_t* dst, ++ ptrdiff_t stride, ++ const uint8_t* above, ++ const uint8_t* left); ++#define vpx_dc_top_predictor_4x4 vpx_dc_top_predictor_4x4_c ++ ++void vpx_dc_top_predictor_8x8_c(uint8_t* dst, ++ ptrdiff_t stride, ++ const uint8_t* above, ++ const uint8_t* left); ++#define vpx_dc_top_predictor_8x8 vpx_dc_top_predictor_8x8_c ++ ++void vpx_fdct16x16_c(const int16_t* input, tran_low_t* output, int stride); ++#define vpx_fdct16x16 vpx_fdct16x16_c ++ ++void vpx_fdct16x16_1_c(const int16_t* input, tran_low_t* output, int stride); ++#define vpx_fdct16x16_1 vpx_fdct16x16_1_c ++ ++void vpx_fdct32x32_c(const int16_t* input, tran_low_t* output, int stride); ++#define vpx_fdct32x32 vpx_fdct32x32_c ++ ++void vpx_fdct32x32_1_c(const int16_t* input, tran_low_t* output, int stride); ++#define vpx_fdct32x32_1 vpx_fdct32x32_1_c ++ ++void vpx_fdct32x32_rd_c(const int16_t* input, tran_low_t* output, int stride); ++#define vpx_fdct32x32_rd vpx_fdct32x32_rd_c ++ ++void vpx_fdct4x4_c(const int16_t* input, tran_low_t* output, int stride); ++#define vpx_fdct4x4 vpx_fdct4x4_c ++ ++void vpx_fdct4x4_1_c(const int16_t* input, tran_low_t* output, int stride); ++#define vpx_fdct4x4_1 vpx_fdct4x4_1_c ++ ++void vpx_fdct8x8_c(const int16_t* input, tran_low_t* output, int stride); ++#define vpx_fdct8x8 vpx_fdct8x8_c ++ ++void vpx_fdct8x8_1_c(const int16_t* input, tran_low_t* output, int stride); ++#define vpx_fdct8x8_1 vpx_fdct8x8_1_c ++ ++void vpx_get16x16var_c(const uint8_t* src_ptr, ++ int src_stride, ++ const uint8_t* ref_ptr, ++ int ref_stride, ++ unsigned int* sse, ++ int* sum); ++#define vpx_get16x16var vpx_get16x16var_c ++ ++unsigned int vpx_get4x4sse_cs_c(const unsigned char* src_ptr, ++ int src_stride, ++ const unsigned char* ref_ptr, ++ int ref_stride); ++#define vpx_get4x4sse_cs vpx_get4x4sse_cs_c ++ ++void vpx_get8x8var_c(const uint8_t* src_ptr, ++ int src_stride, ++ const uint8_t* ref_ptr, ++ int ref_stride, ++ unsigned int* sse, ++ int* sum); ++#define vpx_get8x8var vpx_get8x8var_c ++ ++unsigned int vpx_get_mb_ss_c(const int16_t*); ++#define vpx_get_mb_ss vpx_get_mb_ss_c ++ ++void vpx_h_predictor_16x16_c(uint8_t* dst, ++ ptrdiff_t stride, ++ const uint8_t* above, ++ const uint8_t* left); ++#define vpx_h_predictor_16x16 vpx_h_predictor_16x16_c ++ ++void vpx_h_predictor_32x32_c(uint8_t* dst, ++ ptrdiff_t stride, ++ const uint8_t* above, ++ const uint8_t* left); ++#define vpx_h_predictor_32x32 vpx_h_predictor_32x32_c ++ ++void vpx_h_predictor_4x4_c(uint8_t* dst, ++ ptrdiff_t stride, ++ const uint8_t* above, ++ const uint8_t* left); ++#define vpx_h_predictor_4x4 vpx_h_predictor_4x4_c ++ ++void vpx_h_predictor_8x8_c(uint8_t* dst, ++ ptrdiff_t stride, ++ const uint8_t* above, ++ const uint8_t* left); ++#define vpx_h_predictor_8x8 vpx_h_predictor_8x8_c ++ ++void vpx_hadamard_16x16_c(const int16_t* src_diff, ++ ptrdiff_t src_stride, ++ tran_low_t* coeff); ++#define vpx_hadamard_16x16 vpx_hadamard_16x16_c ++ ++void vpx_hadamard_32x32_c(const int16_t* src_diff, ++ ptrdiff_t src_stride, ++ tran_low_t* coeff); ++#define vpx_hadamard_32x32 vpx_hadamard_32x32_c ++ ++void vpx_hadamard_8x8_c(const int16_t* src_diff, ++ ptrdiff_t src_stride, ++ tran_low_t* coeff); ++#define vpx_hadamard_8x8 vpx_hadamard_8x8_c ++ ++void vpx_he_predictor_4x4_c(uint8_t* dst, ++ ptrdiff_t stride, ++ const uint8_t* above, ++ const uint8_t* left); ++#define vpx_he_predictor_4x4 vpx_he_predictor_4x4_c ++ ++void vpx_highbd_10_get16x16var_c(const uint8_t* src_ptr, ++ int src_stride, ++ const uint8_t* ref_ptr, ++ int ref_stride, ++ unsigned int* sse, ++ int* sum); ++#define vpx_highbd_10_get16x16var vpx_highbd_10_get16x16var_c ++ ++void vpx_highbd_10_get8x8var_c(const uint8_t* src_ptr, ++ int src_stride, ++ const uint8_t* ref_ptr, ++ int ref_stride, ++ unsigned int* sse, ++ int* sum); ++#define vpx_highbd_10_get8x8var vpx_highbd_10_get8x8var_c ++ ++unsigned int vpx_highbd_10_mse16x16_c(const uint8_t* src_ptr, ++ int src_stride, ++ const uint8_t* ref_ptr, ++ int ref_stride, ++ unsigned int* sse); ++#define vpx_highbd_10_mse16x16 vpx_highbd_10_mse16x16_c ++ ++unsigned int vpx_highbd_10_mse16x8_c(const uint8_t* src_ptr, ++ int src_stride, ++ const uint8_t* ref_ptr, ++ int ref_stride, ++ unsigned int* sse); ++#define vpx_highbd_10_mse16x8 vpx_highbd_10_mse16x8_c ++ ++unsigned int vpx_highbd_10_mse8x16_c(const uint8_t* src_ptr, ++ int src_stride, ++ const uint8_t* ref_ptr, ++ int ref_stride, ++ unsigned int* sse); ++#define vpx_highbd_10_mse8x16 vpx_highbd_10_mse8x16_c ++ ++unsigned int vpx_highbd_10_mse8x8_c(const uint8_t* src_ptr, ++ int src_stride, ++ const uint8_t* ref_ptr, ++ int ref_stride, ++ unsigned int* sse); ++#define vpx_highbd_10_mse8x8 vpx_highbd_10_mse8x8_c ++ ++uint32_t vpx_highbd_10_sub_pixel_avg_variance16x16_c( ++ const uint8_t* src_ptr, ++ int src_stride, ++ int x_offset, ++ int y_offset, ++ const uint8_t* ref_ptr, ++ int ref_stride, ++ uint32_t* sse, ++ const uint8_t* second_pred); ++#define vpx_highbd_10_sub_pixel_avg_variance16x16 \ ++ vpx_highbd_10_sub_pixel_avg_variance16x16_c ++ ++uint32_t vpx_highbd_10_sub_pixel_avg_variance16x32_c( ++ const uint8_t* src_ptr, ++ int src_stride, ++ int x_offset, ++ int y_offset, ++ const uint8_t* ref_ptr, ++ int ref_stride, ++ uint32_t* sse, ++ const uint8_t* second_pred); ++#define vpx_highbd_10_sub_pixel_avg_variance16x32 \ ++ vpx_highbd_10_sub_pixel_avg_variance16x32_c ++ ++uint32_t vpx_highbd_10_sub_pixel_avg_variance16x8_c(const uint8_t* src_ptr, ++ int src_stride, ++ int x_offset, ++ int y_offset, ++ const uint8_t* ref_ptr, ++ int ref_stride, ++ uint32_t* sse, ++ const uint8_t* second_pred); ++#define vpx_highbd_10_sub_pixel_avg_variance16x8 \ ++ vpx_highbd_10_sub_pixel_avg_variance16x8_c ++ ++uint32_t vpx_highbd_10_sub_pixel_avg_variance32x16_c( ++ const uint8_t* src_ptr, ++ int src_stride, ++ int x_offset, ++ int y_offset, ++ const uint8_t* ref_ptr, ++ int ref_stride, ++ uint32_t* sse, ++ const uint8_t* second_pred); ++#define vpx_highbd_10_sub_pixel_avg_variance32x16 \ ++ vpx_highbd_10_sub_pixel_avg_variance32x16_c ++ ++uint32_t vpx_highbd_10_sub_pixel_avg_variance32x32_c( ++ const uint8_t* src_ptr, ++ int src_stride, ++ int x_offset, ++ int y_offset, ++ const uint8_t* ref_ptr, ++ int ref_stride, ++ uint32_t* sse, ++ const uint8_t* second_pred); ++#define vpx_highbd_10_sub_pixel_avg_variance32x32 \ ++ vpx_highbd_10_sub_pixel_avg_variance32x32_c ++ ++uint32_t vpx_highbd_10_sub_pixel_avg_variance32x64_c( ++ const uint8_t* src_ptr, ++ int src_stride, ++ int x_offset, ++ int y_offset, ++ const uint8_t* ref_ptr, ++ int ref_stride, ++ uint32_t* sse, ++ const uint8_t* second_pred); ++#define vpx_highbd_10_sub_pixel_avg_variance32x64 \ ++ vpx_highbd_10_sub_pixel_avg_variance32x64_c ++ ++uint32_t vpx_highbd_10_sub_pixel_avg_variance4x4_c(const uint8_t* src_ptr, ++ int src_stride, ++ int x_offset, ++ int y_offset, ++ const uint8_t* ref_ptr, ++ int ref_stride, ++ uint32_t* sse, ++ const uint8_t* second_pred); ++#define vpx_highbd_10_sub_pixel_avg_variance4x4 \ ++ vpx_highbd_10_sub_pixel_avg_variance4x4_c ++ ++uint32_t vpx_highbd_10_sub_pixel_avg_variance4x8_c(const uint8_t* src_ptr, ++ int src_stride, ++ int x_offset, ++ int y_offset, ++ const uint8_t* ref_ptr, ++ int ref_stride, ++ uint32_t* sse, ++ const uint8_t* second_pred); ++#define vpx_highbd_10_sub_pixel_avg_variance4x8 \ ++ vpx_highbd_10_sub_pixel_avg_variance4x8_c ++ ++uint32_t vpx_highbd_10_sub_pixel_avg_variance64x32_c( ++ const uint8_t* src_ptr, ++ int src_stride, ++ int x_offset, ++ int y_offset, ++ const uint8_t* ref_ptr, ++ int ref_stride, ++ uint32_t* sse, ++ const uint8_t* second_pred); ++#define vpx_highbd_10_sub_pixel_avg_variance64x32 \ ++ vpx_highbd_10_sub_pixel_avg_variance64x32_c ++ ++uint32_t vpx_highbd_10_sub_pixel_avg_variance64x64_c( ++ const uint8_t* src_ptr, ++ int src_stride, ++ int x_offset, ++ int y_offset, ++ const uint8_t* ref_ptr, ++ int ref_stride, ++ uint32_t* sse, ++ const uint8_t* second_pred); ++#define vpx_highbd_10_sub_pixel_avg_variance64x64 \ ++ vpx_highbd_10_sub_pixel_avg_variance64x64_c ++ ++uint32_t vpx_highbd_10_sub_pixel_avg_variance8x16_c(const uint8_t* src_ptr, ++ int src_stride, ++ int x_offset, ++ int y_offset, ++ const uint8_t* ref_ptr, ++ int ref_stride, ++ uint32_t* sse, ++ const uint8_t* second_pred); ++#define vpx_highbd_10_sub_pixel_avg_variance8x16 \ ++ vpx_highbd_10_sub_pixel_avg_variance8x16_c ++ ++uint32_t vpx_highbd_10_sub_pixel_avg_variance8x4_c(const uint8_t* src_ptr, ++ int src_stride, ++ int x_offset, ++ int y_offset, ++ const uint8_t* ref_ptr, ++ int ref_stride, ++ uint32_t* sse, ++ const uint8_t* second_pred); ++#define vpx_highbd_10_sub_pixel_avg_variance8x4 \ ++ vpx_highbd_10_sub_pixel_avg_variance8x4_c ++ ++uint32_t vpx_highbd_10_sub_pixel_avg_variance8x8_c(const uint8_t* src_ptr, ++ int src_stride, ++ int x_offset, ++ int y_offset, ++ const uint8_t* ref_ptr, ++ int ref_stride, ++ uint32_t* sse, ++ const uint8_t* second_pred); ++#define vpx_highbd_10_sub_pixel_avg_variance8x8 \ ++ vpx_highbd_10_sub_pixel_avg_variance8x8_c ++ ++uint32_t vpx_highbd_10_sub_pixel_variance16x16_c(const uint8_t* src_ptr, ++ int src_stride, ++ int x_offset, ++ int y_offset, ++ const uint8_t* ref_ptr, ++ int ref_stride, ++ uint32_t* sse); ++#define vpx_highbd_10_sub_pixel_variance16x16 \ ++ vpx_highbd_10_sub_pixel_variance16x16_c ++ ++uint32_t vpx_highbd_10_sub_pixel_variance16x32_c(const uint8_t* src_ptr, ++ int src_stride, ++ int x_offset, ++ int y_offset, ++ const uint8_t* ref_ptr, ++ int ref_stride, ++ uint32_t* sse); ++#define vpx_highbd_10_sub_pixel_variance16x32 \ ++ vpx_highbd_10_sub_pixel_variance16x32_c ++ ++uint32_t vpx_highbd_10_sub_pixel_variance16x8_c(const uint8_t* src_ptr, ++ int src_stride, ++ int x_offset, ++ int y_offset, ++ const uint8_t* ref_ptr, ++ int ref_stride, ++ uint32_t* sse); ++#define vpx_highbd_10_sub_pixel_variance16x8 \ ++ vpx_highbd_10_sub_pixel_variance16x8_c ++ ++uint32_t vpx_highbd_10_sub_pixel_variance32x16_c(const uint8_t* src_ptr, ++ int src_stride, ++ int x_offset, ++ int y_offset, ++ const uint8_t* ref_ptr, ++ int ref_stride, ++ uint32_t* sse); ++#define vpx_highbd_10_sub_pixel_variance32x16 \ ++ vpx_highbd_10_sub_pixel_variance32x16_c ++ ++uint32_t vpx_highbd_10_sub_pixel_variance32x32_c(const uint8_t* src_ptr, ++ int src_stride, ++ int x_offset, ++ int y_offset, ++ const uint8_t* ref_ptr, ++ int ref_stride, ++ uint32_t* sse); ++#define vpx_highbd_10_sub_pixel_variance32x32 \ ++ vpx_highbd_10_sub_pixel_variance32x32_c ++ ++uint32_t vpx_highbd_10_sub_pixel_variance32x64_c(const uint8_t* src_ptr, ++ int src_stride, ++ int x_offset, ++ int y_offset, ++ const uint8_t* ref_ptr, ++ int ref_stride, ++ uint32_t* sse); ++#define vpx_highbd_10_sub_pixel_variance32x64 \ ++ vpx_highbd_10_sub_pixel_variance32x64_c ++ ++uint32_t vpx_highbd_10_sub_pixel_variance4x4_c(const uint8_t* src_ptr, ++ int src_stride, ++ int x_offset, ++ int y_offset, ++ const uint8_t* ref_ptr, ++ int ref_stride, ++ uint32_t* sse); ++#define vpx_highbd_10_sub_pixel_variance4x4 \ ++ vpx_highbd_10_sub_pixel_variance4x4_c ++ ++uint32_t vpx_highbd_10_sub_pixel_variance4x8_c(const uint8_t* src_ptr, ++ int src_stride, ++ int x_offset, ++ int y_offset, ++ const uint8_t* ref_ptr, ++ int ref_stride, ++ uint32_t* sse); ++#define vpx_highbd_10_sub_pixel_variance4x8 \ ++ vpx_highbd_10_sub_pixel_variance4x8_c ++ ++uint32_t vpx_highbd_10_sub_pixel_variance64x32_c(const uint8_t* src_ptr, ++ int src_stride, ++ int x_offset, ++ int y_offset, ++ const uint8_t* ref_ptr, ++ int ref_stride, ++ uint32_t* sse); ++#define vpx_highbd_10_sub_pixel_variance64x32 \ ++ vpx_highbd_10_sub_pixel_variance64x32_c ++ ++uint32_t vpx_highbd_10_sub_pixel_variance64x64_c(const uint8_t* src_ptr, ++ int src_stride, ++ int x_offset, ++ int y_offset, ++ const uint8_t* ref_ptr, ++ int ref_stride, ++ uint32_t* sse); ++#define vpx_highbd_10_sub_pixel_variance64x64 \ ++ vpx_highbd_10_sub_pixel_variance64x64_c ++ ++uint32_t vpx_highbd_10_sub_pixel_variance8x16_c(const uint8_t* src_ptr, ++ int src_stride, ++ int x_offset, ++ int y_offset, ++ const uint8_t* ref_ptr, ++ int ref_stride, ++ uint32_t* sse); ++#define vpx_highbd_10_sub_pixel_variance8x16 \ ++ vpx_highbd_10_sub_pixel_variance8x16_c ++ ++uint32_t vpx_highbd_10_sub_pixel_variance8x4_c(const uint8_t* src_ptr, ++ int src_stride, ++ int x_offset, ++ int y_offset, ++ const uint8_t* ref_ptr, ++ int ref_stride, ++ uint32_t* sse); ++#define vpx_highbd_10_sub_pixel_variance8x4 \ ++ vpx_highbd_10_sub_pixel_variance8x4_c ++ ++uint32_t vpx_highbd_10_sub_pixel_variance8x8_c(const uint8_t* src_ptr, ++ int src_stride, ++ int x_offset, ++ int y_offset, ++ const uint8_t* ref_ptr, ++ int ref_stride, ++ uint32_t* sse); ++#define vpx_highbd_10_sub_pixel_variance8x8 \ ++ vpx_highbd_10_sub_pixel_variance8x8_c ++ ++unsigned int vpx_highbd_10_variance16x16_c(const uint8_t* src_ptr, ++ int src_stride, ++ const uint8_t* ref_ptr, ++ int ref_stride, ++ unsigned int* sse); ++#define vpx_highbd_10_variance16x16 vpx_highbd_10_variance16x16_c ++ ++unsigned int vpx_highbd_10_variance16x32_c(const uint8_t* src_ptr, ++ int src_stride, ++ const uint8_t* ref_ptr, ++ int ref_stride, ++ unsigned int* sse); ++#define vpx_highbd_10_variance16x32 vpx_highbd_10_variance16x32_c ++ ++unsigned int vpx_highbd_10_variance16x8_c(const uint8_t* src_ptr, ++ int src_stride, ++ const uint8_t* ref_ptr, ++ int ref_stride, ++ unsigned int* sse); ++#define vpx_highbd_10_variance16x8 vpx_highbd_10_variance16x8_c ++ ++unsigned int vpx_highbd_10_variance32x16_c(const uint8_t* src_ptr, ++ int src_stride, ++ const uint8_t* ref_ptr, ++ int ref_stride, ++ unsigned int* sse); ++#define vpx_highbd_10_variance32x16 vpx_highbd_10_variance32x16_c ++ ++unsigned int vpx_highbd_10_variance32x32_c(const uint8_t* src_ptr, ++ int src_stride, ++ const uint8_t* ref_ptr, ++ int ref_stride, ++ unsigned int* sse); ++#define vpx_highbd_10_variance32x32 vpx_highbd_10_variance32x32_c ++ ++unsigned int vpx_highbd_10_variance32x64_c(const uint8_t* src_ptr, ++ int src_stride, ++ const uint8_t* ref_ptr, ++ int ref_stride, ++ unsigned int* sse); ++#define vpx_highbd_10_variance32x64 vpx_highbd_10_variance32x64_c ++ ++unsigned int vpx_highbd_10_variance4x4_c(const uint8_t* src_ptr, ++ int src_stride, ++ const uint8_t* ref_ptr, ++ int ref_stride, ++ unsigned int* sse); ++#define vpx_highbd_10_variance4x4 vpx_highbd_10_variance4x4_c ++ ++unsigned int vpx_highbd_10_variance4x8_c(const uint8_t* src_ptr, ++ int src_stride, ++ const uint8_t* ref_ptr, ++ int ref_stride, ++ unsigned int* sse); ++#define vpx_highbd_10_variance4x8 vpx_highbd_10_variance4x8_c ++ ++unsigned int vpx_highbd_10_variance64x32_c(const uint8_t* src_ptr, ++ int src_stride, ++ const uint8_t* ref_ptr, ++ int ref_stride, ++ unsigned int* sse); ++#define vpx_highbd_10_variance64x32 vpx_highbd_10_variance64x32_c ++ ++unsigned int vpx_highbd_10_variance64x64_c(const uint8_t* src_ptr, ++ int src_stride, ++ const uint8_t* ref_ptr, ++ int ref_stride, ++ unsigned int* sse); ++#define vpx_highbd_10_variance64x64 vpx_highbd_10_variance64x64_c ++ ++unsigned int vpx_highbd_10_variance8x16_c(const uint8_t* src_ptr, ++ int src_stride, ++ const uint8_t* ref_ptr, ++ int ref_stride, ++ unsigned int* sse); ++#define vpx_highbd_10_variance8x16 vpx_highbd_10_variance8x16_c ++ ++unsigned int vpx_highbd_10_variance8x4_c(const uint8_t* src_ptr, ++ int src_stride, ++ const uint8_t* ref_ptr, ++ int ref_stride, ++ unsigned int* sse); ++#define vpx_highbd_10_variance8x4 vpx_highbd_10_variance8x4_c ++ ++unsigned int vpx_highbd_10_variance8x8_c(const uint8_t* src_ptr, ++ int src_stride, ++ const uint8_t* ref_ptr, ++ int ref_stride, ++ unsigned int* sse); ++#define vpx_highbd_10_variance8x8 vpx_highbd_10_variance8x8_c ++ ++void vpx_highbd_12_get16x16var_c(const uint8_t* src_ptr, ++ int src_stride, ++ const uint8_t* ref_ptr, ++ int ref_stride, ++ unsigned int* sse, ++ int* sum); ++#define vpx_highbd_12_get16x16var vpx_highbd_12_get16x16var_c ++ ++void vpx_highbd_12_get8x8var_c(const uint8_t* src_ptr, ++ int src_stride, ++ const uint8_t* ref_ptr, ++ int ref_stride, ++ unsigned int* sse, ++ int* sum); ++#define vpx_highbd_12_get8x8var vpx_highbd_12_get8x8var_c ++ ++unsigned int vpx_highbd_12_mse16x16_c(const uint8_t* src_ptr, ++ int src_stride, ++ const uint8_t* ref_ptr, ++ int ref_stride, ++ unsigned int* sse); ++#define vpx_highbd_12_mse16x16 vpx_highbd_12_mse16x16_c ++ ++unsigned int vpx_highbd_12_mse16x8_c(const uint8_t* src_ptr, ++ int src_stride, ++ const uint8_t* ref_ptr, ++ int ref_stride, ++ unsigned int* sse); ++#define vpx_highbd_12_mse16x8 vpx_highbd_12_mse16x8_c ++ ++unsigned int vpx_highbd_12_mse8x16_c(const uint8_t* src_ptr, ++ int src_stride, ++ const uint8_t* ref_ptr, ++ int ref_stride, ++ unsigned int* sse); ++#define vpx_highbd_12_mse8x16 vpx_highbd_12_mse8x16_c ++ ++unsigned int vpx_highbd_12_mse8x8_c(const uint8_t* src_ptr, ++ int src_stride, ++ const uint8_t* ref_ptr, ++ int ref_stride, ++ unsigned int* sse); ++#define vpx_highbd_12_mse8x8 vpx_highbd_12_mse8x8_c ++ ++uint32_t vpx_highbd_12_sub_pixel_avg_variance16x16_c( ++ const uint8_t* src_ptr, ++ int src_stride, ++ int x_offset, ++ int y_offset, ++ const uint8_t* ref_ptr, ++ int ref_stride, ++ uint32_t* sse, ++ const uint8_t* second_pred); ++#define vpx_highbd_12_sub_pixel_avg_variance16x16 \ ++ vpx_highbd_12_sub_pixel_avg_variance16x16_c ++ ++uint32_t vpx_highbd_12_sub_pixel_avg_variance16x32_c( ++ const uint8_t* src_ptr, ++ int src_stride, ++ int x_offset, ++ int y_offset, ++ const uint8_t* ref_ptr, ++ int ref_stride, ++ uint32_t* sse, ++ const uint8_t* second_pred); ++#define vpx_highbd_12_sub_pixel_avg_variance16x32 \ ++ vpx_highbd_12_sub_pixel_avg_variance16x32_c ++ ++uint32_t vpx_highbd_12_sub_pixel_avg_variance16x8_c(const uint8_t* src_ptr, ++ int src_stride, ++ int x_offset, ++ int y_offset, ++ const uint8_t* ref_ptr, ++ int ref_stride, ++ uint32_t* sse, ++ const uint8_t* second_pred); ++#define vpx_highbd_12_sub_pixel_avg_variance16x8 \ ++ vpx_highbd_12_sub_pixel_avg_variance16x8_c ++ ++uint32_t vpx_highbd_12_sub_pixel_avg_variance32x16_c( ++ const uint8_t* src_ptr, ++ int src_stride, ++ int x_offset, ++ int y_offset, ++ const uint8_t* ref_ptr, ++ int ref_stride, ++ uint32_t* sse, ++ const uint8_t* second_pred); ++#define vpx_highbd_12_sub_pixel_avg_variance32x16 \ ++ vpx_highbd_12_sub_pixel_avg_variance32x16_c ++ ++uint32_t vpx_highbd_12_sub_pixel_avg_variance32x32_c( ++ const uint8_t* src_ptr, ++ int src_stride, ++ int x_offset, ++ int y_offset, ++ const uint8_t* ref_ptr, ++ int ref_stride, ++ uint32_t* sse, ++ const uint8_t* second_pred); ++#define vpx_highbd_12_sub_pixel_avg_variance32x32 \ ++ vpx_highbd_12_sub_pixel_avg_variance32x32_c ++ ++uint32_t vpx_highbd_12_sub_pixel_avg_variance32x64_c( ++ const uint8_t* src_ptr, ++ int src_stride, ++ int x_offset, ++ int y_offset, ++ const uint8_t* ref_ptr, ++ int ref_stride, ++ uint32_t* sse, ++ const uint8_t* second_pred); ++#define vpx_highbd_12_sub_pixel_avg_variance32x64 \ ++ vpx_highbd_12_sub_pixel_avg_variance32x64_c ++ ++uint32_t vpx_highbd_12_sub_pixel_avg_variance4x4_c(const uint8_t* src_ptr, ++ int src_stride, ++ int x_offset, ++ int y_offset, ++ const uint8_t* ref_ptr, ++ int ref_stride, ++ uint32_t* sse, ++ const uint8_t* second_pred); ++#define vpx_highbd_12_sub_pixel_avg_variance4x4 \ ++ vpx_highbd_12_sub_pixel_avg_variance4x4_c ++ ++uint32_t vpx_highbd_12_sub_pixel_avg_variance4x8_c(const uint8_t* src_ptr, ++ int src_stride, ++ int x_offset, ++ int y_offset, ++ const uint8_t* ref_ptr, ++ int ref_stride, ++ uint32_t* sse, ++ const uint8_t* second_pred); ++#define vpx_highbd_12_sub_pixel_avg_variance4x8 \ ++ vpx_highbd_12_sub_pixel_avg_variance4x8_c ++ ++uint32_t vpx_highbd_12_sub_pixel_avg_variance64x32_c( ++ const uint8_t* src_ptr, ++ int src_stride, ++ int x_offset, ++ int y_offset, ++ const uint8_t* ref_ptr, ++ int ref_stride, ++ uint32_t* sse, ++ const uint8_t* second_pred); ++#define vpx_highbd_12_sub_pixel_avg_variance64x32 \ ++ vpx_highbd_12_sub_pixel_avg_variance64x32_c ++ ++uint32_t vpx_highbd_12_sub_pixel_avg_variance64x64_c( ++ const uint8_t* src_ptr, ++ int src_stride, ++ int x_offset, ++ int y_offset, ++ const uint8_t* ref_ptr, ++ int ref_stride, ++ uint32_t* sse, ++ const uint8_t* second_pred); ++#define vpx_highbd_12_sub_pixel_avg_variance64x64 \ ++ vpx_highbd_12_sub_pixel_avg_variance64x64_c ++ ++uint32_t vpx_highbd_12_sub_pixel_avg_variance8x16_c(const uint8_t* src_ptr, ++ int src_stride, ++ int x_offset, ++ int y_offset, ++ const uint8_t* ref_ptr, ++ int ref_stride, ++ uint32_t* sse, ++ const uint8_t* second_pred); ++#define vpx_highbd_12_sub_pixel_avg_variance8x16 \ ++ vpx_highbd_12_sub_pixel_avg_variance8x16_c ++ ++uint32_t vpx_highbd_12_sub_pixel_avg_variance8x4_c(const uint8_t* src_ptr, ++ int src_stride, ++ int x_offset, ++ int y_offset, ++ const uint8_t* ref_ptr, ++ int ref_stride, ++ uint32_t* sse, ++ const uint8_t* second_pred); ++#define vpx_highbd_12_sub_pixel_avg_variance8x4 \ ++ vpx_highbd_12_sub_pixel_avg_variance8x4_c ++ ++uint32_t vpx_highbd_12_sub_pixel_avg_variance8x8_c(const uint8_t* src_ptr, ++ int src_stride, ++ int x_offset, ++ int y_offset, ++ const uint8_t* ref_ptr, ++ int ref_stride, ++ uint32_t* sse, ++ const uint8_t* second_pred); ++#define vpx_highbd_12_sub_pixel_avg_variance8x8 \ ++ vpx_highbd_12_sub_pixel_avg_variance8x8_c ++ ++uint32_t vpx_highbd_12_sub_pixel_variance16x16_c(const uint8_t* src_ptr, ++ int src_stride, ++ int x_offset, ++ int y_offset, ++ const uint8_t* ref_ptr, ++ int ref_stride, ++ uint32_t* sse); ++#define vpx_highbd_12_sub_pixel_variance16x16 \ ++ vpx_highbd_12_sub_pixel_variance16x16_c ++ ++uint32_t vpx_highbd_12_sub_pixel_variance16x32_c(const uint8_t* src_ptr, ++ int src_stride, ++ int x_offset, ++ int y_offset, ++ const uint8_t* ref_ptr, ++ int ref_stride, ++ uint32_t* sse); ++#define vpx_highbd_12_sub_pixel_variance16x32 \ ++ vpx_highbd_12_sub_pixel_variance16x32_c ++ ++uint32_t vpx_highbd_12_sub_pixel_variance16x8_c(const uint8_t* src_ptr, ++ int src_stride, ++ int x_offset, ++ int y_offset, ++ const uint8_t* ref_ptr, ++ int ref_stride, ++ uint32_t* sse); ++#define vpx_highbd_12_sub_pixel_variance16x8 \ ++ vpx_highbd_12_sub_pixel_variance16x8_c ++ ++uint32_t vpx_highbd_12_sub_pixel_variance32x16_c(const uint8_t* src_ptr, ++ int src_stride, ++ int x_offset, ++ int y_offset, ++ const uint8_t* ref_ptr, ++ int ref_stride, ++ uint32_t* sse); ++#define vpx_highbd_12_sub_pixel_variance32x16 \ ++ vpx_highbd_12_sub_pixel_variance32x16_c ++ ++uint32_t vpx_highbd_12_sub_pixel_variance32x32_c(const uint8_t* src_ptr, ++ int src_stride, ++ int x_offset, ++ int y_offset, ++ const uint8_t* ref_ptr, ++ int ref_stride, ++ uint32_t* sse); ++#define vpx_highbd_12_sub_pixel_variance32x32 \ ++ vpx_highbd_12_sub_pixel_variance32x32_c ++ ++uint32_t vpx_highbd_12_sub_pixel_variance32x64_c(const uint8_t* src_ptr, ++ int src_stride, ++ int x_offset, ++ int y_offset, ++ const uint8_t* ref_ptr, ++ int ref_stride, ++ uint32_t* sse); ++#define vpx_highbd_12_sub_pixel_variance32x64 \ ++ vpx_highbd_12_sub_pixel_variance32x64_c ++ ++uint32_t vpx_highbd_12_sub_pixel_variance4x4_c(const uint8_t* src_ptr, ++ int src_stride, ++ int x_offset, ++ int y_offset, ++ const uint8_t* ref_ptr, ++ int ref_stride, ++ uint32_t* sse); ++#define vpx_highbd_12_sub_pixel_variance4x4 \ ++ vpx_highbd_12_sub_pixel_variance4x4_c ++ ++uint32_t vpx_highbd_12_sub_pixel_variance4x8_c(const uint8_t* src_ptr, ++ int src_stride, ++ int x_offset, ++ int y_offset, ++ const uint8_t* ref_ptr, ++ int ref_stride, ++ uint32_t* sse); ++#define vpx_highbd_12_sub_pixel_variance4x8 \ ++ vpx_highbd_12_sub_pixel_variance4x8_c ++ ++uint32_t vpx_highbd_12_sub_pixel_variance64x32_c(const uint8_t* src_ptr, ++ int src_stride, ++ int x_offset, ++ int y_offset, ++ const uint8_t* ref_ptr, ++ int ref_stride, ++ uint32_t* sse); ++#define vpx_highbd_12_sub_pixel_variance64x32 \ ++ vpx_highbd_12_sub_pixel_variance64x32_c ++ ++uint32_t vpx_highbd_12_sub_pixel_variance64x64_c(const uint8_t* src_ptr, ++ int src_stride, ++ int x_offset, ++ int y_offset, ++ const uint8_t* ref_ptr, ++ int ref_stride, ++ uint32_t* sse); ++#define vpx_highbd_12_sub_pixel_variance64x64 \ ++ vpx_highbd_12_sub_pixel_variance64x64_c ++ ++uint32_t vpx_highbd_12_sub_pixel_variance8x16_c(const uint8_t* src_ptr, ++ int src_stride, ++ int x_offset, ++ int y_offset, ++ const uint8_t* ref_ptr, ++ int ref_stride, ++ uint32_t* sse); ++#define vpx_highbd_12_sub_pixel_variance8x16 \ ++ vpx_highbd_12_sub_pixel_variance8x16_c ++ ++uint32_t vpx_highbd_12_sub_pixel_variance8x4_c(const uint8_t* src_ptr, ++ int src_stride, ++ int x_offset, ++ int y_offset, ++ const uint8_t* ref_ptr, ++ int ref_stride, ++ uint32_t* sse); ++#define vpx_highbd_12_sub_pixel_variance8x4 \ ++ vpx_highbd_12_sub_pixel_variance8x4_c ++ ++uint32_t vpx_highbd_12_sub_pixel_variance8x8_c(const uint8_t* src_ptr, ++ int src_stride, ++ int x_offset, ++ int y_offset, ++ const uint8_t* ref_ptr, ++ int ref_stride, ++ uint32_t* sse); ++#define vpx_highbd_12_sub_pixel_variance8x8 \ ++ vpx_highbd_12_sub_pixel_variance8x8_c ++ ++unsigned int vpx_highbd_12_variance16x16_c(const uint8_t* src_ptr, ++ int src_stride, ++ const uint8_t* ref_ptr, ++ int ref_stride, ++ unsigned int* sse); ++#define vpx_highbd_12_variance16x16 vpx_highbd_12_variance16x16_c ++ ++unsigned int vpx_highbd_12_variance16x32_c(const uint8_t* src_ptr, ++ int src_stride, ++ const uint8_t* ref_ptr, ++ int ref_stride, ++ unsigned int* sse); ++#define vpx_highbd_12_variance16x32 vpx_highbd_12_variance16x32_c ++ ++unsigned int vpx_highbd_12_variance16x8_c(const uint8_t* src_ptr, ++ int src_stride, ++ const uint8_t* ref_ptr, ++ int ref_stride, ++ unsigned int* sse); ++#define vpx_highbd_12_variance16x8 vpx_highbd_12_variance16x8_c ++ ++unsigned int vpx_highbd_12_variance32x16_c(const uint8_t* src_ptr, ++ int src_stride, ++ const uint8_t* ref_ptr, ++ int ref_stride, ++ unsigned int* sse); ++#define vpx_highbd_12_variance32x16 vpx_highbd_12_variance32x16_c ++ ++unsigned int vpx_highbd_12_variance32x32_c(const uint8_t* src_ptr, ++ int src_stride, ++ const uint8_t* ref_ptr, ++ int ref_stride, ++ unsigned int* sse); ++#define vpx_highbd_12_variance32x32 vpx_highbd_12_variance32x32_c ++ ++unsigned int vpx_highbd_12_variance32x64_c(const uint8_t* src_ptr, ++ int src_stride, ++ const uint8_t* ref_ptr, ++ int ref_stride, ++ unsigned int* sse); ++#define vpx_highbd_12_variance32x64 vpx_highbd_12_variance32x64_c ++ ++unsigned int vpx_highbd_12_variance4x4_c(const uint8_t* src_ptr, ++ int src_stride, ++ const uint8_t* ref_ptr, ++ int ref_stride, ++ unsigned int* sse); ++#define vpx_highbd_12_variance4x4 vpx_highbd_12_variance4x4_c ++ ++unsigned int vpx_highbd_12_variance4x8_c(const uint8_t* src_ptr, ++ int src_stride, ++ const uint8_t* ref_ptr, ++ int ref_stride, ++ unsigned int* sse); ++#define vpx_highbd_12_variance4x8 vpx_highbd_12_variance4x8_c ++ ++unsigned int vpx_highbd_12_variance64x32_c(const uint8_t* src_ptr, ++ int src_stride, ++ const uint8_t* ref_ptr, ++ int ref_stride, ++ unsigned int* sse); ++#define vpx_highbd_12_variance64x32 vpx_highbd_12_variance64x32_c ++ ++unsigned int vpx_highbd_12_variance64x64_c(const uint8_t* src_ptr, ++ int src_stride, ++ const uint8_t* ref_ptr, ++ int ref_stride, ++ unsigned int* sse); ++#define vpx_highbd_12_variance64x64 vpx_highbd_12_variance64x64_c ++ ++unsigned int vpx_highbd_12_variance8x16_c(const uint8_t* src_ptr, ++ int src_stride, ++ const uint8_t* ref_ptr, ++ int ref_stride, ++ unsigned int* sse); ++#define vpx_highbd_12_variance8x16 vpx_highbd_12_variance8x16_c ++ ++unsigned int vpx_highbd_12_variance8x4_c(const uint8_t* src_ptr, ++ int src_stride, ++ const uint8_t* ref_ptr, ++ int ref_stride, ++ unsigned int* sse); ++#define vpx_highbd_12_variance8x4 vpx_highbd_12_variance8x4_c ++ ++unsigned int vpx_highbd_12_variance8x8_c(const uint8_t* src_ptr, ++ int src_stride, ++ const uint8_t* ref_ptr, ++ int ref_stride, ++ unsigned int* sse); ++#define vpx_highbd_12_variance8x8 vpx_highbd_12_variance8x8_c ++ ++void vpx_highbd_8_get16x16var_c(const uint8_t* src_ptr, ++ int src_stride, ++ const uint8_t* ref_ptr, ++ int ref_stride, ++ unsigned int* sse, ++ int* sum); ++#define vpx_highbd_8_get16x16var vpx_highbd_8_get16x16var_c ++ ++void vpx_highbd_8_get8x8var_c(const uint8_t* src_ptr, ++ int src_stride, ++ const uint8_t* ref_ptr, ++ int ref_stride, ++ unsigned int* sse, ++ int* sum); ++#define vpx_highbd_8_get8x8var vpx_highbd_8_get8x8var_c ++ ++unsigned int vpx_highbd_8_mse16x16_c(const uint8_t* src_ptr, ++ int src_stride, ++ const uint8_t* ref_ptr, ++ int ref_stride, ++ unsigned int* sse); ++#define vpx_highbd_8_mse16x16 vpx_highbd_8_mse16x16_c ++ ++unsigned int vpx_highbd_8_mse16x8_c(const uint8_t* src_ptr, ++ int src_stride, ++ const uint8_t* ref_ptr, ++ int ref_stride, ++ unsigned int* sse); ++#define vpx_highbd_8_mse16x8 vpx_highbd_8_mse16x8_c ++ ++unsigned int vpx_highbd_8_mse8x16_c(const uint8_t* src_ptr, ++ int src_stride, ++ const uint8_t* ref_ptr, ++ int ref_stride, ++ unsigned int* sse); ++#define vpx_highbd_8_mse8x16 vpx_highbd_8_mse8x16_c ++ ++unsigned int vpx_highbd_8_mse8x8_c(const uint8_t* src_ptr, ++ int src_stride, ++ const uint8_t* ref_ptr, ++ int ref_stride, ++ unsigned int* sse); ++#define vpx_highbd_8_mse8x8 vpx_highbd_8_mse8x8_c ++ ++uint32_t vpx_highbd_8_sub_pixel_avg_variance16x16_c(const uint8_t* src_ptr, ++ int src_stride, ++ int x_offset, ++ int y_offset, ++ const uint8_t* ref_ptr, ++ int ref_stride, ++ uint32_t* sse, ++ const uint8_t* second_pred); ++#define vpx_highbd_8_sub_pixel_avg_variance16x16 \ ++ vpx_highbd_8_sub_pixel_avg_variance16x16_c ++ ++uint32_t vpx_highbd_8_sub_pixel_avg_variance16x32_c(const uint8_t* src_ptr, ++ int src_stride, ++ int x_offset, ++ int y_offset, ++ const uint8_t* ref_ptr, ++ int ref_stride, ++ uint32_t* sse, ++ const uint8_t* second_pred); ++#define vpx_highbd_8_sub_pixel_avg_variance16x32 \ ++ vpx_highbd_8_sub_pixel_avg_variance16x32_c ++ ++uint32_t vpx_highbd_8_sub_pixel_avg_variance16x8_c(const uint8_t* src_ptr, ++ int src_stride, ++ int x_offset, ++ int y_offset, ++ const uint8_t* ref_ptr, ++ int ref_stride, ++ uint32_t* sse, ++ const uint8_t* second_pred); ++#define vpx_highbd_8_sub_pixel_avg_variance16x8 \ ++ vpx_highbd_8_sub_pixel_avg_variance16x8_c ++ ++uint32_t vpx_highbd_8_sub_pixel_avg_variance32x16_c(const uint8_t* src_ptr, ++ int src_stride, ++ int x_offset, ++ int y_offset, ++ const uint8_t* ref_ptr, ++ int ref_stride, ++ uint32_t* sse, ++ const uint8_t* second_pred); ++#define vpx_highbd_8_sub_pixel_avg_variance32x16 \ ++ vpx_highbd_8_sub_pixel_avg_variance32x16_c ++ ++uint32_t vpx_highbd_8_sub_pixel_avg_variance32x32_c(const uint8_t* src_ptr, ++ int src_stride, ++ int x_offset, ++ int y_offset, ++ const uint8_t* ref_ptr, ++ int ref_stride, ++ uint32_t* sse, ++ const uint8_t* second_pred); ++#define vpx_highbd_8_sub_pixel_avg_variance32x32 \ ++ vpx_highbd_8_sub_pixel_avg_variance32x32_c ++ ++uint32_t vpx_highbd_8_sub_pixel_avg_variance32x64_c(const uint8_t* src_ptr, ++ int src_stride, ++ int x_offset, ++ int y_offset, ++ const uint8_t* ref_ptr, ++ int ref_stride, ++ uint32_t* sse, ++ const uint8_t* second_pred); ++#define vpx_highbd_8_sub_pixel_avg_variance32x64 \ ++ vpx_highbd_8_sub_pixel_avg_variance32x64_c ++ ++uint32_t vpx_highbd_8_sub_pixel_avg_variance4x4_c(const uint8_t* src_ptr, ++ int src_stride, ++ int x_offset, ++ int y_offset, ++ const uint8_t* ref_ptr, ++ int ref_stride, ++ uint32_t* sse, ++ const uint8_t* second_pred); ++#define vpx_highbd_8_sub_pixel_avg_variance4x4 \ ++ vpx_highbd_8_sub_pixel_avg_variance4x4_c ++ ++uint32_t vpx_highbd_8_sub_pixel_avg_variance4x8_c(const uint8_t* src_ptr, ++ int src_stride, ++ int x_offset, ++ int y_offset, ++ const uint8_t* ref_ptr, ++ int ref_stride, ++ uint32_t* sse, ++ const uint8_t* second_pred); ++#define vpx_highbd_8_sub_pixel_avg_variance4x8 \ ++ vpx_highbd_8_sub_pixel_avg_variance4x8_c ++ ++uint32_t vpx_highbd_8_sub_pixel_avg_variance64x32_c(const uint8_t* src_ptr, ++ int src_stride, ++ int x_offset, ++ int y_offset, ++ const uint8_t* ref_ptr, ++ int ref_stride, ++ uint32_t* sse, ++ const uint8_t* second_pred); ++#define vpx_highbd_8_sub_pixel_avg_variance64x32 \ ++ vpx_highbd_8_sub_pixel_avg_variance64x32_c ++ ++uint32_t vpx_highbd_8_sub_pixel_avg_variance64x64_c(const uint8_t* src_ptr, ++ int src_stride, ++ int x_offset, ++ int y_offset, ++ const uint8_t* ref_ptr, ++ int ref_stride, ++ uint32_t* sse, ++ const uint8_t* second_pred); ++#define vpx_highbd_8_sub_pixel_avg_variance64x64 \ ++ vpx_highbd_8_sub_pixel_avg_variance64x64_c ++ ++uint32_t vpx_highbd_8_sub_pixel_avg_variance8x16_c(const uint8_t* src_ptr, ++ int src_stride, ++ int x_offset, ++ int y_offset, ++ const uint8_t* ref_ptr, ++ int ref_stride, ++ uint32_t* sse, ++ const uint8_t* second_pred); ++#define vpx_highbd_8_sub_pixel_avg_variance8x16 \ ++ vpx_highbd_8_sub_pixel_avg_variance8x16_c ++ ++uint32_t vpx_highbd_8_sub_pixel_avg_variance8x4_c(const uint8_t* src_ptr, ++ int src_stride, ++ int x_offset, ++ int y_offset, ++ const uint8_t* ref_ptr, ++ int ref_stride, ++ uint32_t* sse, ++ const uint8_t* second_pred); ++#define vpx_highbd_8_sub_pixel_avg_variance8x4 \ ++ vpx_highbd_8_sub_pixel_avg_variance8x4_c ++ ++uint32_t vpx_highbd_8_sub_pixel_avg_variance8x8_c(const uint8_t* src_ptr, ++ int src_stride, ++ int x_offset, ++ int y_offset, ++ const uint8_t* ref_ptr, ++ int ref_stride, ++ uint32_t* sse, ++ const uint8_t* second_pred); ++#define vpx_highbd_8_sub_pixel_avg_variance8x8 \ ++ vpx_highbd_8_sub_pixel_avg_variance8x8_c ++ ++uint32_t vpx_highbd_8_sub_pixel_variance16x16_c(const uint8_t* src_ptr, ++ int src_stride, ++ int x_offset, ++ int y_offset, ++ const uint8_t* ref_ptr, ++ int ref_stride, ++ uint32_t* sse); ++#define vpx_highbd_8_sub_pixel_variance16x16 \ ++ vpx_highbd_8_sub_pixel_variance16x16_c ++ ++uint32_t vpx_highbd_8_sub_pixel_variance16x32_c(const uint8_t* src_ptr, ++ int src_stride, ++ int x_offset, ++ int y_offset, ++ const uint8_t* ref_ptr, ++ int ref_stride, ++ uint32_t* sse); ++#define vpx_highbd_8_sub_pixel_variance16x32 \ ++ vpx_highbd_8_sub_pixel_variance16x32_c ++ ++uint32_t vpx_highbd_8_sub_pixel_variance16x8_c(const uint8_t* src_ptr, ++ int src_stride, ++ int x_offset, ++ int y_offset, ++ const uint8_t* ref_ptr, ++ int ref_stride, ++ uint32_t* sse); ++#define vpx_highbd_8_sub_pixel_variance16x8 \ ++ vpx_highbd_8_sub_pixel_variance16x8_c ++ ++uint32_t vpx_highbd_8_sub_pixel_variance32x16_c(const uint8_t* src_ptr, ++ int src_stride, ++ int x_offset, ++ int y_offset, ++ const uint8_t* ref_ptr, ++ int ref_stride, ++ uint32_t* sse); ++#define vpx_highbd_8_sub_pixel_variance32x16 \ ++ vpx_highbd_8_sub_pixel_variance32x16_c ++ ++uint32_t vpx_highbd_8_sub_pixel_variance32x32_c(const uint8_t* src_ptr, ++ int src_stride, ++ int x_offset, ++ int y_offset, ++ const uint8_t* ref_ptr, ++ int ref_stride, ++ uint32_t* sse); ++#define vpx_highbd_8_sub_pixel_variance32x32 \ ++ vpx_highbd_8_sub_pixel_variance32x32_c ++ ++uint32_t vpx_highbd_8_sub_pixel_variance32x64_c(const uint8_t* src_ptr, ++ int src_stride, ++ int x_offset, ++ int y_offset, ++ const uint8_t* ref_ptr, ++ int ref_stride, ++ uint32_t* sse); ++#define vpx_highbd_8_sub_pixel_variance32x64 \ ++ vpx_highbd_8_sub_pixel_variance32x64_c ++ ++uint32_t vpx_highbd_8_sub_pixel_variance4x4_c(const uint8_t* src_ptr, ++ int src_stride, ++ int x_offset, ++ int y_offset, ++ const uint8_t* ref_ptr, ++ int ref_stride, ++ uint32_t* sse); ++#define vpx_highbd_8_sub_pixel_variance4x4 vpx_highbd_8_sub_pixel_variance4x4_c ++ ++uint32_t vpx_highbd_8_sub_pixel_variance4x8_c(const uint8_t* src_ptr, ++ int src_stride, ++ int x_offset, ++ int y_offset, ++ const uint8_t* ref_ptr, ++ int ref_stride, ++ uint32_t* sse); ++#define vpx_highbd_8_sub_pixel_variance4x8 vpx_highbd_8_sub_pixel_variance4x8_c ++ ++uint32_t vpx_highbd_8_sub_pixel_variance64x32_c(const uint8_t* src_ptr, ++ int src_stride, ++ int x_offset, ++ int y_offset, ++ const uint8_t* ref_ptr, ++ int ref_stride, ++ uint32_t* sse); ++#define vpx_highbd_8_sub_pixel_variance64x32 \ ++ vpx_highbd_8_sub_pixel_variance64x32_c ++ ++uint32_t vpx_highbd_8_sub_pixel_variance64x64_c(const uint8_t* src_ptr, ++ int src_stride, ++ int x_offset, ++ int y_offset, ++ const uint8_t* ref_ptr, ++ int ref_stride, ++ uint32_t* sse); ++#define vpx_highbd_8_sub_pixel_variance64x64 \ ++ vpx_highbd_8_sub_pixel_variance64x64_c ++ ++uint32_t vpx_highbd_8_sub_pixel_variance8x16_c(const uint8_t* src_ptr, ++ int src_stride, ++ int x_offset, ++ int y_offset, ++ const uint8_t* ref_ptr, ++ int ref_stride, ++ uint32_t* sse); ++#define vpx_highbd_8_sub_pixel_variance8x16 \ ++ vpx_highbd_8_sub_pixel_variance8x16_c ++ ++uint32_t vpx_highbd_8_sub_pixel_variance8x4_c(const uint8_t* src_ptr, ++ int src_stride, ++ int x_offset, ++ int y_offset, ++ const uint8_t* ref_ptr, ++ int ref_stride, ++ uint32_t* sse); ++#define vpx_highbd_8_sub_pixel_variance8x4 vpx_highbd_8_sub_pixel_variance8x4_c ++ ++uint32_t vpx_highbd_8_sub_pixel_variance8x8_c(const uint8_t* src_ptr, ++ int src_stride, ++ int x_offset, ++ int y_offset, ++ const uint8_t* ref_ptr, ++ int ref_stride, ++ uint32_t* sse); ++#define vpx_highbd_8_sub_pixel_variance8x8 vpx_highbd_8_sub_pixel_variance8x8_c ++ ++unsigned int vpx_highbd_8_variance16x16_c(const uint8_t* src_ptr, ++ int src_stride, ++ const uint8_t* ref_ptr, ++ int ref_stride, ++ unsigned int* sse); ++#define vpx_highbd_8_variance16x16 vpx_highbd_8_variance16x16_c ++ ++unsigned int vpx_highbd_8_variance16x32_c(const uint8_t* src_ptr, ++ int src_stride, ++ const uint8_t* ref_ptr, ++ int ref_stride, ++ unsigned int* sse); ++#define vpx_highbd_8_variance16x32 vpx_highbd_8_variance16x32_c ++ ++unsigned int vpx_highbd_8_variance16x8_c(const uint8_t* src_ptr, ++ int src_stride, ++ const uint8_t* ref_ptr, ++ int ref_stride, ++ unsigned int* sse); ++#define vpx_highbd_8_variance16x8 vpx_highbd_8_variance16x8_c ++ ++unsigned int vpx_highbd_8_variance32x16_c(const uint8_t* src_ptr, ++ int src_stride, ++ const uint8_t* ref_ptr, ++ int ref_stride, ++ unsigned int* sse); ++#define vpx_highbd_8_variance32x16 vpx_highbd_8_variance32x16_c ++ ++unsigned int vpx_highbd_8_variance32x32_c(const uint8_t* src_ptr, ++ int src_stride, ++ const uint8_t* ref_ptr, ++ int ref_stride, ++ unsigned int* sse); ++#define vpx_highbd_8_variance32x32 vpx_highbd_8_variance32x32_c ++ ++unsigned int vpx_highbd_8_variance32x64_c(const uint8_t* src_ptr, ++ int src_stride, ++ const uint8_t* ref_ptr, ++ int ref_stride, ++ unsigned int* sse); ++#define vpx_highbd_8_variance32x64 vpx_highbd_8_variance32x64_c ++ ++unsigned int vpx_highbd_8_variance4x4_c(const uint8_t* src_ptr, ++ int src_stride, ++ const uint8_t* ref_ptr, ++ int ref_stride, ++ unsigned int* sse); ++#define vpx_highbd_8_variance4x4 vpx_highbd_8_variance4x4_c ++ ++unsigned int vpx_highbd_8_variance4x8_c(const uint8_t* src_ptr, ++ int src_stride, ++ const uint8_t* ref_ptr, ++ int ref_stride, ++ unsigned int* sse); ++#define vpx_highbd_8_variance4x8 vpx_highbd_8_variance4x8_c ++ ++unsigned int vpx_highbd_8_variance64x32_c(const uint8_t* src_ptr, ++ int src_stride, ++ const uint8_t* ref_ptr, ++ int ref_stride, ++ unsigned int* sse); ++#define vpx_highbd_8_variance64x32 vpx_highbd_8_variance64x32_c ++ ++unsigned int vpx_highbd_8_variance64x64_c(const uint8_t* src_ptr, ++ int src_stride, ++ const uint8_t* ref_ptr, ++ int ref_stride, ++ unsigned int* sse); ++#define vpx_highbd_8_variance64x64 vpx_highbd_8_variance64x64_c ++ ++unsigned int vpx_highbd_8_variance8x16_c(const uint8_t* src_ptr, ++ int src_stride, ++ const uint8_t* ref_ptr, ++ int ref_stride, ++ unsigned int* sse); ++#define vpx_highbd_8_variance8x16 vpx_highbd_8_variance8x16_c ++ ++unsigned int vpx_highbd_8_variance8x4_c(const uint8_t* src_ptr, ++ int src_stride, ++ const uint8_t* ref_ptr, ++ int ref_stride, ++ unsigned int* sse); ++#define vpx_highbd_8_variance8x4 vpx_highbd_8_variance8x4_c ++ ++unsigned int vpx_highbd_8_variance8x8_c(const uint8_t* src_ptr, ++ int src_stride, ++ const uint8_t* ref_ptr, ++ int ref_stride, ++ unsigned int* sse); ++#define vpx_highbd_8_variance8x8 vpx_highbd_8_variance8x8_c ++ ++unsigned int vpx_highbd_avg_4x4_c(const uint8_t* s8, int p); ++#define vpx_highbd_avg_4x4 vpx_highbd_avg_4x4_c ++ ++unsigned int vpx_highbd_avg_8x8_c(const uint8_t* s8, int p); ++#define vpx_highbd_avg_8x8 vpx_highbd_avg_8x8_c ++ ++void vpx_highbd_comp_avg_pred_c(uint16_t* comp_pred, ++ const uint16_t* pred, ++ int width, ++ int height, ++ const uint16_t* ref, ++ int ref_stride); ++#define vpx_highbd_comp_avg_pred vpx_highbd_comp_avg_pred_c ++ ++void vpx_highbd_convolve8_c(const uint16_t* src, ++ ptrdiff_t src_stride, ++ uint16_t* dst, ++ ptrdiff_t dst_stride, ++ const InterpKernel* filter, ++ int x0_q4, ++ int x_step_q4, ++ int y0_q4, ++ int y_step_q4, ++ int w, ++ int h, ++ int bd); ++#define vpx_highbd_convolve8 vpx_highbd_convolve8_c ++ ++void vpx_highbd_convolve8_avg_c(const uint16_t* src, ++ ptrdiff_t src_stride, ++ uint16_t* dst, ++ ptrdiff_t dst_stride, ++ const InterpKernel* filter, ++ int x0_q4, ++ int x_step_q4, ++ int y0_q4, ++ int y_step_q4, ++ int w, ++ int h, ++ int bd); ++#define vpx_highbd_convolve8_avg vpx_highbd_convolve8_avg_c ++ ++void vpx_highbd_convolve8_avg_horiz_c(const uint16_t* src, ++ ptrdiff_t src_stride, ++ uint16_t* dst, ++ ptrdiff_t dst_stride, ++ const InterpKernel* filter, ++ int x0_q4, ++ int x_step_q4, ++ int y0_q4, ++ int y_step_q4, ++ int w, ++ int h, ++ int bd); ++#define vpx_highbd_convolve8_avg_horiz vpx_highbd_convolve8_avg_horiz_c ++ ++void vpx_highbd_convolve8_avg_vert_c(const uint16_t* src, ++ ptrdiff_t src_stride, ++ uint16_t* dst, ++ ptrdiff_t dst_stride, ++ const InterpKernel* filter, ++ int x0_q4, ++ int x_step_q4, ++ int y0_q4, ++ int y_step_q4, ++ int w, ++ int h, ++ int bd); ++#define vpx_highbd_convolve8_avg_vert vpx_highbd_convolve8_avg_vert_c ++ ++void vpx_highbd_convolve8_horiz_c(const uint16_t* src, ++ ptrdiff_t src_stride, ++ uint16_t* dst, ++ ptrdiff_t dst_stride, ++ const InterpKernel* filter, ++ int x0_q4, ++ int x_step_q4, ++ int y0_q4, ++ int y_step_q4, ++ int w, ++ int h, ++ int bd); ++#define vpx_highbd_convolve8_horiz vpx_highbd_convolve8_horiz_c ++ ++void vpx_highbd_convolve8_vert_c(const uint16_t* src, ++ ptrdiff_t src_stride, ++ uint16_t* dst, ++ ptrdiff_t dst_stride, ++ const InterpKernel* filter, ++ int x0_q4, ++ int x_step_q4, ++ int y0_q4, ++ int y_step_q4, ++ int w, ++ int h, ++ int bd); ++#define vpx_highbd_convolve8_vert vpx_highbd_convolve8_vert_c ++ ++void vpx_highbd_convolve_avg_c(const uint16_t* src, ++ ptrdiff_t src_stride, ++ uint16_t* dst, ++ ptrdiff_t dst_stride, ++ const InterpKernel* filter, ++ int x0_q4, ++ int x_step_q4, ++ int y0_q4, ++ int y_step_q4, ++ int w, ++ int h, ++ int bd); ++#define vpx_highbd_convolve_avg vpx_highbd_convolve_avg_c ++ ++void vpx_highbd_convolve_copy_c(const uint16_t* src, ++ ptrdiff_t src_stride, ++ uint16_t* dst, ++ ptrdiff_t dst_stride, ++ const InterpKernel* filter, ++ int x0_q4, ++ int x_step_q4, ++ int y0_q4, ++ int y_step_q4, ++ int w, ++ int h, ++ int bd); ++#define vpx_highbd_convolve_copy vpx_highbd_convolve_copy_c ++ ++void vpx_highbd_d117_predictor_16x16_c(uint16_t* dst, ++ ptrdiff_t stride, ++ const uint16_t* above, ++ const uint16_t* left, ++ int bd); ++#define vpx_highbd_d117_predictor_16x16 vpx_highbd_d117_predictor_16x16_c ++ ++void vpx_highbd_d117_predictor_32x32_c(uint16_t* dst, ++ ptrdiff_t stride, ++ const uint16_t* above, ++ const uint16_t* left, ++ int bd); ++#define vpx_highbd_d117_predictor_32x32 vpx_highbd_d117_predictor_32x32_c ++ ++void vpx_highbd_d117_predictor_4x4_c(uint16_t* dst, ++ ptrdiff_t stride, ++ const uint16_t* above, ++ const uint16_t* left, ++ int bd); ++#define vpx_highbd_d117_predictor_4x4 vpx_highbd_d117_predictor_4x4_c ++ ++void vpx_highbd_d117_predictor_8x8_c(uint16_t* dst, ++ ptrdiff_t stride, ++ const uint16_t* above, ++ const uint16_t* left, ++ int bd); ++#define vpx_highbd_d117_predictor_8x8 vpx_highbd_d117_predictor_8x8_c ++ ++void vpx_highbd_d135_predictor_16x16_c(uint16_t* dst, ++ ptrdiff_t stride, ++ const uint16_t* above, ++ const uint16_t* left, ++ int bd); ++#define vpx_highbd_d135_predictor_16x16 vpx_highbd_d135_predictor_16x16_c ++ ++void vpx_highbd_d135_predictor_32x32_c(uint16_t* dst, ++ ptrdiff_t stride, ++ const uint16_t* above, ++ const uint16_t* left, ++ int bd); ++#define vpx_highbd_d135_predictor_32x32 vpx_highbd_d135_predictor_32x32_c ++ ++void vpx_highbd_d135_predictor_4x4_c(uint16_t* dst, ++ ptrdiff_t stride, ++ const uint16_t* above, ++ const uint16_t* left, ++ int bd); ++#define vpx_highbd_d135_predictor_4x4 vpx_highbd_d135_predictor_4x4_c ++ ++void vpx_highbd_d135_predictor_8x8_c(uint16_t* dst, ++ ptrdiff_t stride, ++ const uint16_t* above, ++ const uint16_t* left, ++ int bd); ++#define vpx_highbd_d135_predictor_8x8 vpx_highbd_d135_predictor_8x8_c ++ ++void vpx_highbd_d153_predictor_16x16_c(uint16_t* dst, ++ ptrdiff_t stride, ++ const uint16_t* above, ++ const uint16_t* left, ++ int bd); ++#define vpx_highbd_d153_predictor_16x16 vpx_highbd_d153_predictor_16x16_c ++ ++void vpx_highbd_d153_predictor_32x32_c(uint16_t* dst, ++ ptrdiff_t stride, ++ const uint16_t* above, ++ const uint16_t* left, ++ int bd); ++#define vpx_highbd_d153_predictor_32x32 vpx_highbd_d153_predictor_32x32_c ++ ++void vpx_highbd_d153_predictor_4x4_c(uint16_t* dst, ++ ptrdiff_t stride, ++ const uint16_t* above, ++ const uint16_t* left, ++ int bd); ++#define vpx_highbd_d153_predictor_4x4 vpx_highbd_d153_predictor_4x4_c ++ ++void vpx_highbd_d153_predictor_8x8_c(uint16_t* dst, ++ ptrdiff_t stride, ++ const uint16_t* above, ++ const uint16_t* left, ++ int bd); ++#define vpx_highbd_d153_predictor_8x8 vpx_highbd_d153_predictor_8x8_c ++ ++void vpx_highbd_d207_predictor_16x16_c(uint16_t* dst, ++ ptrdiff_t stride, ++ const uint16_t* above, ++ const uint16_t* left, ++ int bd); ++#define vpx_highbd_d207_predictor_16x16 vpx_highbd_d207_predictor_16x16_c ++ ++void vpx_highbd_d207_predictor_32x32_c(uint16_t* dst, ++ ptrdiff_t stride, ++ const uint16_t* above, ++ const uint16_t* left, ++ int bd); ++#define vpx_highbd_d207_predictor_32x32 vpx_highbd_d207_predictor_32x32_c ++ ++void vpx_highbd_d207_predictor_4x4_c(uint16_t* dst, ++ ptrdiff_t stride, ++ const uint16_t* above, ++ const uint16_t* left, ++ int bd); ++#define vpx_highbd_d207_predictor_4x4 vpx_highbd_d207_predictor_4x4_c ++ ++void vpx_highbd_d207_predictor_8x8_c(uint16_t* dst, ++ ptrdiff_t stride, ++ const uint16_t* above, ++ const uint16_t* left, ++ int bd); ++#define vpx_highbd_d207_predictor_8x8 vpx_highbd_d207_predictor_8x8_c ++ ++void vpx_highbd_d45_predictor_16x16_c(uint16_t* dst, ++ ptrdiff_t stride, ++ const uint16_t* above, ++ const uint16_t* left, ++ int bd); ++#define vpx_highbd_d45_predictor_16x16 vpx_highbd_d45_predictor_16x16_c ++ ++void vpx_highbd_d45_predictor_32x32_c(uint16_t* dst, ++ ptrdiff_t stride, ++ const uint16_t* above, ++ const uint16_t* left, ++ int bd); ++#define vpx_highbd_d45_predictor_32x32 vpx_highbd_d45_predictor_32x32_c ++ ++void vpx_highbd_d45_predictor_4x4_c(uint16_t* dst, ++ ptrdiff_t stride, ++ const uint16_t* above, ++ const uint16_t* left, ++ int bd); ++#define vpx_highbd_d45_predictor_4x4 vpx_highbd_d45_predictor_4x4_c ++ ++void vpx_highbd_d45_predictor_8x8_c(uint16_t* dst, ++ ptrdiff_t stride, ++ const uint16_t* above, ++ const uint16_t* left, ++ int bd); ++#define vpx_highbd_d45_predictor_8x8 vpx_highbd_d45_predictor_8x8_c ++ ++void vpx_highbd_d63_predictor_16x16_c(uint16_t* dst, ++ ptrdiff_t stride, ++ const uint16_t* above, ++ const uint16_t* left, ++ int bd); ++#define vpx_highbd_d63_predictor_16x16 vpx_highbd_d63_predictor_16x16_c ++ ++void vpx_highbd_d63_predictor_32x32_c(uint16_t* dst, ++ ptrdiff_t stride, ++ const uint16_t* above, ++ const uint16_t* left, ++ int bd); ++#define vpx_highbd_d63_predictor_32x32 vpx_highbd_d63_predictor_32x32_c ++ ++void vpx_highbd_d63_predictor_4x4_c(uint16_t* dst, ++ ptrdiff_t stride, ++ const uint16_t* above, ++ const uint16_t* left, ++ int bd); ++#define vpx_highbd_d63_predictor_4x4 vpx_highbd_d63_predictor_4x4_c ++ ++void vpx_highbd_d63_predictor_8x8_c(uint16_t* dst, ++ ptrdiff_t stride, ++ const uint16_t* above, ++ const uint16_t* left, ++ int bd); ++#define vpx_highbd_d63_predictor_8x8 vpx_highbd_d63_predictor_8x8_c ++ ++void vpx_highbd_dc_128_predictor_16x16_c(uint16_t* dst, ++ ptrdiff_t stride, ++ const uint16_t* above, ++ const uint16_t* left, ++ int bd); ++#define vpx_highbd_dc_128_predictor_16x16 vpx_highbd_dc_128_predictor_16x16_c ++ ++void vpx_highbd_dc_128_predictor_32x32_c(uint16_t* dst, ++ ptrdiff_t stride, ++ const uint16_t* above, ++ const uint16_t* left, ++ int bd); ++#define vpx_highbd_dc_128_predictor_32x32 vpx_highbd_dc_128_predictor_32x32_c ++ ++void vpx_highbd_dc_128_predictor_4x4_c(uint16_t* dst, ++ ptrdiff_t stride, ++ const uint16_t* above, ++ const uint16_t* left, ++ int bd); ++#define vpx_highbd_dc_128_predictor_4x4 vpx_highbd_dc_128_predictor_4x4_c ++ ++void vpx_highbd_dc_128_predictor_8x8_c(uint16_t* dst, ++ ptrdiff_t stride, ++ const uint16_t* above, ++ const uint16_t* left, ++ int bd); ++#define vpx_highbd_dc_128_predictor_8x8 vpx_highbd_dc_128_predictor_8x8_c ++ ++void vpx_highbd_dc_left_predictor_16x16_c(uint16_t* dst, ++ ptrdiff_t stride, ++ const uint16_t* above, ++ const uint16_t* left, ++ int bd); ++#define vpx_highbd_dc_left_predictor_16x16 vpx_highbd_dc_left_predictor_16x16_c ++ ++void vpx_highbd_dc_left_predictor_32x32_c(uint16_t* dst, ++ ptrdiff_t stride, ++ const uint16_t* above, ++ const uint16_t* left, ++ int bd); ++#define vpx_highbd_dc_left_predictor_32x32 vpx_highbd_dc_left_predictor_32x32_c ++ ++void vpx_highbd_dc_left_predictor_4x4_c(uint16_t* dst, ++ ptrdiff_t stride, ++ const uint16_t* above, ++ const uint16_t* left, ++ int bd); ++#define vpx_highbd_dc_left_predictor_4x4 vpx_highbd_dc_left_predictor_4x4_c ++ ++void vpx_highbd_dc_left_predictor_8x8_c(uint16_t* dst, ++ ptrdiff_t stride, ++ const uint16_t* above, ++ const uint16_t* left, ++ int bd); ++#define vpx_highbd_dc_left_predictor_8x8 vpx_highbd_dc_left_predictor_8x8_c ++ ++void vpx_highbd_dc_predictor_16x16_c(uint16_t* dst, ++ ptrdiff_t stride, ++ const uint16_t* above, ++ const uint16_t* left, ++ int bd); ++#define vpx_highbd_dc_predictor_16x16 vpx_highbd_dc_predictor_16x16_c ++ ++void vpx_highbd_dc_predictor_32x32_c(uint16_t* dst, ++ ptrdiff_t stride, ++ const uint16_t* above, ++ const uint16_t* left, ++ int bd); ++#define vpx_highbd_dc_predictor_32x32 vpx_highbd_dc_predictor_32x32_c ++ ++void vpx_highbd_dc_predictor_4x4_c(uint16_t* dst, ++ ptrdiff_t stride, ++ const uint16_t* above, ++ const uint16_t* left, ++ int bd); ++#define vpx_highbd_dc_predictor_4x4 vpx_highbd_dc_predictor_4x4_c ++ ++void vpx_highbd_dc_predictor_8x8_c(uint16_t* dst, ++ ptrdiff_t stride, ++ const uint16_t* above, ++ const uint16_t* left, ++ int bd); ++#define vpx_highbd_dc_predictor_8x8 vpx_highbd_dc_predictor_8x8_c ++ ++void vpx_highbd_dc_top_predictor_16x16_c(uint16_t* dst, ++ ptrdiff_t stride, ++ const uint16_t* above, ++ const uint16_t* left, ++ int bd); ++#define vpx_highbd_dc_top_predictor_16x16 vpx_highbd_dc_top_predictor_16x16_c ++ ++void vpx_highbd_dc_top_predictor_32x32_c(uint16_t* dst, ++ ptrdiff_t stride, ++ const uint16_t* above, ++ const uint16_t* left, ++ int bd); ++#define vpx_highbd_dc_top_predictor_32x32 vpx_highbd_dc_top_predictor_32x32_c ++ ++void vpx_highbd_dc_top_predictor_4x4_c(uint16_t* dst, ++ ptrdiff_t stride, ++ const uint16_t* above, ++ const uint16_t* left, ++ int bd); ++#define vpx_highbd_dc_top_predictor_4x4 vpx_highbd_dc_top_predictor_4x4_c ++ ++void vpx_highbd_dc_top_predictor_8x8_c(uint16_t* dst, ++ ptrdiff_t stride, ++ const uint16_t* above, ++ const uint16_t* left, ++ int bd); ++#define vpx_highbd_dc_top_predictor_8x8 vpx_highbd_dc_top_predictor_8x8_c ++ ++void vpx_highbd_fdct16x16_c(const int16_t* input, ++ tran_low_t* output, ++ int stride); ++#define vpx_highbd_fdct16x16 vpx_highbd_fdct16x16_c ++ ++void vpx_highbd_fdct16x16_1_c(const int16_t* input, ++ tran_low_t* output, ++ int stride); ++#define vpx_highbd_fdct16x16_1 vpx_highbd_fdct16x16_1_c ++ ++void vpx_highbd_fdct32x32_c(const int16_t* input, ++ tran_low_t* output, ++ int stride); ++#define vpx_highbd_fdct32x32 vpx_highbd_fdct32x32_c ++ ++void vpx_highbd_fdct32x32_1_c(const int16_t* input, ++ tran_low_t* output, ++ int stride); ++#define vpx_highbd_fdct32x32_1 vpx_highbd_fdct32x32_1_c ++ ++void vpx_highbd_fdct32x32_rd_c(const int16_t* input, ++ tran_low_t* output, ++ int stride); ++#define vpx_highbd_fdct32x32_rd vpx_highbd_fdct32x32_rd_c ++ ++void vpx_highbd_fdct4x4_c(const int16_t* input, tran_low_t* output, int stride); ++#define vpx_highbd_fdct4x4 vpx_highbd_fdct4x4_c ++ ++void vpx_highbd_fdct8x8_c(const int16_t* input, tran_low_t* output, int stride); ++#define vpx_highbd_fdct8x8 vpx_highbd_fdct8x8_c ++ ++void vpx_highbd_fdct8x8_1_c(const int16_t* input, ++ tran_low_t* output, ++ int stride); ++#define vpx_highbd_fdct8x8_1 vpx_highbd_fdct8x8_1_c ++ ++void vpx_highbd_h_predictor_16x16_c(uint16_t* dst, ++ ptrdiff_t stride, ++ const uint16_t* above, ++ const uint16_t* left, ++ int bd); ++#define vpx_highbd_h_predictor_16x16 vpx_highbd_h_predictor_16x16_c ++ ++void vpx_highbd_h_predictor_32x32_c(uint16_t* dst, ++ ptrdiff_t stride, ++ const uint16_t* above, ++ const uint16_t* left, ++ int bd); ++#define vpx_highbd_h_predictor_32x32 vpx_highbd_h_predictor_32x32_c ++ ++void vpx_highbd_h_predictor_4x4_c(uint16_t* dst, ++ ptrdiff_t stride, ++ const uint16_t* above, ++ const uint16_t* left, ++ int bd); ++#define vpx_highbd_h_predictor_4x4 vpx_highbd_h_predictor_4x4_c ++ ++void vpx_highbd_h_predictor_8x8_c(uint16_t* dst, ++ ptrdiff_t stride, ++ const uint16_t* above, ++ const uint16_t* left, ++ int bd); ++#define vpx_highbd_h_predictor_8x8 vpx_highbd_h_predictor_8x8_c ++ ++void vpx_highbd_hadamard_16x16_c(const int16_t* src_diff, ++ ptrdiff_t src_stride, ++ tran_low_t* coeff); ++#define vpx_highbd_hadamard_16x16 vpx_highbd_hadamard_16x16_c ++ ++void vpx_highbd_hadamard_32x32_c(const int16_t* src_diff, ++ ptrdiff_t src_stride, ++ tran_low_t* coeff); ++#define vpx_highbd_hadamard_32x32 vpx_highbd_hadamard_32x32_c ++ ++void vpx_highbd_hadamard_8x8_c(const int16_t* src_diff, ++ ptrdiff_t src_stride, ++ tran_low_t* coeff); ++#define vpx_highbd_hadamard_8x8 vpx_highbd_hadamard_8x8_c ++ ++void vpx_highbd_idct16x16_10_add_c(const tran_low_t* input, ++ uint16_t* dest, ++ int stride, ++ int bd); ++#define vpx_highbd_idct16x16_10_add vpx_highbd_idct16x16_10_add_c ++ ++void vpx_highbd_idct16x16_1_add_c(const tran_low_t* input, ++ uint16_t* dest, ++ int stride, ++ int bd); ++#define vpx_highbd_idct16x16_1_add vpx_highbd_idct16x16_1_add_c ++ ++void vpx_highbd_idct16x16_256_add_c(const tran_low_t* input, ++ uint16_t* dest, ++ int stride, ++ int bd); ++#define vpx_highbd_idct16x16_256_add vpx_highbd_idct16x16_256_add_c ++ ++void vpx_highbd_idct16x16_38_add_c(const tran_low_t* input, ++ uint16_t* dest, ++ int stride, ++ int bd); ++#define vpx_highbd_idct16x16_38_add vpx_highbd_idct16x16_38_add_c ++ ++void vpx_highbd_idct32x32_1024_add_c(const tran_low_t* input, ++ uint16_t* dest, ++ int stride, ++ int bd); ++#define vpx_highbd_idct32x32_1024_add vpx_highbd_idct32x32_1024_add_c ++ ++void vpx_highbd_idct32x32_135_add_c(const tran_low_t* input, ++ uint16_t* dest, ++ int stride, ++ int bd); ++#define vpx_highbd_idct32x32_135_add vpx_highbd_idct32x32_135_add_c ++ ++void vpx_highbd_idct32x32_1_add_c(const tran_low_t* input, ++ uint16_t* dest, ++ int stride, ++ int bd); ++#define vpx_highbd_idct32x32_1_add vpx_highbd_idct32x32_1_add_c ++ ++void vpx_highbd_idct32x32_34_add_c(const tran_low_t* input, ++ uint16_t* dest, ++ int stride, ++ int bd); ++#define vpx_highbd_idct32x32_34_add vpx_highbd_idct32x32_34_add_c ++ ++void vpx_highbd_idct4x4_16_add_c(const tran_low_t* input, ++ uint16_t* dest, ++ int stride, ++ int bd); ++#define vpx_highbd_idct4x4_16_add vpx_highbd_idct4x4_16_add_c ++ ++void vpx_highbd_idct4x4_1_add_c(const tran_low_t* input, ++ uint16_t* dest, ++ int stride, ++ int bd); ++#define vpx_highbd_idct4x4_1_add vpx_highbd_idct4x4_1_add_c ++ ++void vpx_highbd_idct8x8_12_add_c(const tran_low_t* input, ++ uint16_t* dest, ++ int stride, ++ int bd); ++#define vpx_highbd_idct8x8_12_add vpx_highbd_idct8x8_12_add_c ++ ++void vpx_highbd_idct8x8_1_add_c(const tran_low_t* input, ++ uint16_t* dest, ++ int stride, ++ int bd); ++#define vpx_highbd_idct8x8_1_add vpx_highbd_idct8x8_1_add_c ++ ++void vpx_highbd_idct8x8_64_add_c(const tran_low_t* input, ++ uint16_t* dest, ++ int stride, ++ int bd); ++#define vpx_highbd_idct8x8_64_add vpx_highbd_idct8x8_64_add_c ++ ++void vpx_highbd_iwht4x4_16_add_c(const tran_low_t* input, ++ uint16_t* dest, ++ int stride, ++ int bd); ++#define vpx_highbd_iwht4x4_16_add vpx_highbd_iwht4x4_16_add_c ++ ++void vpx_highbd_iwht4x4_1_add_c(const tran_low_t* input, ++ uint16_t* dest, ++ int stride, ++ int bd); ++#define vpx_highbd_iwht4x4_1_add vpx_highbd_iwht4x4_1_add_c ++ ++void vpx_highbd_lpf_horizontal_16_c(uint16_t* s, ++ int pitch, ++ const uint8_t* blimit, ++ const uint8_t* limit, ++ const uint8_t* thresh, ++ int bd); ++#define vpx_highbd_lpf_horizontal_16 vpx_highbd_lpf_horizontal_16_c ++ ++void vpx_highbd_lpf_horizontal_16_dual_c(uint16_t* s, ++ int pitch, ++ const uint8_t* blimit, ++ const uint8_t* limit, ++ const uint8_t* thresh, ++ int bd); ++#define vpx_highbd_lpf_horizontal_16_dual vpx_highbd_lpf_horizontal_16_dual_c ++ ++void vpx_highbd_lpf_horizontal_4_c(uint16_t* s, ++ int pitch, ++ const uint8_t* blimit, ++ const uint8_t* limit, ++ const uint8_t* thresh, ++ int bd); ++#define vpx_highbd_lpf_horizontal_4 vpx_highbd_lpf_horizontal_4_c ++ ++void vpx_highbd_lpf_horizontal_4_dual_c(uint16_t* s, ++ int pitch, ++ const uint8_t* blimit0, ++ const uint8_t* limit0, ++ const uint8_t* thresh0, ++ const uint8_t* blimit1, ++ const uint8_t* limit1, ++ const uint8_t* thresh1, ++ int bd); ++#define vpx_highbd_lpf_horizontal_4_dual vpx_highbd_lpf_horizontal_4_dual_c ++ ++void vpx_highbd_lpf_horizontal_8_c(uint16_t* s, ++ int pitch, ++ const uint8_t* blimit, ++ const uint8_t* limit, ++ const uint8_t* thresh, ++ int bd); ++#define vpx_highbd_lpf_horizontal_8 vpx_highbd_lpf_horizontal_8_c ++ ++void vpx_highbd_lpf_horizontal_8_dual_c(uint16_t* s, ++ int pitch, ++ const uint8_t* blimit0, ++ const uint8_t* limit0, ++ const uint8_t* thresh0, ++ const uint8_t* blimit1, ++ const uint8_t* limit1, ++ const uint8_t* thresh1, ++ int bd); ++#define vpx_highbd_lpf_horizontal_8_dual vpx_highbd_lpf_horizontal_8_dual_c ++ ++void vpx_highbd_lpf_vertical_16_c(uint16_t* s, ++ int pitch, ++ const uint8_t* blimit, ++ const uint8_t* limit, ++ const uint8_t* thresh, ++ int bd); ++#define vpx_highbd_lpf_vertical_16 vpx_highbd_lpf_vertical_16_c ++ ++void vpx_highbd_lpf_vertical_16_dual_c(uint16_t* s, ++ int pitch, ++ const uint8_t* blimit, ++ const uint8_t* limit, ++ const uint8_t* thresh, ++ int bd); ++#define vpx_highbd_lpf_vertical_16_dual vpx_highbd_lpf_vertical_16_dual_c ++ ++void vpx_highbd_lpf_vertical_4_c(uint16_t* s, ++ int pitch, ++ const uint8_t* blimit, ++ const uint8_t* limit, ++ const uint8_t* thresh, ++ int bd); ++#define vpx_highbd_lpf_vertical_4 vpx_highbd_lpf_vertical_4_c ++ ++void vpx_highbd_lpf_vertical_4_dual_c(uint16_t* s, ++ int pitch, ++ const uint8_t* blimit0, ++ const uint8_t* limit0, ++ const uint8_t* thresh0, ++ const uint8_t* blimit1, ++ const uint8_t* limit1, ++ const uint8_t* thresh1, ++ int bd); ++#define vpx_highbd_lpf_vertical_4_dual vpx_highbd_lpf_vertical_4_dual_c ++ ++void vpx_highbd_lpf_vertical_8_c(uint16_t* s, ++ int pitch, ++ const uint8_t* blimit, ++ const uint8_t* limit, ++ const uint8_t* thresh, ++ int bd); ++#define vpx_highbd_lpf_vertical_8 vpx_highbd_lpf_vertical_8_c ++ ++void vpx_highbd_lpf_vertical_8_dual_c(uint16_t* s, ++ int pitch, ++ const uint8_t* blimit0, ++ const uint8_t* limit0, ++ const uint8_t* thresh0, ++ const uint8_t* blimit1, ++ const uint8_t* limit1, ++ const uint8_t* thresh1, ++ int bd); ++#define vpx_highbd_lpf_vertical_8_dual vpx_highbd_lpf_vertical_8_dual_c ++ ++void vpx_highbd_minmax_8x8_c(const uint8_t* s8, ++ int p, ++ const uint8_t* d8, ++ int dp, ++ int* min, ++ int* max); ++#define vpx_highbd_minmax_8x8 vpx_highbd_minmax_8x8_c ++ ++void vpx_highbd_quantize_b_c(const tran_low_t* coeff_ptr, ++ intptr_t n_coeffs, ++ const struct macroblock_plane* const mb_plane, ++ tran_low_t* qcoeff_ptr, ++ tran_low_t* dqcoeff_ptr, ++ const int16_t* dequant_ptr, ++ uint16_t* eob_ptr, ++ const struct ScanOrder* const scan_order); ++#define vpx_highbd_quantize_b vpx_highbd_quantize_b_c ++ ++void vpx_highbd_quantize_b_32x32_c( ++ const tran_low_t* coeff_ptr, ++ const struct macroblock_plane* const mb_plane, ++ tran_low_t* qcoeff_ptr, ++ tran_low_t* dqcoeff_ptr, ++ const int16_t* dequant_ptr, ++ uint16_t* eob_ptr, ++ const struct ScanOrder* const scan_order); ++#define vpx_highbd_quantize_b_32x32 vpx_highbd_quantize_b_32x32_c ++ ++unsigned int vpx_highbd_sad16x16_c(const uint8_t* src_ptr, ++ int src_stride, ++ const uint8_t* ref_ptr, ++ int ref_stride); ++#define vpx_highbd_sad16x16 vpx_highbd_sad16x16_c ++ ++unsigned int vpx_highbd_sad16x16_avg_c(const uint8_t* src_ptr, ++ int src_stride, ++ const uint8_t* ref_ptr, ++ int ref_stride, ++ const uint8_t* second_pred); ++#define vpx_highbd_sad16x16_avg vpx_highbd_sad16x16_avg_c ++ ++void vpx_highbd_sad16x16x4d_c(const uint8_t* src_ptr, ++ int src_stride, ++ const uint8_t* const ref_array[4], ++ int ref_stride, ++ uint32_t sad_array[4]); ++#define vpx_highbd_sad16x16x4d vpx_highbd_sad16x16x4d_c ++ ++unsigned int vpx_highbd_sad16x32_c(const uint8_t* src_ptr, ++ int src_stride, ++ const uint8_t* ref_ptr, ++ int ref_stride); ++#define vpx_highbd_sad16x32 vpx_highbd_sad16x32_c ++ ++unsigned int vpx_highbd_sad16x32_avg_c(const uint8_t* src_ptr, ++ int src_stride, ++ const uint8_t* ref_ptr, ++ int ref_stride, ++ const uint8_t* second_pred); ++#define vpx_highbd_sad16x32_avg vpx_highbd_sad16x32_avg_c ++ ++void vpx_highbd_sad16x32x4d_c(const uint8_t* src_ptr, ++ int src_stride, ++ const uint8_t* const ref_array[4], ++ int ref_stride, ++ uint32_t sad_array[4]); ++#define vpx_highbd_sad16x32x4d vpx_highbd_sad16x32x4d_c ++ ++unsigned int vpx_highbd_sad16x8_c(const uint8_t* src_ptr, ++ int src_stride, ++ const uint8_t* ref_ptr, ++ int ref_stride); ++#define vpx_highbd_sad16x8 vpx_highbd_sad16x8_c ++ ++unsigned int vpx_highbd_sad16x8_avg_c(const uint8_t* src_ptr, ++ int src_stride, ++ const uint8_t* ref_ptr, ++ int ref_stride, ++ const uint8_t* second_pred); ++#define vpx_highbd_sad16x8_avg vpx_highbd_sad16x8_avg_c ++ ++void vpx_highbd_sad16x8x4d_c(const uint8_t* src_ptr, ++ int src_stride, ++ const uint8_t* const ref_array[4], ++ int ref_stride, ++ uint32_t sad_array[4]); ++#define vpx_highbd_sad16x8x4d vpx_highbd_sad16x8x4d_c ++ ++unsigned int vpx_highbd_sad32x16_c(const uint8_t* src_ptr, ++ int src_stride, ++ const uint8_t* ref_ptr, ++ int ref_stride); ++#define vpx_highbd_sad32x16 vpx_highbd_sad32x16_c ++ ++unsigned int vpx_highbd_sad32x16_avg_c(const uint8_t* src_ptr, ++ int src_stride, ++ const uint8_t* ref_ptr, ++ int ref_stride, ++ const uint8_t* second_pred); ++#define vpx_highbd_sad32x16_avg vpx_highbd_sad32x16_avg_c ++ ++void vpx_highbd_sad32x16x4d_c(const uint8_t* src_ptr, ++ int src_stride, ++ const uint8_t* const ref_array[4], ++ int ref_stride, ++ uint32_t sad_array[4]); ++#define vpx_highbd_sad32x16x4d vpx_highbd_sad32x16x4d_c ++ ++unsigned int vpx_highbd_sad32x32_c(const uint8_t* src_ptr, ++ int src_stride, ++ const uint8_t* ref_ptr, ++ int ref_stride); ++#define vpx_highbd_sad32x32 vpx_highbd_sad32x32_c ++ ++unsigned int vpx_highbd_sad32x32_avg_c(const uint8_t* src_ptr, ++ int src_stride, ++ const uint8_t* ref_ptr, ++ int ref_stride, ++ const uint8_t* second_pred); ++#define vpx_highbd_sad32x32_avg vpx_highbd_sad32x32_avg_c ++ ++void vpx_highbd_sad32x32x4d_c(const uint8_t* src_ptr, ++ int src_stride, ++ const uint8_t* const ref_array[4], ++ int ref_stride, ++ uint32_t sad_array[4]); ++#define vpx_highbd_sad32x32x4d vpx_highbd_sad32x32x4d_c ++ ++unsigned int vpx_highbd_sad32x64_c(const uint8_t* src_ptr, ++ int src_stride, ++ const uint8_t* ref_ptr, ++ int ref_stride); ++#define vpx_highbd_sad32x64 vpx_highbd_sad32x64_c ++ ++unsigned int vpx_highbd_sad32x64_avg_c(const uint8_t* src_ptr, ++ int src_stride, ++ const uint8_t* ref_ptr, ++ int ref_stride, ++ const uint8_t* second_pred); ++#define vpx_highbd_sad32x64_avg vpx_highbd_sad32x64_avg_c ++ ++void vpx_highbd_sad32x64x4d_c(const uint8_t* src_ptr, ++ int src_stride, ++ const uint8_t* const ref_array[4], ++ int ref_stride, ++ uint32_t sad_array[4]); ++#define vpx_highbd_sad32x64x4d vpx_highbd_sad32x64x4d_c ++ ++unsigned int vpx_highbd_sad4x4_c(const uint8_t* src_ptr, ++ int src_stride, ++ const uint8_t* ref_ptr, ++ int ref_stride); ++#define vpx_highbd_sad4x4 vpx_highbd_sad4x4_c ++ ++unsigned int vpx_highbd_sad4x4_avg_c(const uint8_t* src_ptr, ++ int src_stride, ++ const uint8_t* ref_ptr, ++ int ref_stride, ++ const uint8_t* second_pred); ++#define vpx_highbd_sad4x4_avg vpx_highbd_sad4x4_avg_c ++ ++void vpx_highbd_sad4x4x4d_c(const uint8_t* src_ptr, ++ int src_stride, ++ const uint8_t* const ref_array[4], ++ int ref_stride, ++ uint32_t sad_array[4]); ++#define vpx_highbd_sad4x4x4d vpx_highbd_sad4x4x4d_c ++ ++unsigned int vpx_highbd_sad4x8_c(const uint8_t* src_ptr, ++ int src_stride, ++ const uint8_t* ref_ptr, ++ int ref_stride); ++#define vpx_highbd_sad4x8 vpx_highbd_sad4x8_c ++ ++unsigned int vpx_highbd_sad4x8_avg_c(const uint8_t* src_ptr, ++ int src_stride, ++ const uint8_t* ref_ptr, ++ int ref_stride, ++ const uint8_t* second_pred); ++#define vpx_highbd_sad4x8_avg vpx_highbd_sad4x8_avg_c ++ ++void vpx_highbd_sad4x8x4d_c(const uint8_t* src_ptr, ++ int src_stride, ++ const uint8_t* const ref_array[4], ++ int ref_stride, ++ uint32_t sad_array[4]); ++#define vpx_highbd_sad4x8x4d vpx_highbd_sad4x8x4d_c ++ ++unsigned int vpx_highbd_sad64x32_c(const uint8_t* src_ptr, ++ int src_stride, ++ const uint8_t* ref_ptr, ++ int ref_stride); ++#define vpx_highbd_sad64x32 vpx_highbd_sad64x32_c ++ ++unsigned int vpx_highbd_sad64x32_avg_c(const uint8_t* src_ptr, ++ int src_stride, ++ const uint8_t* ref_ptr, ++ int ref_stride, ++ const uint8_t* second_pred); ++#define vpx_highbd_sad64x32_avg vpx_highbd_sad64x32_avg_c ++ ++void vpx_highbd_sad64x32x4d_c(const uint8_t* src_ptr, ++ int src_stride, ++ const uint8_t* const ref_array[4], ++ int ref_stride, ++ uint32_t sad_array[4]); ++#define vpx_highbd_sad64x32x4d vpx_highbd_sad64x32x4d_c ++ ++unsigned int vpx_highbd_sad64x64_c(const uint8_t* src_ptr, ++ int src_stride, ++ const uint8_t* ref_ptr, ++ int ref_stride); ++#define vpx_highbd_sad64x64 vpx_highbd_sad64x64_c ++ ++unsigned int vpx_highbd_sad64x64_avg_c(const uint8_t* src_ptr, ++ int src_stride, ++ const uint8_t* ref_ptr, ++ int ref_stride, ++ const uint8_t* second_pred); ++#define vpx_highbd_sad64x64_avg vpx_highbd_sad64x64_avg_c ++ ++void vpx_highbd_sad64x64x4d_c(const uint8_t* src_ptr, ++ int src_stride, ++ const uint8_t* const ref_array[4], ++ int ref_stride, ++ uint32_t sad_array[4]); ++#define vpx_highbd_sad64x64x4d vpx_highbd_sad64x64x4d_c ++ ++unsigned int vpx_highbd_sad8x16_c(const uint8_t* src_ptr, ++ int src_stride, ++ const uint8_t* ref_ptr, ++ int ref_stride); ++#define vpx_highbd_sad8x16 vpx_highbd_sad8x16_c ++ ++unsigned int vpx_highbd_sad8x16_avg_c(const uint8_t* src_ptr, ++ int src_stride, ++ const uint8_t* ref_ptr, ++ int ref_stride, ++ const uint8_t* second_pred); ++#define vpx_highbd_sad8x16_avg vpx_highbd_sad8x16_avg_c ++ ++void vpx_highbd_sad8x16x4d_c(const uint8_t* src_ptr, ++ int src_stride, ++ const uint8_t* const ref_array[4], ++ int ref_stride, ++ uint32_t sad_array[4]); ++#define vpx_highbd_sad8x16x4d vpx_highbd_sad8x16x4d_c ++ ++unsigned int vpx_highbd_sad8x4_c(const uint8_t* src_ptr, ++ int src_stride, ++ const uint8_t* ref_ptr, ++ int ref_stride); ++#define vpx_highbd_sad8x4 vpx_highbd_sad8x4_c ++ ++unsigned int vpx_highbd_sad8x4_avg_c(const uint8_t* src_ptr, ++ int src_stride, ++ const uint8_t* ref_ptr, ++ int ref_stride, ++ const uint8_t* second_pred); ++#define vpx_highbd_sad8x4_avg vpx_highbd_sad8x4_avg_c ++ ++void vpx_highbd_sad8x4x4d_c(const uint8_t* src_ptr, ++ int src_stride, ++ const uint8_t* const ref_array[4], ++ int ref_stride, ++ uint32_t sad_array[4]); ++#define vpx_highbd_sad8x4x4d vpx_highbd_sad8x4x4d_c ++ ++unsigned int vpx_highbd_sad8x8_c(const uint8_t* src_ptr, ++ int src_stride, ++ const uint8_t* ref_ptr, ++ int ref_stride); ++#define vpx_highbd_sad8x8 vpx_highbd_sad8x8_c ++ ++unsigned int vpx_highbd_sad8x8_avg_c(const uint8_t* src_ptr, ++ int src_stride, ++ const uint8_t* ref_ptr, ++ int ref_stride, ++ const uint8_t* second_pred); ++#define vpx_highbd_sad8x8_avg vpx_highbd_sad8x8_avg_c ++ ++void vpx_highbd_sad8x8x4d_c(const uint8_t* src_ptr, ++ int src_stride, ++ const uint8_t* const ref_array[4], ++ int ref_stride, ++ uint32_t sad_array[4]); ++#define vpx_highbd_sad8x8x4d vpx_highbd_sad8x8x4d_c ++ ++unsigned int vpx_highbd_sad_skip_16x16_c(const uint8_t* src_ptr, ++ int src_stride, ++ const uint8_t* ref_ptr, ++ int ref_stride); ++#define vpx_highbd_sad_skip_16x16 vpx_highbd_sad_skip_16x16_c ++ ++void vpx_highbd_sad_skip_16x16x4d_c(const uint8_t* src_ptr, ++ int src_stride, ++ const uint8_t* const ref_array[4], ++ int ref_stride, ++ uint32_t sad_array[4]); ++#define vpx_highbd_sad_skip_16x16x4d vpx_highbd_sad_skip_16x16x4d_c ++ ++unsigned int vpx_highbd_sad_skip_16x32_c(const uint8_t* src_ptr, ++ int src_stride, ++ const uint8_t* ref_ptr, ++ int ref_stride); ++#define vpx_highbd_sad_skip_16x32 vpx_highbd_sad_skip_16x32_c ++ ++void vpx_highbd_sad_skip_16x32x4d_c(const uint8_t* src_ptr, ++ int src_stride, ++ const uint8_t* const ref_array[4], ++ int ref_stride, ++ uint32_t sad_array[4]); ++#define vpx_highbd_sad_skip_16x32x4d vpx_highbd_sad_skip_16x32x4d_c ++ ++unsigned int vpx_highbd_sad_skip_16x8_c(const uint8_t* src_ptr, ++ int src_stride, ++ const uint8_t* ref_ptr, ++ int ref_stride); ++#define vpx_highbd_sad_skip_16x8 vpx_highbd_sad_skip_16x8_c ++ ++void vpx_highbd_sad_skip_16x8x4d_c(const uint8_t* src_ptr, ++ int src_stride, ++ const uint8_t* const ref_array[4], ++ int ref_stride, ++ uint32_t sad_array[4]); ++#define vpx_highbd_sad_skip_16x8x4d vpx_highbd_sad_skip_16x8x4d_c ++ ++unsigned int vpx_highbd_sad_skip_32x16_c(const uint8_t* src_ptr, ++ int src_stride, ++ const uint8_t* ref_ptr, ++ int ref_stride); ++#define vpx_highbd_sad_skip_32x16 vpx_highbd_sad_skip_32x16_c ++ ++void vpx_highbd_sad_skip_32x16x4d_c(const uint8_t* src_ptr, ++ int src_stride, ++ const uint8_t* const ref_array[4], ++ int ref_stride, ++ uint32_t sad_array[4]); ++#define vpx_highbd_sad_skip_32x16x4d vpx_highbd_sad_skip_32x16x4d_c ++ ++unsigned int vpx_highbd_sad_skip_32x32_c(const uint8_t* src_ptr, ++ int src_stride, ++ const uint8_t* ref_ptr, ++ int ref_stride); ++#define vpx_highbd_sad_skip_32x32 vpx_highbd_sad_skip_32x32_c ++ ++void vpx_highbd_sad_skip_32x32x4d_c(const uint8_t* src_ptr, ++ int src_stride, ++ const uint8_t* const ref_array[4], ++ int ref_stride, ++ uint32_t sad_array[4]); ++#define vpx_highbd_sad_skip_32x32x4d vpx_highbd_sad_skip_32x32x4d_c ++ ++unsigned int vpx_highbd_sad_skip_32x64_c(const uint8_t* src_ptr, ++ int src_stride, ++ const uint8_t* ref_ptr, ++ int ref_stride); ++#define vpx_highbd_sad_skip_32x64 vpx_highbd_sad_skip_32x64_c ++ ++void vpx_highbd_sad_skip_32x64x4d_c(const uint8_t* src_ptr, ++ int src_stride, ++ const uint8_t* const ref_array[4], ++ int ref_stride, ++ uint32_t sad_array[4]); ++#define vpx_highbd_sad_skip_32x64x4d vpx_highbd_sad_skip_32x64x4d_c ++ ++unsigned int vpx_highbd_sad_skip_4x4_c(const uint8_t* src_ptr, ++ int src_stride, ++ const uint8_t* ref_ptr, ++ int ref_stride); ++#define vpx_highbd_sad_skip_4x4 vpx_highbd_sad_skip_4x4_c ++ ++void vpx_highbd_sad_skip_4x4x4d_c(const uint8_t* src_ptr, ++ int src_stride, ++ const uint8_t* const ref_array[4], ++ int ref_stride, ++ uint32_t sad_array[4]); ++#define vpx_highbd_sad_skip_4x4x4d vpx_highbd_sad_skip_4x4x4d_c ++ ++unsigned int vpx_highbd_sad_skip_4x8_c(const uint8_t* src_ptr, ++ int src_stride, ++ const uint8_t* ref_ptr, ++ int ref_stride); ++#define vpx_highbd_sad_skip_4x8 vpx_highbd_sad_skip_4x8_c ++ ++void vpx_highbd_sad_skip_4x8x4d_c(const uint8_t* src_ptr, ++ int src_stride, ++ const uint8_t* const ref_array[4], ++ int ref_stride, ++ uint32_t sad_array[4]); ++#define vpx_highbd_sad_skip_4x8x4d vpx_highbd_sad_skip_4x8x4d_c ++ ++unsigned int vpx_highbd_sad_skip_64x32_c(const uint8_t* src_ptr, ++ int src_stride, ++ const uint8_t* ref_ptr, ++ int ref_stride); ++#define vpx_highbd_sad_skip_64x32 vpx_highbd_sad_skip_64x32_c ++ ++void vpx_highbd_sad_skip_64x32x4d_c(const uint8_t* src_ptr, ++ int src_stride, ++ const uint8_t* const ref_array[4], ++ int ref_stride, ++ uint32_t sad_array[4]); ++#define vpx_highbd_sad_skip_64x32x4d vpx_highbd_sad_skip_64x32x4d_c ++ ++unsigned int vpx_highbd_sad_skip_64x64_c(const uint8_t* src_ptr, ++ int src_stride, ++ const uint8_t* ref_ptr, ++ int ref_stride); ++#define vpx_highbd_sad_skip_64x64 vpx_highbd_sad_skip_64x64_c ++ ++void vpx_highbd_sad_skip_64x64x4d_c(const uint8_t* src_ptr, ++ int src_stride, ++ const uint8_t* const ref_array[4], ++ int ref_stride, ++ uint32_t sad_array[4]); ++#define vpx_highbd_sad_skip_64x64x4d vpx_highbd_sad_skip_64x64x4d_c ++ ++unsigned int vpx_highbd_sad_skip_8x16_c(const uint8_t* src_ptr, ++ int src_stride, ++ const uint8_t* ref_ptr, ++ int ref_stride); ++#define vpx_highbd_sad_skip_8x16 vpx_highbd_sad_skip_8x16_c ++ ++void vpx_highbd_sad_skip_8x16x4d_c(const uint8_t* src_ptr, ++ int src_stride, ++ const uint8_t* const ref_array[4], ++ int ref_stride, ++ uint32_t sad_array[4]); ++#define vpx_highbd_sad_skip_8x16x4d vpx_highbd_sad_skip_8x16x4d_c ++ ++unsigned int vpx_highbd_sad_skip_8x4_c(const uint8_t* src_ptr, ++ int src_stride, ++ const uint8_t* ref_ptr, ++ int ref_stride); ++#define vpx_highbd_sad_skip_8x4 vpx_highbd_sad_skip_8x4_c ++ ++void vpx_highbd_sad_skip_8x4x4d_c(const uint8_t* src_ptr, ++ int src_stride, ++ const uint8_t* const ref_array[4], ++ int ref_stride, ++ uint32_t sad_array[4]); ++#define vpx_highbd_sad_skip_8x4x4d vpx_highbd_sad_skip_8x4x4d_c ++ ++unsigned int vpx_highbd_sad_skip_8x8_c(const uint8_t* src_ptr, ++ int src_stride, ++ const uint8_t* ref_ptr, ++ int ref_stride); ++#define vpx_highbd_sad_skip_8x8 vpx_highbd_sad_skip_8x8_c ++ ++void vpx_highbd_sad_skip_8x8x4d_c(const uint8_t* src_ptr, ++ int src_stride, ++ const uint8_t* const ref_array[4], ++ int ref_stride, ++ uint32_t sad_array[4]); ++#define vpx_highbd_sad_skip_8x8x4d vpx_highbd_sad_skip_8x8x4d_c ++ ++int vpx_highbd_satd_c(const tran_low_t* coeff, int length); ++#define vpx_highbd_satd vpx_highbd_satd_c ++ ++int64_t vpx_highbd_sse_c(const uint8_t* a8, ++ int a_stride, ++ const uint8_t* b8, ++ int b_stride, ++ int width, ++ int height); ++#define vpx_highbd_sse vpx_highbd_sse_c ++ ++void vpx_highbd_subtract_block_c(int rows, ++ int cols, ++ int16_t* diff_ptr, ++ ptrdiff_t diff_stride, ++ const uint8_t* src8_ptr, ++ ptrdiff_t src_stride, ++ const uint8_t* pred8_ptr, ++ ptrdiff_t pred_stride, ++ int bd); ++#define vpx_highbd_subtract_block vpx_highbd_subtract_block_c ++ ++void vpx_highbd_tm_predictor_16x16_c(uint16_t* dst, ++ ptrdiff_t stride, ++ const uint16_t* above, ++ const uint16_t* left, ++ int bd); ++#define vpx_highbd_tm_predictor_16x16 vpx_highbd_tm_predictor_16x16_c ++ ++void vpx_highbd_tm_predictor_32x32_c(uint16_t* dst, ++ ptrdiff_t stride, ++ const uint16_t* above, ++ const uint16_t* left, ++ int bd); ++#define vpx_highbd_tm_predictor_32x32 vpx_highbd_tm_predictor_32x32_c ++ ++void vpx_highbd_tm_predictor_4x4_c(uint16_t* dst, ++ ptrdiff_t stride, ++ const uint16_t* above, ++ const uint16_t* left, ++ int bd); ++#define vpx_highbd_tm_predictor_4x4 vpx_highbd_tm_predictor_4x4_c ++ ++void vpx_highbd_tm_predictor_8x8_c(uint16_t* dst, ++ ptrdiff_t stride, ++ const uint16_t* above, ++ const uint16_t* left, ++ int bd); ++#define vpx_highbd_tm_predictor_8x8 vpx_highbd_tm_predictor_8x8_c ++ ++void vpx_highbd_v_predictor_16x16_c(uint16_t* dst, ++ ptrdiff_t stride, ++ const uint16_t* above, ++ const uint16_t* left, ++ int bd); ++#define vpx_highbd_v_predictor_16x16 vpx_highbd_v_predictor_16x16_c ++ ++void vpx_highbd_v_predictor_32x32_c(uint16_t* dst, ++ ptrdiff_t stride, ++ const uint16_t* above, ++ const uint16_t* left, ++ int bd); ++#define vpx_highbd_v_predictor_32x32 vpx_highbd_v_predictor_32x32_c ++ ++void vpx_highbd_v_predictor_4x4_c(uint16_t* dst, ++ ptrdiff_t stride, ++ const uint16_t* above, ++ const uint16_t* left, ++ int bd); ++#define vpx_highbd_v_predictor_4x4 vpx_highbd_v_predictor_4x4_c ++ ++void vpx_highbd_v_predictor_8x8_c(uint16_t* dst, ++ ptrdiff_t stride, ++ const uint16_t* above, ++ const uint16_t* left, ++ int bd); ++#define vpx_highbd_v_predictor_8x8 vpx_highbd_v_predictor_8x8_c ++ ++void vpx_idct16x16_10_add_c(const tran_low_t* input, uint8_t* dest, int stride); ++#define vpx_idct16x16_10_add vpx_idct16x16_10_add_c ++ ++void vpx_idct16x16_1_add_c(const tran_low_t* input, uint8_t* dest, int stride); ++#define vpx_idct16x16_1_add vpx_idct16x16_1_add_c ++ ++void vpx_idct16x16_256_add_c(const tran_low_t* input, ++ uint8_t* dest, ++ int stride); ++#define vpx_idct16x16_256_add vpx_idct16x16_256_add_c ++ ++void vpx_idct16x16_38_add_c(const tran_low_t* input, uint8_t* dest, int stride); ++#define vpx_idct16x16_38_add vpx_idct16x16_38_add_c ++ ++void vpx_idct32x32_1024_add_c(const tran_low_t* input, ++ uint8_t* dest, ++ int stride); ++#define vpx_idct32x32_1024_add vpx_idct32x32_1024_add_c ++ ++void vpx_idct32x32_135_add_c(const tran_low_t* input, ++ uint8_t* dest, ++ int stride); ++#define vpx_idct32x32_135_add vpx_idct32x32_135_add_c ++ ++void vpx_idct32x32_1_add_c(const tran_low_t* input, uint8_t* dest, int stride); ++#define vpx_idct32x32_1_add vpx_idct32x32_1_add_c ++ ++void vpx_idct32x32_34_add_c(const tran_low_t* input, uint8_t* dest, int stride); ++#define vpx_idct32x32_34_add vpx_idct32x32_34_add_c ++ ++void vpx_idct4x4_16_add_c(const tran_low_t* input, uint8_t* dest, int stride); ++#define vpx_idct4x4_16_add vpx_idct4x4_16_add_c ++ ++void vpx_idct4x4_1_add_c(const tran_low_t* input, uint8_t* dest, int stride); ++#define vpx_idct4x4_1_add vpx_idct4x4_1_add_c ++ ++void vpx_idct8x8_12_add_c(const tran_low_t* input, uint8_t* dest, int stride); ++#define vpx_idct8x8_12_add vpx_idct8x8_12_add_c ++ ++void vpx_idct8x8_1_add_c(const tran_low_t* input, uint8_t* dest, int stride); ++#define vpx_idct8x8_1_add vpx_idct8x8_1_add_c ++ ++void vpx_idct8x8_64_add_c(const tran_low_t* input, uint8_t* dest, int stride); ++#define vpx_idct8x8_64_add vpx_idct8x8_64_add_c ++ ++int16_t vpx_int_pro_col_c(const uint8_t* ref, const int width); ++#define vpx_int_pro_col vpx_int_pro_col_c ++ ++void vpx_int_pro_row_c(int16_t hbuf[16], ++ const uint8_t* ref, ++ const int ref_stride, ++ const int height); ++#define vpx_int_pro_row vpx_int_pro_row_c ++ ++void vpx_iwht4x4_16_add_c(const tran_low_t* input, uint8_t* dest, int stride); ++#define vpx_iwht4x4_16_add vpx_iwht4x4_16_add_c ++ ++void vpx_iwht4x4_1_add_c(const tran_low_t* input, uint8_t* dest, int stride); ++#define vpx_iwht4x4_1_add vpx_iwht4x4_1_add_c ++ ++void vpx_lpf_horizontal_16_c(uint8_t* s, ++ int pitch, ++ const uint8_t* blimit, ++ const uint8_t* limit, ++ const uint8_t* thresh); ++#define vpx_lpf_horizontal_16 vpx_lpf_horizontal_16_c ++ ++void vpx_lpf_horizontal_16_dual_c(uint8_t* s, ++ int pitch, ++ const uint8_t* blimit, ++ const uint8_t* limit, ++ const uint8_t* thresh); ++#define vpx_lpf_horizontal_16_dual vpx_lpf_horizontal_16_dual_c ++ ++void vpx_lpf_horizontal_4_c(uint8_t* s, ++ int pitch, ++ const uint8_t* blimit, ++ const uint8_t* limit, ++ const uint8_t* thresh); ++#define vpx_lpf_horizontal_4 vpx_lpf_horizontal_4_c ++ ++void vpx_lpf_horizontal_4_dual_c(uint8_t* s, ++ int pitch, ++ const uint8_t* blimit0, ++ const uint8_t* limit0, ++ const uint8_t* thresh0, ++ const uint8_t* blimit1, ++ const uint8_t* limit1, ++ const uint8_t* thresh1); ++#define vpx_lpf_horizontal_4_dual vpx_lpf_horizontal_4_dual_c ++ ++void vpx_lpf_horizontal_8_c(uint8_t* s, ++ int pitch, ++ const uint8_t* blimit, ++ const uint8_t* limit, ++ const uint8_t* thresh); ++#define vpx_lpf_horizontal_8 vpx_lpf_horizontal_8_c ++ ++void vpx_lpf_horizontal_8_dual_c(uint8_t* s, ++ int pitch, ++ const uint8_t* blimit0, ++ const uint8_t* limit0, ++ const uint8_t* thresh0, ++ const uint8_t* blimit1, ++ const uint8_t* limit1, ++ const uint8_t* thresh1); ++#define vpx_lpf_horizontal_8_dual vpx_lpf_horizontal_8_dual_c ++ ++void vpx_lpf_vertical_16_c(uint8_t* s, ++ int pitch, ++ const uint8_t* blimit, ++ const uint8_t* limit, ++ const uint8_t* thresh); ++#define vpx_lpf_vertical_16 vpx_lpf_vertical_16_c ++ ++void vpx_lpf_vertical_16_dual_c(uint8_t* s, ++ int pitch, ++ const uint8_t* blimit, ++ const uint8_t* limit, ++ const uint8_t* thresh); ++#define vpx_lpf_vertical_16_dual vpx_lpf_vertical_16_dual_c ++ ++void vpx_lpf_vertical_4_c(uint8_t* s, ++ int pitch, ++ const uint8_t* blimit, ++ const uint8_t* limit, ++ const uint8_t* thresh); ++#define vpx_lpf_vertical_4 vpx_lpf_vertical_4_c ++ ++void vpx_lpf_vertical_4_dual_c(uint8_t* s, ++ int pitch, ++ const uint8_t* blimit0, ++ const uint8_t* limit0, ++ const uint8_t* thresh0, ++ const uint8_t* blimit1, ++ const uint8_t* limit1, ++ const uint8_t* thresh1); ++#define vpx_lpf_vertical_4_dual vpx_lpf_vertical_4_dual_c ++ ++void vpx_lpf_vertical_8_c(uint8_t* s, ++ int pitch, ++ const uint8_t* blimit, ++ const uint8_t* limit, ++ const uint8_t* thresh); ++#define vpx_lpf_vertical_8 vpx_lpf_vertical_8_c ++ ++void vpx_lpf_vertical_8_dual_c(uint8_t* s, ++ int pitch, ++ const uint8_t* blimit0, ++ const uint8_t* limit0, ++ const uint8_t* thresh0, ++ const uint8_t* blimit1, ++ const uint8_t* limit1, ++ const uint8_t* thresh1); ++#define vpx_lpf_vertical_8_dual vpx_lpf_vertical_8_dual_c ++ ++void vpx_mbpost_proc_across_ip_c(unsigned char* src, ++ int pitch, ++ int rows, ++ int cols, ++ int flimit); ++#define vpx_mbpost_proc_across_ip vpx_mbpost_proc_across_ip_c ++ ++void vpx_mbpost_proc_down_c(unsigned char* dst, ++ int pitch, ++ int rows, ++ int cols, ++ int flimit); ++#define vpx_mbpost_proc_down vpx_mbpost_proc_down_c ++ ++void vpx_minmax_8x8_c(const uint8_t* s, ++ int p, ++ const uint8_t* d, ++ int dp, ++ int* min, ++ int* max); ++#define vpx_minmax_8x8 vpx_minmax_8x8_c ++ ++unsigned int vpx_mse16x16_c(const uint8_t* src_ptr, ++ int src_stride, ++ const uint8_t* ref_ptr, ++ int ref_stride, ++ unsigned int* sse); ++#define vpx_mse16x16 vpx_mse16x16_c ++ ++unsigned int vpx_mse16x8_c(const uint8_t* src_ptr, ++ int src_stride, ++ const uint8_t* ref_ptr, ++ int ref_stride, ++ unsigned int* sse); ++#define vpx_mse16x8 vpx_mse16x8_c ++ ++unsigned int vpx_mse8x16_c(const uint8_t* src_ptr, ++ int src_stride, ++ const uint8_t* ref_ptr, ++ int ref_stride, ++ unsigned int* sse); ++#define vpx_mse8x16 vpx_mse8x16_c ++ ++unsigned int vpx_mse8x8_c(const uint8_t* src_ptr, ++ int src_stride, ++ const uint8_t* ref_ptr, ++ int ref_stride, ++ unsigned int* sse); ++#define vpx_mse8x8 vpx_mse8x8_c ++ ++void vpx_plane_add_noise_c(uint8_t* start, ++ const int8_t* noise, ++ int blackclamp, ++ int whiteclamp, ++ int width, ++ int height, ++ int pitch); ++#define vpx_plane_add_noise vpx_plane_add_noise_c ++ ++void vpx_post_proc_down_and_across_mb_row_c(unsigned char* src, ++ unsigned char* dst, ++ int src_pitch, ++ int dst_pitch, ++ int cols, ++ unsigned char* flimits, ++ int size); ++#define vpx_post_proc_down_and_across_mb_row \ ++ vpx_post_proc_down_and_across_mb_row_c ++ ++void vpx_quantize_b_c(const tran_low_t* coeff_ptr, ++ intptr_t n_coeffs, ++ const struct macroblock_plane* const mb_plane, ++ tran_low_t* qcoeff_ptr, ++ tran_low_t* dqcoeff_ptr, ++ const int16_t* dequant_ptr, ++ uint16_t* eob_ptr, ++ const struct ScanOrder* const scan_order); ++#define vpx_quantize_b vpx_quantize_b_c ++ ++void vpx_quantize_b_32x32_c(const tran_low_t* coeff_ptr, ++ const struct macroblock_plane* const mb_plane, ++ tran_low_t* qcoeff_ptr, ++ tran_low_t* dqcoeff_ptr, ++ const int16_t* dequant_ptr, ++ uint16_t* eob_ptr, ++ const struct ScanOrder* const scan_order); ++#define vpx_quantize_b_32x32 vpx_quantize_b_32x32_c ++ ++unsigned int vpx_sad16x16_c(const uint8_t* src_ptr, ++ int src_stride, ++ const uint8_t* ref_ptr, ++ int ref_stride); ++#define vpx_sad16x16 vpx_sad16x16_c ++ ++unsigned int vpx_sad16x16_avg_c(const uint8_t* src_ptr, ++ int src_stride, ++ const uint8_t* ref_ptr, ++ int ref_stride, ++ const uint8_t* second_pred); ++#define vpx_sad16x16_avg vpx_sad16x16_avg_c ++ ++void vpx_sad16x16x4d_c(const uint8_t* src_ptr, ++ int src_stride, ++ const uint8_t* const ref_array[4], ++ int ref_stride, ++ uint32_t sad_array[4]); ++#define vpx_sad16x16x4d vpx_sad16x16x4d_c ++ ++unsigned int vpx_sad16x32_c(const uint8_t* src_ptr, ++ int src_stride, ++ const uint8_t* ref_ptr, ++ int ref_stride); ++#define vpx_sad16x32 vpx_sad16x32_c ++ ++unsigned int vpx_sad16x32_avg_c(const uint8_t* src_ptr, ++ int src_stride, ++ const uint8_t* ref_ptr, ++ int ref_stride, ++ const uint8_t* second_pred); ++#define vpx_sad16x32_avg vpx_sad16x32_avg_c ++ ++void vpx_sad16x32x4d_c(const uint8_t* src_ptr, ++ int src_stride, ++ const uint8_t* const ref_array[4], ++ int ref_stride, ++ uint32_t sad_array[4]); ++#define vpx_sad16x32x4d vpx_sad16x32x4d_c ++ ++unsigned int vpx_sad16x8_c(const uint8_t* src_ptr, ++ int src_stride, ++ const uint8_t* ref_ptr, ++ int ref_stride); ++#define vpx_sad16x8 vpx_sad16x8_c ++ ++unsigned int vpx_sad16x8_avg_c(const uint8_t* src_ptr, ++ int src_stride, ++ const uint8_t* ref_ptr, ++ int ref_stride, ++ const uint8_t* second_pred); ++#define vpx_sad16x8_avg vpx_sad16x8_avg_c ++ ++void vpx_sad16x8x4d_c(const uint8_t* src_ptr, ++ int src_stride, ++ const uint8_t* const ref_array[4], ++ int ref_stride, ++ uint32_t sad_array[4]); ++#define vpx_sad16x8x4d vpx_sad16x8x4d_c ++ ++unsigned int vpx_sad32x16_c(const uint8_t* src_ptr, ++ int src_stride, ++ const uint8_t* ref_ptr, ++ int ref_stride); ++#define vpx_sad32x16 vpx_sad32x16_c ++ ++unsigned int vpx_sad32x16_avg_c(const uint8_t* src_ptr, ++ int src_stride, ++ const uint8_t* ref_ptr, ++ int ref_stride, ++ const uint8_t* second_pred); ++#define vpx_sad32x16_avg vpx_sad32x16_avg_c ++ ++void vpx_sad32x16x4d_c(const uint8_t* src_ptr, ++ int src_stride, ++ const uint8_t* const ref_array[4], ++ int ref_stride, ++ uint32_t sad_array[4]); ++#define vpx_sad32x16x4d vpx_sad32x16x4d_c ++ ++unsigned int vpx_sad32x32_c(const uint8_t* src_ptr, ++ int src_stride, ++ const uint8_t* ref_ptr, ++ int ref_stride); ++#define vpx_sad32x32 vpx_sad32x32_c ++ ++unsigned int vpx_sad32x32_avg_c(const uint8_t* src_ptr, ++ int src_stride, ++ const uint8_t* ref_ptr, ++ int ref_stride, ++ const uint8_t* second_pred); ++#define vpx_sad32x32_avg vpx_sad32x32_avg_c ++ ++void vpx_sad32x32x4d_c(const uint8_t* src_ptr, ++ int src_stride, ++ const uint8_t* const ref_array[4], ++ int ref_stride, ++ uint32_t sad_array[4]); ++#define vpx_sad32x32x4d vpx_sad32x32x4d_c ++ ++unsigned int vpx_sad32x64_c(const uint8_t* src_ptr, ++ int src_stride, ++ const uint8_t* ref_ptr, ++ int ref_stride); ++#define vpx_sad32x64 vpx_sad32x64_c ++ ++unsigned int vpx_sad32x64_avg_c(const uint8_t* src_ptr, ++ int src_stride, ++ const uint8_t* ref_ptr, ++ int ref_stride, ++ const uint8_t* second_pred); ++#define vpx_sad32x64_avg vpx_sad32x64_avg_c ++ ++void vpx_sad32x64x4d_c(const uint8_t* src_ptr, ++ int src_stride, ++ const uint8_t* const ref_array[4], ++ int ref_stride, ++ uint32_t sad_array[4]); ++#define vpx_sad32x64x4d vpx_sad32x64x4d_c ++ ++unsigned int vpx_sad4x4_c(const uint8_t* src_ptr, ++ int src_stride, ++ const uint8_t* ref_ptr, ++ int ref_stride); ++#define vpx_sad4x4 vpx_sad4x4_c ++ ++unsigned int vpx_sad4x4_avg_c(const uint8_t* src_ptr, ++ int src_stride, ++ const uint8_t* ref_ptr, ++ int ref_stride, ++ const uint8_t* second_pred); ++#define vpx_sad4x4_avg vpx_sad4x4_avg_c ++ ++void vpx_sad4x4x4d_c(const uint8_t* src_ptr, ++ int src_stride, ++ const uint8_t* const ref_array[4], ++ int ref_stride, ++ uint32_t sad_array[4]); ++#define vpx_sad4x4x4d vpx_sad4x4x4d_c ++ ++unsigned int vpx_sad4x8_c(const uint8_t* src_ptr, ++ int src_stride, ++ const uint8_t* ref_ptr, ++ int ref_stride); ++#define vpx_sad4x8 vpx_sad4x8_c ++ ++unsigned int vpx_sad4x8_avg_c(const uint8_t* src_ptr, ++ int src_stride, ++ const uint8_t* ref_ptr, ++ int ref_stride, ++ const uint8_t* second_pred); ++#define vpx_sad4x8_avg vpx_sad4x8_avg_c ++ ++void vpx_sad4x8x4d_c(const uint8_t* src_ptr, ++ int src_stride, ++ const uint8_t* const ref_array[4], ++ int ref_stride, ++ uint32_t sad_array[4]); ++#define vpx_sad4x8x4d vpx_sad4x8x4d_c ++ ++unsigned int vpx_sad64x32_c(const uint8_t* src_ptr, ++ int src_stride, ++ const uint8_t* ref_ptr, ++ int ref_stride); ++#define vpx_sad64x32 vpx_sad64x32_c ++ ++unsigned int vpx_sad64x32_avg_c(const uint8_t* src_ptr, ++ int src_stride, ++ const uint8_t* ref_ptr, ++ int ref_stride, ++ const uint8_t* second_pred); ++#define vpx_sad64x32_avg vpx_sad64x32_avg_c ++ ++void vpx_sad64x32x4d_c(const uint8_t* src_ptr, ++ int src_stride, ++ const uint8_t* const ref_array[4], ++ int ref_stride, ++ uint32_t sad_array[4]); ++#define vpx_sad64x32x4d vpx_sad64x32x4d_c ++ ++unsigned int vpx_sad64x64_c(const uint8_t* src_ptr, ++ int src_stride, ++ const uint8_t* ref_ptr, ++ int ref_stride); ++#define vpx_sad64x64 vpx_sad64x64_c ++ ++unsigned int vpx_sad64x64_avg_c(const uint8_t* src_ptr, ++ int src_stride, ++ const uint8_t* ref_ptr, ++ int ref_stride, ++ const uint8_t* second_pred); ++#define vpx_sad64x64_avg vpx_sad64x64_avg_c ++ ++void vpx_sad64x64x4d_c(const uint8_t* src_ptr, ++ int src_stride, ++ const uint8_t* const ref_array[4], ++ int ref_stride, ++ uint32_t sad_array[4]); ++#define vpx_sad64x64x4d vpx_sad64x64x4d_c ++ ++unsigned int vpx_sad8x16_c(const uint8_t* src_ptr, ++ int src_stride, ++ const uint8_t* ref_ptr, ++ int ref_stride); ++#define vpx_sad8x16 vpx_sad8x16_c ++ ++unsigned int vpx_sad8x16_avg_c(const uint8_t* src_ptr, ++ int src_stride, ++ const uint8_t* ref_ptr, ++ int ref_stride, ++ const uint8_t* second_pred); ++#define vpx_sad8x16_avg vpx_sad8x16_avg_c ++ ++void vpx_sad8x16x4d_c(const uint8_t* src_ptr, ++ int src_stride, ++ const uint8_t* const ref_array[4], ++ int ref_stride, ++ uint32_t sad_array[4]); ++#define vpx_sad8x16x4d vpx_sad8x16x4d_c ++ ++unsigned int vpx_sad8x4_c(const uint8_t* src_ptr, ++ int src_stride, ++ const uint8_t* ref_ptr, ++ int ref_stride); ++#define vpx_sad8x4 vpx_sad8x4_c ++ ++unsigned int vpx_sad8x4_avg_c(const uint8_t* src_ptr, ++ int src_stride, ++ const uint8_t* ref_ptr, ++ int ref_stride, ++ const uint8_t* second_pred); ++#define vpx_sad8x4_avg vpx_sad8x4_avg_c ++ ++void vpx_sad8x4x4d_c(const uint8_t* src_ptr, ++ int src_stride, ++ const uint8_t* const ref_array[4], ++ int ref_stride, ++ uint32_t sad_array[4]); ++#define vpx_sad8x4x4d vpx_sad8x4x4d_c ++ ++unsigned int vpx_sad8x8_c(const uint8_t* src_ptr, ++ int src_stride, ++ const uint8_t* ref_ptr, ++ int ref_stride); ++#define vpx_sad8x8 vpx_sad8x8_c ++ ++unsigned int vpx_sad8x8_avg_c(const uint8_t* src_ptr, ++ int src_stride, ++ const uint8_t* ref_ptr, ++ int ref_stride, ++ const uint8_t* second_pred); ++#define vpx_sad8x8_avg vpx_sad8x8_avg_c ++ ++void vpx_sad8x8x4d_c(const uint8_t* src_ptr, ++ int src_stride, ++ const uint8_t* const ref_array[4], ++ int ref_stride, ++ uint32_t sad_array[4]); ++#define vpx_sad8x8x4d vpx_sad8x8x4d_c ++ ++unsigned int vpx_sad_skip_16x16_c(const uint8_t* src_ptr, ++ int src_stride, ++ const uint8_t* ref_ptr, ++ int ref_stride); ++#define vpx_sad_skip_16x16 vpx_sad_skip_16x16_c ++ ++void vpx_sad_skip_16x16x4d_c(const uint8_t* src_ptr, ++ int src_stride, ++ const uint8_t* const ref_array[4], ++ int ref_stride, ++ uint32_t sad_array[4]); ++#define vpx_sad_skip_16x16x4d vpx_sad_skip_16x16x4d_c ++ ++unsigned int vpx_sad_skip_16x32_c(const uint8_t* src_ptr, ++ int src_stride, ++ const uint8_t* ref_ptr, ++ int ref_stride); ++#define vpx_sad_skip_16x32 vpx_sad_skip_16x32_c ++ ++void vpx_sad_skip_16x32x4d_c(const uint8_t* src_ptr, ++ int src_stride, ++ const uint8_t* const ref_array[4], ++ int ref_stride, ++ uint32_t sad_array[4]); ++#define vpx_sad_skip_16x32x4d vpx_sad_skip_16x32x4d_c ++ ++unsigned int vpx_sad_skip_16x8_c(const uint8_t* src_ptr, ++ int src_stride, ++ const uint8_t* ref_ptr, ++ int ref_stride); ++#define vpx_sad_skip_16x8 vpx_sad_skip_16x8_c ++ ++void vpx_sad_skip_16x8x4d_c(const uint8_t* src_ptr, ++ int src_stride, ++ const uint8_t* const ref_array[4], ++ int ref_stride, ++ uint32_t sad_array[4]); ++#define vpx_sad_skip_16x8x4d vpx_sad_skip_16x8x4d_c ++ ++unsigned int vpx_sad_skip_32x16_c(const uint8_t* src_ptr, ++ int src_stride, ++ const uint8_t* ref_ptr, ++ int ref_stride); ++#define vpx_sad_skip_32x16 vpx_sad_skip_32x16_c ++ ++void vpx_sad_skip_32x16x4d_c(const uint8_t* src_ptr, ++ int src_stride, ++ const uint8_t* const ref_array[4], ++ int ref_stride, ++ uint32_t sad_array[4]); ++#define vpx_sad_skip_32x16x4d vpx_sad_skip_32x16x4d_c ++ ++unsigned int vpx_sad_skip_32x32_c(const uint8_t* src_ptr, ++ int src_stride, ++ const uint8_t* ref_ptr, ++ int ref_stride); ++#define vpx_sad_skip_32x32 vpx_sad_skip_32x32_c ++ ++void vpx_sad_skip_32x32x4d_c(const uint8_t* src_ptr, ++ int src_stride, ++ const uint8_t* const ref_array[4], ++ int ref_stride, ++ uint32_t sad_array[4]); ++#define vpx_sad_skip_32x32x4d vpx_sad_skip_32x32x4d_c ++ ++unsigned int vpx_sad_skip_32x64_c(const uint8_t* src_ptr, ++ int src_stride, ++ const uint8_t* ref_ptr, ++ int ref_stride); ++#define vpx_sad_skip_32x64 vpx_sad_skip_32x64_c ++ ++void vpx_sad_skip_32x64x4d_c(const uint8_t* src_ptr, ++ int src_stride, ++ const uint8_t* const ref_array[4], ++ int ref_stride, ++ uint32_t sad_array[4]); ++#define vpx_sad_skip_32x64x4d vpx_sad_skip_32x64x4d_c ++ ++unsigned int vpx_sad_skip_4x4_c(const uint8_t* src_ptr, ++ int src_stride, ++ const uint8_t* ref_ptr, ++ int ref_stride); ++#define vpx_sad_skip_4x4 vpx_sad_skip_4x4_c ++ ++void vpx_sad_skip_4x4x4d_c(const uint8_t* src_ptr, ++ int src_stride, ++ const uint8_t* const ref_array[4], ++ int ref_stride, ++ uint32_t sad_array[4]); ++#define vpx_sad_skip_4x4x4d vpx_sad_skip_4x4x4d_c ++ ++unsigned int vpx_sad_skip_4x8_c(const uint8_t* src_ptr, ++ int src_stride, ++ const uint8_t* ref_ptr, ++ int ref_stride); ++#define vpx_sad_skip_4x8 vpx_sad_skip_4x8_c ++ ++void vpx_sad_skip_4x8x4d_c(const uint8_t* src_ptr, ++ int src_stride, ++ const uint8_t* const ref_array[4], ++ int ref_stride, ++ uint32_t sad_array[4]); ++#define vpx_sad_skip_4x8x4d vpx_sad_skip_4x8x4d_c ++ ++unsigned int vpx_sad_skip_64x32_c(const uint8_t* src_ptr, ++ int src_stride, ++ const uint8_t* ref_ptr, ++ int ref_stride); ++#define vpx_sad_skip_64x32 vpx_sad_skip_64x32_c ++ ++void vpx_sad_skip_64x32x4d_c(const uint8_t* src_ptr, ++ int src_stride, ++ const uint8_t* const ref_array[4], ++ int ref_stride, ++ uint32_t sad_array[4]); ++#define vpx_sad_skip_64x32x4d vpx_sad_skip_64x32x4d_c ++ ++unsigned int vpx_sad_skip_64x64_c(const uint8_t* src_ptr, ++ int src_stride, ++ const uint8_t* ref_ptr, ++ int ref_stride); ++#define vpx_sad_skip_64x64 vpx_sad_skip_64x64_c ++ ++void vpx_sad_skip_64x64x4d_c(const uint8_t* src_ptr, ++ int src_stride, ++ const uint8_t* const ref_array[4], ++ int ref_stride, ++ uint32_t sad_array[4]); ++#define vpx_sad_skip_64x64x4d vpx_sad_skip_64x64x4d_c ++ ++unsigned int vpx_sad_skip_8x16_c(const uint8_t* src_ptr, ++ int src_stride, ++ const uint8_t* ref_ptr, ++ int ref_stride); ++#define vpx_sad_skip_8x16 vpx_sad_skip_8x16_c ++ ++void vpx_sad_skip_8x16x4d_c(const uint8_t* src_ptr, ++ int src_stride, ++ const uint8_t* const ref_array[4], ++ int ref_stride, ++ uint32_t sad_array[4]); ++#define vpx_sad_skip_8x16x4d vpx_sad_skip_8x16x4d_c ++ ++unsigned int vpx_sad_skip_8x4_c(const uint8_t* src_ptr, ++ int src_stride, ++ const uint8_t* ref_ptr, ++ int ref_stride); ++#define vpx_sad_skip_8x4 vpx_sad_skip_8x4_c ++ ++void vpx_sad_skip_8x4x4d_c(const uint8_t* src_ptr, ++ int src_stride, ++ const uint8_t* const ref_array[4], ++ int ref_stride, ++ uint32_t sad_array[4]); ++#define vpx_sad_skip_8x4x4d vpx_sad_skip_8x4x4d_c ++ ++unsigned int vpx_sad_skip_8x8_c(const uint8_t* src_ptr, ++ int src_stride, ++ const uint8_t* ref_ptr, ++ int ref_stride); ++#define vpx_sad_skip_8x8 vpx_sad_skip_8x8_c ++ ++void vpx_sad_skip_8x8x4d_c(const uint8_t* src_ptr, ++ int src_stride, ++ const uint8_t* const ref_array[4], ++ int ref_stride, ++ uint32_t sad_array[4]); ++#define vpx_sad_skip_8x8x4d vpx_sad_skip_8x8x4d_c ++ ++int vpx_satd_c(const tran_low_t* coeff, int length); ++#define vpx_satd vpx_satd_c ++ ++void vpx_scaled_2d_c(const uint8_t* src, ++ ptrdiff_t src_stride, ++ uint8_t* dst, ++ ptrdiff_t dst_stride, ++ const InterpKernel* filter, ++ int x0_q4, ++ int x_step_q4, ++ int y0_q4, ++ int y_step_q4, ++ int w, ++ int h); ++#define vpx_scaled_2d vpx_scaled_2d_c ++ ++void vpx_scaled_avg_2d_c(const uint8_t* src, ++ ptrdiff_t src_stride, ++ uint8_t* dst, ++ ptrdiff_t dst_stride, ++ const InterpKernel* filter, ++ int x0_q4, ++ int x_step_q4, ++ int y0_q4, ++ int y_step_q4, ++ int w, ++ int h); ++#define vpx_scaled_avg_2d vpx_scaled_avg_2d_c ++ ++void vpx_scaled_avg_horiz_c(const uint8_t* src, ++ ptrdiff_t src_stride, ++ uint8_t* dst, ++ ptrdiff_t dst_stride, ++ const InterpKernel* filter, ++ int x0_q4, ++ int x_step_q4, ++ int y0_q4, ++ int y_step_q4, ++ int w, ++ int h); ++#define vpx_scaled_avg_horiz vpx_scaled_avg_horiz_c ++ ++void vpx_scaled_avg_vert_c(const uint8_t* src, ++ ptrdiff_t src_stride, ++ uint8_t* dst, ++ ptrdiff_t dst_stride, ++ const InterpKernel* filter, ++ int x0_q4, ++ int x_step_q4, ++ int y0_q4, ++ int y_step_q4, ++ int w, ++ int h); ++#define vpx_scaled_avg_vert vpx_scaled_avg_vert_c ++ ++void vpx_scaled_horiz_c(const uint8_t* src, ++ ptrdiff_t src_stride, ++ uint8_t* dst, ++ ptrdiff_t dst_stride, ++ const InterpKernel* filter, ++ int x0_q4, ++ int x_step_q4, ++ int y0_q4, ++ int y_step_q4, ++ int w, ++ int h); ++#define vpx_scaled_horiz vpx_scaled_horiz_c ++ ++void vpx_scaled_vert_c(const uint8_t* src, ++ ptrdiff_t src_stride, ++ uint8_t* dst, ++ ptrdiff_t dst_stride, ++ const InterpKernel* filter, ++ int x0_q4, ++ int x_step_q4, ++ int y0_q4, ++ int y_step_q4, ++ int w, ++ int h); ++#define vpx_scaled_vert vpx_scaled_vert_c ++ ++int64_t vpx_sse_c(const uint8_t* a, ++ int a_stride, ++ const uint8_t* b, ++ int b_stride, ++ int width, ++ int height); ++#define vpx_sse vpx_sse_c ++ ++uint32_t vpx_sub_pixel_avg_variance16x16_c(const uint8_t* src_ptr, ++ int src_stride, ++ int x_offset, ++ int y_offset, ++ const uint8_t* ref_ptr, ++ int ref_stride, ++ uint32_t* sse, ++ const uint8_t* second_pred); ++#define vpx_sub_pixel_avg_variance16x16 vpx_sub_pixel_avg_variance16x16_c ++ ++uint32_t vpx_sub_pixel_avg_variance16x32_c(const uint8_t* src_ptr, ++ int src_stride, ++ int x_offset, ++ int y_offset, ++ const uint8_t* ref_ptr, ++ int ref_stride, ++ uint32_t* sse, ++ const uint8_t* second_pred); ++#define vpx_sub_pixel_avg_variance16x32 vpx_sub_pixel_avg_variance16x32_c ++ ++uint32_t vpx_sub_pixel_avg_variance16x8_c(const uint8_t* src_ptr, ++ int src_stride, ++ int x_offset, ++ int y_offset, ++ const uint8_t* ref_ptr, ++ int ref_stride, ++ uint32_t* sse, ++ const uint8_t* second_pred); ++#define vpx_sub_pixel_avg_variance16x8 vpx_sub_pixel_avg_variance16x8_c ++ ++uint32_t vpx_sub_pixel_avg_variance32x16_c(const uint8_t* src_ptr, ++ int src_stride, ++ int x_offset, ++ int y_offset, ++ const uint8_t* ref_ptr, ++ int ref_stride, ++ uint32_t* sse, ++ const uint8_t* second_pred); ++#define vpx_sub_pixel_avg_variance32x16 vpx_sub_pixel_avg_variance32x16_c ++ ++uint32_t vpx_sub_pixel_avg_variance32x32_c(const uint8_t* src_ptr, ++ int src_stride, ++ int x_offset, ++ int y_offset, ++ const uint8_t* ref_ptr, ++ int ref_stride, ++ uint32_t* sse, ++ const uint8_t* second_pred); ++#define vpx_sub_pixel_avg_variance32x32 vpx_sub_pixel_avg_variance32x32_c ++ ++uint32_t vpx_sub_pixel_avg_variance32x64_c(const uint8_t* src_ptr, ++ int src_stride, ++ int x_offset, ++ int y_offset, ++ const uint8_t* ref_ptr, ++ int ref_stride, ++ uint32_t* sse, ++ const uint8_t* second_pred); ++#define vpx_sub_pixel_avg_variance32x64 vpx_sub_pixel_avg_variance32x64_c ++ ++uint32_t vpx_sub_pixel_avg_variance4x4_c(const uint8_t* src_ptr, ++ int src_stride, ++ int x_offset, ++ int y_offset, ++ const uint8_t* ref_ptr, ++ int ref_stride, ++ uint32_t* sse, ++ const uint8_t* second_pred); ++#define vpx_sub_pixel_avg_variance4x4 vpx_sub_pixel_avg_variance4x4_c ++ ++uint32_t vpx_sub_pixel_avg_variance4x8_c(const uint8_t* src_ptr, ++ int src_stride, ++ int x_offset, ++ int y_offset, ++ const uint8_t* ref_ptr, ++ int ref_stride, ++ uint32_t* sse, ++ const uint8_t* second_pred); ++#define vpx_sub_pixel_avg_variance4x8 vpx_sub_pixel_avg_variance4x8_c ++ ++uint32_t vpx_sub_pixel_avg_variance64x32_c(const uint8_t* src_ptr, ++ int src_stride, ++ int x_offset, ++ int y_offset, ++ const uint8_t* ref_ptr, ++ int ref_stride, ++ uint32_t* sse, ++ const uint8_t* second_pred); ++#define vpx_sub_pixel_avg_variance64x32 vpx_sub_pixel_avg_variance64x32_c ++ ++uint32_t vpx_sub_pixel_avg_variance64x64_c(const uint8_t* src_ptr, ++ int src_stride, ++ int x_offset, ++ int y_offset, ++ const uint8_t* ref_ptr, ++ int ref_stride, ++ uint32_t* sse, ++ const uint8_t* second_pred); ++#define vpx_sub_pixel_avg_variance64x64 vpx_sub_pixel_avg_variance64x64_c ++ ++uint32_t vpx_sub_pixel_avg_variance8x16_c(const uint8_t* src_ptr, ++ int src_stride, ++ int x_offset, ++ int y_offset, ++ const uint8_t* ref_ptr, ++ int ref_stride, ++ uint32_t* sse, ++ const uint8_t* second_pred); ++#define vpx_sub_pixel_avg_variance8x16 vpx_sub_pixel_avg_variance8x16_c ++ ++uint32_t vpx_sub_pixel_avg_variance8x4_c(const uint8_t* src_ptr, ++ int src_stride, ++ int x_offset, ++ int y_offset, ++ const uint8_t* ref_ptr, ++ int ref_stride, ++ uint32_t* sse, ++ const uint8_t* second_pred); ++#define vpx_sub_pixel_avg_variance8x4 vpx_sub_pixel_avg_variance8x4_c ++ ++uint32_t vpx_sub_pixel_avg_variance8x8_c(const uint8_t* src_ptr, ++ int src_stride, ++ int x_offset, ++ int y_offset, ++ const uint8_t* ref_ptr, ++ int ref_stride, ++ uint32_t* sse, ++ const uint8_t* second_pred); ++#define vpx_sub_pixel_avg_variance8x8 vpx_sub_pixel_avg_variance8x8_c ++ ++uint32_t vpx_sub_pixel_variance16x16_c(const uint8_t* src_ptr, ++ int src_stride, ++ int x_offset, ++ int y_offset, ++ const uint8_t* ref_ptr, ++ int ref_stride, ++ uint32_t* sse); ++#define vpx_sub_pixel_variance16x16 vpx_sub_pixel_variance16x16_c ++ ++uint32_t vpx_sub_pixel_variance16x32_c(const uint8_t* src_ptr, ++ int src_stride, ++ int x_offset, ++ int y_offset, ++ const uint8_t* ref_ptr, ++ int ref_stride, ++ uint32_t* sse); ++#define vpx_sub_pixel_variance16x32 vpx_sub_pixel_variance16x32_c ++ ++uint32_t vpx_sub_pixel_variance16x8_c(const uint8_t* src_ptr, ++ int src_stride, ++ int x_offset, ++ int y_offset, ++ const uint8_t* ref_ptr, ++ int ref_stride, ++ uint32_t* sse); ++#define vpx_sub_pixel_variance16x8 vpx_sub_pixel_variance16x8_c ++ ++uint32_t vpx_sub_pixel_variance32x16_c(const uint8_t* src_ptr, ++ int src_stride, ++ int x_offset, ++ int y_offset, ++ const uint8_t* ref_ptr, ++ int ref_stride, ++ uint32_t* sse); ++#define vpx_sub_pixel_variance32x16 vpx_sub_pixel_variance32x16_c ++ ++uint32_t vpx_sub_pixel_variance32x32_c(const uint8_t* src_ptr, ++ int src_stride, ++ int x_offset, ++ int y_offset, ++ const uint8_t* ref_ptr, ++ int ref_stride, ++ uint32_t* sse); ++#define vpx_sub_pixel_variance32x32 vpx_sub_pixel_variance32x32_c ++ ++uint32_t vpx_sub_pixel_variance32x64_c(const uint8_t* src_ptr, ++ int src_stride, ++ int x_offset, ++ int y_offset, ++ const uint8_t* ref_ptr, ++ int ref_stride, ++ uint32_t* sse); ++#define vpx_sub_pixel_variance32x64 vpx_sub_pixel_variance32x64_c ++ ++uint32_t vpx_sub_pixel_variance4x4_c(const uint8_t* src_ptr, ++ int src_stride, ++ int x_offset, ++ int y_offset, ++ const uint8_t* ref_ptr, ++ int ref_stride, ++ uint32_t* sse); ++#define vpx_sub_pixel_variance4x4 vpx_sub_pixel_variance4x4_c ++ ++uint32_t vpx_sub_pixel_variance4x8_c(const uint8_t* src_ptr, ++ int src_stride, ++ int x_offset, ++ int y_offset, ++ const uint8_t* ref_ptr, ++ int ref_stride, ++ uint32_t* sse); ++#define vpx_sub_pixel_variance4x8 vpx_sub_pixel_variance4x8_c ++ ++uint32_t vpx_sub_pixel_variance64x32_c(const uint8_t* src_ptr, ++ int src_stride, ++ int x_offset, ++ int y_offset, ++ const uint8_t* ref_ptr, ++ int ref_stride, ++ uint32_t* sse); ++#define vpx_sub_pixel_variance64x32 vpx_sub_pixel_variance64x32_c ++ ++uint32_t vpx_sub_pixel_variance64x64_c(const uint8_t* src_ptr, ++ int src_stride, ++ int x_offset, ++ int y_offset, ++ const uint8_t* ref_ptr, ++ int ref_stride, ++ uint32_t* sse); ++#define vpx_sub_pixel_variance64x64 vpx_sub_pixel_variance64x64_c ++ ++uint32_t vpx_sub_pixel_variance8x16_c(const uint8_t* src_ptr, ++ int src_stride, ++ int x_offset, ++ int y_offset, ++ const uint8_t* ref_ptr, ++ int ref_stride, ++ uint32_t* sse); ++#define vpx_sub_pixel_variance8x16 vpx_sub_pixel_variance8x16_c ++ ++uint32_t vpx_sub_pixel_variance8x4_c(const uint8_t* src_ptr, ++ int src_stride, ++ int x_offset, ++ int y_offset, ++ const uint8_t* ref_ptr, ++ int ref_stride, ++ uint32_t* sse); ++#define vpx_sub_pixel_variance8x4 vpx_sub_pixel_variance8x4_c ++ ++uint32_t vpx_sub_pixel_variance8x8_c(const uint8_t* src_ptr, ++ int src_stride, ++ int x_offset, ++ int y_offset, ++ const uint8_t* ref_ptr, ++ int ref_stride, ++ uint32_t* sse); ++#define vpx_sub_pixel_variance8x8 vpx_sub_pixel_variance8x8_c ++ ++void vpx_subtract_block_c(int rows, ++ int cols, ++ int16_t* diff_ptr, ++ ptrdiff_t diff_stride, ++ const uint8_t* src_ptr, ++ ptrdiff_t src_stride, ++ const uint8_t* pred_ptr, ++ ptrdiff_t pred_stride); ++#define vpx_subtract_block vpx_subtract_block_c ++ ++uint64_t vpx_sum_squares_2d_i16_c(const int16_t* src, int stride, int size); ++#define vpx_sum_squares_2d_i16 vpx_sum_squares_2d_i16_c ++ ++void vpx_tm_predictor_16x16_c(uint8_t* dst, ++ ptrdiff_t stride, ++ const uint8_t* above, ++ const uint8_t* left); ++#define vpx_tm_predictor_16x16 vpx_tm_predictor_16x16_c ++ ++void vpx_tm_predictor_32x32_c(uint8_t* dst, ++ ptrdiff_t stride, ++ const uint8_t* above, ++ const uint8_t* left); ++#define vpx_tm_predictor_32x32 vpx_tm_predictor_32x32_c ++ ++void vpx_tm_predictor_4x4_c(uint8_t* dst, ++ ptrdiff_t stride, ++ const uint8_t* above, ++ const uint8_t* left); ++#define vpx_tm_predictor_4x4 vpx_tm_predictor_4x4_c ++ ++void vpx_tm_predictor_8x8_c(uint8_t* dst, ++ ptrdiff_t stride, ++ const uint8_t* above, ++ const uint8_t* left); ++#define vpx_tm_predictor_8x8 vpx_tm_predictor_8x8_c ++ ++void vpx_v_predictor_16x16_c(uint8_t* dst, ++ ptrdiff_t stride, ++ const uint8_t* above, ++ const uint8_t* left); ++#define vpx_v_predictor_16x16 vpx_v_predictor_16x16_c ++ ++void vpx_v_predictor_32x32_c(uint8_t* dst, ++ ptrdiff_t stride, ++ const uint8_t* above, ++ const uint8_t* left); ++#define vpx_v_predictor_32x32 vpx_v_predictor_32x32_c ++ ++void vpx_v_predictor_4x4_c(uint8_t* dst, ++ ptrdiff_t stride, ++ const uint8_t* above, ++ const uint8_t* left); ++#define vpx_v_predictor_4x4 vpx_v_predictor_4x4_c ++ ++void vpx_v_predictor_8x8_c(uint8_t* dst, ++ ptrdiff_t stride, ++ const uint8_t* above, ++ const uint8_t* left); ++#define vpx_v_predictor_8x8 vpx_v_predictor_8x8_c ++ ++unsigned int vpx_variance16x16_c(const uint8_t* src_ptr, ++ int src_stride, ++ const uint8_t* ref_ptr, ++ int ref_stride, ++ unsigned int* sse); ++#define vpx_variance16x16 vpx_variance16x16_c ++ ++unsigned int vpx_variance16x32_c(const uint8_t* src_ptr, ++ int src_stride, ++ const uint8_t* ref_ptr, ++ int ref_stride, ++ unsigned int* sse); ++#define vpx_variance16x32 vpx_variance16x32_c ++ ++unsigned int vpx_variance16x8_c(const uint8_t* src_ptr, ++ int src_stride, ++ const uint8_t* ref_ptr, ++ int ref_stride, ++ unsigned int* sse); ++#define vpx_variance16x8 vpx_variance16x8_c ++ ++unsigned int vpx_variance32x16_c(const uint8_t* src_ptr, ++ int src_stride, ++ const uint8_t* ref_ptr, ++ int ref_stride, ++ unsigned int* sse); ++#define vpx_variance32x16 vpx_variance32x16_c ++ ++unsigned int vpx_variance32x32_c(const uint8_t* src_ptr, ++ int src_stride, ++ const uint8_t* ref_ptr, ++ int ref_stride, ++ unsigned int* sse); ++#define vpx_variance32x32 vpx_variance32x32_c ++ ++unsigned int vpx_variance32x64_c(const uint8_t* src_ptr, ++ int src_stride, ++ const uint8_t* ref_ptr, ++ int ref_stride, ++ unsigned int* sse); ++#define vpx_variance32x64 vpx_variance32x64_c ++ ++unsigned int vpx_variance4x4_c(const uint8_t* src_ptr, ++ int src_stride, ++ const uint8_t* ref_ptr, ++ int ref_stride, ++ unsigned int* sse); ++#define vpx_variance4x4 vpx_variance4x4_c ++ ++unsigned int vpx_variance4x8_c(const uint8_t* src_ptr, ++ int src_stride, ++ const uint8_t* ref_ptr, ++ int ref_stride, ++ unsigned int* sse); ++#define vpx_variance4x8 vpx_variance4x8_c ++ ++unsigned int vpx_variance64x32_c(const uint8_t* src_ptr, ++ int src_stride, ++ const uint8_t* ref_ptr, ++ int ref_stride, ++ unsigned int* sse); ++#define vpx_variance64x32 vpx_variance64x32_c ++ ++unsigned int vpx_variance64x64_c(const uint8_t* src_ptr, ++ int src_stride, ++ const uint8_t* ref_ptr, ++ int ref_stride, ++ unsigned int* sse); ++#define vpx_variance64x64 vpx_variance64x64_c ++ ++unsigned int vpx_variance8x16_c(const uint8_t* src_ptr, ++ int src_stride, ++ const uint8_t* ref_ptr, ++ int ref_stride, ++ unsigned int* sse); ++#define vpx_variance8x16 vpx_variance8x16_c ++ ++unsigned int vpx_variance8x4_c(const uint8_t* src_ptr, ++ int src_stride, ++ const uint8_t* ref_ptr, ++ int ref_stride, ++ unsigned int* sse); ++#define vpx_variance8x4 vpx_variance8x4_c ++ ++unsigned int vpx_variance8x8_c(const uint8_t* src_ptr, ++ int src_stride, ++ const uint8_t* ref_ptr, ++ int ref_stride, ++ unsigned int* sse); ++#define vpx_variance8x8 vpx_variance8x8_c ++ ++void vpx_ve_predictor_4x4_c(uint8_t* dst, ++ ptrdiff_t stride, ++ const uint8_t* above, ++ const uint8_t* left); ++#define vpx_ve_predictor_4x4 vpx_ve_predictor_4x4_c ++ ++int vpx_vector_var_c(const int16_t* ref, const int16_t* src, const int bwl); ++#define vpx_vector_var vpx_vector_var_c ++ ++void vpx_dsp_rtcd(void); ++ ++#include "vpx_config.h" ++ ++#ifdef RTCD_C ++static void setup_rtcd_internal(void) {} ++#endif ++ ++#ifdef __cplusplus ++} // extern "C" ++#endif ++ ++#endif +Index: chromium-122.0.6261.128/third_party/libvpx/source/config/linux/ppc64/vpx_scale_rtcd.h +=================================================================== +--- /dev/null ++++ chromium-122.0.6261.128/third_party/libvpx/source/config/linux/ppc64/vpx_scale_rtcd.h +@@ -0,0 +1,96 @@ ++// This file is generated. Do not edit. ++#ifndef VPX_SCALE_RTCD_H_ ++#define VPX_SCALE_RTCD_H_ ++ ++#ifdef RTCD_C ++#define RTCD_EXTERN ++#else ++#define RTCD_EXTERN extern ++#endif ++ ++struct yv12_buffer_config; ++ ++#ifdef __cplusplus ++extern "C" { ++#endif ++ ++void vp8_horizontal_line_2_1_scale_c(const unsigned char* source, ++ unsigned int source_width, ++ unsigned char* dest, ++ unsigned int dest_width); ++#define vp8_horizontal_line_2_1_scale vp8_horizontal_line_2_1_scale_c ++ ++void vp8_horizontal_line_5_3_scale_c(const unsigned char* source, ++ unsigned int source_width, ++ unsigned char* dest, ++ unsigned int dest_width); ++#define vp8_horizontal_line_5_3_scale vp8_horizontal_line_5_3_scale_c ++ ++void vp8_horizontal_line_5_4_scale_c(const unsigned char* source, ++ unsigned int source_width, ++ unsigned char* dest, ++ unsigned int dest_width); ++#define vp8_horizontal_line_5_4_scale vp8_horizontal_line_5_4_scale_c ++ ++void vp8_vertical_band_2_1_scale_c(unsigned char* source, ++ unsigned int src_pitch, ++ unsigned char* dest, ++ unsigned int dest_pitch, ++ unsigned int dest_width); ++#define vp8_vertical_band_2_1_scale vp8_vertical_band_2_1_scale_c ++ ++void vp8_vertical_band_2_1_scale_i_c(unsigned char* source, ++ unsigned int src_pitch, ++ unsigned char* dest, ++ unsigned int dest_pitch, ++ unsigned int dest_width); ++#define vp8_vertical_band_2_1_scale_i vp8_vertical_band_2_1_scale_i_c ++ ++void vp8_vertical_band_5_3_scale_c(unsigned char* source, ++ unsigned int src_pitch, ++ unsigned char* dest, ++ unsigned int dest_pitch, ++ unsigned int dest_width); ++#define vp8_vertical_band_5_3_scale vp8_vertical_band_5_3_scale_c ++ ++void vp8_vertical_band_5_4_scale_c(unsigned char* source, ++ unsigned int src_pitch, ++ unsigned char* dest, ++ unsigned int dest_pitch, ++ unsigned int dest_width); ++#define vp8_vertical_band_5_4_scale vp8_vertical_band_5_4_scale_c ++ ++void vp8_yv12_copy_frame_c(const struct yv12_buffer_config* src_ybc, ++ struct yv12_buffer_config* dst_ybc); ++#define vp8_yv12_copy_frame vp8_yv12_copy_frame_c ++ ++void vp8_yv12_extend_frame_borders_c(struct yv12_buffer_config* ybf); ++#define vp8_yv12_extend_frame_borders vp8_yv12_extend_frame_borders_c ++ ++void vpx_extend_frame_borders_c(struct yv12_buffer_config* ybf); ++#define vpx_extend_frame_borders vpx_extend_frame_borders_c ++ ++void vpx_extend_frame_inner_borders_c(struct yv12_buffer_config* ybf); ++#define vpx_extend_frame_inner_borders vpx_extend_frame_inner_borders_c ++ ++void vpx_yv12_copy_frame_c(const struct yv12_buffer_config* src_ybc, ++ struct yv12_buffer_config* dst_ybc); ++#define vpx_yv12_copy_frame vpx_yv12_copy_frame_c ++ ++void vpx_yv12_copy_y_c(const struct yv12_buffer_config* src_ybc, ++ struct yv12_buffer_config* dst_ybc); ++#define vpx_yv12_copy_y vpx_yv12_copy_y_c ++ ++void vpx_scale_rtcd(void); ++ ++#include "vpx_config.h" ++ ++#ifdef RTCD_C ++static void setup_rtcd_internal(void) {} ++#endif ++ ++#ifdef __cplusplus ++} // extern "C" ++#endif ++ ++#endif +From 8c24c695052d156fd1322d6dacfab117b92cb175 Mon Sep 17 00:00:00 2001 +From: Shawn Anastasio +Date: Thu, 30 Aug 2018 17:32:05 -0500 +Subject: [PATCH] Implement support for PPC64 on Linux + +This patch implements support for the PPC64 architecture on Linux hosts. +--- + CONTRIBUTORS | 1 + + minidump/minidump_context.h | 64 ++++++ + minidump/minidump_context_writer.cc | 50 +++++ + minidump/minidump_context_writer.h | 39 ++++ + minidump/minidump_context_writer_test.cc | 15 ++ + minidump/minidump_misc_info_writer.cc | 2 + + minidump/test/minidump_context_test_util.cc | 67 ++++++ + minidump/test/minidump_context_test_util.h | 3 + + snapshot/capture_memory.cc | 5 + + snapshot/cpu_architecture.h | 5 +- + snapshot/cpu_context.cc | 5 + + snapshot/cpu_context.h | 19 ++ + snapshot/linux/cpu_context_linux.h | 73 ++++++ + snapshot/linux/debug_rendezvous_test.cc | 4 +- + snapshot/linux/exception_snapshot_linux.cc | 63 ++++++ + snapshot/linux/exception_snapshot_linux.h | 2 + + .../linux/exception_snapshot_linux_test.cc | 21 ++ + snapshot/linux/process_reader_linux.cc | 2 + + snapshot/linux/signal_context.h | 83 +++++++ + snapshot/linux/system_snapshot_linux.cc | 11 + + snapshot/linux/thread_snapshot_linux.cc | 8 + + snapshot/linux/thread_snapshot_linux.h | 2 + + snapshot/test/test_cpu_context.cc | 33 +++ + snapshot/test/test_cpu_context.h | 1 + + test/linux/get_tls.cc | 2 + + test/multiprocess_posix.cc | 3 +- + util/linux/auxiliary_vector.cc | 5 + + util/linux/ptracer.cc | 61 +++++ + util/linux/thread_info.h | 55 +++++ + util/misc/capture_context.h | 1 + + util/misc/capture_context_linux.S | 212 +++++++++++++++++- + util/misc/capture_context_test.cc | 3 +- + util/misc/capture_context_test_util_linux.cc | 6 + + 36 files changed, 932 insertions(+), 12 deletions(-) + +Index: chromium-122.0.6261.128/third_party/crashpad/crashpad/CONTRIBUTORS +=================================================================== +--- chromium-122.0.6261.128.orig/third_party/crashpad/crashpad/CONTRIBUTORS ++++ chromium-122.0.6261.128/third_party/crashpad/crashpad/CONTRIBUTORS +@@ -13,3 +13,5 @@ Mark Mentovai + Robert Sesek + Scott Graham + Joshua Peraza ++Shawn Anastasio ++Timothy Pearson +Index: chromium-122.0.6261.128/third_party/crashpad/crashpad/minidump/minidump_context.h +=================================================================== +--- chromium-122.0.6261.128.orig/third_party/crashpad/crashpad/minidump/minidump_context.h ++++ chromium-122.0.6261.128/third_party/crashpad/crashpad/minidump/minidump_context.h +@@ -687,6 +687,70 @@ struct MinidumpContextRISCV64 { + uint32_t fcsr; + }; + ++//! \brief ppc64-specific flags for MinidumpPPC64::context_flags ++//! Based on minidump_cpu_ppc64.h from breakpad ++enum MinidumpContextPPC64Flags : uint32_t { ++ //! \brief Identifies the context as PPC64. ++ kMinidumpContextPPC64 = 0x01000000, ++ ++ //! \brief Indicates the validity of general purpose registers. ++ //! ++ //! Registers `r0`-`r31`, `nip`, `msr`, `lr`, etc. are valid. ++ kMinidumpContextPPC64Base = kMinidumpContextPPC64 | 0x00000001, ++ ++ //! \brief Indicates the validity of floating point registers. ++ //! ++ //! Registers `fp0`-`fp31`, `fpscr` are valid. ++ kMinidumpContextPPC64Floating = kMinidumpContextPPC64 | 0x00000008, ++ ++ //! \brief Indicates the validity of Altivec/VMX registers. ++ //! ++ //! Registers `v0`-`v31`, `vscr`, `vrsave`. ++ kMinidumpContextPPC64Vector = kMinidumpContextPPC64 | 0x00000020, ++ ++ //! \brief Indicates the validity of all registers ++ kMinidumpContextPPC64All = kMinidumpContextPPC64Base | ++ kMinidumpContextPPC64Floating | ++ kMinidumpContextPPC64Vector ++}; ++ ++//! \brief A PPC64 CPU context carried in a minidump file. ++//! Based on minidump_cpu_ppc64.h from breakpad. ++struct MinidumpContextPPC64 { ++ uint64_t context_flags; ++ ++ //! \brief General purpose registers. ++ uint64_t nip; ++ uint64_t msr; ++ uint64_t regs[32]; ++ uint64_t ccr; ++ uint64_t xer; ++ uint64_t lnk; ++ uint64_t ctr; ++ ++ //! \brief Floating point registers. ++ double fpregs[32]; ++ ++ //! \brief FPU status register. ++ double fpscr; ++ ++ //! \brief Altivec/VMX vector registers. ++ struct { ++ //! \brief Vector registers are 128bits. ++ uint128_struct save_vr[32]; ++ uint128_struct save_vscr; ++ ++ //! \brief Padding included for breakpad compatibiltiy. ++ uint32_t save_pad5[4]; ++ ++ //! \brief VRSAVE register. ++ uint32_t save_vrsave; ++ ++ //! \brief Padding included for breakpad compatibiltiy. ++ uint32_t save_pad6[7]; ++ } vregs; ++}; ++ + } // namespace crashpad + + #endif // CRASHPAD_MINIDUMP_MINIDUMP_CONTEXT_H_ +Index: chromium-122.0.6261.128/third_party/crashpad/crashpad/minidump/minidump_context_writer.cc +=================================================================== +--- chromium-122.0.6261.128.orig/third_party/crashpad/crashpad/minidump/minidump_context_writer.cc ++++ chromium-122.0.6261.128/third_party/crashpad/crashpad/minidump/minidump_context_writer.cc +@@ -110,6 +110,13 @@ MinidumpContextWriter::CreateFromSnapsho + break; + } + ++ case kCPUArchitecturePPC64: { ++ context = std::make_unique(); ++ reinterpret_cast(context.get()) ++ ->InitializeFromSnapshot(context_snapshot->ppc64); ++ break; ++ } ++ + default: { + LOG(ERROR) << "unknown context architecture " + << context_snapshot->architecture; +@@ -601,5 +608,48 @@ size_t MinidumpContextRISCV64Writer::Con + DCHECK_GE(state(), kStateFrozen); + return sizeof(context_); + } ++ ++MinidumpContextPPC64Writer::MinidumpContextPPC64Writer() ++ : MinidumpContextWriter(), context_() { ++ context_.context_flags = kMinidumpContextPPC64; ++} ++ ++MinidumpContextPPC64Writer::~MinidumpContextPPC64Writer() = default; ++ ++void MinidumpContextPPC64Writer::InitializeFromSnapshot( ++ const CPUContextPPC64* context_snapshot) { ++ DCHECK_EQ(state(), kStateMutable); ++ DCHECK_EQ(context_.context_flags, kMinidumpContextPPC64); ++ ++ context_.context_flags = kMinidumpContextPPC64All; ++ ++ memcpy(context_.regs, context_snapshot->regs, sizeof(context_.regs)); ++ context_.nip = context_snapshot->nip; ++ context_.msr = context_snapshot->msr; ++ context_.ccr = context_snapshot->ccr; ++ context_.xer = context_snapshot->xer; ++ context_.lnk = context_snapshot->lnk; ++ context_.ctr = context_snapshot->ctr; ++ ++ memcpy(context_.fpregs, context_snapshot->fpregs, sizeof(context_.fpregs)); ++ context_.fpscr = context_snapshot->fpscr; ++ ++ memcpy(context_.vregs.save_vr, context_snapshot->vregs.save_vr, ++ sizeof(context_.vregs.save_vr)); ++ memcpy(&context_.vregs.save_vscr, &context_snapshot->vregs.save_vscr, ++ sizeof(context_.vregs.save_vscr)); ++ context_.vregs.save_vrsave = context_snapshot->vregs.save_vrsave; ++} ++ ++bool MinidumpContextPPC64Writer::WriteObject( ++ FileWriterInterface* file_writer) { ++ DCHECK_EQ(state(), kStateWritable); ++ return file_writer->Write(&context_, sizeof(context_)); ++} ++ ++size_t MinidumpContextPPC64Writer::ContextSize() const { ++ DCHECK_GE(state(), kStateFrozen); ++ return sizeof(context_); ++} + + } // namespace crashpad +Index: chromium-122.0.6261.128/third_party/crashpad/crashpad/minidump/minidump_context_writer.h +=================================================================== +--- chromium-122.0.6261.128.orig/third_party/crashpad/crashpad/minidump/minidump_context_writer.h ++++ chromium-122.0.6261.128/third_party/crashpad/crashpad/minidump/minidump_context_writer.h +@@ -413,6 +413,49 @@ class MinidumpContextRISCV64Writer final + MinidumpContextRISCV64 context_; + }; + ++//! \brief The writer for a MinidumpContextPPC64 structure in a minidump file. ++class MinidumpContextPPC64Writer final : public MinidumpContextWriter { ++ public: ++ MinidumpContextPPC64Writer(); ++ ++ MinidumpContextPPC64Writer(const MinidumpContextPPC64Writer&) = delete; ++ MinidumpContextPPC64Writer& operator=(const MinidumpContextPPC64Writer&) = ++ delete; ++ ++ ~MinidumpContextPPC64Writer() override; ++ ++ //! \brief Initializes the MinidumpContextPPC based on \a context_snapshot. ++ //! ++ //! \param[in] context_snapshot The context snapshot to use as source data. ++ //! ++ //! \note Valid in #kStateMutable. No mutation of context() may be done before ++ //! calling this method, and it is not normally necessary to alter ++ //! context() after calling this method. ++ void InitializeFromSnapshot(const CPUContextPPC64* context_snapshot); ++ ++ //! \brief Returns a pointer to the context structure that this object will ++ //! write. ++ //! ++ //! \attention This returns a non-`const` pointer to this object’s private ++ //! data so that a caller can populate the context structure directly. ++ //! This is done because providing setter interfaces to each field in the ++ //! context structure would be unwieldy and cumbersome. Care must be taken ++ //! to populate the context structure correctly. The context structure ++ //! must only be modified while this object is in the #kStateMutable ++ //! state. ++ MinidumpContextPPC64* context() { return &context_; } ++ ++ protected: ++ // MinidumpWritable: ++ bool WriteObject(FileWriterInterface* file_writer) override; ++ ++ // MinidumpContextWriter: ++ size_t ContextSize() const override; ++ ++ private: ++ MinidumpContextPPC64 context_; ++}; ++ + } // namespace crashpad + + #endif // CRASHPAD_MINIDUMP_MINIDUMP_CONTEXT_WRITER_H_ +Index: chromium-122.0.6261.128/third_party/crashpad/crashpad/minidump/minidump_context_writer_test.cc +=================================================================== +--- chromium-122.0.6261.128.orig/third_party/crashpad/crashpad/minidump/minidump_context_writer_test.cc ++++ chromium-122.0.6261.128/third_party/crashpad/crashpad/minidump/minidump_context_writer_test.cc +@@ -328,6 +328,21 @@ TYPED_TEST(MinidumpContextWriter, RISCV6 + TypeParam>(context, ExpectMinidumpContextRISCV64, kSeed); + } + ++TEST(MinidumpContextWriter, PPC64_Zeros) { ++ EmptyContextTest( ++ ExpectMinidumpContextPPC64); ++} ++ ++TEST(MinidumpContextWriter, PPC64_FromSnapshot) { ++ constexpr uint32_t kSeed = 64; ++ CPUContextPPC64 context_ppc64; ++ CPUContext context; ++ context.ppc64 = &context_ppc64; ++ InitializeCPUContextPPC64(&context, kSeed); ++ FromSnapshotTest( ++ context, ExpectMinidumpContextPPC64, kSeed); ++} ++ + } // namespace + } // namespace test + } // namespace crashpad +Index: chromium-122.0.6261.128/third_party/crashpad/crashpad/minidump/minidump_misc_info_writer.cc +=================================================================== +--- chromium-122.0.6261.128.orig/third_party/crashpad/crashpad/minidump/minidump_misc_info_writer.cc ++++ chromium-122.0.6261.128/third_party/crashpad/crashpad/minidump/minidump_misc_info_writer.cc +@@ -177,6 +177,8 @@ std::string MinidumpMiscInfoDebugBuildSt + static constexpr char kCPU[] = "mips64"; + #elif defined(ARCH_CPU_RISCV64) + static constexpr char kCPU[] = "riscv64"; ++#elif defined(ARCH_CPU_PPC64) ++ static constexpr char kCPU[] = "ppc64"; + #else + #error define kCPU for this CPU + #endif +Index: chromium-122.0.6261.128/third_party/crashpad/crashpad/snapshot/capture_memory.cc +=================================================================== +--- chromium-122.0.6261.128.orig/third_party/crashpad/crashpad/snapshot/capture_memory.cc ++++ chromium-122.0.6261.128/third_party/crashpad/crashpad/snapshot/capture_memory.cc +@@ -122,6 +122,11 @@ void CaptureMemory::PointedToByContext(c + for (size_t i = 0; i < std::size(context.riscv64->regs); ++i) { + MaybeCaptureMemoryAround(delegate, context.riscv64->regs[i]); + } ++#elif defined(ARCH_CPU_PPC64_FAMILY) ++ MaybeCaptureMemoryAround(delegate, context.ppc64->nip); ++ for (size_t i = 0; i < std::size(context.ppc64->regs); ++i) { ++ MaybeCaptureMemoryAround(delegate, context.ppc64->regs[i]); ++ } + #else + #error Port. + #endif +Index: chromium-122.0.6261.128/third_party/crashpad/crashpad/snapshot/cpu_architecture.h +=================================================================== +--- chromium-122.0.6261.128.orig/third_party/crashpad/crashpad/snapshot/cpu_architecture.h ++++ chromium-122.0.6261.128/third_party/crashpad/crashpad/snapshot/cpu_architecture.h +@@ -47,6 +47,9 @@ enum CPUArchitecture { + + //! \brief 64-bit RISC-V. + kCPUArchitectureRISCV64, ++ ++ //! \brief 64-bit PPC64. ++ kCPUArchitecturePPC64 + }; + + } // namespace crashpad +Index: chromium-122.0.6261.128/third_party/crashpad/crashpad/snapshot/cpu_context.cc +=================================================================== +--- chromium-122.0.6261.128.orig/third_party/crashpad/crashpad/snapshot/cpu_context.cc ++++ chromium-122.0.6261.128/third_party/crashpad/crashpad/snapshot/cpu_context.cc +@@ -173,6 +173,8 @@ uint64_t CPUContext::InstructionPointer( + return arm64->pc; + case kCPUArchitectureRISCV64: + return riscv64->pc; ++ case kCPUArchitecturePPC64: ++ return ppc64->nip; + default: + NOTREACHED(); + return ~0ull; +@@ -191,6 +193,8 @@ uint64_t CPUContext::StackPointer() cons + return arm64->sp; + case kCPUArchitectureRISCV64: + return riscv64->regs[1]; ++ case kCPUArchitecturePPC64: ++ return ppc64->regs[1]; + default: + NOTREACHED(); + return ~0ull; +@@ -231,6 +235,7 @@ bool CPUContext::Is64Bit() const { + case kCPUArchitectureX86_64: + case kCPUArchitectureARM64: + case kCPUArchitectureMIPS64EL: ++ case kCPUArchitecturePPC64: + case kCPUArchitectureRISCV64: + return true; + case kCPUArchitectureX86: +Index: chromium-122.0.6261.128/third_party/crashpad/crashpad/snapshot/cpu_context.h +=================================================================== +--- chromium-122.0.6261.128.orig/third_party/crashpad/crashpad/snapshot/cpu_context.h ++++ chromium-122.0.6261.128/third_party/crashpad/crashpad/snapshot/cpu_context.h +@@ -371,6 +371,24 @@ struct CPUContextRISCV64 { + uint32_t fcsr; + }; + ++//! \brief A context structure carrying PPC64 CPU state. ++struct CPUContextPPC64 { ++ uint64_t nip; ++ uint64_t msr; ++ uint64_t regs[32]; ++ uint64_t ccr; ++ uint64_t xer; ++ uint64_t lnk; ++ uint64_t ctr; ++ double fpregs[32]; ++ double fpscr; ++ struct { ++ uint128_struct save_vr[32]; ++ uint128_struct save_vscr; ++ uint32_t save_vrsave; ++ } vregs; ++}; ++ + //! \brief A context structure capable of carrying the context of any supported + //! CPU architecture. + struct CPUContext { +@@ -412,6 +430,7 @@ struct CPUContext { + CPUContextMIPS* mipsel; + CPUContextMIPS64* mips64; + CPUContextRISCV64* riscv64; ++ CPUContextPPC64* ppc64; + }; + }; + +Index: chromium-122.0.6261.128/third_party/crashpad/crashpad/snapshot/linux/cpu_context_linux.h +=================================================================== +--- chromium-122.0.6261.128.orig/third_party/crashpad/crashpad/snapshot/linux/cpu_context_linux.h ++++ chromium-122.0.6261.128/third_party/crashpad/crashpad/snapshot/linux/cpu_context_linux.h +@@ -15,6 +15,7 @@ + #ifndef CRASHPAD_SNAPSHOT_LINUX_CPU_CONTEXT_LINUX_H_ + #define CRASHPAD_SNAPSHOT_LINUX_CPU_CONTEXT_LINUX_H_ + ++#include + #include "build/build_config.h" + #include "snapshot/cpu_context.h" + #include "snapshot/linux/signal_context.h" +@@ -188,6 +189,78 @@ void InitializeCPUContextRISCV64(const T + + #endif // ARCH_CPU_RISCV64 || DOXYGEN + ++#if defined(ARCH_CPU_PPC64_FAMILY) || DOXYGEN ++ ++//! \brief Initializes a CPUContextPPC64 structure from native context ++//! structures on Linux. ++//! ++//! \param[in] thread_context The native thread context. ++//! \param[in] float_context The native float context. ++//! \param[in] vector_context The native vector context. ++//! \param[out] context The CPUContextPPC64 structure to initialize. ++template ++void InitializeCPUContextPPC64( ++ const ThreadContext::t64_t& thread_context, ++ const FloatContext::f64_t& float_context, ++ const VectorContext::v64_t& vector_context, ++ typename Traits::CPUContext* context) { ++ ++ memcpy(context->regs, thread_context.gpr, sizeof(context->regs)); ++ context->nip = thread_context.nip; ++ context->msr = thread_context.msr; ++ context->ccr = thread_context.ccr; ++ context->xer = thread_context.xer; ++ context->lnk = thread_context.lnk; ++ context->ctr = thread_context.ctr; ++ ++ memcpy(context->fpregs, float_context.fpregs, sizeof(context->fpregs)); ++ context->fpscr = float_context.fpscr; ++ ++ for (uint8_t i = 0; i < 32; i++) { ++ context->vregs.save_vr[i] = { ++ (((uint64_t)vector_context.vrregs[i][0]) << 32) | ++ vector_context.vrregs[i][1], ++ (((uint64_t)vector_context.vrregs[i][2]) << 32) | ++ vector_context.vrregs[i][3] ++ }; ++ } ++ context->vregs.save_vrsave = vector_context.vrsave; ++ context->vregs.save_vscr = {0, (uint64_t)vector_context.vscr.vscr_word}; ++} ++ ++template ++void InitializeCPUContextPPC64( ++ const SignalThreadContext64 &thread_context, ++ const SignalFloatContext64 &float_context, ++ const SignalVectorContext64 &vector_context, ++ typename Traits::CPUContext* context) { ++ ++ memcpy(context->regs, thread_context.regs, sizeof(context->regs)); ++ context->nip = thread_context.nip; ++ context->msr = thread_context.msr; ++ context->ccr = thread_context.ccr; ++ context->xer = thread_context.xer; ++ context->lnk = thread_context.lnk; ++ context->ctr = thread_context.ctr; ++ ++ memcpy(context->fpregs, float_context.regs, sizeof(context->fpregs)); ++ context->fpscr = float_context.fpscr; ++ ++ for (uint8_t i = 0; i < 32; i++) { ++ context->vregs.save_vr[i] = { ++ (((uint64_t)vector_context.vrregs[i][0]) << 32) | ++ vector_context.vrregs[i][1], ++ (((uint64_t)vector_context.vrregs[i][2]) << 32) | ++ vector_context.vrregs[i][3] ++ }; ++ } ++ context->vregs.save_vrsave = vector_context.vrsave; ++ context->vregs.save_vscr = {0, (uint64_t)vector_context.vscr.vscr_word}; ++} ++ ++ ++#endif ++ + } // namespace internal + } // namespace crashpad + +Index: chromium-122.0.6261.128/third_party/crashpad/crashpad/snapshot/linux/debug_rendezvous_test.cc +=================================================================== +--- chromium-122.0.6261.128.orig/third_party/crashpad/crashpad/snapshot/linux/debug_rendezvous_test.cc ++++ chromium-122.0.6261.128/third_party/crashpad/crashpad/snapshot/linux/debug_rendezvous_test.cc +@@ -195,12 +195,15 @@ void TestAgainstTarget(PtraceConnection* + device == 0 && inode == 0 && mapping_name == "[vdso]"; + #if defined(ARCH_CPU_X86) + static constexpr char kPrefix[] = "linux-gate.so."; ++ static constexpr char kPrefix64[] = "linux-gate.so."; + #else + static constexpr char kPrefix[] = "linux-vdso.so."; ++ static constexpr char kPrefix64[] = "linux-vdso64.so."; + #endif + return is_vdso_mapping == + (module_name.empty() || +- module_name.compare(0, strlen(kPrefix), kPrefix) == 0); ++ module_name.compare(0, strlen(kPrefix), kPrefix) == 0) || ++ module_name.compare(0, strlen(kPrefix64), kPrefix64) == 0); + }, + module_mapping->name, + module_mapping->device, +Index: chromium-122.0.6261.128/third_party/crashpad/crashpad/snapshot/linux/exception_snapshot_linux.cc +=================================================================== +--- chromium-122.0.6261.128.orig/third_party/crashpad/crashpad/snapshot/linux/exception_snapshot_linux.cc ++++ chromium-122.0.6261.128/third_party/crashpad/crashpad/snapshot/linux/exception_snapshot_linux.cc +@@ -367,6 +367,69 @@ bool ExceptionSnapshotLinux::ReadContext + return internal::ReadContext(reader, context_address, context_.riscv64); + } + ++#elif defined(ARCH_CPU_PPC64_FAMILY) ++ ++template ++static bool ReadContext(ProcessReaderLinux* reader, ++ LinuxVMAddress context_address, ++ typename Traits::CPUContext* dest_context) { ++ const ProcessMemory* memory = reader->Memory(); ++ ++ LinuxVMAddress gp_regs_address = context_address + ++ offsetof(UContext, mcontext) + ++ offsetof(typename Traits::MContext, gp_regs); ++ ++ typename Traits::SignalThreadContext thread_context; ++ if (!memory->Read(gp_regs_address, sizeof(thread_context), &thread_context)) { ++ LOG(ERROR) << "Couldn't read gp_regs!"; ++ return false; ++ } ++ ++ LinuxVMAddress fp_regs_address = context_address + ++ offsetof(UContext, mcontext) + ++ offsetof(typename Traits::MContext, fp_regs); ++ ++ typename Traits::SignalFloatContext fp_context; ++ if (!memory->Read(fp_regs_address, sizeof(fp_context), &fp_context)) { ++ LOG(ERROR) << "Couldn't read fp_regs!"; ++ return false; ++ } ++ ++ LinuxVMAddress v_regs_ptr_address = context_address + ++ offsetof(UContext, mcontext) + ++ offsetof(typename Traits::MContext, vmx_reserve) + 8; ++ ++ typename Traits::SignalVectorContext v_context; ++ if (!memory->Read(v_regs_ptr_address, sizeof(v_context), &v_context)) { ++ LOG(ERROR) << "Couldn't read v_regs!"; ++ return false; ++ } ++ ++ InitializeCPUContextPPC64(thread_context, fp_context, ++ v_context, dest_context); ++ ++ return true; ++} ++ ++template<> ++bool ExceptionSnapshotLinux::ReadContext( ++ ProcessReaderLinux* reader, ++ LinuxVMAddress context_address) { ++ context_.architecture = kCPUArchitecturePPC64; ++ context_.ppc64 = &context_union_.ppc64; ++ ++ return internal::ReadContext( ++ reader, context_address, context_.ppc64); ++} ++ ++template<> ++bool ExceptionSnapshotLinux::ReadContext( ++ ProcessReaderLinux* reader, ++ LinuxVMAddress context_address) { ++ // PPC64 is 64-bit ++ return false; ++} ++ + #endif // ARCH_CPU_X86_FAMILY + + bool ExceptionSnapshotLinux::Initialize( +Index: chromium-122.0.6261.128/third_party/crashpad/crashpad/snapshot/linux/exception_snapshot_linux.h +=================================================================== +--- chromium-122.0.6261.128.orig/third_party/crashpad/crashpad/snapshot/linux/exception_snapshot_linux.h ++++ chromium-122.0.6261.128/third_party/crashpad/crashpad/snapshot/linux/exception_snapshot_linux.h +@@ -91,6 +91,8 @@ class ExceptionSnapshotLinux final : pub + CPUContextMIPS64 mips64; + #elif defined(ARCH_CPU_RISCV64) + CPUContextRISCV64 riscv64; ++#elif defined(ARCH_CPU_PPC64_FAMILY) ++ CPUContextPPC64 ppc64; + #endif + } context_union_; + CPUContext context_; +Index: chromium-122.0.6261.128/third_party/crashpad/crashpad/snapshot/linux/exception_snapshot_linux_test.cc +=================================================================== +--- chromium-122.0.6261.128.orig/third_party/crashpad/crashpad/snapshot/linux/exception_snapshot_linux_test.cc ++++ chromium-122.0.6261.128/third_party/crashpad/crashpad/snapshot/linux/exception_snapshot_linux_test.cc +@@ -325,7 +325,28 @@ void ExpectContext(const CPUContext& act + sizeof(actual.riscv64->fpregs)), + 0); + } ++#elif defined(ARCH_CPU_PPC64_FAMILY) ++using NativeCPUContext = ucontext_t; + ++void InitializeContext(NativeCPUContext* context) { ++ for (size_t reg = 0; reg < 32; ++reg) { ++ context->uc_mcontext.gp_regs[reg] = reg; ++ } ++ ++ memset(&context->uc_mcontext.fp_regs, 44, ++ sizeof(context->uc_mcontext.fp_regs)); ++} ++ ++void ExpectContext(const CPUContext& actual, const NativeCPUContext& expected) { ++ EXPECT_EQ(actual.architecture, kCPUArchitecturePPC64); ++ ++ for (size_t reg = 0; reg < 32; ++reg) { ++ EXPECT_EQ(actual.ppc64->regs[reg], expected.uc_mcontext.gp_regs[reg]); ++ } ++ ++ EXPECT_EQ(memcmp(actual.ppc64->fpregs, expected.uc_mcontext.fp_regs, ++ sizeof(actual.ppc64->fpregs)), 0); ++} + #else + #error Port. + #endif +Index: chromium-122.0.6261.128/third_party/crashpad/crashpad/snapshot/linux/process_reader_linux.cc +=================================================================== +--- chromium-122.0.6261.128.orig/third_party/crashpad/crashpad/snapshot/linux/process_reader_linux.cc ++++ chromium-122.0.6261.128/third_party/crashpad/crashpad/snapshot/linux/process_reader_linux.cc +@@ -129,6 +129,8 @@ void ProcessReaderLinux::Thread::Initial + : thread_info.thread_context.t32.regs[29]; + #elif defined(ARCH_CPU_RISCV64) + stack_pointer = thread_info.thread_context.t64.regs[1]; ++#elif defined(ARCH_CPU_PPC64_FAMILY) ++ stack_pointer = thread_info.thread_context.t64.gpr[1]; + #else + #error Port. + #endif +Index: chromium-122.0.6261.128/third_party/crashpad/crashpad/snapshot/linux/signal_context.h +=================================================================== +--- chromium-122.0.6261.128.orig/third_party/crashpad/crashpad/snapshot/linux/signal_context.h ++++ chromium-122.0.6261.128/third_party/crashpad/crashpad/snapshot/linux/signal_context.h +@@ -456,6 +456,89 @@ static_assert(offsetof(UContext stack; ++ Sigset sigmask; ++ MContext64 mcontext; ++}; ++#pragma pack(push, 1) ++ ++static_assert(sizeof(UContext) == sizeof(ucontext_t), ++ "ucontext_t size mismatch"); ++static_assert(sizeof(MContext64) == sizeof(mcontext_t), ++ "mcontext_t size mismatch"); ++static_assert(sizeof(SignalThreadContext64) == sizeof(gregset_t), ++ "gregset_t size mismatch"); ++static_assert(sizeof(SignalFloatContext64) == sizeof(fpregset_t), ++ "fpregset_t size mismatch"); ++static_assert(sizeof(SignalVectorContext64) == sizeof(_libc_vrstate), ++ "vrstate size mismatch"); ++static_assert(offsetof(UContext, mcontext) == ++ offsetof(ucontext_t, uc_mcontext), "mcontext offset mismatch"); ++static_assert(offsetof(MContext64, gp_regs) == ++ offsetof(mcontext_t, gp_regs), "gp_regs offset mismatch"); + #else + #error Port. + #endif // ARCH_CPU_X86_FAMILY +Index: chromium-122.0.6261.128/third_party/crashpad/crashpad/snapshot/linux/system_snapshot_linux.cc +=================================================================== +--- chromium-122.0.6261.128.orig/third_party/crashpad/crashpad/snapshot/linux/system_snapshot_linux.cc ++++ chromium-122.0.6261.128/third_party/crashpad/crashpad/snapshot/linux/system_snapshot_linux.cc +@@ -208,6 +208,8 @@ CPUArchitecture SystemSnapshotLinux::Get + : kCPUArchitectureMIPSEL; + #elif defined(ARCH_CPU_RISCV64) + return kCPUArchitectureRISCV64; ++#elif defined(ARCH_CPU_PPC64_FAMILY) ++ return kCPUArchitecturePPC64; + #else + #error port to your architecture + #endif +@@ -226,6 +228,9 @@ uint32_t SystemSnapshotLinux::CPURevisio + #elif defined(ARCH_CPU_RISCV64) + // Not implemented + return 0; ++#elif defined(ARCH_CPU_PPC64_FAMILY) ++ // Not yet implemented on PPC64 ++ return 0; + #else + #error port to your architecture + #endif +@@ -249,6 +254,9 @@ std::string SystemSnapshotLinux::CPUVend + #elif defined(ARCH_CPU_RISCV64) + // Not implemented + return std::string(); ++#elif defined(ARCH_CPU_PPC64_FAMILY) ++ // Not yet implemented on PPC64 ++ return std::string(); + #else + #error port to your architecture + #endif +@@ -385,6 +393,9 @@ bool SystemSnapshotLinux::NXEnabled() co + #elif defined(ARCH_CPU_RISCV64) + // Not implemented + return false; ++#elif defined(ARCH_CPU_PPC64_FAMILY) ++ // Not yet implemented on PPC64 ++ return false; + #else + #error Port. + #endif // ARCH_CPU_X86_FAMILY +Index: chromium-122.0.6261.128/third_party/crashpad/crashpad/snapshot/linux/thread_snapshot_linux.cc +=================================================================== +--- chromium-122.0.6261.128.orig/third_party/crashpad/crashpad/snapshot/linux/thread_snapshot_linux.cc ++++ chromium-122.0.6261.128/third_party/crashpad/crashpad/snapshot/linux/thread_snapshot_linux.cc +@@ -196,6 +196,14 @@ bool ThreadSnapshotLinux::Initialize( + InitializeCPUContextRISCV64(thread.thread_info.thread_context.t64, + thread.thread_info.float_context.f64, + context_.riscv64); ++#elif defined(ARCH_CPU_PPC64_FAMILY) ++ context_.architecture = kCPUArchitecturePPC64; ++ context_.ppc64 = &context_union_.ppc64; ++ InitializeCPUContextPPC64( ++ thread.thread_info.thread_context.t64, ++ thread.thread_info.float_context.f64, ++ thread.thread_info.vector_context.v64, ++ context_.ppc64); + #else + #error Port. + #endif +Index: chromium-122.0.6261.128/third_party/crashpad/crashpad/snapshot/linux/thread_snapshot_linux.h +=================================================================== +--- chromium-122.0.6261.128.orig/third_party/crashpad/crashpad/snapshot/linux/thread_snapshot_linux.h ++++ chromium-122.0.6261.128/third_party/crashpad/crashpad/snapshot/linux/thread_snapshot_linux.h +@@ -76,6 +76,8 @@ class ThreadSnapshotLinux final : public + CPUContextMIPS64 mips64; + #elif defined(ARCH_CPU_RISCV64) + CPUContextRISCV64 riscv64; ++#elif defined(ARCH_CPU_PPC64_FAMILY) ++ CPUContextPPC64 ppc64; + #else + #error Port. + #endif // ARCH_CPU_X86_FAMILY +Index: chromium-122.0.6261.128/third_party/crashpad/crashpad/util/linux/auxiliary_vector.cc +=================================================================== +--- chromium-122.0.6261.128.orig/third_party/crashpad/crashpad/util/linux/auxiliary_vector.cc ++++ chromium-122.0.6261.128/third_party/crashpad/crashpad/util/linux/auxiliary_vector.cc +@@ -56,6 +56,11 @@ bool AuxiliaryVector::Read(PtraceConnect + if (type == AT_IGNORE) { + continue; + } ++#if defined(ARCH_CPU_PPC64_FAMILY) ++ if (type == AT_IGNOREPPC) { ++ continue; ++ } ++#endif + if (!MapInsertOrReplace(&values_, type, value, nullptr)) { + LOG(ERROR) << "duplicate auxv entry"; + return false; +Index: chromium-122.0.6261.128/third_party/crashpad/crashpad/util/linux/ptracer.cc +=================================================================== +--- chromium-122.0.6261.128.orig/third_party/crashpad/crashpad/util/linux/ptracer.cc ++++ chromium-122.0.6261.128/third_party/crashpad/crashpad/util/linux/ptracer.cc +@@ -430,6 +430,64 @@ bool GetThreadArea64(pid_t tid, + return true; + } + ++#elif defined(ARCH_CPU_PPC64_FAMILY) ++// PPC64 has had HAVE_ARCH_TRACEHOOK set since 2.6.27 (even before x86 had it). ++// That means we can simply use PTRACE_GETREGESET. ++ ++template ++bool GetRegisterSet(pid_t tid, int set, Destination* dest, bool can_log) { ++ iovec iov; ++ iov.iov_base = reinterpret_cast(dest); ++ iov.iov_len = sizeof(*dest); ++ if (ptrace(PTRACE_GETREGSET, tid, reinterpret_cast(set), &iov) != 0) { ++ PLOG_IF(ERROR, can_log) << "ptrace"; ++ return false; ++ } ++ if (iov.iov_len != sizeof(*dest)) { ++ LOG_IF(ERROR, can_log) << "Unexpected registers size"; ++ return false; ++ } ++ return true; ++} ++ ++bool GetVectorRegisters64(pid_t tid, ++ VectorContext* context, ++ bool can_log) { ++ return GetRegisterSet(tid, NT_PPC_VMX, &context->v64, can_log); ++} ++ ++bool GetFloatingPointRegisters64(pid_t tid, ++ FloatContext* context, ++ bool can_log) { ++ return GetRegisterSet(tid, NT_PRFPREG, &context->f64, can_log); ++} ++ ++bool GetThreadArea64(pid_t tid, ++ const ThreadContext& context, ++ LinuxVMAddress* address, ++ bool can_log) { ++ // PPC64 doesn't have PTRACE_GET_THREAD_AREA since the thread pointer ++ // is stored in GPR 13. ++ ThreadContext::t64_t tc; ++ if (!GetRegisterSet(tid, NT_PRSTATUS, &tc, can_log)) { ++ LOG_IF(ERROR, can_log) << "Unable to get thread pointer!"; ++ return false; ++ } ++ ++ *address = tc.gpr[13]; ++ ++ return true; ++} ++ ++// Stubs for 32-bit functions not applicable on PPC64 ++bool GetFloatingPointRegisters32(pid_t tid, ++ FloatContext* context, ++ bool can_log) { return false; } ++bool GetThreadArea32(pid_t tid, ++ const ThreadContext &context, ++ LinuxVMAddress *address, ++ bool can_log) { return false; } ++ + #else + #error Port. + #endif // ARCH_CPU_X86_FAMILY +@@ -528,6 +586,9 @@ bool Ptracer::GetThreadInfo(pid_t tid, T + if (is_64_bit_) { + return GetGeneralPurposeRegisters64(tid, &info->thread_context, can_log_) && + GetFloatingPointRegisters64(tid, &info->float_context, can_log_) && ++#if defined(ARCH_CPU_PPC64_FAMILY) ++ GetVectorRegisters64(tid, &info->vector_context, can_log_) && ++#endif + GetThreadArea64(tid, + info->thread_context, + &info->thread_specific_data_address, +Index: chromium-122.0.6261.128/third_party/crashpad/crashpad/util/linux/thread_info.h +=================================================================== +--- chromium-122.0.6261.128.orig/third_party/crashpad/crashpad/util/linux/thread_info.h ++++ chromium-122.0.6261.128/third_party/crashpad/crashpad/util/linux/thread_info.h +@@ -34,6 +34,10 @@ + #include + #endif + ++#if defined(ARCH_CPU_PPC64_FAMILY) ++#include ++#endif ++ + namespace crashpad { + + //! \brief The set of general purpose registers for an architecture family. +@@ -87,6 +91,8 @@ union ThreadContext { + uint32_t padding1_; + #elif defined(ARCH_CPU_RISCV64) + // 32 bit RISC-V not supported ++#elif defined(ARCH_CPU_PPC64_FAMILY) ++ // PPC64 is 64-bit + #else + #error Port. + #endif // ARCH_CPU_X86_FAMILY +@@ -144,6 +150,21 @@ union ThreadContext { + // Reflects user_regs_struct in asm/ptrace.h. + uint64_t pc; + uint64_t regs[31]; ++#elif defined(ARCH_CPU_PPC64_FAMILY) ++ // Reflects struct pt_regs in asm/ptrace.h. ++ uint64_t gpr[32]; ++ uint64_t nip; ++ uint64_t msr; ++ uint64_t orig_gpr3; ++ uint64_t ctr; ++ uint64_t lnk; ++ uint64_t xer; ++ uint64_t ccr; ++ uint64_t softe; ++ uint64_t trap; ++ uint64_t dar; ++ uint64_t dsisr; ++ uint64_t result; + #else + #error Port. + #endif // ARCH_CPU_X86_FAMILY +@@ -156,6 +177,8 @@ union ThreadContext { + using NativeThreadContext = user_regs; + #elif defined(ARCH_CPU_MIPS_FAMILY) + // No appropriate NativeThreadsContext type available for MIPS ++#elif defined(ARCH_CPU_PPC64_FAMILY) ++ using NativeThreadContext = struct pt_regs; + #else + #error Port. + #endif // ARCH_CPU_X86_FAMILY || ARCH_CPU_ARM64 || ARCH_CPU_RISCV64 +@@ -233,6 +256,9 @@ union FloatContext { + uint32_t fpu_id; + #elif defined(ARCH_CPU_RISCV64) + // 32 bit RISC-V not supported ++#elif defined(ARCH_CPU_PPC64_FAMILY) ++ // Crashpad's PPC support is 64-bit only, so this ++ // 32bit-only struct is declared as empty. + #else + #error Port. + #endif // ARCH_CPU_X86_FAMILY +@@ -271,6 +297,10 @@ union FloatContext { + // Reflects __riscv_d_ext_state in asm/ptrace.h + uint64_t fpregs[32]; + uint64_t fcsr; ++#elif defined(ARCH_CPU_PPC64_FAMILY) ++ // Reflects fpregset_t in sys/ucontext.h ++ double fpregs[32]; ++ double fpscr; + #else + #error Port. + #endif // ARCH_CPU_X86_FAMILY +@@ -302,6 +332,8 @@ union FloatContext { + // No appropriate floating point context native type for available MIPS. + #elif defined(ARCH_CPU_RISCV64) + static_assert(sizeof(f64) == sizeof(__riscv_d_ext_state), "Size mismatch"); ++#elif defined(ARCH_CPU_PPC64_FAMILY) ++ static_assert(sizeof(f64) == sizeof(fpregset_t), "Size mismatch"); + #else + #error Port. + #endif // ARCH_CPU_X86 +@@ -309,6 +341,26 @@ union FloatContext { + static_assert(std::is_standard_layout::value, + "Not standard layout"); + ++//! \brief The vector registers used for an architecture family ++union VectorContext { ++ struct v32_t {} v32; ++#if defined(ARCH_CPU_PPC64_FAMILY) ++ __attribute__((__aligned__(16))) // Vector context must be doubleword aligned. ++#endif ++ struct v64_t { ++#if defined(ARCH_CPU_PPC64_FAMILY) ++ // Reflects vrregset_t in sys/ucontext.h ++ uint32_t vrregs[32][4]; ++ struct { ++ uint32_t __pad[3]; ++ uint32_t vscr_word; ++ } vscr; ++ uint32_t vrsave; ++ uint32_t __pad[3]; ++#endif ++ } v64; ++}; ++ + //! \brief A collection of `ptrace`-able information about a thread. + struct ThreadInfo { + ThreadInfo(); +@@ -320,6 +372,9 @@ struct ThreadInfo { + //! \brief The floating point registers for the thread. + FloatContext float_context; + ++ //! \brief (Optional) The vector registers used for the thread. ++ VectorContext vector_context; ++ + //! \brief The thread-local storage address for the thread. + LinuxVMAddress thread_specific_data_address; + }; +Index: chromium-122.0.6261.128/third_party/crashpad/crashpad/util/misc/capture_context.h +=================================================================== +--- chromium-122.0.6261.128.orig/third_party/crashpad/crashpad/util/misc/capture_context.h ++++ chromium-122.0.6261.128/third_party/crashpad/crashpad/util/misc/capture_context.h +@@ -70,6 +70,7 @@ using NativeCPUContext = ucontext_t; + //! Linux | ARM/ARM64 | `r0`/`x0` + //! Linux | MIPS/MIPS64 | `$a0` + //! Linux | RISCV64 | `a0` ++//! Linux | PPC64 | `r3` + //! + //! Additionally, the value `LR` on ARM/ARM64 will be the return address of + //! this function. +Index: chromium-122.0.6261.128/third_party/crashpad/crashpad/util/misc/capture_context_linux.S +=================================================================== +--- chromium-122.0.6261.128.orig/third_party/crashpad/crashpad/util/misc/capture_context_linux.S ++++ chromium-122.0.6261.128/third_party/crashpad/crashpad/util/misc/capture_context_linux.S +@@ -30,7 +30,7 @@ + .globl CAPTURECONTEXT_SYMBOL2 + #if defined(__i386__) || defined(__x86_64__) + .balign 16, 0x90 +-#elif defined(__arm__) || defined(__aarch64__) ++#elif defined(__arm__) || defined(__aarch64__) || defined(__powerpc64__) + .balign 4, 0x0 + .type CAPTURECONTEXT_SYMBOL, %function + .type CAPTURECONTEXT_SYMBOL2, %function +@@ -430,6 +430,216 @@ CAPTURECONTEXT_SYMBOL2: + + .set at + ++#elif defined(__powerpc64__) ++ // Store r0-r31 ++ std 0, 0xe8(3) // context->uc_mcontext.gp_regs[0] ++ std 1, 0xf0(3) // context->uc_mcontext.gp_regs[1] ++ std 2, 0xf8(3) // context->uc_mcontext.gp_regs[2] ++ // note that r3's original value was lost ++ std 3, 0x100(3) // context->uc_mcontext.gp_regs[3] ++ std 4, 0x108(3) // context->uc_mcontext.gp_regs[4] ++ std 5, 0x110(3) // context->uc_mcontext.gp_regs[5] ++ std 6, 0x118(3) // context->uc_mcontext.gp_regs[6] ++ std 7, 0x120(3) // context->uc_mcontext.gp_regs[7] ++ std 8, 0x128(3) // context->uc_mcontext.gp_regs[8] ++ std 9, 0x130(3) // context->uc_mcontext.gp_regs[9] ++ std 10, 0x138(3) // context->uc_mcontext.gp_regs[10] ++ std 11, 0x140(3) // context->uc_mcontext.gp_regs[11] ++ std 12, 0x148(3) // context->uc_mcontext.gp_regs[12] ++ std 13, 0x150(3) // context->uc_mcontext.gp_regs[13] ++ std 14, 0x158(3) // context->uc_mcontext.gp_regs[14] ++ std 15, 0x160(3) // context->uc_mcontext.gp_regs[15] ++ std 16, 0x168(3) // context->uc_mcontext.gp_regs[16] ++ std 17, 0x170(3) // context->uc_mcontext.gp_regs[17] ++ std 18, 0x178(3) // context->uc_mcontext.gp_regs[18] ++ std 19, 0x180(3) // context->uc_mcontext.gp_regs[19] ++ std 20, 0x188(3) // context->uc_mcontext.gp_regs[20] ++ std 21, 0x190(3) // context->uc_mcontext.gp_regs[21] ++ std 22, 0x198(3) // context->uc_mcontext.gp_regs[22] ++ std 23, 0x1a0(3) // context->uc_mcontext.gp_regs[23] ++ std 24, 0x1a8(3) // context->uc_mcontext.gp_regs[24] ++ std 25, 0x1b0(3) // context->uc_mcontext.gp_regs[25] ++ std 26, 0x1b8(3) // context->uc_mcontext.gp_regs[26] ++ std 27, 0x1c0(3) // context->uc_mcontext.gp_regs[27] ++ std 28, 0x1c8(3) // context->uc_mcontext.gp_regs[28] ++ std 29, 0x1d0(3) // context->uc_mcontext.gp_regs[29] ++ std 30, 0x1d8(3) // context->uc_mcontext.gp_regs[30] ++ std 31, 0x1e0(3) // context->uc_mcontext.gp_regs[31] ++ ++ // For NIP, we can use the value in the link register ++ mflr 0 ++ std 0, 0x1e8(3) // context->uc_mcontext.gp_regs[PT_NIP] ++ ++ // CTR ++ mfctr 0 ++ std 0, 0x200(3) // context->uc_mcontext.gp_regs[PT_CTR] ++ ++ // For LNK, we'll use the caller's LR save area (2 stack frames up). ++ // r4 can be used as a scratch register since it has already been saved. ++ ld 4, 0(1) ++ ld 4, 16(4) ++ std 4, 0x208(3) // context->uc_mcontext.gp_regs[PT_LNK] ++ ++ // XER ++ mfxer 0 ++ std 0, 0x210(3) // context->uc_mcontext.gp_regs[PT_XER] ++ ++ // CCR ++ mfcr 0 ++ std 0, 0x218(3) // context->uc_mcontext.gp_regs[PT_CCR] ++ ++ // MSR, orig_r3, MQ, TRAP, DAR, DSISR, RESULT, DSCR, ++ // not used or not relevant, zero them out. ++ li 4, 0 ++ std 4, 0x1f0(3) // context->uc_mcontext.gp_regs[PT_MSR] ++ std 4, 0x1f8(3) // context->uc_mcontext.gp_regs[PT_ORIG_R3] ++ std 4, 0x220(3) // context->uc_mcontext.gp_regs[PT_MQ] ++ std 4, 0x228(3) // context->uc_mcontext.gp_regs[PT_TRAP] ++ std 4, 0x230(3) // context->uc_mcontext.gp_regs[PT_DAR] ++ std 4, 0x238(3) // context->uc_mcontext.gp_regs[PT_DSISR] ++ std 4, 0x240(3) // context->uc_mcontext.gp_regs[PT_RESULT] ++ std 4, 0x248(3) // context->uc_mcontext.gp_regs[PT_DSCR] ++ ++ // Update context->uc_mcontext.regs to point to gp_regs ++ addi 0, 3, 0xe8 ++ std 0, 0xe0(3) ++ ++ // Save floating point registers 0-31 ++ stfd 0, 0x268(3) // context->uc_mcontext.fp_regs[0] ++ stfd 1, 0x270(3) // context->uc_mcontext.fp_regs[1] ++ stfd 2, 0x278(3) // context->uc_mcontext.fp_regs[2] ++ stfd 3, 0x280(3) // context->uc_mcontext.fp_regs[3] ++ stfd 4, 0x288(3) // context->uc_mcontext.fp_regs[4] ++ stfd 5, 0x290(3) // context->uc_mcontext.fp_regs[5] ++ stfd 6, 0x298(3) // context->uc_mcontext.fp_regs[6] ++ stfd 7, 0x2a0(3) // context->uc_mcontext.fp_regs[7] ++ stfd 8, 0x2a8(3) // context->uc_mcontext.fp_regs[8] ++ stfd 9, 0x2b0(3) // context->uc_mcontext.fp_regs[9] ++ stfd 10, 0x2b8(3) // context->uc_mcontext.fp_regs[10] ++ stfd 11, 0x2c0(3) // context->uc_mcontext.fp_regs[11] ++ stfd 12, 0x2c8(3) // context->uc_mcontext.fp_regs[12] ++ stfd 13, 0x2d0(3) // context->uc_mcontext.fp_regs[13] ++ stfd 14, 0x2d8(3) // context->uc_mcontext.fp_regs[14] ++ stfd 15, 0x2e0(3) // context->uc_mcontext.fp_regs[15] ++ stfd 16, 0x2e8(3) // context->uc_mcontext.fp_regs[16] ++ stfd 17, 0x2f0(3) // context->uc_mcontext.fp_regs[17] ++ stfd 18, 0x2f8(3) // context->uc_mcontext.fp_regs[18] ++ stfd 19, 0x300(3) // context->uc_mcontext.fp_regs[19] ++ stfd 20, 0x308(3) // context->uc_mcontext.fp_regs[20] ++ stfd 21, 0x310(3) // context->uc_mcontext.fp_regs[21] ++ stfd 22, 0x318(3) // context->uc_mcontext.fp_regs[22] ++ stfd 23, 0x320(3) // context->uc_mcontext.fp_regs[23] ++ stfd 24, 0x328(3) // context->uc_mcontext.fp_regs[24] ++ stfd 25, 0x330(3) // context->uc_mcontext.fp_regs[25] ++ stfd 26, 0x338(3) // context->uc_mcontext.fp_regs[26] ++ stfd 27, 0x340(3) // context->uc_mcontext.fp_regs[27] ++ stfd 28, 0x348(3) // context->uc_mcontext.fp_regs[28] ++ stfd 29, 0x350(3) // context->uc_mcontext.fp_regs[29] ++ stfd 30, 0x358(3) // context->uc_mcontext.fp_regs[30] ++ stfd 31, 0x360(3) // context->uc_mcontext.fp_regs[31] ++ ++ // FPSCR ++ mffs 0 ++ stfd 0, 0x368(3) // context->uc_mcontext.fp_regs[32] ++ ++ // Save VMX Vector registers ++ // Update r4 to contain the base address of vmx_reserve ++ addi 4, 3, 0x378 ++ // Ensure that it is quadword aligned ++ andi. 5, 4, 0xF ++ beq 1f // No alignment is necessary ++ // Address is doubleword aligned and not quadword aligned, add 8 ++ addi 4, 4, 8 ++ ++1: ++ // Store VMX registers 0-31 ++ // r4 will contain the base address ++ // r5 will contain the index ++ li 5, 0 ++ stvx 0, 4, 5 // context->uc_mcontext.vmx_reserve[(align) + 0] ++ addi 5, 5, 16 ++ stvx 1, 4, 5 // context->uc_mcontext.vmx_reserve[(align) + 1] ++ addi 5, 5, 16 ++ stvx 2, 4, 5 // context->uc_mcontext.vmx_reserve[(align) + 2] ++ addi 5, 5, 16 ++ stvx 3, 4, 5 // context->uc_mcontext.vmx_reserve[(align) + 3] ++ addi 5, 5, 16 ++ stvx 4, 4, 5 // context->uc_mcontext.vmx_reserve[(align) + 4] ++ addi 5, 5, 16 ++ stvx 5, 4, 5 // context->uc_mcontext.vmx_reserve[(align) + 5] ++ addi 5, 5, 16 ++ stvx 6, 4, 5 // context->uc_mcontext.vmx_reserve[(align) + 6] ++ addi 5, 5, 16 ++ stvx 7, 4, 5 // context->uc_mcontext.vmx_reserve[(align) + 7] ++ addi 5, 5, 16 ++ stvx 8, 4, 5 // context->uc_mcontext.vmx_reserve[(align) + 8] ++ addi 5, 5, 16 ++ stvx 9, 4, 5 // context->uc_mcontext.vmx_reserve[(align) + 9] ++ addi 5, 5, 16 ++ stvx 10, 4, 5 // context->uc_mcontext.vmx_reserve[(align) + 10] ++ addi 5, 5, 16 ++ stvx 11, 4, 5 // context->uc_mcontext.vmx_reserve[(align) + 11] ++ addi 5, 5, 16 ++ stvx 12, 4, 5 // context->uc_mcontext.vmx_reserve[(align) + 12] ++ addi 5, 5, 16 ++ stvx 13, 4, 5 // context->uc_mcontext.vmx_reserve[(align) + 13] ++ addi 5, 5, 16 ++ stvx 14, 4, 5 // context->uc_mcontext.vmx_reserve[(align) + 14] ++ addi 5, 5, 16 ++ stvx 15, 4, 5 // context->uc_mcontext.vmx_reserve[(align) + 15] ++ addi 5, 5, 16 ++ stvx 16, 4, 5 // context->uc_mcontext.vmx_reserve[(align) + 16] ++ addi 5, 5, 16 ++ stvx 17, 4, 5 // context->uc_mcontext.vmx_reserve[(align) + 17] ++ addi 5, 5, 16 ++ stvx 18, 4, 5 // context->uc_mcontext.vmx_reserve[(align) + 18] ++ addi 5, 5, 16 ++ stvx 19, 4, 5 // context->uc_mcontext.vmx_reserve[(align) + 19] ++ addi 5, 5, 16 ++ stvx 20, 4, 5 // context->uc_mcontext.vmx_reserve[(align) + 20] ++ addi 5, 5, 16 ++ stvx 21, 4, 5 // context->uc_mcontext.vmx_reserve[(align) + 21] ++ addi 5, 5, 16 ++ stvx 22, 4, 5 // context->uc_mcontext.vmx_reserve[(align) + 22] ++ addi 5, 5, 16 ++ stvx 23, 4, 5 // context->uc_mcontext.vmx_reserve[(align) + 23] ++ addi 5, 5, 16 ++ stvx 24, 4, 5 // context->uc_mcontext.vmx_reserve[(align) + 24] ++ addi 5, 5, 16 ++ stvx 25, 4, 5 // context->uc_mcontext.vmx_reserve[(align) + 25] ++ addi 5, 5, 16 ++ stvx 26, 4, 5 // context->uc_mcontext.vmx_reserve[(align) + 26] ++ addi 5, 5, 16 ++ stvx 27, 4, 5 // context->uc_mcontext.vmx_reserve[(align) + 27] ++ addi 5, 5, 16 ++ stvx 28, 4, 5 // context->uc_mcontext.vmx_reserve[(align) + 28] ++ addi 5, 5, 16 ++ stvx 29, 4, 5 // context->uc_mcontext.vmx_reserve[(align) + 29] ++ addi 5, 5, 16 ++ stvx 30, 4, 5 // context->uc_mcontext.vmx_reserve[(align) + 30] ++ addi 5, 5, 16 ++ stvx 31, 4, 5 // context->uc_mcontext.vmx_reserve[(align) + 31] ++ addi 5, 5, 16 ++ ++ // VSCR ++ mfvscr 0 ++ stvx 0, 4, 5 ++ addi 5, 5, 16 ++ ++ // VRSAVE ++ mfvrsave 0 ++ stwx 0, 4, 5 ++ ++ // Update context->uc_mcontext.v_regs to point to vmx_reserve + alignment. ++ std 4, 0x370(3) ++ ++ // Zero out all unused fields ++ li 4, 0 ++ std 4, 0xc8(3) // context->uc_mcontext.signal ++ std 4, 0xd0(3) // context->uc_mcontext.handler ++ std 4, 0xd8(3) // context->uc_mcontext.oldmask ++ ++ blr + #elif defined(__riscv) + + #define MCONTEXT_GREGS_OFFSET 176 +Index: chromium-122.0.6261.128/third_party/crashpad/crashpad/util/misc/capture_context_test.cc +=================================================================== +--- chromium-122.0.6261.128.orig/third_party/crashpad/crashpad/util/misc/capture_context_test.cc ++++ chromium-122.0.6261.128/third_party/crashpad/crashpad/util/misc/capture_context_test.cc +@@ -48,7 +48,7 @@ void TestCaptureContext() { + uintptr_t pc = ProgramCounterFromContext(context_1); + + #if !defined(ADDRESS_SANITIZER) && !defined(ARCH_CPU_MIPS_FAMILY) && \ +- !defined(MEMORY_SANITIZER) ++ !defined(MEMORY_SANITIZER) && !defined(ARCH_CPU_PPC64_FAMILY) + // Sanitizers can cause enough code bloat that the “nearby” check would + // likely fail. + const uintptr_t kReferencePC = +Index: chromium-122.0.6261.128/third_party/crashpad/crashpad/util/misc/capture_context_test_util_linux.cc +=================================================================== +--- chromium-122.0.6261.128.orig/third_party/crashpad/crashpad/util/misc/capture_context_test_util_linux.cc ++++ chromium-122.0.6261.128/third_party/crashpad/crashpad/util/misc/capture_context_test_util_linux.cc +@@ -38,6 +38,8 @@ void SanityCheckContext(const NativeCPUC + #elif defined(ARCH_CPU_RISCV64) + EXPECT_EQ(context.uc_mcontext.__gregs[10], + FromPointerCast(&context)); ++#elif defined(ARCH_CPU_PPC64_FAMILY) ++ EXPECT_EQ(context.uc_mcontext.gp_regs[3], FromPointerCast(&context)); + #endif + } + +@@ -54,6 +56,8 @@ uintptr_t ProgramCounterFromContext(cons + return context.uc_mcontext.pc; + #elif defined(ARCH_CPU_RISCV64) + return context.uc_mcontext.__gregs[0]; ++#elif defined(ARCH_CPU_PPC64_FAMILY) ++ return context.uc_mcontext.gp_regs[PT_NIP]; + #endif + } + +@@ -70,6 +74,8 @@ uintptr_t StackPointerFromContext(const + return context.uc_mcontext.gregs[29]; + #elif defined(ARCH_CPU_RISCV64) + return context.uc_mcontext.__gregs[2]; ++#elif defined(ARCH_CPU_PPC64_FAMILY) ++ return context.uc_mcontext.gp_regs[1]; + #endif + } + +kIndex: chromium-114.0.5735.45/base/allocator/partition_allocator/partition_alloc.gni +=================================================================== +Index: chromium-122.0.6261.128/base/allocator/partition_allocator/partition_alloc.gni +=================================================================== +--- chromium-122.0.6261.128.orig/base/allocator/partition_allocator/partition_alloc.gni ++++ chromium-122.0.6261.128/base/allocator/partition_allocator/partition_alloc.gni +@@ -21,7 +21,8 @@ if (is_nacl) { + # NaCl targets don't use 64-bit pointers. + has_64_bit_pointers = false + } else if (current_cpu == "x64" || current_cpu == "arm64" || +- current_cpu == "loong64" || current_cpu == "riscv64") { ++ current_cpu == "loong64" || current_cpu == "riscv64" || ++ current_cpu == "ppc64") { + has_64_bit_pointers = true + } else if (current_cpu == "x86" || current_cpu == "arm") { + has_64_bit_pointers = false +Index: chromium-122.0.6261.128/third_party/highway/BUILD.gn +=================================================================== +--- chromium-122.0.6261.128.orig/third_party/highway/BUILD.gn ++++ chromium-122.0.6261.128/third_party/highway/BUILD.gn +@@ -13,6 +13,9 @@ config("libhwy_external_config") { + # explicitly disabling AVX2 and AVX3 targets. + defines += [ "HWY_BROKEN_TARGETS=(HWY_AVX2|HWY_AVX3)" ] + } ++ if (target_cpu == "ppc64") { ++ defines += [ "TOOLCHAIN_MISS_ASM_HWCAP_H" ] ++ } + } + + source_set("libhwy") { +Index: chromium-122.0.6261.128/base/allocator/partition_allocator/src/partition_alloc/page_allocator_constants.h +=================================================================== +--- chromium-122.0.6261.128.orig/base/allocator/partition_allocator/src/partition_alloc/page_allocator_constants.h ++++ chromium-122.0.6261.128/base/allocator/partition_allocator/src/partition_alloc/page_allocator_constants.h +@@ -173,7 +173,11 @@ SystemPageBaseMask() { + return ~SystemPageOffsetMask(); + } + ++#if defined(ARCH_CPU_PPC64) ++constexpr size_t kPageMetadataShift = 6; // 64 bytes per partition page. ++#else + constexpr size_t kPageMetadataShift = 5; // 32 bytes per partition page. ++#endif + constexpr size_t kPageMetadataSize = 1 << kPageMetadataShift; + + } // namespace partition_alloc::internal +Index: chromium-122.0.6261.128/base/allocator/partition_allocator/src/partition_alloc/partition_page.h +=================================================================== +--- chromium-122.0.6261.128.orig/base/allocator/partition_allocator/src/partition_alloc/partition_page.h ++++ chromium-122.0.6261.128/base/allocator/partition_allocator/src/partition_alloc/partition_page.h +@@ -86,7 +86,11 @@ struct SlotSpanMetadata { + + // CHECK()ed in AllocNewSlotSpan(). + // The maximum number of bits needed to cover all currently supported OSes. ++#if defined(ARCH_CPU_PPC64) ++ static constexpr size_t kMaxSlotsPerSlotSpanBits = 15; ++#else + static constexpr size_t kMaxSlotsPerSlotSpanBits = 13; ++#endif + static_assert(kMaxSlotsPerSlotSpan < (1 << kMaxSlotsPerSlotSpanBits), ""); + + // |marked_full| isn't equivalent to being full. Slot span is marked as full +@@ -100,7 +104,11 @@ struct SlotSpanMetadata { + private: + const uint32_t can_store_raw_size_ : 1; + uint32_t freelist_is_sorted_ : 1; ++#if defined(ARCH_CPU_PPC64) ++ uint32_t unused1_ : (64 - 1 - 2 * kMaxSlotsPerSlotSpanBits - 1 - 1); ++#else + uint32_t unused1_ : (32 - 1 - 2 * kMaxSlotsPerSlotSpanBits - 1 - 1); ++#endif + // If |in_empty_cache_|==1, |empty_cache_index| is undefined and mustn't be + // used. + uint16_t in_empty_cache_ : 1; +Index: chromium-122.0.6261.128/base/allocator/partition_allocator/src/partition_alloc/partition_page_constants.h +=================================================================== +--- chromium-122.0.6261.128.orig/base/allocator/partition_allocator/src/partition_alloc/partition_page_constants.h ++++ chromium-122.0.6261.128/base/allocator/partition_allocator/src/partition_alloc/partition_page_constants.h +@@ -21,6 +21,11 @@ static constexpr size_t kMaxSlotsPerSlot + // currently (kMaxSlotsPerSlotSpanBits == 13) not supported by the code, + // so we use the 16 kiB maximum (64 kiB will crash). + static constexpr size_t kMaxSlotsPerSlotSpan = 4 * (1 << 14) / kSmallestBucket; ++#elif BUILDFLAG(IS_LINUX) && defined(ARCH_CPU_PPC64) ++// System page size is not a constant on OpenPOWER systems, but is either 4kiB ++// or 64kiB (1 << 12 or 1 << 16) ++// And PartitionPageSize() is 4 times the OS page size. ++static constexpr size_t kMaxSlotsPerSlotSpan = 4 * (1 << 16) / kSmallestBucket; + #else + // A slot span can "span" multiple PartitionPages, but then its slot size is + // larger, so it doesn't have as many slots. +Index: chromium-122.0.6261.128/third_party/dawn/src/dawn/common/Platform.h +=================================================================== +--- chromium-122.0.6261.128.orig/third_party/dawn/src/dawn/common/Platform.h ++++ chromium-122.0.6261.128/third_party/dawn/src/dawn/common/Platform.h +@@ -153,9 +153,9 @@ + #define DAWN_PLATFORM_IS_MIPS64 1 + #endif + +-#elif defiend(__s390__) ++#elif defined(__s390__) + #define DAWN_PLATFORM_IS_S390 1 +-#elif defiend(__s390x__) ++#elif defined(__s390x__) + #define DAWN_PLATFORM_IS_S390X 1 + + #elif defined(__PPC__) +Index: chromium-122.0.6261.128/third_party/dawn/src/dawn/common/Assert.cpp +=================================================================== +--- chromium-122.0.6261.128.orig/third_party/dawn/src/dawn/common/Assert.cpp ++++ chromium-122.0.6261.128/third_party/dawn/src/dawn/common/Assert.cpp +@@ -52,9 +52,9 @@ void BreakPoint() { + __asm__ __volatile__("ebreak"); + #elif DAWN_PLATFORM_IS(MIPS) + __asm__ __volatile__("break"); +-#elif DAWN_PLATFORM_IS(S390) || DAWN_PLATFORM_IS_(S390X) ++#elif DAWN_PLATFORM_IS(S390) || DAWN_PLATFORM_IS(S390X) + __asm__ __volatile__(".word 0x0001"); +-#elif DAWN_PLATFORM_IS(PPC) || DAWN_PLATFORM_IS_(PPC64) ++#elif DAWN_PLATFORM_IS(PPC) || DAWN_PLATFORM_IS(PPC64) + __asm__ __volatile__("twge 2,2"); + #else + #error "Unsupported platform" +Index: chromium-122.0.6261.128/third_party/dawn/src/dawn/common/Platform.h +=================================================================== +--- chromium-122.0.6261.128.orig/third_party/dawn/src/dawn/common/Platform.h ++++ chromium-122.0.6261.128/third_party/dawn/src/dawn/common/Platform.h +@@ -158,10 +158,12 @@ + #elif defined(__s390x__) + #define DAWN_PLATFORM_IS_S390X 1 + +-#elif defined(__PPC__) +-#define DAWN_PLATFORM_IS_PPC 1 ++// Order matters here ++// PPC64 also defines PPC, which can lead to detection failures on ppc64le systems + #elif defined(__PPC64__) + #define DAWN_PLATFORM_IS_PPC64 1 ++#elif defined(__PPC__) ++#define DAWN_PLATFORM_IS_PPC 1 + + #else + #error "Unsupported platform." diff --git a/series.ppc64 b/series.ppc64 new file mode 100644 index 0000000..dc1fa95 --- /dev/null +++ b/series.ppc64 @@ -0,0 +1,44 @@ +# from chromium-122.0.6261.128 patchset on quickbuild.io +# do following edits to the patches: +# - third_party/0001-Add-PPC64-support-for-boringssl.patch +# - remove third_party/boringssl/src/crypto/test/abi_test.h +# - crashpad/0001-Implement-support-for-PPC64-on-Linux.patch +# - remove all tests +# - crashpad/minidump/test/* +# - crashpad/snapshot/test/* +# - crashpad/test/* +# +# or use prepare-ppc64.sh script to generate the patchset +# + +ppc64le/sandbox/0001-linux-seccomp-bpf-ppc64-glibc-workaround-in-SIGSYS-h.patch +ppc64le/sandbox/0001-sandbox-Enable-seccomp_bpf-for-ppc64.patch +ppc64le/sandbox/0001-services-service_manager-sandbox-linux-Fix-TCGETS-de.patch +ppc64le/sandbox/0001-sandbox-linux-bpf_dsl-Update-syscall-ranges-for-ppc6.patch +ppc64le/sandbox/0001-sandbox-linux-Implement-partial-support-for-ppc64-sy.patch +ppc64le/sandbox/0001-sandbox-linux-Update-IsSyscallAllowed-in-broker_proc.patch +ppc64le/sandbox/0001-sandbox-linux-Update-syscall-helpers-lists-for-ppc64.patch +ppc64le/sandbox/0002-sandbox-linux-bpf_dsl-Modify-seccomp_macros-to-add-s.patch +ppc64le/sandbox/0003-sandbox-linux-system_headers-Update-linux-seccomp-he.patch +ppc64le/sandbox/0004-sandbox-linux-system_headers-Update-linux-signal-hea.patch +ppc64le/sandbox/0005-sandbox-linux-seccomp-bpf-Add-ppc64-syscall-stub.patch +ppc64le/sandbox/0005-sandbox-linux-update-unit-test-for-ppc64.patch +ppc64le/sandbox/0006-sandbox-linux-disable-timedwait-time64-ppc64.patch +ppc64le/sandbox/0007-sandbox-linux-add-ppc64-stat.patch +ppc64le/sandbox/Sandbox-linux-services-credentials.cc-PPC.patch +ppc64le/sandbox/0008-sandbox-fix-ppc64le-glibc234.patch +ppc64le/third_party/0001-third_party-angle-Include-missing-header-cstddef-in-.patch +ppc64le/third_party/0001-Add-PPC64-support-for-boringssl.patch +ppc64le/third_party/0001-third_party-lss-Don-t-look-for-mmap2-on-ppc64.patch +ppc64le/third_party/0002-third_party-lss-kernel-structs.patch +ppc64le/libaom/0001-Add-ppc64-target-to-libaom.patch +ppc64le/libaom/0001-Add-pregenerated-config-for-libaom-on-ppc64.patch +ppc64le/third_party/0002-third_party-libvpx-Remove-bad-ppc64-config.patch +ppc64le/third_party/0002-third-party-boringssl-add-generated-files.patch +ppc64le/third_party/0003-third_party-libvpx-Add-ppc64-generated-config.patch +ppc64le/crashpad/0001-Implement-support-for-PPC64-on-Linux.patch +ppc64le/fixes/fix-partition-alloc-compile.patch +ppc64le/third_party/0001-Fix-highway-ppc-hwcap.patch +ppc64le/third_party/use-sysconf-page-size-on-ppc64.patch +ppc64le/third_party/dawn-fix-typos.patch +ppc64le/third_party/dawn-fix-ppc64le-detection.patch From 5c1a69815bea42238242b3355988a07a8b572b6e Mon Sep 17 00:00:00 2001 From: Jan Grulich Date: Mon, 17 Feb 2025 19:23:30 +0100 Subject: [PATCH 40/76] Bump build for ppc64le enablement --- qt6-qtwebengine.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/qt6-qtwebengine.spec b/qt6-qtwebengine.spec index 8a35cf9..2e51818 100644 --- a/qt6-qtwebengine.spec +++ b/qt6-qtwebengine.spec @@ -51,7 +51,7 @@ Summary: Qt6 - QtWebEngine components Name: qt6-qtwebengine Version: 6.8.2 -Release: 1%{?dist} +Release: 2%{?dist} # See LICENSE.GPL LICENSE.LGPL LGPL_EXCEPTION.txt, for details # See also http://qt-project.org/doc/qt-5.0/qtdoc/licensing.html @@ -686,6 +686,9 @@ done %endif %changelog +* Mon Feb 17 2025 Jan Grulich - 6.8.2-2 +- Bump build for ppc64le enablement + * Fri Jan 31 2025 Jan Grulich - 6.8.2-1 - 6.8.2 From e9dd0ece9c2b49627b5917dae84ae4828c651d0c Mon Sep 17 00:00:00 2001 From: Jan Grulich Date: Mon, 3 Mar 2025 18:58:01 +0100 Subject: [PATCH 41/76] Rework OpenH264 support following Chromium package Backport upstream change for ffmpeg codec selection issues. --- qt6-qtwebengine.spec | 29 ++- qtwebengine-blink-system-openh264.patch | 76 ------- qtwebengine-fix-building-system-ffmpeg.patch | 214 +++++++++++++++++++ qtwebengine-media-system-openh264.patch | 36 ---- qtwebengine-use-openh264.patch | 13 ++ qtwebengine-webrtc-system-openh264.patch | 71 ------ 6 files changed, 245 insertions(+), 194 deletions(-) delete mode 100644 qtwebengine-blink-system-openh264.patch create mode 100644 qtwebengine-fix-building-system-ffmpeg.patch delete mode 100644 qtwebengine-media-system-openh264.patch create mode 100644 qtwebengine-use-openh264.patch delete mode 100644 qtwebengine-webrtc-system-openh264.patch diff --git a/qt6-qtwebengine.spec b/qt6-qtwebengine.spec index 2e51818..9b59bc9 100644 --- a/qt6-qtwebengine.spec +++ b/qt6-qtwebengine.spec @@ -51,7 +51,7 @@ Summary: Qt6 - QtWebEngine components Name: qt6-qtwebengine Version: 6.8.2 -Release: 2%{?dist} +Release: 3%{?dist} # See LICENSE.GPL LICENSE.LGPL LGPL_EXCEPTION.txt, for details # See also http://qt-project.org/doc/qt-5.0/qtdoc/licensing.html @@ -74,23 +74,24 @@ Source10: macros.qt6-qtwebengine Source20: pulseaudio-12.2-headers.tar.gz # workaround FTBFS against kernel-headers-5.2.0+ -Patch1: qtwebengine-SIOCGSTAMP.patch -Patch2: qtwebengine-link-pipewire.patch +Patch1: qtwebengine-SIOCGSTAMP.patch +Patch2: qtwebengine-link-pipewire.patch # Fix/workaround FTBFS on aarch64 with newer glibc -Patch3: qtwebengine-aarch64-new-stat.patch +Patch3: qtwebengine-aarch64-new-stat.patch + +# Enable OpenH264 +Patch4: qtwebengine-use-openh264.patch # FTBS warning: elaborated-type-specifier for a scoped enum must not # use the 'class' keyword -Patch50: qtwebengine-fix-build.patch +Patch50: qtwebengine-fix-build.patch ## Upstream patches: # https://bugreports.qt.io/browse/QTBUG-129985 Patch80: qtwebengine-fix-arm-build.patch +Patch81: qtwebengine-fix-building-system-ffmpeg.patch ## Upstreamable patches: -Patch110: qtwebengine-webrtc-system-openh264.patch -Patch111: qtwebengine-blink-system-openh264.patch -Patch112: qtwebengine-media-system-openh264.patch ## ppc64le port Patch200: qtwebengine-6.7-ppc64.patch @@ -384,16 +385,15 @@ popd %patch -P1 -p1 -b .SIOCGSTAMP %patch -P2 -p1 -b .link-pipewire %patch -P3 -p1 -b .aarch64-new-stat +%patch -P4 -p1 -b .use-openh264 %patch -P50 -p1 -b .fix-build.patch ## upstream patches %patch -P80 -p1 -b .fix-arm-build +%patch -P81 -p1 -b .fix-building-system-ffmpeg ## upstreamable patches -%patch -P110 -p1 -b .webrtc-system-openh264 -%patch -P111 -p1 -b .blink-system-openh264 -%patch -P112 -p1 -b .media-system-openh264 # ppc64le support %patch -P200 -p1 @@ -426,6 +426,9 @@ cp -bv /usr/include/re2/*.h src/3rdparty/chromium/third_party/re2/src/re2/ # copy the Chromium license so it is installed with the appropriate name cp -p src/3rdparty/chromium/LICENSE LICENSE.Chromium +# Use system OpenH264 +src/3rdparty/chromium/build/linux/unbundle/replace_gn_files.py --system-libraries openh264 + # consider doing this as part of the tarball creation step instead? rdieter # fix/workaround # fatal error: QtWebEngineCore/qtwebenginecoreglobal.h: No such file or directory @@ -686,6 +689,10 @@ done %endif %changelog +* Mon Mar 03 2025 Jan Grulich - 6.8.2-3 +- Rework OpenH264 support following Chromium package +- Backport upstream change for ffmpeg codec selection issues. + * Mon Feb 17 2025 Jan Grulich - 6.8.2-2 - Bump build for ppc64le enablement diff --git a/qtwebengine-blink-system-openh264.patch b/qtwebengine-blink-system-openh264.patch deleted file mode 100644 index 2a12522..0000000 --- a/qtwebengine-blink-system-openh264.patch +++ /dev/null @@ -1,76 +0,0 @@ -diff --git a/src/3rdparty/chromium/third_party/blink/renderer/modules/mediarecorder/BUILD.gn b/src/3rdparty/chromium/third_party/blink/renderer/modules/mediarecorder/BUILD.gn -index f05ad3eb2..8c73aa08e 100644 ---- a/src/3rdparty/chromium/third_party/blink/renderer/modules/mediarecorder/BUILD.gn -+++ b/src/3rdparty/chromium/third_party/blink/renderer/modules/mediarecorder/BUILD.gn -@@ -3,9 +3,19 @@ - # found in the LICENSE file. - - import("//build/buildflag_header.gni") -+import("//build/config/linux/pkg_config.gni") - import("//media/media_options.gni") - import("//third_party/blink/renderer/modules/modules.gni") - import("//third_party/libaom/options.gni") -+import("//third_party/webrtc/webrtc.gni") -+ -+if (rtc_use_h264 && rtc_use_system_openh264) { -+ pkg_config("openh264") { -+ packages = [ -+ "openh264", -+ ] -+ } -+} - - blink_modules_sources("mediarecorder") { - sources = [ -@@ -56,7 +66,11 @@ blink_modules_sources("mediarecorder") { - "h264_encoder.h", - ] - -- deps += [ "//third_party/openh264:encoder" ] -+ if (rtc_use_system_openh264) { -+ configs += [":openh264"] -+ } else { -+ deps += [ "//third_party/openh264:encoder" ] -+ } - } - - if (enable_libaom) { -diff --git a/src/3rdparty/chromium/third_party/blink/renderer/modules/webcodecs/BUILD.gn b/src/3rdparty/chromium/third_party/blink/renderer/modules/webcodecs/BUILD.gn -index 1ad082fe7..7bf84b932 100644 ---- a/src/3rdparty/chromium/third_party/blink/renderer/modules/webcodecs/BUILD.gn -+++ b/src/3rdparty/chromium/third_party/blink/renderer/modules/webcodecs/BUILD.gn -@@ -2,11 +2,21 @@ - # Use of this source code is governed by a BSD-style license that can be - # found in the LICENSE file. - -+import("//build/config/linux/pkg_config.gni") - import("//media/media_options.gni") - import("//third_party/blink/renderer/modules/modules.gni") - import("//third_party/libaom/options.gni") - import("//third_party/libprotobuf-mutator/fuzzable_proto_library.gni") - import("//third_party/protobuf/proto_library.gni") -+import("//third_party/webrtc/webrtc.gni") -+ -+if (rtc_use_h264 && rtc_use_system_openh264) { -+ pkg_config("openh264") { -+ packages = [ -+ "openh264", -+ ] -+ } -+} - - blink_modules_sources("webcodecs") { - sources = [ -@@ -117,7 +127,11 @@ blink_modules_sources("webcodecs") { - deps += [ "//third_party/libvpx" ] - } - if (media_use_openh264) { -- deps += [ "//third_party/openh264:encoder" ] -+ if (rtc_use_system_openh264) { -+ configs += [":openh264"] -+ } else { -+ deps += [ "//third_party/openh264:encoder" ] -+ } - } - if (is_fuchsia) { - deps += [ "//media/fuchsia/video" ] diff --git a/qtwebengine-fix-building-system-ffmpeg.patch b/qtwebengine-fix-building-system-ffmpeg.patch new file mode 100644 index 0000000..40e2e97 --- /dev/null +++ b/qtwebengine-fix-building-system-ffmpeg.patch @@ -0,0 +1,214 @@ +From 24e9ff7caa6aa78c1c73e7329cf1230a455d0c1b Mon Sep 17 00:00:00 2001 +From: Martin Negyokru +Date: Fri, 17 Jan 2025 15:40:37 +0100 +Subject: [PATCH] [fixup][ffmpeg] Fix building with system ffmpeg + +Refactor workaround for codec selection issues. +Introduce FindDecoder which meant to replace avcodec_find_decoder. +Imporove codec detection in format context. + +Fixes: QTBUG-132762 +Task-number: QTBUG-130273 +Change-Id: I6d520633ebebbb9bdb7aa71b8247066c2a662be3 +Reviewed-on: https://codereview.qt-project.org/c/qt/qtwebengine-chromium/+/617873 +Reviewed-by: Moss Heim +Reviewed-by: Allan Sandfeld Jensen +(cherry picked from commit 54a756b84e0b7a1104f9b336a1253fe36c573f56) +Reviewed-on: https://codereview.qt-project.org/c/qt/qtwebengine-chromium/+/624054 +--- + +diff --git a/src/3rdparty/chromium/media/cdm/library_cdm/clear_key_cdm/ffmpeg_cdm_audio_decoder.cc b/src/3rdparty/chromium/media/cdm/library_cdm/clear_key_cdm/ffmpeg_cdm_audio_decoder.cc +index 9646e70..5b9a02e 100644 +--- a/src/3rdparty/chromium/media/cdm/library_cdm/clear_key_cdm/ffmpeg_cdm_audio_decoder.cc ++++ b/src/3rdparty/chromium/media/cdm/library_cdm/clear_key_cdm/ffmpeg_cdm_audio_decoder.cc +@@ -177,7 +177,12 @@ + if (codec_context_->sample_fmt == AV_SAMPLE_FMT_S16P) + codec_context_->request_sample_fmt = AV_SAMPLE_FMT_S16; + ++#if BUILDFLAG(IS_QTWEBENGINE) && BUILDFLAG(USE_SYSTEM_FFMPEG) ++ const AVCodec* codec = ++ FindDecoder(codec_context_->codec_id, codec_context_->codec_whitelist); ++#else + const AVCodec* codec = avcodec_find_decoder(codec_context_->codec_id); ++#endif + if (!codec || avcodec_open2(codec_context_.get(), codec, NULL) < 0) { + DLOG(ERROR) << "Could not initialize audio decoder: " + << codec_context_->codec_id; +diff --git a/src/3rdparty/chromium/media/ffmpeg/ffmpeg_common.cc b/src/3rdparty/chromium/media/ffmpeg/ffmpeg_common.cc +index 63159ef..f872a8e 100644 +--- a/src/3rdparty/chromium/media/ffmpeg/ffmpeg_common.cc ++++ b/src/3rdparty/chromium/media/ffmpeg/ffmpeg_common.cc +@@ -29,6 +29,11 @@ + #endif + #endif + ++#if BUILDFLAG(IS_QTWEBENGINE) && BUILDFLAG(USE_SYSTEM_FFMPEG) ++extern "C" { ++#include ++} ++#endif + namespace media { + + namespace { +@@ -67,6 +72,24 @@ + VideoFrame::kFrameAddressAlignment % kFFmpegBufferAddressAlignment == 0, + "VideoFrame frame address alignment does not fit ffmpeg requirement"); + ++#if BUILDFLAG(IS_QTWEBENGINE) && BUILDFLAG(USE_SYSTEM_FFMPEG) ++const AVCodec* FindDecoder(AVCodecID id, const char* whitelist) { ++ if (!whitelist) { ++ return avcodec_find_decoder(id); ++ } ++ ++ void* i = 0; ++ const AVCodec* codec; ++ while (codec = av_codec_iterate(&i)) { ++ if (av_codec_is_decoder(codec) && codec->id == id && ++ av_match_list(codec->name, whitelist, ',')) { ++ return codec; ++ } ++ } ++ return nullptr; ++} ++#endif ++ + static const AVRational kMicrosBase = { 1, base::Time::kMicrosecondsPerSecond }; + + base::TimeDelta ConvertFromTimeBase(const AVRational& time_base, +diff --git a/src/3rdparty/chromium/media/ffmpeg/ffmpeg_common.h b/src/3rdparty/chromium/media/ffmpeg/ffmpeg_common.h +index 9993d34..2332722 100644 +--- a/src/3rdparty/chromium/media/ffmpeg/ffmpeg_common.h ++++ b/src/3rdparty/chromium/media/ffmpeg/ffmpeg_common.h +@@ -79,6 +79,12 @@ + av_frame_free(&frame); + } + ++#if BUILDFLAG(IS_QTWEBENGINE) && BUILDFLAG(USE_SYSTEM_FFMPEG) ++// Systemlib friendly version of avcodec_find_decoder that respects the ++// whitelisted codecs. ++MEDIA_EXPORT const AVCodec* FindDecoder(AVCodecID id, const char* whitelist); ++#endif ++ + // Converts an int64_t timestamp in |time_base| units to a base::TimeDelta. + // For example if |timestamp| equals 11025 and |time_base| equals {1, 44100} + // then the return value will be a base::TimeDelta for 0.25 seconds since that +diff --git a/src/3rdparty/chromium/media/filters/audio_file_reader.cc b/src/3rdparty/chromium/media/filters/audio_file_reader.cc +index dd4f3b5..172bd9a 100644 +--- a/src/3rdparty/chromium/media/filters/audio_file_reader.cc ++++ b/src/3rdparty/chromium/media/filters/audio_file_reader.cc +@@ -95,7 +95,12 @@ + } + + bool AudioFileReader::OpenDecoder() { ++#if BUILDFLAG(IS_QTWEBENGINE) && BUILDFLAG(USE_SYSTEM_FFMPEG) ++ const AVCodec* codec = ++ FindDecoder(codec_context_->codec_id, codec_context_->codec_whitelist); ++#else + const AVCodec* codec = avcodec_find_decoder(codec_context_->codec_id); ++#endif + if (codec) { + // MP3 decodes to S16P which we don't support, tell it to use S16 instead. + if (codec_context_->sample_fmt == AV_SAMPLE_FMT_S16P) +diff --git a/src/3rdparty/chromium/media/filters/ffmpeg_audio_decoder.cc b/src/3rdparty/chromium/media/filters/ffmpeg_audio_decoder.cc +index 22fa4d48..5d94b76 100644 +--- a/src/3rdparty/chromium/media/filters/ffmpeg_audio_decoder.cc ++++ b/src/3rdparty/chromium/media/filters/ffmpeg_audio_decoder.cc +@@ -360,19 +360,8 @@ + } + + #if BUILDFLAG(IS_QTWEBENGINE) && BUILDFLAG(USE_SYSTEM_FFMPEG) +- // Workaround http://crbug.com/41492567 +- // Chromium only supports the 'libopus' decoder. +- // 'avcodec_find_decoder' finds the experimental 'opus' decoder first +- // because the lookup is based on codec_id and both have the same id. +- // Bundled ffmpeg only have libopus but the system usually have both. +- const AVCodec* codec = [&config, this]() { +- if (config.codec() == AudioCodec::kOpus) +- return avcodec_find_decoder_by_name("libopus"); +- if (config.codec() == AudioCodec::kMP3) { +- return avcodec_find_decoder_by_name("mp3"); +- } +- return avcodec_find_decoder(codec_context_->codec_id); +- }(); ++ AVCodecID id = AudioCodecToCodecID(config.codec(), config.sample_format()); ++ const AVCodec* codec = FindDecoder(id, codec_context_->codec_whitelist); + #else + const AVCodec* codec = avcodec_find_decoder(codec_context_->codec_id); + #endif +diff --git a/src/3rdparty/chromium/media/filters/ffmpeg_glue.cc b/src/3rdparty/chromium/media/filters/ffmpeg_glue.cc +index 6407b5b..e9bd44b 100644 +--- a/src/3rdparty/chromium/media/filters/ffmpeg_glue.cc ++++ b/src/3rdparty/chromium/media/filters/ffmpeg_glue.cc +@@ -242,20 +242,27 @@ + LogContainer(is_local_file, container_); + + #if BUILDFLAG(IS_QTWEBENGINE) && BUILDFLAG(USE_SYSTEM_FFMPEG) +- // Sometimes FFmpeg is not aware of the whitelisted codecs and +- // configures streams and demuxers with unsupported codecs/params. +- // Force the correct codecs to avoid problems later. ++ // 'avformat_find_stream_info' is not aware of the whitelisted codecs. ++ // However it respects the codecs set in the format_context. ++ // Try to force the correct codecs here at context creation. + // https://ffmpeg.org/doxygen/7.0/structAVFormatContext.html#a52f39351b15890ef57cc6ff0ec9ab42d + // https://ffmpeg.org/doxygen/7.0/structAVFormatContext.html#ae5e087f4623b907517c0f7dd8327387d + +- // Note: don't forget to update FFmpeg[Audio|Video]Decoder::ConfigureDecoder +- +- if (strcmp(format_context_->iformat->name, "mp3") == 0) { +- const AVCodec* mp3_codec = avcodec_find_decoder_by_name("mp3"); +- if (mp3_codec) { +- format_context_->audio_codec = mp3_codec; +- } else { +- LOG(ERROR) << "No supported codec for mp3"; ++ for (int i = 0; i < format_context_->nb_streams; i++) { ++ AVCodecParameters *params = format_context_->streams[i]->codecpar; ++ if (!params) ++ continue; ++ const AVCodec* audio_codec = ++ FindDecoder(params->codec_id, GetAllowedAudioDecoders()); ++ if (audio_codec) { ++ if (format_context_->audio_codec && ++ format_context_->audio_codec != audio_codec) { ++ LOG(INFO) << "Conflicting codecs " << format_context_->audio_codec->name ++ << ", " << audio_codec->name; ++ format_context_->audio_codec = nullptr; ++ break; ++ } ++ format_context_->audio_codec = audio_codec; + } + } + #endif +diff --git a/src/3rdparty/chromium/media/filters/ffmpeg_video_decoder.cc b/src/3rdparty/chromium/media/filters/ffmpeg_video_decoder.cc +index d08ee1d..832a3fa 100644 +--- a/src/3rdparty/chromium/media/filters/ffmpeg_video_decoder.cc ++++ b/src/3rdparty/chromium/media/filters/ffmpeg_video_decoder.cc +@@ -524,7 +524,12 @@ + codec_context_->flags2 |= AV_CODEC_FLAG2_CHUNKS; + } + ++#if BUILDFLAG(IS_QTWEBENGINE) && BUILDFLAG(USE_SYSTEM_FFMPEG) ++ const AVCodec* codec = ++ FindDecoder(codec_context_->codec_id, codec_context_->codec_whitelist); ++#else + const AVCodec* codec = avcodec_find_decoder(codec_context_->codec_id); ++#endif + if (!codec || avcodec_open2(codec_context_.get(), codec, NULL) < 0) { + ReleaseFFmpegResources(); + return false; +diff --git a/src/3rdparty/chromium/media/filters/media_file_checker.cc b/src/3rdparty/chromium/media/filters/media_file_checker.cc +index a2d4757..afe40e4 100644 +--- a/src/3rdparty/chromium/media/filters/media_file_checker.cc ++++ b/src/3rdparty/chromium/media/filters/media_file_checker.cc +@@ -68,7 +68,12 @@ + auto context = AVStreamToAVCodecContext(format_context->streams[i]); + if (!context) + continue; ++#if BUILDFLAG(IS_QTWEBENGINE) && BUILDFLAG(USE_SYSTEM_FFMPEG) ++ const AVCodec* codec = ++ FindDecoder(cp->codec_id, context->codec_whitelist); ++#else + const AVCodec* codec = avcodec_find_decoder(cp->codec_id); ++#endif + if (codec && avcodec_open2(context.get(), codec, nullptr) >= 0) { + auto loop = std::make_unique(context.get()); + stream_contexts[i] = {std::move(context), std::move(loop)}; diff --git a/qtwebengine-media-system-openh264.patch b/qtwebengine-media-system-openh264.patch deleted file mode 100644 index 36ffbea..0000000 --- a/qtwebengine-media-system-openh264.patch +++ /dev/null @@ -1,36 +0,0 @@ -diff --git a/src/3rdparty/chromium/media/video/BUILD.gn b/src/3rdparty/chromium/media/video/BUILD.gn -index ef5c9c6c0..7e439852d 100644 ---- a/src/3rdparty/chromium/media/video/BUILD.gn -+++ b/src/3rdparty/chromium/media/video/BUILD.gn -@@ -2,7 +2,17 @@ - # Use of this source code is governed by a BSD-style license that can be - # found in the LICENSE file. - -+import("//build/config/linux/pkg_config.gni") - import("//media/media_options.gni") -+import("//third_party/webrtc/webrtc.gni") -+ -+if (rtc_use_h264 && rtc_use_system_openh264) { -+ pkg_config("openh264") { -+ packages = [ -+ "openh264", -+ ] -+ } -+} - - source_set("video") { - # Do not expand the visibility here without double-checking with OWNERS, this -@@ -114,7 +124,12 @@ source_set("video") { - "openh264_video_encoder.cc", - "openh264_video_encoder.h", - ] -- deps += [ "//third_party/openh264:encoder" ] -+ -+ if (rtc_use_system_openh264) { -+ configs += [":openh264"] -+ } else { -+ deps += [ "//third_party/openh264:encoder" ] -+ } - } - - if (is_apple) { diff --git a/qtwebengine-use-openh264.patch b/qtwebengine-use-openh264.patch new file mode 100644 index 0000000..cdf68f4 --- /dev/null +++ b/qtwebengine-use-openh264.patch @@ -0,0 +1,13 @@ +diff --git a/src/core/CMakeLists.txt b/src/core/CMakeLists.txt +index de5222645..eb27e8b4e 100644 +--- a/src/core/CMakeLists.txt ++++ b/src/core/CMakeLists.txt +@@ -448,6 +448,8 @@ foreach(arch ${archs}) + use_udev=true + is_cfi=false + use_ozone=true ++ media_use_openh264=true ++ rtc_use_h264=true + ozone_auto_platforms=false + ozone_platform_headless=false + ozone_platform_external=true diff --git a/qtwebengine-webrtc-system-openh264.patch b/qtwebengine-webrtc-system-openh264.patch deleted file mode 100644 index 963b9aa..0000000 --- a/qtwebengine-webrtc-system-openh264.patch +++ /dev/null @@ -1,71 +0,0 @@ -diff --git a/src/3rdparty/chromium/third_party/webrtc/modules/video_coding/BUILD.gn b/src/3rdparty/chromium/third_party/webrtc/modules/video_coding/BUILD.gn -index 738d3d4ed..8344a19b0 100644 ---- a/src/3rdparty/chromium/third_party/webrtc/modules/video_coding/BUILD.gn -+++ b/src/3rdparty/chromium/third_party/webrtc/modules/video_coding/BUILD.gn -@@ -6,6 +6,7 @@ - # in the file PATENTS. All contributing project authors may - # be found in the AUTHORS file in the root of the source tree. - -+import("//build/config/linux/pkg_config.gni") - import("//third_party/libaom/options.gni") - import("../../webrtc.gni") - -@@ -453,6 +454,14 @@ rtc_library("video_coding_utility") { - ] - } - -+if (rtc_use_h264 && rtc_use_system_openh264) { -+ pkg_config("openh264") { -+ packages = [ -+ "openh264", -+ ] -+ } -+} -+ - rtc_library("webrtc_h264") { - visibility = [ "*" ] - sources = [ -@@ -501,8 +510,14 @@ rtc_library("webrtc_h264") { - if (rtc_use_h264) { - deps += [ - "//third_party/ffmpeg", -- "//third_party/openh264:encoder", - ] -+ -+ if (rtc_use_system_openh264) { -+ configs += [":openh264"] -+ } else { -+ deps += [ "//third_party/openh264:encoder" ] -+ } -+ - if (!build_with_mozilla) { - deps += [ "../../media:rtc_media_base" ] - } -diff --git a/src/3rdparty/chromium/third_party/webrtc/webrtc.gni b/src/3rdparty/chromium/third_party/webrtc/webrtc.gni -index 82870d2db..12231becc 100644 ---- a/src/3rdparty/chromium/third_party/webrtc/webrtc.gni -+++ b/src/3rdparty/chromium/third_party/webrtc/webrtc.gni -@@ -192,6 +192,9 @@ declare_args() { - # Enable to use H265 - rtc_use_h265 = proprietary_codecs - -+ # Allow to use system OpenH264 -+ rtc_use_system_openh264 = false -+ - # Enable this flag to make webrtc::Mutex be implemented by absl::Mutex. - rtc_use_absl_mutex = false - -diff --git a/src/core/CMakeLists.txt b/src/core/CMakeLists.txt -index e7432d0c7..394f05011 100644 ---- a/src/core/CMakeLists.txt -+++ b/src/core/CMakeLists.txt -@@ -436,6 +436,9 @@ foreach(arch ${archs}) - use_udev=true - is_cfi=false - use_ozone=true -+ media_use_openh264=true -+ rtc_use_h264=true -+ rtc_use_system_openh264=true - ozone_auto_platforms=false - ozone_platform_headless=false - ozone_platform_external=true From 28d2f477511d2b778fe7846691c529fbe15c27fe Mon Sep 17 00:00:00 2001 From: Jan Grulich Date: Tue, 4 Mar 2025 09:46:43 +0100 Subject: [PATCH 42/76] Unbundle libxml and libxslt --- qt6-qtwebengine.spec | 33 ++++++++++++++++++++++++++++----- 1 file changed, 28 insertions(+), 5 deletions(-) diff --git a/qt6-qtwebengine.spec b/qt6-qtwebengine.spec index 9b59bc9..ae26bf6 100644 --- a/qt6-qtwebengine.spec +++ b/qt6-qtwebengine.spec @@ -5,6 +5,8 @@ # package-notes causes FTBFS (#2043178) %undefine _package_note_file +%global use_system_libxslt 1 +%global use_system_libxml 1 %global use_system_libwebp 1 %global use_system_jsoncpp 1 %if 0%{?rhel} && 0%{?rhel} == 9 @@ -51,7 +53,7 @@ Summary: Qt6 - QtWebEngine components Name: qt6-qtwebengine Version: 6.8.2 -Release: 3%{?dist} +Release: 4%{?dist} # See LICENSE.GPL LICENSE.LGPL LGPL_EXCEPTION.txt, for details # See also http://qt-project.org/doc/qt-5.0/qtdoc/licensing.html @@ -193,9 +195,12 @@ BuildRequires: pkgconfig(xscrnsaver) BuildRequires: pkgconfig(xshmfence) BuildRequires: pkgconfig(xtst) BuildRequires: pkgconfig(zlib) -## https://bugreports.qt.io/browse/QTBUG-59094 -## requires libxml2 built with icu support -#BuildRequires: pkgconfig(libxslt) pkgconfig(libxml-2.0) +%if %{?use_system_libxslt} +BuildRequires: pkgconfig(libxslt) +%endif +%if %{?use_system_libxml} +BuildRequires: pkgconfig(libxml-2.0) +%endif BuildRequires: perl-interpreter BuildRequires: %{__python3} BuildRequires: python3-html5lib @@ -268,11 +273,15 @@ Provides: bundled(leveldb) = 1.23 Provides: bundled(libjingle) # see src/3rdparty/chromium/third_party/libsrtp/CHANGES for the version number Provides: bundled(libsrtp) = 2.4.0 +%if ! %{?use_system_libxml} # bundled as "libxml" # see src/3rdparty/chromium/third_party/libxml/linux/include/libxml/xmlversion.h Provides: bundled(libxml2) = 2.9.13 +%endif +%if ! %{?use_system_libxslt} # see src/3rdparty/chromium/third_party/libxslt/linux/config.h for version Provides: bundled(libxslt) = 1.1.3 +%endif Provides: bundled(libyuv) = 1819 Provides: bundled(modp_b64) Provides: bundled(ots) @@ -426,8 +435,19 @@ cp -bv /usr/include/re2/*.h src/3rdparty/chromium/third_party/re2/src/re2/ # copy the Chromium license so it is installed with the appropriate name cp -p src/3rdparty/chromium/LICENSE LICENSE.Chromium + +# use system libraries +system_libs=() +%if %{?use_system_libxml} + system_libs+=(libxml) +%endif +%if %{?use_system_libxslt} + system_libs+=(libxslt) +%endif +system_libs+=(openh264) + # Use system OpenH264 -src/3rdparty/chromium/build/linux/unbundle/replace_gn_files.py --system-libraries openh264 +src/3rdparty/chromium/build/linux/unbundle/replace_gn_files.py --system-libraries ${system_libs[@]} # consider doing this as part of the tarball creation step instead? rdieter # fix/workaround @@ -689,6 +709,9 @@ done %endif %changelog +* Tue Mar 04 2025 Jan Grulich - 6.8.2-4 +- Unbundle libxml and libxslt + * Mon Mar 03 2025 Jan Grulich - 6.8.2-3 - Rework OpenH264 support following Chromium package - Backport upstream change for ffmpeg codec selection issues. From 0719e09c442f8cada3329dc9e28d2e868cc95a11 Mon Sep 17 00:00:00 2001 From: Fabio Valentini Date: Thu, 13 Mar 2025 18:48:46 +0100 Subject: [PATCH 43/76] Rebuild for noopenh264 2.6.0 --- qt6-qtwebengine.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/qt6-qtwebengine.spec b/qt6-qtwebengine.spec index ae26bf6..0414d75 100644 --- a/qt6-qtwebengine.spec +++ b/qt6-qtwebengine.spec @@ -53,7 +53,7 @@ Summary: Qt6 - QtWebEngine components Name: qt6-qtwebengine Version: 6.8.2 -Release: 4%{?dist} +Release: 5%{?dist} # See LICENSE.GPL LICENSE.LGPL LGPL_EXCEPTION.txt, for details # See also http://qt-project.org/doc/qt-5.0/qtdoc/licensing.html @@ -709,6 +709,9 @@ done %endif %changelog +* Thu Mar 13 2025 Fabio Valentini - 6.8.2-5 +- Rebuild for noopenh264 2.6.0 + * Tue Mar 04 2025 Jan Grulich - 6.8.2-4 - Unbundle libxml and libxslt From 971c884e11cb9ddd3a45ff63ae7b2ce8ad4c348c Mon Sep 17 00:00:00 2001 From: Jan Grulich Date: Wed, 26 Mar 2025 10:01:48 +0100 Subject: [PATCH 44/76] 6.9.0 RC --- .gitignore | 2 + chromium-130-size-assertions.patch | 90 + prepare-ppc64.sh | 0 qt6-qtwebengine.spec | 75 +- qtwebengine-chromium-ppc64.patch | 4422 ++++++++++++++--- qtwebengine-fix-arm-build.patch | 7 +- qtwebengine-fix-build.patch | 40 +- qtwebengine-fix-building-system-ffmpeg.patch | 214 - ...gine-fix-building-with-system-ffmpeg.patch | 574 --- qtwebengine-use-openh264.patch | 6 +- ...ngine-webrtc-fix-build-with-pipewire.patch | 34 + series.ppc64 | 6 +- sources | 2 +- 13 files changed, 3832 insertions(+), 1640 deletions(-) create mode 100644 chromium-130-size-assertions.patch mode change 100755 => 100644 prepare-ppc64.sh delete mode 100644 qtwebengine-fix-building-system-ffmpeg.patch delete mode 100644 qtwebengine-fix-building-with-system-ffmpeg.patch create mode 100644 qtwebengine-webrtc-fix-build-with-pipewire.patch diff --git a/.gitignore b/.gitignore index 3f65fc9..f247021 100644 --- a/.gitignore +++ b/.gitignore @@ -14,3 +14,5 @@ /qtwebengine-everywhere-src-6.8.0-clean.tar.xz /qtwebengine-everywhere-src-6.8.1-clean.tar.xz /qtwebengine-everywhere-src-6.8.2-clean.tar.xz +/qtwebengine-everywhere-src-6.9.0-rc-clean.tar.xz +/qtwebengine-everywhere-src-6.9.0-clean.tar.xz diff --git a/chromium-130-size-assertions.patch b/chromium-130-size-assertions.patch new file mode 100644 index 0000000..cc75fb3 --- /dev/null +++ b/chromium-130-size-assertions.patch @@ -0,0 +1,90 @@ +commit f457e3c32b8170a39ead84ceaf9f0fdbe0696649 +Author: Michael Lippautz +Date: Tue Oct 15 19:27:32 2024 +0000 + + Fix size assertions across Blink + + The ASSERT_SIZE() macro is used to check that certain object sizes do + not grow unexpectedly. Fix a few occurrences that assumed that Member + is always the same size as debug builds may blow up the pointer size + to allow verifying some conditions. + + Bug: 373485798 + Change-Id: I243dd7d75810e2cfda0141817986a6c4a03c6392 + Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/5934877 + Commit-Queue: Michael Lippautz + Reviewed-by: Steinar H Gunderson + Cr-Commit-Position: refs/heads/main@{#1368939} + +diff --git a/third_party/blink/renderer/core/css/css_selector.cc b/third_party/blink/renderer/core/css/css_selector.cc +index e9cd483e0ce13..3d99eab57489e 100644 +--- a/third_party/blink/renderer/core/css/css_selector.cc ++++ b/third_party/blink/renderer/core/css/css_selector.cc +@@ -88,7 +88,11 @@ unsigned MaximumSpecificity( + + struct SameSizeAsCSSSelector { + unsigned bitfields; +- void* pointers[1]; ++ union { ++ AtomicString value_; ++ QualifiedName tag_q_name_or_attribute_; ++ Member rare_data_; ++ } pointers; + }; + + ASSERT_SIZE(CSSSelector, SameSizeAsCSSSelector); +diff --git a/third_party/blink/renderer/core/css/resolver/match_result.h b/third_party/blink/renderer/core/css/resolver/match_result.h +index c99bae9777094..210ef8610b808 100644 +--- a/third_party/blink/renderer/core/css/resolver/match_result.h ++++ b/third_party/blink/renderer/core/css/resolver/match_result.h +@@ -34,6 +34,7 @@ + #include "third_party/blink/renderer/core/dom/tree_scope.h" + #include "third_party/blink/renderer/platform/heap/collection_support/heap_vector.h" + #include "third_party/blink/renderer/platform/heap/garbage_collected.h" ++#include "third_party/blink/renderer/platform/wtf/size_assertions.h" + #include "third_party/blink/renderer/platform/wtf/vector.h" + + namespace blink { +@@ -88,8 +89,13 @@ struct CORE_EXPORT MatchedProperties { + Member properties; + Data data_; + }; +-static_assert(sizeof(MatchedProperties) <= 12, +- "MatchedProperties should not grow without thinking"); ++ ++struct SameSizeAsMatchedProperties { ++ Member properties; ++ uint8_t data_[8]; ++}; ++ ++ASSERT_SIZE(MatchedProperties, SameSizeAsMatchedProperties); + + } // namespace blink + +diff --git a/third_party/blink/renderer/core/dom/element_data.cc b/third_party/blink/renderer/core/dom/element_data.cc +index 0e616444cbf92..6f3592bfa907b 100644 +--- a/third_party/blink/renderer/core/dom/element_data.cc ++++ b/third_party/blink/renderer/core/dom/element_data.cc +@@ -46,7 +46,8 @@ struct SameSizeAsElementData final + : public GarbageCollected { + unsigned bitfield; + Member willbe_member; +- void* pointers[2]; ++ SpaceSplitString class_names_; ++ void* pointers[1]; + }; + + ASSERT_SIZE(ElementData, SameSizeAsElementData); +diff --git a/third_party/blink/renderer/platform/fonts/shaping/shape_result.cc b/third_party/blink/renderer/platform/fonts/shaping/shape_result.cc +index 98a9f6988ae3d..68b3c922cb362 100644 +--- a/third_party/blink/renderer/platform/fonts/shaping/shape_result.cc ++++ b/third_party/blink/renderer/platform/fonts/shaping/shape_result.cc +@@ -75,7 +75,7 @@ struct SameSizeAsRunInfo { + void* pointers[2]; + unsigned integer; + } glyph_data; +- void* pointer; ++ Member pointer; + Vector vector; + int integers[6]; + }; diff --git a/prepare-ppc64.sh b/prepare-ppc64.sh old mode 100755 new mode 100644 diff --git a/qt6-qtwebengine.spec b/qt6-qtwebengine.spec index 0414d75..9ab6426 100644 --- a/qt6-qtwebengine.spec +++ b/qt6-qtwebengine.spec @@ -38,8 +38,6 @@ # webcore_debug v8base_debug %endif -#global prerelease rc - # spellchecking dictionary directory %global _qtwebengine_dictionaries_dir %{_qt6_datadir}/qtwebengine_dictionaries @@ -48,22 +46,34 @@ # and designer plugins %global __provides_exclude_from ^%{_qt6_plugindir}/.*\\.so$ +#global unstable 1 +%if 0%{?unstable} +%global prerelease rc +%endif + %global examples 1 Summary: Qt6 - QtWebEngine components Name: qt6-qtwebengine -Version: 6.8.2 -Release: 5%{?dist} +Version: 6.9.0%{?unstable:~%{prerelease}} +Release: 0.1%{?dist} # See LICENSE.GPL LICENSE.LGPL LGPL_EXCEPTION.txt, for details # See also http://qt-project.org/doc/qt-5.0/qtdoc/licensing.html # The other licenses are from Chromium and the code it bundles License: (LGPLv2 with exceptions or GPLv3 with exceptions) and BSD and LGPLv2+ and ASL 2.0 and IJG and MIT and GPLv2+ and ISC and OpenSSL and (MPLv1.1 or GPLv2 or LGPLv2) URL: http://www.qt.io +%global majmin %(echo %{version} | cut -d. -f1-2) +%global qt_version %(echo %{version} | cut -d~ -f1) + # cleaned tarball with patent-encumbered codecs removed from the bundled FFmpeg # ./qtwebengine-release.sh -# ./clean_qtwebengine.sh 6.4.1 -Source0: qtwebengine-everywhere-src-%{version}-clean.tar.xz +# ./clean_qtwebengine.sh 6.9.0 +%if 0%{?unstable} +Source0: %{qt_module}-everywhere-src-%{qt_version}-%{prerelease}-clean.tar.xz +%else +Source0: %{qt_module}-everywhere-src-%{version}-clean.tar.xz +%endif # cleanup scripts used above Source2: clean_qtwebengine.sh @@ -91,13 +101,15 @@ Patch50: qtwebengine-fix-build.patch ## Upstream patches: # https://bugreports.qt.io/browse/QTBUG-129985 Patch80: qtwebengine-fix-arm-build.patch -Patch81: qtwebengine-fix-building-system-ffmpeg.patch +Patch81: qtwebengine-webrtc-fix-build-with-pipewire.patch ## Upstreamable patches: ## ppc64le port Patch200: qtwebengine-6.7-ppc64.patch Patch201: qtwebengine-chromium-ppc64.patch +# https://src.fedoraproject.org/rpms/chromium/c/c675db4ac0623d2d97344be0b3b2d9f1ac931446?branch=rawhide +Patch202: chromium-130-size-assertions.patch # handled by qt6-srpm-macros, which defines %%qt6_qtwebengine_arches # FIXME use/update qt6_qtwebengine_arches @@ -384,7 +396,7 @@ Summary: Example files for qt6-qtpdf %{summary}. %prep -%setup -q -n %{qt_module}-everywhere-src-%{version}%{?prerelease:-%{prerelease}} -a20 +%setup -q -n %{qt_module}-everywhere-src-%{qt_version}%{?prerelease:-%{prerelease}} -a20 mv pulse src/3rdparty/chromium/ @@ -400,7 +412,7 @@ popd ## upstream patches %patch -P80 -p1 -b .fix-arm-build -%patch -P81 -p1 -b .fix-building-system-ffmpeg +%patch -P81 -p1 -b .webrtc-fix-build-with-pipewire ## upstreamable patches @@ -408,6 +420,7 @@ popd %patch -P200 -p1 pushd src/3rdparty/chromium %patch -P201 -p1 +%patch -P202 -p1 popd @@ -444,9 +457,10 @@ system_libs=() %if %{?use_system_libxslt} system_libs+=(libxslt) %endif +system_libs+=(ffmpeg) system_libs+=(openh264) -# Use system OpenH264 +# Use system libraries src/3rdparty/chromium/build/linux/unbundle/replace_gn_files.py --system-libraries ${system_libs[@]} # consider doing this as part of the tarball creation step instead? rdieter @@ -636,21 +650,29 @@ done %{_qt6_libdir}/libQt6WebEngineQuick.prl %{_qt6_libdir}/libQt6WebEngineQuickDelegatesQml.prl %{_qt6_libdir}/libQt6WebEngineWidgets.prl +%dir %{_qt6_libdir}/cmake/Qt6Designer +%dir %{_qt6_libdir}/cmake/Qt6WebEngineCore +%dir %{_qt6_libdir}/cmake/Qt6WebEngineCorePrivate +%dir %{_qt6_libdir}/cmake/Qt6WebEngineCoreTools +%dir %{_qt6_libdir}/cmake/Qt6WebEngineQuick +%dir %{_qt6_libdir}/cmake/Qt6WebEngineQuickDelegatesQml +%dir %{_qt6_libdir}/cmake/Qt6WebEngineQuickDelegatesQmlPrivate +%dir %{_qt6_libdir}/cmake/Qt6WebEngineQuickPrivate +%dir %{_qt6_libdir}/cmake/Qt6WebEngineWidgets +%dir %{_qt6_libdir}/cmake/Qt6WebEngineWidgetsPrivate %{_qt6_libdir}/cmake/Qt6/*.cmake %{_qt6_libdir}/cmake/Qt6BuildInternals/StandaloneTests/QtWebEngine* -%{_qt6_libdir}/cmake/Qt6Qml/QmlPlugins/Qt6qtwebengine*.cmake -%dir %{_qt6_libdir}/cmake/Qt6Designer %{_qt6_libdir}/cmake/Qt6Designer/Qt6QWebEngine*.cmake -%dir %{_qt6_libdir}/cmake/Qt6WebEngineQuick -%{_qt6_libdir}/cmake/Qt6WebEngineQuick/*.cmake -%dir %{_qt6_libdir}/cmake/Qt6WebEngineWidgets -%{_qt6_libdir}/cmake/Qt6WebEngineWidgets/*.cmake -%dir %{_qt6_libdir}/cmake/Qt6WebEngineCore +%{_qt6_libdir}/cmake/Qt6Qml/QmlPlugins/Qt6qtwebengine*.cmake %{_qt6_libdir}/cmake/Qt6WebEngineCore/*.cmake -%dir %{_qt6_libdir}/cmake/Qt6WebEngineCoreTools +%{_qt6_libdir}/cmake/Qt6WebEngineCorePrivate/*.cmake %{_qt6_libdir}/cmake/Qt6WebEngineCoreTools/*.cmake -%dir %{_qt6_libdir}/cmake/Qt6WebEngineQuickDelegatesQml +%{_qt6_libdir}/cmake/Qt6WebEngineQuick/*.cmake %{_qt6_libdir}/cmake/Qt6WebEngineQuickDelegatesQml/*.cmake +%{_qt6_libdir}/cmake/Qt6WebEngineQuickDelegatesQmlPrivate/*.cmake +%{_qt6_libdir}/cmake/Qt6WebEngineQuickPrivate/*.cmake +%{_qt6_libdir}/cmake/Qt6WebEngineWidgets/*.cmake +%{_qt6_libdir}/cmake/Qt6WebEngineWidgetsPrivate/*.cmake %{_qt6_libdir}/pkgconfig/Qt6WebEngineCore.pc %{_qt6_libdir}/pkgconfig/Qt6WebEngineQuick.pc %{_qt6_libdir}/pkgconfig/Qt6WebEngineQuickDelegatesQml.pc @@ -690,13 +712,19 @@ done %{_qt6_libdir}/libQt6Pdf.prl %{_qt6_libdir}/libQt6PdfQuick.prl %{_qt6_libdir}/libQt6PdfWidgets.prl -%{_qt6_libdir}/cmake/Qt6Gui/Qt6QPdf*.cmake %dir %{_qt6_libdir}/cmake/Qt6Pdf -%{_qt6_libdir}/cmake/Qt6Pdf/*.cmake +%dir %{_qt6_libdir}/cmake/Qt6PdfPrivate %dir %{_qt6_libdir}/cmake/Qt6PdfQuick -%{_qt6_libdir}/cmake/Qt6PdfQuick/*.cmake +%dir %{_qt6_libdir}/cmake/Qt6PdfQuickPrivate %dir %{_qt6_libdir}/cmake/Qt6PdfWidgets +%dir %{_qt6_libdir}/cmake/Qt6PdfWidgetsPrivate +%{_qt6_libdir}/cmake/Qt6Gui/Qt6QPdf*.cmake +%{_qt6_libdir}/cmake/Qt6Pdf/*.cmake +%{_qt6_libdir}/cmake/Qt6PdfPrivate/*.cmake +%{_qt6_libdir}/cmake/Qt6PdfQuick/*.cmake +%{_qt6_libdir}/cmake/Qt6PdfQuickPrivate/*.cmake %{_qt6_libdir}/cmake/Qt6PdfWidgets/*.cmake +%{_qt6_libdir}/cmake/Qt6PdfWidgetsPrivate/*.cmake %{_qt6_libdir}/cmake/Qt6Qml/QmlPlugins/Qt6Pdf*.cmake %{_qt6_libdir}/pkgconfig/Qt6Pdf.pc %{_qt6_libdir}/pkgconfig/Qt6PdfQuick.pc @@ -709,6 +737,9 @@ done %endif %changelog +* Mon Mar 24 2025 Jan Grulich - 6.9.0-0.1 +- 6.9.0 RC + * Thu Mar 13 2025 Fabio Valentini - 6.8.2-5 - Rebuild for noopenh264 2.6.0 diff --git a/qtwebengine-chromium-ppc64.patch b/qtwebengine-chromium-ppc64.patch index 474ef7c..b9e6eb2 100644 --- a/qtwebengine-chromium-ppc64.patch +++ b/qtwebengine-chromium-ppc64.patch @@ -10,11 +10,11 @@ More investigation required. sandbox/linux/seccomp-bpf/trap.cc | 14 ++++++++++++++ 1 file changed, 14 insertions(+) -Index: chromium-122.0.6261.128/sandbox/linux/seccomp-bpf/trap.cc +Index: chromium-130.0.6723.44/sandbox/linux/seccomp-bpf/trap.cc =================================================================== ---- chromium-122.0.6261.128.orig/sandbox/linux/seccomp-bpf/trap.cc -+++ chromium-122.0.6261.128/sandbox/linux/seccomp-bpf/trap.cc -@@ -231,6 +231,20 @@ void Trap::SigSys(int nr, LinuxSigInfo* +--- chromium-130.0.6723.44.orig/sandbox/linux/seccomp-bpf/trap.cc ++++ chromium-130.0.6723.44/sandbox/linux/seccomp-bpf/trap.cc +@@ -236,6 +236,20 @@ void Trap::SigSys(int nr, LinuxSigInfo* SetIsInSigHandler(); } @@ -44,10 +44,10 @@ Subject: [PATCH 1/1] sandbox: Enable seccomp_bpf for ppc64 sandbox/features.gni | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) -Index: chromium-122.0.6261.128/sandbox/features.gni +Index: chromium-130.0.6723.44/sandbox/features.gni =================================================================== ---- chromium-122.0.6261.128.orig/sandbox/features.gni -+++ chromium-122.0.6261.128/sandbox/features.gni +--- chromium-130.0.6723.44.orig/sandbox/features.gni ++++ chromium-130.0.6723.44/sandbox/features.gni @@ -9,7 +9,8 @@ use_seccomp_bpf = (is_linux || is_chromeos || is_android) && (current_cpu == "x86" || current_cpu == "x64" || @@ -68,10 +68,10 @@ Subject: [PATCH] services/service_manager/sandbox/linux: Fix TCGETS .../sandbox/linux/bpf_renderer_policy_linux.cc | 5 +++++ 1 file changed, 5 insertions(+) -Index: chromium-122.0.6261.128/sandbox/policy/linux/bpf_renderer_policy_linux.cc +Index: chromium-130.0.6723.44/sandbox/policy/linux/bpf_renderer_policy_linux.cc =================================================================== ---- chromium-122.0.6261.128.orig/sandbox/policy/linux/bpf_renderer_policy_linux.cc -+++ chromium-122.0.6261.128/sandbox/policy/linux/bpf_renderer_policy_linux.cc +--- chromium-130.0.6723.44.orig/sandbox/policy/linux/bpf_renderer_policy_linux.cc ++++ chromium-130.0.6723.44/sandbox/policy/linux/bpf_renderer_policy_linux.cc @@ -15,6 +15,11 @@ #include "sandbox/linux/system_headers/linux_syscalls.h" #include "sandbox/policy/linux/sandbox_linux.h" @@ -93,10 +93,10 @@ Subject: [PATCH 1/4] sandbox/linux/bpf_dsl: Update syscall ranges for ppc64 sandbox/linux/bpf_dsl/linux_syscall_ranges.h | 7 +++++++ 1 file changed, 7 insertions(+) -Index: chromium-122.0.6261.128/sandbox/linux/bpf_dsl/linux_syscall_ranges.h +Index: chromium-130.0.6723.44/sandbox/linux/bpf_dsl/linux_syscall_ranges.h =================================================================== ---- chromium-122.0.6261.128.orig/sandbox/linux/bpf_dsl/linux_syscall_ranges.h -+++ chromium-122.0.6261.128/sandbox/linux/bpf_dsl/linux_syscall_ranges.h +--- chromium-130.0.6723.44.orig/sandbox/linux/bpf_dsl/linux_syscall_ranges.h ++++ chromium-130.0.6723.44/sandbox/linux/bpf_dsl/linux_syscall_ranges.h @@ -56,6 +56,13 @@ #define MAX_PUBLIC_SYSCALL __NR_syscalls #define MAX_SYSCALL MAX_PUBLIC_SYSCALL @@ -130,10 +130,10 @@ GNU/Linux environments, but may require expansion elsewhere. create mode 100644 sandbox/linux/system_headers/ppc64_linux_syscalls.h create mode 100644 sandbox/linux/system_headers/ppc64_linux_ucontext.h -Index: chromium-122.0.6261.128/sandbox/linux/BUILD.gn +Index: chromium-130.0.6723.44/sandbox/linux/BUILD.gn =================================================================== ---- chromium-122.0.6261.128.orig/sandbox/linux/BUILD.gn -+++ chromium-122.0.6261.128/sandbox/linux/BUILD.gn +--- chromium-130.0.6723.44.orig/sandbox/linux/BUILD.gn ++++ chromium-130.0.6723.44/sandbox/linux/BUILD.gn @@ -383,6 +383,8 @@ component("sandbox_services") { source_set("sandbox_services_headers") { @@ -143,10 +143,10 @@ Index: chromium-122.0.6261.128/sandbox/linux/BUILD.gn "system_headers/arm64_linux_syscalls.h", "system_headers/arm_linux_syscalls.h", "system_headers/arm_linux_ucontext.h", -Index: chromium-122.0.6261.128/sandbox/linux/system_headers/linux_syscalls.h +Index: chromium-130.0.6723.44/sandbox/linux/system_headers/linux_syscalls.h =================================================================== ---- chromium-122.0.6261.128.orig/sandbox/linux/system_headers/linux_syscalls.h -+++ chromium-122.0.6261.128/sandbox/linux/system_headers/linux_syscalls.h +--- chromium-130.0.6723.44.orig/sandbox/linux/system_headers/linux_syscalls.h ++++ chromium-130.0.6723.44/sandbox/linux/system_headers/linux_syscalls.h @@ -35,5 +35,9 @@ #include "sandbox/linux/system_headers/arm64_linux_syscalls.h" #endif @@ -157,10 +157,10 @@ Index: chromium-122.0.6261.128/sandbox/linux/system_headers/linux_syscalls.h + #endif // SANDBOX_LINUX_SYSTEM_HEADERS_LINUX_SYSCALLS_H_ -Index: chromium-122.0.6261.128/sandbox/linux/system_headers/ppc64_linux_syscalls.h +Index: chromium-130.0.6723.44/sandbox/linux/system_headers/ppc64_linux_syscalls.h =================================================================== --- /dev/null -+++ chromium-122.0.6261.128/sandbox/linux/system_headers/ppc64_linux_syscalls.h ++++ chromium-130.0.6723.44/sandbox/linux/system_headers/ppc64_linux_syscalls.h @@ -0,0 +1,12 @@ +// Copyright 2014 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be @@ -174,10 +174,10 @@ Index: chromium-122.0.6261.128/sandbox/linux/system_headers/ppc64_linux_syscalls +//TODO: is it necessary to redefine syscall numbers for PPC64? + +#endif // SANDBOX_LINUX_SYSTEM_HEADERS_PPC64_LINUX_SYSCALLS_H_ -Index: chromium-122.0.6261.128/sandbox/linux/system_headers/ppc64_linux_ucontext.h +Index: chromium-130.0.6723.44/sandbox/linux/system_headers/ppc64_linux_ucontext.h =================================================================== --- /dev/null -+++ chromium-122.0.6261.128/sandbox/linux/system_headers/ppc64_linux_ucontext.h ++++ chromium-130.0.6723.44/sandbox/linux/system_headers/ppc64_linux_ucontext.h @@ -0,0 +1,12 @@ +// Copyright 2014 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be @@ -200,10 +200,10 @@ Subject: [PATCH] sandbox/linux: Update IsSyscallAllowed in broker_process.cc sandbox/linux/syscall_broker/broker_process.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) -Index: chromium-122.0.6261.128/sandbox/linux/syscall_broker/broker_process.cc +Index: chromium-130.0.6723.44/sandbox/linux/syscall_broker/broker_process.cc =================================================================== ---- chromium-122.0.6261.128.orig/sandbox/linux/syscall_broker/broker_process.cc -+++ chromium-122.0.6261.128/sandbox/linux/syscall_broker/broker_process.cc +--- chromium-130.0.6723.44.orig/sandbox/linux/syscall_broker/broker_process.cc ++++ chromium-130.0.6723.44/sandbox/linux/syscall_broker/broker_process.cc @@ -169,7 +169,7 @@ bool BrokerProcess::IsSyscallBrokerable( #if defined(__NR_fstatat64) case __NR_fstatat64: @@ -227,10 +227,10 @@ Subject: [PATCH] sandbox/linux: Update syscall helpers/lists for ppc64 sandbox/linux/services/syscall_wrappers.cc | 2 +- 6 files changed, 73 insertions(+), 55 deletions(-) -Index: chromium-122.0.6261.128/sandbox/linux/seccomp-bpf-helpers/baseline_policy.cc +Index: chromium-130.0.6723.44/sandbox/linux/seccomp-bpf-helpers/baseline_policy.cc =================================================================== ---- chromium-122.0.6261.128.orig/sandbox/linux/seccomp-bpf-helpers/baseline_policy.cc -+++ chromium-122.0.6261.128/sandbox/linux/seccomp-bpf-helpers/baseline_policy.cc +--- chromium-130.0.6723.44.orig/sandbox/linux/seccomp-bpf-helpers/baseline_policy.cc ++++ chromium-130.0.6723.44/sandbox/linux/seccomp-bpf-helpers/baseline_policy.cc @@ -90,7 +90,8 @@ bool IsBaselinePolicyWatched(int sysno) SyscallSets::IsPrctl(sysno) || SyscallSets::IsProcessGroupOrSession(sysno) || @@ -269,10 +269,10 @@ Index: chromium-122.0.6261.128/sandbox/linux/seccomp-bpf-helpers/baseline_policy if (SyscallSets::IsSocketCall(sysno)) return RestrictSocketcallCommand(); #endif -Index: chromium-122.0.6261.128/sandbox/linux/seccomp-bpf-helpers/syscall_parameters_restrictions.cc +Index: chromium-130.0.6723.44/sandbox/linux/seccomp-bpf-helpers/syscall_parameters_restrictions.cc =================================================================== ---- chromium-122.0.6261.128.orig/sandbox/linux/seccomp-bpf-helpers/syscall_parameters_restrictions.cc -+++ chromium-122.0.6261.128/sandbox/linux/seccomp-bpf-helpers/syscall_parameters_restrictions.cc +--- chromium-130.0.6723.44.orig/sandbox/linux/seccomp-bpf-helpers/syscall_parameters_restrictions.cc ++++ chromium-130.0.6723.44/sandbox/linux/seccomp-bpf-helpers/syscall_parameters_restrictions.cc @@ -36,7 +36,7 @@ #include "sandbox/linux/system_headers/linux_time.h" @@ -361,10 +361,10 @@ Index: chromium-122.0.6261.128/sandbox/linux/seccomp-bpf-helpers/syscall_paramet PTRACE_GETREGS, PTRACE_GETFPREGS, PTRACE_GET_THREAD_AREA, PTRACE_GETREGSET, #endif -Index: chromium-122.0.6261.128/sandbox/linux/seccomp-bpf-helpers/syscall_parameters_restrictions.h +Index: chromium-130.0.6723.44/sandbox/linux/seccomp-bpf-helpers/syscall_parameters_restrictions.h =================================================================== ---- chromium-122.0.6261.128.orig/sandbox/linux/seccomp-bpf-helpers/syscall_parameters_restrictions.h -+++ chromium-122.0.6261.128/sandbox/linux/seccomp-bpf-helpers/syscall_parameters_restrictions.h +--- chromium-130.0.6723.44.orig/sandbox/linux/seccomp-bpf-helpers/syscall_parameters_restrictions.h ++++ chromium-130.0.6723.44/sandbox/linux/seccomp-bpf-helpers/syscall_parameters_restrictions.h @@ -52,7 +52,7 @@ SANDBOX_EXPORT bpf_dsl::ResultExpr Restr // O_NONBLOCK | O_SYNC | O_LARGEFILE | O_CLOEXEC | O_NOATIME. SANDBOX_EXPORT bpf_dsl::ResultExpr RestrictFcntlCommands(); @@ -374,10 +374,10 @@ Index: chromium-122.0.6261.128/sandbox/linux/seccomp-bpf-helpers/syscall_paramet // Restrict socketcall(2) to only allow socketpair(2), send(2), recv(2), // sendto(2), recvfrom(2), shutdown(2), sendmsg(2) and recvmsg(2). SANDBOX_EXPORT bpf_dsl::ResultExpr RestrictSocketcallCommand(); -Index: chromium-122.0.6261.128/sandbox/linux/seccomp-bpf-helpers/syscall_sets.cc +Index: chromium-130.0.6723.44/sandbox/linux/seccomp-bpf-helpers/syscall_sets.cc =================================================================== ---- chromium-122.0.6261.128.orig/sandbox/linux/seccomp-bpf-helpers/syscall_sets.cc -+++ chromium-122.0.6261.128/sandbox/linux/seccomp-bpf-helpers/syscall_sets.cc +--- chromium-130.0.6723.44.orig/sandbox/linux/seccomp-bpf-helpers/syscall_sets.cc ++++ chromium-130.0.6723.44/sandbox/linux/seccomp-bpf-helpers/syscall_sets.cc @@ -29,7 +29,8 @@ bool SyscallSets::IsAllowedGettime(int s switch (sysno) { case __NR_gettimeofday: @@ -572,7 +572,7 @@ Index: chromium-122.0.6261.128/sandbox/linux/seccomp-bpf-helpers/syscall_sets.cc bool SyscallSets::IsNetworkSocketInformation(int sysno) { switch (sysno) { case __NR_getpeername: -@@ -553,7 +567,7 @@ bool SyscallSets::IsAllowedAddressSpaceA +@@ -554,7 +568,7 @@ bool SyscallSets::IsAllowedAddressSpaceA case __NR_mincore: case __NR_mlockall: #if defined(__i386__) || defined(__x86_64__) || defined(__mips__) || \ @@ -581,7 +581,7 @@ Index: chromium-122.0.6261.128/sandbox/linux/seccomp-bpf-helpers/syscall_sets.cc case __NR_mmap: #endif #if defined(__i386__) || defined(__arm__) || \ -@@ -583,7 +597,8 @@ bool SyscallSets::IsAllowedGeneralIo(int +@@ -584,7 +598,8 @@ bool SyscallSets::IsAllowedGeneralIo(int switch (sysno) { case __NR_lseek: #if defined(__i386__) || defined(__arm__) || \ @@ -591,7 +591,7 @@ Index: chromium-122.0.6261.128/sandbox/linux/seccomp-bpf-helpers/syscall_sets.cc case __NR__llseek: #endif #if !defined(__aarch64__) -@@ -603,26 +618,28 @@ bool SyscallSets::IsAllowedGeneralIo(int +@@ -604,26 +619,28 @@ bool SyscallSets::IsAllowedGeneralIo(int case __NR_readv: case __NR_pread64: #if defined(__arm__) || \ @@ -626,7 +626,7 @@ Index: chromium-122.0.6261.128/sandbox/linux/seccomp-bpf-helpers/syscall_sets.cc case __NR_sendmsg: // Could specify destination. case __NR_sendto: // Could specify destination. #endif -@@ -678,7 +695,8 @@ bool SyscallSets::IsAllowedBasicSchedule +@@ -679,7 +696,8 @@ bool SyscallSets::IsAllowedBasicSchedule return true; case __NR_getpriority: #if defined(__i386__) || defined(__arm__) || \ @@ -636,7 +636,7 @@ Index: chromium-122.0.6261.128/sandbox/linux/seccomp-bpf-helpers/syscall_sets.cc case __NR_nice: #endif case __NR_setpriority: -@@ -690,7 +708,8 @@ bool SyscallSets::IsAllowedBasicSchedule +@@ -691,7 +709,8 @@ bool SyscallSets::IsAllowedBasicSchedule bool SyscallSets::IsAdminOperation(int sysno) { switch (sysno) { #if defined(__i386__) || defined(__arm__) || \ @@ -646,7 +646,7 @@ Index: chromium-122.0.6261.128/sandbox/linux/seccomp-bpf-helpers/syscall_sets.cc case __NR_bdflush: #endif case __NR_kexec_load: -@@ -706,7 +725,8 @@ bool SyscallSets::IsAdminOperation(int s +@@ -707,7 +726,8 @@ bool SyscallSets::IsAdminOperation(int s bool SyscallSets::IsKernelModule(int sysno) { switch (sysno) { @@ -656,7 +656,7 @@ Index: chromium-122.0.6261.128/sandbox/linux/seccomp-bpf-helpers/syscall_sets.cc case __NR_create_module: case __NR_get_kernel_syms: // Should ENOSYS. case __NR_query_module: -@@ -739,7 +759,8 @@ bool SyscallSets::IsFsControl(int sysno) +@@ -740,7 +760,8 @@ bool SyscallSets::IsFsControl(int sysno) case __NR_swapoff: case __NR_swapon: #if defined(__i386__) || \ @@ -666,7 +666,7 @@ Index: chromium-122.0.6261.128/sandbox/linux/seccomp-bpf-helpers/syscall_sets.cc case __NR_umount: #endif case __NR_umount2: -@@ -755,7 +776,7 @@ bool SyscallSets::IsNuma(int sysno) { +@@ -756,7 +777,7 @@ bool SyscallSets::IsNuma(int sysno) { case __NR_getcpu: case __NR_mbind: #if defined(__i386__) || defined(__x86_64__) || defined(__mips__) || \ @@ -675,7 +675,7 @@ Index: chromium-122.0.6261.128/sandbox/linux/seccomp-bpf-helpers/syscall_sets.cc case __NR_migrate_pages: #endif case __NR_move_pages: -@@ -790,14 +811,15 @@ bool SyscallSets::IsGlobalProcessEnviron +@@ -791,14 +812,15 @@ bool SyscallSets::IsGlobalProcessEnviron switch (sysno) { case __NR_acct: // Privileged. #if defined(__i386__) || defined(__x86_64__) || defined(__mips__) || \ @@ -694,7 +694,7 @@ Index: chromium-122.0.6261.128/sandbox/linux/seccomp-bpf-helpers/syscall_sets.cc case __NR_ulimit: #endif case __NR_getrusage: -@@ -831,7 +853,7 @@ bool SyscallSets::IsGlobalSystemStatus(i +@@ -832,7 +854,7 @@ bool SyscallSets::IsGlobalSystemStatus(i #endif case __NR_sysinfo: case __NR_uname: @@ -703,7 +703,7 @@ Index: chromium-122.0.6261.128/sandbox/linux/seccomp-bpf-helpers/syscall_sets.cc case __NR_olduname: case __NR_oldolduname: #endif -@@ -915,7 +937,8 @@ bool SyscallSets::IsSystemVSemaphores(in +@@ -916,7 +938,8 @@ bool SyscallSets::IsSystemVSemaphores(in #if defined(__i386__) || defined(__x86_64__) || defined(__arm__) || \ defined(__aarch64__) || \ @@ -713,7 +713,7 @@ Index: chromium-122.0.6261.128/sandbox/linux/seccomp-bpf-helpers/syscall_sets.cc // These give a lot of ambient authority and bypass the setuid sandbox. bool SyscallSets::IsSystemVSharedMemory(int sysno) { switch (sysno) { -@@ -946,7 +969,8 @@ bool SyscallSets::IsSystemVMessageQueue( +@@ -947,7 +970,8 @@ bool SyscallSets::IsSystemVMessageQueue( #endif #if defined(__i386__) || \ @@ -723,7 +723,7 @@ Index: chromium-122.0.6261.128/sandbox/linux/seccomp-bpf-helpers/syscall_sets.cc // Big system V multiplexing system call. bool SyscallSets::IsSystemVIpc(int sysno) { switch (sysno) { -@@ -966,7 +990,8 @@ bool SyscallSets::IsAnySystemV(int sysno +@@ -967,7 +991,8 @@ bool SyscallSets::IsAnySystemV(int sysno return IsSystemVMessageQueue(sysno) || IsSystemVSemaphores(sysno) || IsSystemVSharedMemory(sysno); #elif defined(__i386__) || \ @@ -733,7 +733,7 @@ Index: chromium-122.0.6261.128/sandbox/linux/seccomp-bpf-helpers/syscall_sets.cc return IsSystemVIpc(sysno); #endif } -@@ -1023,7 +1048,8 @@ bool SyscallSets::IsFaNotify(int sysno) +@@ -1024,7 +1049,8 @@ bool SyscallSets::IsFaNotify(int sysno) bool SyscallSets::IsTimer(int sysno) { switch (sysno) { case __NR_getitimer: @@ -743,7 +743,7 @@ Index: chromium-122.0.6261.128/sandbox/linux/seccomp-bpf-helpers/syscall_sets.cc case __NR_alarm: #endif case __NR_setitimer: -@@ -1102,18 +1128,22 @@ bool SyscallSets::IsMisc(int sysno) { +@@ -1103,18 +1129,22 @@ bool SyscallSets::IsMisc(int sysno) { case __NR_syncfs: case __NR_vhangup: // The system calls below are not implemented. @@ -770,7 +770,7 @@ Index: chromium-122.0.6261.128/sandbox/linux/seccomp-bpf-helpers/syscall_sets.cc case __NR_gtty: case __NR_idle: case __NR_lock: -@@ -1121,20 +1151,22 @@ bool SyscallSets::IsMisc(int sysno) { +@@ -1122,20 +1152,22 @@ bool SyscallSets::IsMisc(int sysno) { case __NR_prof: case __NR_profil: #endif @@ -797,10 +797,10 @@ Index: chromium-122.0.6261.128/sandbox/linux/seccomp-bpf-helpers/syscall_sets.cc case __NR_vserver: #endif return true; -Index: chromium-122.0.6261.128/sandbox/linux/seccomp-bpf-helpers/syscall_sets.h +Index: chromium-130.0.6723.44/sandbox/linux/seccomp-bpf-helpers/syscall_sets.h =================================================================== ---- chromium-122.0.6261.128.orig/sandbox/linux/seccomp-bpf-helpers/syscall_sets.h -+++ chromium-122.0.6261.128/sandbox/linux/seccomp-bpf-helpers/syscall_sets.h +--- chromium-130.0.6723.44.orig/sandbox/linux/seccomp-bpf-helpers/syscall_sets.h ++++ chromium-130.0.6723.44/sandbox/linux/seccomp-bpf-helpers/syscall_sets.h @@ -46,13 +46,14 @@ class SANDBOX_EXPORT SyscallSets { static bool IsDeniedGetOrModifySocket(int sysno); @@ -838,10 +838,10 @@ Index: chromium-122.0.6261.128/sandbox/linux/seccomp-bpf-helpers/syscall_sets.h // Big system V multiplexing system call. static bool IsSystemVIpc(int sysno); #endif -Index: chromium-122.0.6261.128/sandbox/linux/services/syscall_wrappers.cc +Index: chromium-130.0.6723.44/sandbox/linux/services/syscall_wrappers.cc =================================================================== ---- chromium-122.0.6261.128.orig/sandbox/linux/services/syscall_wrappers.cc -+++ chromium-122.0.6261.128/sandbox/linux/services/syscall_wrappers.cc +--- chromium-130.0.6723.44.orig/sandbox/linux/services/syscall_wrappers.cc ++++ chromium-130.0.6723.44/sandbox/linux/services/syscall_wrappers.cc @@ -61,7 +61,7 @@ long sys_clone(unsigned long flags, #if defined(ARCH_CPU_X86_64) return syscall(__NR_clone, flags, child_stack, ptid, ctid, tls); @@ -861,10 +861,10 @@ Subject: [PATCH 1/4] sandbox/linux/bpf_dsl: Modify seccomp_macros to add sandbox/linux/bpf_dsl/seccomp_macros.h | 43 ++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) -Index: chromium-122.0.6261.128/sandbox/linux/bpf_dsl/seccomp_macros.h +Index: chromium-130.0.6723.44/sandbox/linux/bpf_dsl/seccomp_macros.h =================================================================== ---- chromium-122.0.6261.128.orig/sandbox/linux/bpf_dsl/seccomp_macros.h -+++ chromium-122.0.6261.128/sandbox/linux/bpf_dsl/seccomp_macros.h +--- chromium-130.0.6723.44.orig/sandbox/linux/bpf_dsl/seccomp_macros.h ++++ chromium-130.0.6723.44/sandbox/linux/bpf_dsl/seccomp_macros.h @@ -14,6 +14,9 @@ #if defined(__mips__) // sys/user.h in eglibc misses size_t definition @@ -937,10 +937,10 @@ Subject: [PATCH 3/4] sandbox/linux/system_headers: Update linux seccomp header sandbox/linux/system_headers/linux_seccomp.h | 10 ++++++++++ 1 file changed, 10 insertions(+) -Index: chromium-122.0.6261.128/sandbox/linux/system_headers/linux_seccomp.h +Index: chromium-130.0.6723.44/sandbox/linux/system_headers/linux_seccomp.h =================================================================== ---- chromium-122.0.6261.128.orig/sandbox/linux/system_headers/linux_seccomp.h -+++ chromium-122.0.6261.128/sandbox/linux/system_headers/linux_seccomp.h +--- chromium-130.0.6723.44.orig/sandbox/linux/system_headers/linux_seccomp.h ++++ chromium-130.0.6723.44/sandbox/linux/system_headers/linux_seccomp.h @@ -38,6 +38,9 @@ #ifndef EM_AARCH64 #define EM_AARCH64 183 @@ -974,10 +974,10 @@ Subject: [PATCH 4/4] sandbox/linux/system_headers: Update linux signal header sandbox/linux/system_headers/linux_signal.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) -Index: chromium-122.0.6261.128/sandbox/linux/system_headers/linux_signal.h +Index: chromium-130.0.6723.44/sandbox/linux/system_headers/linux_signal.h =================================================================== ---- chromium-122.0.6261.128.orig/sandbox/linux/system_headers/linux_signal.h -+++ chromium-122.0.6261.128/sandbox/linux/system_headers/linux_signal.h +--- chromium-130.0.6723.44.orig/sandbox/linux/system_headers/linux_signal.h ++++ chromium-130.0.6723.44/sandbox/linux/system_headers/linux_signal.h @@ -13,7 +13,7 @@ // (not undefined, but defined different values and in different memory // layouts). So, fill the gap here. @@ -996,11 +996,11 @@ Subject: [PATCH] sandbox/linux/seccomp-bpf: Add ppc64 syscall stub sandbox/linux/seccomp-bpf/syscall.cc | 53 ++++++++++++++++++++++++++-- 1 file changed, 51 insertions(+), 2 deletions(-) -Index: chromium-122.0.6261.128/sandbox/linux/seccomp-bpf/syscall.cc +Index: chromium-130.0.6723.44/sandbox/linux/seccomp-bpf/syscall.cc =================================================================== ---- chromium-122.0.6261.128.orig/sandbox/linux/seccomp-bpf/syscall.cc -+++ chromium-122.0.6261.128/sandbox/linux/seccomp-bpf/syscall.cc -@@ -18,7 +18,7 @@ namespace sandbox { +--- chromium-130.0.6723.44.orig/sandbox/linux/seccomp-bpf/syscall.cc ++++ chromium-130.0.6723.44/sandbox/linux/seccomp-bpf/syscall.cc +@@ -23,7 +23,7 @@ namespace sandbox { namespace { #if defined(ARCH_CPU_X86_FAMILY) || defined(ARCH_CPU_ARM_FAMILY) || \ @@ -1009,7 +1009,7 @@ Index: chromium-122.0.6261.128/sandbox/linux/seccomp-bpf/syscall.cc // Number that's not currently used by any Linux kernel ABIs. const int kInvalidSyscallNumber = 0x351d3; #else -@@ -308,10 +308,54 @@ asm(// We need to be able to tell the ke +@@ -313,10 +313,54 @@ asm(// We need to be able to tell the ke "2:ret\n" ".cfi_endproc\n" ".size SyscallAsm, .-SyscallAsm\n" @@ -1065,7 +1065,7 @@ Index: chromium-122.0.6261.128/sandbox/linux/seccomp-bpf/syscall.cc extern "C" { intptr_t SyscallAsm(intptr_t nr, const intptr_t args[6]); } -@@ -425,6 +469,8 @@ intptr_t Syscall::Call(int nr, +@@ -430,6 +474,8 @@ intptr_t Syscall::Call(int nr, ret = inout; } @@ -1074,7 +1074,7 @@ Index: chromium-122.0.6261.128/sandbox/linux/seccomp-bpf/syscall.cc #else #error "Unimplemented architecture" #endif -@@ -441,8 +487,18 @@ void Syscall::PutValueInUcontext(intptr_ +@@ -446,8 +492,18 @@ void Syscall::PutValueInUcontext(intptr_ // needs to be changed back. ret_val = -ret_val; SECCOMP_PARM4(ctx) = 1; @@ -1103,11 +1103,11 @@ Subject: [PATCH 5/6] sandbox/linux: update unit test for ppc64 sandbox/linux/seccomp-bpf-helpers/baseline_policy_unittest.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) -Index: chromium-122.0.6261.128/sandbox/linux/seccomp-bpf-helpers/baseline_policy_unittest.cc +Index: chromium-130.0.6723.44/sandbox/linux/seccomp-bpf-helpers/baseline_policy_unittest.cc =================================================================== ---- chromium-122.0.6261.128.orig/sandbox/linux/seccomp-bpf-helpers/baseline_policy_unittest.cc -+++ chromium-122.0.6261.128/sandbox/linux/seccomp-bpf-helpers/baseline_policy_unittest.cc -@@ -345,8 +345,10 @@ TEST_BASELINE_SIGSYS(__NR_timer_create) +--- chromium-130.0.6723.44.orig/sandbox/linux/seccomp-bpf-helpers/baseline_policy_unittest.cc ++++ chromium-130.0.6723.44/sandbox/linux/seccomp-bpf-helpers/baseline_policy_unittest.cc +@@ -350,8 +350,10 @@ TEST_BASELINE_SIGSYS(__NR_timer_create) #if !defined(__aarch64__) TEST_BASELINE_SIGSYS(__NR_inotify_init) @@ -1118,10 +1118,10 @@ Index: chromium-122.0.6261.128/sandbox/linux/seccomp-bpf-helpers/baseline_policy #if defined(LIBC_GLIBC) && !BUILDFLAG(IS_CHROMEOS_ASH) BPF_TEST_C(BaselinePolicy, FutexEINVAL, BaselinePolicy) { -Index: chromium-122.0.6261.128/sandbox/linux/seccomp-bpf-helpers/syscall_sets.cc +Index: chromium-130.0.6723.44/sandbox/linux/seccomp-bpf-helpers/syscall_sets.cc =================================================================== ---- chromium-122.0.6261.128.orig/sandbox/linux/seccomp-bpf-helpers/syscall_sets.cc -+++ chromium-122.0.6261.128/sandbox/linux/seccomp-bpf-helpers/syscall_sets.cc +--- chromium-130.0.6723.44.orig/sandbox/linux/seccomp-bpf-helpers/syscall_sets.cc ++++ chromium-130.0.6723.44/sandbox/linux/seccomp-bpf-helpers/syscall_sets.cc @@ -374,7 +374,9 @@ bool SyscallSets::IsAllowedSignalHandlin #if defined(__i386__) || defined(__arm__) || \ (defined(ARCH_CPU_MIPS_FAMILY) && defined(ARCH_CPU_32_BITS)) || \ @@ -1132,10 +1132,10 @@ Index: chromium-122.0.6261.128/sandbox/linux/seccomp-bpf-helpers/syscall_sets.cc case __NR_sigaction: case __NR_sigprocmask: case __NR_sigreturn: -Index: chromium-122.0.6261.128/sandbox/linux/system_headers/linux_stat.h +Index: chromium-130.0.6723.44/sandbox/linux/system_headers/linux_stat.h =================================================================== ---- chromium-122.0.6261.128.orig/sandbox/linux/system_headers/linux_stat.h -+++ chromium-122.0.6261.128/sandbox/linux/system_headers/linux_stat.h +--- chromium-130.0.6723.44.orig/sandbox/linux/system_headers/linux_stat.h ++++ chromium-130.0.6723.44/sandbox/linux/system_headers/linux_stat.h @@ -173,6 +173,28 @@ struct kernel_stat { unsigned int __unused4; unsigned int __unused5; @@ -1165,23 +1165,23 @@ Index: chromium-122.0.6261.128/sandbox/linux/system_headers/linux_stat.h #endif #if !defined(AT_EMPTY_PATH) -Index: chromium-122.0.6261.128/sandbox/linux/services/credentials.cc +Index: chromium-130.0.6723.44/sandbox/linux/services/credentials.cc =================================================================== ---- chromium-122.0.6261.128.orig/sandbox/linux/services/credentials.cc -+++ chromium-122.0.6261.128/sandbox/linux/services/credentials.cc -@@ -80,7 +80,7 @@ bool ChrootToSafeEmptyDir() { - pid_t pid = -1; - alignas(16) char stack_buf[PTHREAD_STACK_MIN]; +--- chromium-130.0.6723.44.orig/sandbox/linux/services/credentials.cc ++++ chromium-130.0.6723.44/sandbox/linux/services/credentials.cc +@@ -87,7 +87,7 @@ bool ChrootToSafeEmptyDir() { + alignas(16) char stack_buf[PTHREAD_STACK_MIN_CONST]; + #if defined(ARCH_CPU_X86_FAMILY) || defined(ARCH_CPU_ARM_FAMILY) || \ - defined(ARCH_CPU_MIPS_FAMILY) + defined(ARCH_CPU_MIPS_FAMILY) || defined(ARCH_CPU_PPC64_FAMILY) // The stack grows downward. void* stack = stack_buf + sizeof(stack_buf); #else -Index: chromium-122.0.6261.128/sandbox/policy/linux/bpf_utility_policy_linux.cc +Index: chromium-130.0.6723.44/sandbox/policy/linux/bpf_utility_policy_linux.cc =================================================================== ---- chromium-122.0.6261.128.orig/sandbox/policy/linux/bpf_utility_policy_linux.cc -+++ chromium-122.0.6261.128/sandbox/policy/linux/bpf_utility_policy_linux.cc +--- chromium-130.0.6723.44.orig/sandbox/policy/linux/bpf_utility_policy_linux.cc ++++ chromium-130.0.6723.44/sandbox/policy/linux/bpf_utility_policy_linux.cc @@ -34,7 +34,7 @@ ResultExpr UtilityProcessPolicy::Evaluat case __NR_fdatasync: case __NR_fsync: @@ -1191,10 +1191,10 @@ Index: chromium-122.0.6261.128/sandbox/policy/linux/bpf_utility_policy_linux.cc case __NR_getrlimit: #endif #if defined(__i386__) || defined(__arm__) -Index: chromium-122.0.6261.128/sandbox/policy/linux/bpf_renderer_policy_linux.cc +Index: chromium-130.0.6723.44/sandbox/policy/linux/bpf_renderer_policy_linux.cc =================================================================== ---- chromium-122.0.6261.128.orig/sandbox/policy/linux/bpf_renderer_policy_linux.cc -+++ chromium-122.0.6261.128/sandbox/policy/linux/bpf_renderer_policy_linux.cc +--- chromium-130.0.6723.44.orig/sandbox/policy/linux/bpf_renderer_policy_linux.cc ++++ chromium-130.0.6723.44/sandbox/policy/linux/bpf_renderer_policy_linux.cc @@ -87,7 +87,7 @@ ResultExpr RendererProcessPolicy::Evalua case __NR_ftruncate64: #endif @@ -1204,10 +1204,10 @@ Index: chromium-122.0.6261.128/sandbox/policy/linux/bpf_renderer_policy_linux.cc case __NR_getrlimit: case __NR_setrlimit: // We allow setrlimit to dynamically adjust the address space limit as -Index: chromium-122.0.6261.128/sandbox/linux/bpf_dsl/linux_syscall_ranges.h +Index: chromium-130.0.6723.44/sandbox/linux/bpf_dsl/linux_syscall_ranges.h =================================================================== ---- chromium-122.0.6261.128.orig/sandbox/linux/bpf_dsl/linux_syscall_ranges.h -+++ chromium-122.0.6261.128/sandbox/linux/bpf_dsl/linux_syscall_ranges.h +--- chromium-130.0.6723.44.orig/sandbox/linux/bpf_dsl/linux_syscall_ranges.h ++++ chromium-130.0.6723.44/sandbox/linux/bpf_dsl/linux_syscall_ranges.h @@ -58,9 +58,9 @@ #elif defined(__powerpc64__) @@ -1220,38 +1220,37 @@ Index: chromium-122.0.6261.128/sandbox/linux/bpf_dsl/linux_syscall_ranges.h #define MAX_SYSCALL MAX_PUBLIC_SYSCALL #else -Index: chromium-122.0.6261.128/sandbox/linux/services/credentials.cc +Index: chromium-130.0.6723.44/sandbox/linux/services/credentials.cc =================================================================== ---- chromium-122.0.6261.128.orig/sandbox/linux/services/credentials.cc -+++ chromium-122.0.6261.128/sandbox/linux/services/credentials.cc -@@ -89,7 +89,9 @@ bool ChrootToSafeEmptyDir() { +--- chromium-130.0.6723.44.orig/sandbox/linux/services/credentials.cc ++++ chromium-130.0.6723.44/sandbox/linux/services/credentials.cc +@@ -96,7 +96,8 @@ bool ChrootToSafeEmptyDir() { int clone_flags = CLONE_FS | LINUX_SIGCHLD; void* tls = nullptr; -#if (defined(ARCH_CPU_X86_64) || defined(ARCH_CPU_ARM_FAMILY)) && \ -+// RAJA this might be it... +#if (defined(ARCH_CPU_X86_64) || defined(ARCH_CPU_ARM_FAMILY) || \ + defined(ARCH_CPU_PPC64_FAMILY)) && \ !defined(MEMORY_SANITIZER) // Use CLONE_VM | CLONE_VFORK as an optimization to avoid copying page tables. // Since clone writes to the new child's TLS before returning, we must set a -@@ -97,6 +99,11 @@ bool ChrootToSafeEmptyDir() { +@@ -104,6 +105,11 @@ bool ChrootToSafeEmptyDir() { // glibc performs syscalls by calling a function pointer in TLS, so we do not // attempt this optimization. - // TODO(crbug.com/1247458) Broken in MSan builds after LLVM f1bb30a4956f. + // TODO(crbug.com/40196869) Broken in MSan builds after LLVM f1bb30a4956f. + // + // NOTE: Without CLONE_VM, fontconfig will attempt to reload configuration + // in every thread. Since the rendered threads are sandboxed without + // filesystem access (e.g. to /etc/fonts/fonts.conf) this will cause font -+ // configuraiton loading failures and no fonts will be displayed! ++ // configuration loading failures and no fonts will be displayed! clone_flags |= CLONE_VM | CLONE_VFORK | CLONE_SETTLS; - // PTHREAD_STACK_MIN can be dynamic in glibc2.34+, so it is not possible to -Index: chromium-122.0.6261.128/sandbox/linux/seccomp-bpf-helpers/sigsys_handlers.cc + char tls_buf[PTHREAD_STACK_MIN_CONST] = {0}; +Index: chromium-130.0.6723.44/sandbox/linux/seccomp-bpf-helpers/sigsys_handlers.cc =================================================================== ---- chromium-122.0.6261.128.orig/sandbox/linux/seccomp-bpf-helpers/sigsys_handlers.cc -+++ chromium-122.0.6261.128/sandbox/linux/seccomp-bpf-helpers/sigsys_handlers.cc -@@ -357,7 +357,16 @@ intptr_t SIGSYSFstatatHandler(const stru +--- chromium-130.0.6723.44.orig/sandbox/linux/seccomp-bpf-helpers/sigsys_handlers.cc ++++ chromium-130.0.6723.44/sandbox/linux/seccomp-bpf-helpers/sigsys_handlers.cc +@@ -362,7 +362,16 @@ intptr_t SIGSYSFstatatHandler(const stru if (args.nr == __NR_fstatat_default) { if (*reinterpret_cast(args.args[1]) == '\0' && args.args[3] == static_cast(AT_EMPTY_PATH)) { @@ -1269,10 +1268,10 @@ Index: chromium-122.0.6261.128/sandbox/linux/seccomp-bpf-helpers/sigsys_handlers reinterpret_cast(args.args[2])); } return -reinterpret_cast(fs_denied_errno); -Index: chromium-122.0.6261.128/third_party/angle/src/libANGLE/Constants.h +Index: chromium-130.0.6723.44/third_party/angle/src/libANGLE/Constants.h =================================================================== ---- chromium-122.0.6261.128.orig/third_party/angle/src/libANGLE/Constants.h -+++ chromium-122.0.6261.128/third_party/angle/src/libANGLE/Constants.h +--- chromium-130.0.6723.44.orig/third_party/angle/src/libANGLE/Constants.h ++++ chromium-130.0.6723.44/third_party/angle/src/libANGLE/Constants.h @@ -9,6 +9,7 @@ #ifndef LIBANGLE_CONSTANTS_H_ #define LIBANGLE_CONSTANTS_H_ @@ -1281,52 +1280,10 @@ Index: chromium-122.0.6261.128/third_party/angle/src/libANGLE/Constants.h #include "common/platform.h" #include -Index: chromium-122.0.6261.128/third_party/boringssl/src/cmake/perlasm.cmake +Index: chromium-130.0.6723.44/third_party/boringssl/src/crypto/abi_self_test.cc =================================================================== ---- chromium-122.0.6261.128.orig/third_party/boringssl/src/cmake/perlasm.cmake -+++ chromium-122.0.6261.128/third_party/boringssl/src/cmake/perlasm.cmake -@@ -17,6 +17,7 @@ function(add_perlasm_target dest src) - DEPENDS - ${src} - ${PROJECT_SOURCE_DIR}/crypto/perlasm/arm-xlate.pl -+ ${PROJECT_SOURCE_DIR}/crypto/perlasm/ppc-xlate.pl - ${PROJECT_SOURCE_DIR}/crypto/perlasm/x86_64-xlate.pl - ${PROJECT_SOURCE_DIR}/crypto/perlasm/x86asm.pl - ${PROJECT_SOURCE_DIR}/crypto/perlasm/x86gas.pl -@@ -40,6 +41,9 @@ function(perlasm var arch dest src) - add_perlasm_target("${dest}-apple.S" ${src} ios32 ${ARGN}) - add_perlasm_target("${dest}-linux.S" ${src} linux32 ${ARGN}) - append_to_parent_scope("${var}_ASM" "${dest}-apple.S" "${dest}-linux.S") -+ elseif(arch STREQUAL "ppc64le") -+ add_perlasm_target("${dest}-linux.S" ${src} linux64le) -+ append_to_parent_scope("${var}_ASM" "${dest}-linux.S") - elseif(arch STREQUAL "x86") - add_perlasm_target("${dest}-apple.S" ${src} macosx -fPIC -DOPENSSL_IA32_SSE2 ${ARGN}) - add_perlasm_target("${dest}-linux.S" ${src} elf -fPIC -DOPENSSL_IA32_SSE2 ${ARGN}) -Index: chromium-122.0.6261.128/third_party/boringssl/src/crypto/CMakeLists.txt -=================================================================== ---- chromium-122.0.6261.128.orig/third_party/boringssl/src/crypto/CMakeLists.txt -+++ chromium-122.0.6261.128/third_party/boringssl/src/crypto/CMakeLists.txt -@@ -26,6 +26,7 @@ perlasm(CRYPTO_SOURCES aarch64 cipher_ex - perlasm(CRYPTO_SOURCES aarch64 test/trampoline-armv8 test/asm/trampoline-armv8.pl) - perlasm(CRYPTO_SOURCES arm chacha/chacha-armv4 chacha/asm/chacha-armv4.pl) - perlasm(CRYPTO_SOURCES arm test/trampoline-armv4 test/asm/trampoline-armv4.pl) -+perlasm(CRYPTO_SOURCES ppc64le test/trampoline-ppc test/asm/trampoline-ppc.pl) - perlasm(CRYPTO_SOURCES x86 chacha/chacha-x86 chacha/asm/chacha-x86.pl) - perlasm(CRYPTO_SOURCES x86 test/trampoline-x86 test/asm/trampoline-x86.pl) - perlasm(CRYPTO_SOURCES x86_64 chacha/chacha-x86_64 chacha/asm/chacha-x86_64.pl) -@@ -137,6 +138,7 @@ add_library( - cpu_arm_freebsd.c - cpu_arm_linux.c - cpu_intel.c -+ cpu_ppc64le.c - crypto.c - curve25519/curve25519.c - curve25519/curve25519_64_adx.c -Index: chromium-122.0.6261.128/third_party/boringssl/src/crypto/abi_self_test.cc -=================================================================== ---- chromium-122.0.6261.128.orig/third_party/boringssl/src/crypto/abi_self_test.cc -+++ chromium-122.0.6261.128/third_party/boringssl/src/crypto/abi_self_test.cc +--- chromium-130.0.6723.44.orig/third_party/boringssl/src/crypto/abi_self_test.cc ++++ chromium-130.0.6723.44/third_party/boringssl/src/crypto/abi_self_test.cc @@ -521,3 +521,289 @@ TEST(ABITest, AArch64) { CHECK_ABI_NO_UNWIND(abi_test_clobber_v15_upper); } @@ -1617,10 +1574,10 @@ Index: chromium-122.0.6261.128/third_party/boringssl/src/crypto/abi_self_test.cc + CHECK_ABI_NO_UNWIND(abi_test_clobber_lr); +} +#endif // OPENSSL_PPC64LE && SUPPORTS_ABI_TEST -Index: chromium-122.0.6261.128/third_party/boringssl/src/crypto/cpu_ppc64le.c +Index: chromium-130.0.6723.44/third_party/boringssl/src/crypto/cpu_ppc64le.c =================================================================== --- /dev/null -+++ chromium-122.0.6261.128/third_party/boringssl/src/crypto/cpu_ppc64le.c ++++ chromium-130.0.6723.44/third_party/boringssl/src/crypto/cpu_ppc64le.c @@ -0,0 +1,38 @@ +/* Copyright (c) 2016, Google Inc. + * @@ -1660,38 +1617,11 @@ Index: chromium-122.0.6261.128/third_party/boringssl/src/crypto/cpu_ppc64le.c +} + +#endif // OPENSSL_PPC64LE -Index: chromium-122.0.6261.128/third_party/boringssl/src/crypto/crypto.c +Index: chromium-130.0.6723.44/third_party/boringssl/src/crypto/crypto.c =================================================================== ---- chromium-122.0.6261.128.orig/third_party/boringssl/src/crypto/crypto.c -+++ chromium-122.0.6261.128/third_party/boringssl/src/crypto/crypto.c -@@ -25,10 +25,12 @@ static_assert(sizeof(ossl_ssize_t) == si - "ossl_ssize_t should be the same size as size_t"); - - #if !defined(OPENSSL_NO_ASM) && !defined(OPENSSL_STATIC_ARMCAP) && \ -- (defined(OPENSSL_X86) || defined(OPENSSL_X86_64) || \ -- defined(OPENSSL_ARM) || defined(OPENSSL_AARCH64)) --// x86, x86_64, and the ARMs need to record the result of a cpuid/getauxval call --// for the asm to work correctly, unless compiled without asm code. -+ (defined(OPENSSL_X86) || defined(OPENSSL_X86_64) || \ -+ defined(OPENSSL_ARM) || defined(OPENSSL_AARCH64) || \ -+ defined(OPENSSL_PPC64LE)) -+// x86, x86_64, the ARMs and ppc64le need to record the result of a -+// cpuid/getauxval call for the asm to work correctly, unless compiled without -+// asm code. - #define NEED_CPUID - - #else -@@ -39,7 +41,8 @@ static_assert(sizeof(ossl_ssize_t) == si - #define BORINGSSL_NO_STATIC_INITIALIZER - #endif - --#endif // !NO_ASM && !STATIC_ARMCAP && (X86 || X86_64 || ARM || AARCH64) -+#endif // !NO_ASM && !STATIC_ARMCAP && -+ // (X86 || X86_64 || ARM || AARCH64 || PPC64LE) - - - // Our assembly does not use the GOT to reference symbols, which means -@@ -83,6 +86,10 @@ uint32_t OPENSSL_get_ia32cap(int idx) { +--- chromium-130.0.6723.44.orig/third_party/boringssl/src/crypto/crypto.c ++++ chromium-130.0.6723.44/third_party/boringssl/src/crypto/crypto.c +@@ -66,6 +66,10 @@ uint32_t OPENSSL_get_ia32cap(int idx) { return OPENSSL_ia32cap_P[idx]; } @@ -1702,23 +1632,10 @@ Index: chromium-122.0.6261.128/third_party/boringssl/src/crypto/crypto.c #elif defined(OPENSSL_ARM) || defined(OPENSSL_AARCH64) #include -Index: chromium-122.0.6261.128/third_party/boringssl/src/crypto/fipsmodule/CMakeLists.txt -=================================================================== ---- chromium-122.0.6261.128.orig/third_party/boringssl/src/crypto/fipsmodule/CMakeLists.txt -+++ chromium-122.0.6261.128/third_party/boringssl/src/crypto/fipsmodule/CMakeLists.txt -@@ -19,6 +19,8 @@ perlasm(BCM_SOURCES arm sha1-armv4-large - perlasm(BCM_SOURCES arm sha256-armv4 sha/asm/sha256-armv4.pl) - perlasm(BCM_SOURCES arm sha512-armv4 sha/asm/sha512-armv4.pl) - perlasm(BCM_SOURCES arm vpaes-armv7 aes/asm/vpaes-armv7.pl) -+perlasm(BCM_SOURCES ppc64le aesp8-ppc aes/asm/aesp8-ppc.pl) -+perlasm(BCM_SOURCES ppc64le ghashp8-ppc modes/asm/ghashp8-ppc.pl) - perlasm(BCM_SOURCES x86 aesni-x86 aes/asm/aesni-x86.pl) - perlasm(BCM_SOURCES x86 bn-586 bn/asm/bn-586.pl) - perlasm(BCM_SOURCES x86 co-586 bn/asm/co-586.pl) -Index: chromium-122.0.6261.128/third_party/boringssl/src/crypto/fipsmodule/aes/asm/aesp8-ppc.pl +Index: chromium-130.0.6723.44/third_party/boringssl/src/crypto/fipsmodule/aes/asm/aesp8-ppc.pl =================================================================== --- /dev/null -+++ chromium-122.0.6261.128/third_party/boringssl/src/crypto/fipsmodule/aes/asm/aesp8-ppc.pl ++++ chromium-130.0.6723.44/third_party/boringssl/src/crypto/fipsmodule/aes/asm/aesp8-ppc.pl @@ -0,0 +1,3809 @@ +#! /usr/bin/env perl +# Copyright 2014-2018 The OpenSSL Project Authors. All Rights Reserved. @@ -5529,11 +5446,11 @@ Index: chromium-122.0.6261.128/third_party/boringssl/src/crypto/fipsmodule/aes/a +} + +close STDOUT or die "error closing STDOUT: $!"; -Index: chromium-122.0.6261.128/third_party/boringssl/src/crypto/fipsmodule/aes/internal.h +Index: chromium-130.0.6723.44/third_party/boringssl/src/crypto/fipsmodule/aes/internal.h =================================================================== ---- chromium-122.0.6261.128.orig/third_party/boringssl/src/crypto/fipsmodule/aes/internal.h -+++ chromium-122.0.6261.128/third_party/boringssl/src/crypto/fipsmodule/aes/internal.h -@@ -59,6 +59,12 @@ OPENSSL_INLINE int vpaes_capable(void) { +--- chromium-130.0.6723.44.orig/third_party/boringssl/src/crypto/fipsmodule/aes/internal.h ++++ chromium-130.0.6723.44/third_party/boringssl/src/crypto/fipsmodule/aes/internal.h +@@ -61,6 +61,12 @@ OPENSSL_INLINE int vpaes_capable(void) { OPENSSL_INLINE int vpaes_capable(void) { return CRYPTO_is_NEON_capable(); } #endif @@ -5546,22 +5463,22 @@ Index: chromium-122.0.6261.128/third_party/boringssl/src/crypto/fipsmodule/aes/i #endif #endif // !NO_ASM -Index: chromium-122.0.6261.128/third_party/boringssl/src/crypto/fipsmodule/bcm.c +Index: chromium-130.0.6723.44/third_party/boringssl/src/crypto/fipsmodule/bcm.c =================================================================== ---- chromium-122.0.6261.128.orig/third_party/boringssl/src/crypto/fipsmodule/bcm.c -+++ chromium-122.0.6261.128/third_party/boringssl/src/crypto/fipsmodule/bcm.c -@@ -102,6 +102,7 @@ - #include "self_check/fips.c" - #include "self_check/self_check.c" - #include "service_indicator/service_indicator.c" -+#include "sha/sha1-altivec.c" - #include "sha/sha1.c" - #include "sha/sha256.c" - #include "sha/sha512.c" -Index: chromium-122.0.6261.128/third_party/boringssl/src/crypto/fipsmodule/bn/bn.c +--- chromium-130.0.6723.44.orig/third_party/boringssl/src/crypto/fipsmodule/bcm.c ++++ chromium-130.0.6723.44/third_party/boringssl/src/crypto/fipsmodule/bcm.c +@@ -101,6 +101,7 @@ + #include "self_check/fips.c.inc" + #include "self_check/self_check.c.inc" + #include "service_indicator/service_indicator.c.inc" ++#include "sha/sha1-altivec.c.inc" + #include "sha/sha1.c.inc" + #include "sha/sha256.c.inc" + #include "sha/sha512.c.inc" +Index: chromium-130.0.6723.44/third_party/boringssl/src/crypto/fipsmodule/bn/bn.c.inc =================================================================== ---- chromium-122.0.6261.128.orig/third_party/boringssl/src/crypto/fipsmodule/bn/bn.c -+++ chromium-122.0.6261.128/third_party/boringssl/src/crypto/fipsmodule/bn/bn.c +--- chromium-130.0.6723.44.orig/third_party/boringssl/src/crypto/fipsmodule/bn/bn.c.inc ++++ chromium-130.0.6723.44/third_party/boringssl/src/crypto/fipsmodule/bn/bn.c.inc @@ -384,6 +384,23 @@ int bn_expand(BIGNUM *bn, size_t bits) { } @@ -5586,11 +5503,11 @@ Index: chromium-122.0.6261.128/third_party/boringssl/src/crypto/fipsmodule/bn/bn if ((size_t)bn->width <= words) { if (!bn_wexpand(bn, words)) { return 0; -Index: chromium-122.0.6261.128/third_party/boringssl/src/crypto/fipsmodule/cipher/e_aes.c +Index: chromium-130.0.6723.44/third_party/boringssl/src/crypto/fipsmodule/cipher/e_aes.c.inc =================================================================== ---- chromium-122.0.6261.128.orig/third_party/boringssl/src/crypto/fipsmodule/cipher/e_aes.c -+++ chromium-122.0.6261.128/third_party/boringssl/src/crypto/fipsmodule/cipher/e_aes.c -@@ -1455,6 +1455,8 @@ int EVP_has_aes_hardware(void) { +--- chromium-130.0.6723.44.orig/third_party/boringssl/src/crypto/fipsmodule/cipher/e_aes.c.inc ++++ chromium-130.0.6723.44/third_party/boringssl/src/crypto/fipsmodule/cipher/e_aes.c.inc +@@ -1456,6 +1456,8 @@ int EVP_has_aes_hardware(void) { return hwaes_capable() && crypto_gcm_clmul_enabled(); #elif defined(OPENSSL_ARM) || defined(OPENSSL_AARCH64) return hwaes_capable() && CRYPTO_is_ARMv8_PMULL_capable(); @@ -5599,10 +5516,10 @@ Index: chromium-122.0.6261.128/third_party/boringssl/src/crypto/fipsmodule/ciphe #else return 0; #endif -Index: chromium-122.0.6261.128/third_party/boringssl/src/crypto/fipsmodule/modes/asm/ghashp8-ppc.pl +Index: chromium-130.0.6723.44/third_party/boringssl/src/crypto/fipsmodule/modes/asm/ghashp8-ppc.pl =================================================================== --- /dev/null -+++ chromium-122.0.6261.128/third_party/boringssl/src/crypto/fipsmodule/modes/asm/ghashp8-ppc.pl ++++ chromium-130.0.6723.44/third_party/boringssl/src/crypto/fipsmodule/modes/asm/ghashp8-ppc.pl @@ -0,0 +1,671 @@ +#! /usr/bin/env perl +# Copyright 2014-2016 The OpenSSL Project Authors. All Rights Reserved. @@ -6275,10 +6192,10 @@ Index: chromium-122.0.6261.128/third_party/boringssl/src/crypto/fipsmodule/modes +} + +close STDOUT or die "error closing STDOUT: $!"; # enforce flush -Index: chromium-122.0.6261.128/third_party/boringssl/src/crypto/fipsmodule/modes/gcm.c +Index: chromium-130.0.6723.44/third_party/boringssl/src/crypto/fipsmodule/modes/gcm.c.inc =================================================================== ---- chromium-122.0.6261.128.orig/third_party/boringssl/src/crypto/fipsmodule/modes/gcm.c -+++ chromium-122.0.6261.128/third_party/boringssl/src/crypto/fipsmodule/modes/gcm.c +--- chromium-130.0.6723.44.orig/third_party/boringssl/src/crypto/fipsmodule/modes/gcm.c.inc ++++ chromium-130.0.6723.44/third_party/boringssl/src/crypto/fipsmodule/modes/gcm.c.inc @@ -228,6 +228,13 @@ void CRYPTO_ghash_init(gmult_func *out_m *out_hash = gcm_ghash_neon; return; @@ -6293,11 +6210,11 @@ Index: chromium-122.0.6261.128/third_party/boringssl/src/crypto/fipsmodule/modes #endif gcm_init_nohw(out_table, H); -Index: chromium-122.0.6261.128/third_party/boringssl/src/crypto/fipsmodule/modes/gcm_test.cc +Index: chromium-130.0.6723.44/third_party/boringssl/src/crypto/fipsmodule/modes/gcm_test.cc =================================================================== ---- chromium-122.0.6261.128.orig/third_party/boringssl/src/crypto/fipsmodule/modes/gcm_test.cc -+++ chromium-122.0.6261.128/third_party/boringssl/src/crypto/fipsmodule/modes/gcm_test.cc -@@ -215,5 +215,15 @@ TEST(GCMTest, ABI) { +--- chromium-130.0.6723.44.orig/third_party/boringssl/src/crypto/fipsmodule/modes/gcm_test.cc ++++ chromium-130.0.6723.44/third_party/boringssl/src/crypto/fipsmodule/modes/gcm_test.cc +@@ -209,5 +209,15 @@ TEST(GCMTest, ABI) { } } #endif @@ -6313,10 +6230,10 @@ Index: chromium-122.0.6261.128/third_party/boringssl/src/crypto/fipsmodule/modes +#endif // GHASH_ASM_PPC64LE } #endif // SUPPORTS_ABI_TEST && !OPENSSL_NO_ASM -Index: chromium-122.0.6261.128/third_party/boringssl/src/crypto/fipsmodule/modes/internal.h +Index: chromium-130.0.6723.44/third_party/boringssl/src/crypto/fipsmodule/modes/internal.h =================================================================== ---- chromium-122.0.6261.128.orig/third_party/boringssl/src/crypto/fipsmodule/modes/internal.h -+++ chromium-122.0.6261.128/third_party/boringssl/src/crypto/fipsmodule/modes/internal.h +--- chromium-130.0.6723.44.orig/third_party/boringssl/src/crypto/fipsmodule/modes/internal.h ++++ chromium-130.0.6723.44/third_party/boringssl/src/crypto/fipsmodule/modes/internal.h @@ -325,6 +325,13 @@ void aes_gcm_dec_kernel(const uint8_t *i const u128 Htable[16]); #endif @@ -6331,10 +6248,10 @@ Index: chromium-122.0.6261.128/third_party/boringssl/src/crypto/fipsmodule/modes #endif #endif // OPENSSL_NO_ASM -Index: chromium-122.0.6261.128/third_party/boringssl/src/crypto/fipsmodule/rand/getrandom_fillin.h +Index: chromium-130.0.6723.44/third_party/boringssl/src/crypto/rand_extra/getrandom_fillin.h =================================================================== ---- chromium-122.0.6261.128.orig/third_party/boringssl/src/crypto/fipsmodule/rand/getrandom_fillin.h -+++ chromium-122.0.6261.128/third_party/boringssl/src/crypto/fipsmodule/rand/getrandom_fillin.h +--- chromium-130.0.6723.44.orig/third_party/boringssl/src/crypto/rand_extra/getrandom_fillin.h ++++ chromium-130.0.6723.44/third_party/boringssl/src/crypto/rand_extra/getrandom_fillin.h @@ -30,6 +30,8 @@ #define EXPECTED_NR_getrandom 278 #elif defined(OPENSSL_ARM) @@ -6344,11 +6261,11 @@ Index: chromium-122.0.6261.128/third_party/boringssl/src/crypto/fipsmodule/rand/ #elif defined(OPENSSL_RISCV64) #define EXPECTED_NR_getrandom 278 #endif -Index: chromium-122.0.6261.128/third_party/boringssl/src/crypto/fipsmodule/rand/rand.c +Index: chromium-130.0.6723.44/third_party/boringssl/src/crypto/fipsmodule/rand/rand.c.inc =================================================================== ---- chromium-122.0.6261.128.orig/third_party/boringssl/src/crypto/fipsmodule/rand/rand.c -+++ chromium-122.0.6261.128/third_party/boringssl/src/crypto/fipsmodule/rand/rand.c -@@ -431,6 +431,11 @@ void RAND_bytes_with_additional_data(uin +--- chromium-130.0.6723.44.orig/third_party/boringssl/src/crypto/fipsmodule/rand/rand.c.inc ++++ chromium-130.0.6723.44/third_party/boringssl/src/crypto/fipsmodule/rand/rand.c.inc +@@ -427,6 +427,11 @@ bcm_infallible BCM_rand_bytes_with_addit // Take a read lock around accesses to |state->drbg|. This is needed to // avoid returning bad entropy if we race with // |rand_thread_state_clear_all|. @@ -6360,21 +6277,20 @@ Index: chromium-122.0.6261.128/third_party/boringssl/src/crypto/fipsmodule/rand/ CRYPTO_MUTEX_lock_read(&state->clear_drbg_lock); #endif if (!CTR_DRBG_reseed(&state->drbg, seed, reseed_additional_data, -Index: chromium-122.0.6261.128/third_party/boringssl/src/crypto/fipsmodule/sha/internal.h +Index: chromium-130.0.6723.44/third_party/boringssl/src/crypto/fipsmodule/sha/internal.h =================================================================== ---- chromium-122.0.6261.128.orig/third_party/boringssl/src/crypto/fipsmodule/sha/internal.h -+++ chromium-122.0.6261.128/third_party/boringssl/src/crypto/fipsmodule/sha/internal.h -@@ -23,17 +23,25 @@ +--- chromium-130.0.6723.44.orig/third_party/boringssl/src/crypto/fipsmodule/sha/internal.h ++++ chromium-130.0.6723.44/third_party/boringssl/src/crypto/fipsmodule/sha/internal.h +@@ -23,6 +23,16 @@ extern "C" { #endif -+#if defined(OPENSSL_PPC64LE) || \ -+ (!defined(OPENSSL_NO_ASM) && (defined(OPENSSL_X86) || defined(OPENSSL_ARM))) ++#if defined(OPENSSL_PPC64LE) +// POWER has an intrinsics-based implementation of SHA-1 and thus the functions +// normally defined in assembly are available even with |OPENSSL_NO_ASM| in +// this case. -+#define SHA1_ASM -+void sha1_block_data_order(uint32_t *state, const uint8_t *in, ++#define SHA1_ASM_PPC64 ++void sha1_block_data_order_ppc64(uint32_t *state, const uint8_t *in, + size_t num_blocks); +#endif + @@ -6382,21 +6298,10 @@ Index: chromium-122.0.6261.128/third_party/boringssl/src/crypto/fipsmodule/sha/i // Define SHA{n}[_{variant}]_ASM if sha{n}_block_data_order[_{variant}] is // defined in assembly. - #if !defined(OPENSSL_NO_ASM) && (defined(OPENSSL_X86) || defined(OPENSSL_ARM)) - --#define SHA1_ASM - #define SHA256_ASM - #define SHA512_ASM - --void sha1_block_data_order(uint32_t *state, const uint8_t *data, -- size_t num_blocks); - void sha256_block_data_order(uint32_t *state, const uint8_t *data, - size_t num_blocks); - void sha512_block_data_order(uint64_t *state, const uint8_t *data, -Index: chromium-122.0.6261.128/third_party/boringssl/src/crypto/fipsmodule/sha/sha1-altivec.c +Index: chromium-130.0.6723.44/third_party/boringssl/src/crypto/fipsmodule/sha/sha1-altivec.c.inc =================================================================== --- /dev/null -+++ chromium-122.0.6261.128/third_party/boringssl/src/crypto/fipsmodule/sha/sha1-altivec.c ++++ chromium-130.0.6723.44/third_party/boringssl/src/crypto/fipsmodule/sha/sha1-altivec.c.inc @@ -0,0 +1,361 @@ +/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) + * All rights reserved. @@ -6469,7 +6374,7 @@ Index: chromium-122.0.6261.128/third_party/boringssl/src/crypto/fipsmodule/sha/s + +#include + -+void sha1_block_data_order(uint32_t *state, const uint8_t *data, size_t num); ++void sha1_block_data_order_ppc64(uint32_t *state, const uint8_t *data, size_t num); + +static uint32_t rotate(uint32_t a, int n) { return (a << n) | (a >> (32 - n)); } + @@ -6587,7 +6492,7 @@ Index: chromium-122.0.6261.128/third_party/boringssl/src/crypto/fipsmodule/sha/s + (b) = rotate((b), 30); \ + } while (0) + -+void sha1_block_data_order(uint32_t *state, const uint8_t *data, size_t num) { ++void sha1_block_data_order_ppc64(uint32_t *state, const uint8_t *data, size_t num) { + uint32_t A, B, C, D, E, T; + + A = state[0]; @@ -6759,20 +6664,23 @@ Index: chromium-122.0.6261.128/third_party/boringssl/src/crypto/fipsmodule/sha/s +#undef BODY_20_39 +#undef BODY_40_59 +#undef BODY_60_79 -Index: chromium-122.0.6261.128/third_party/boringssl/src/crypto/internal.h +Index: chromium-130.0.6723.44/third_party/boringssl/src/crypto/internal.h =================================================================== ---- chromium-122.0.6261.128.orig/third_party/boringssl/src/crypto/internal.h -+++ chromium-122.0.6261.128/third_party/boringssl/src/crypto/internal.h -@@ -181,7 +181,7 @@ extern "C" { +--- chromium-130.0.6723.44.orig/third_party/boringssl/src/crypto/internal.h ++++ chromium-130.0.6723.44/third_party/boringssl/src/crypto/internal.h +@@ -183,8 +183,9 @@ extern "C" { + #if !defined(OPENSSL_NO_ASM) && !defined(OPENSSL_STATIC_ARMCAP) && \ + (defined(OPENSSL_X86) || defined(OPENSSL_X86_64) || \ + defined(OPENSSL_ARM) || defined(OPENSSL_AARCH64)) +-// x86, x86_64, and the ARMs need to record the result of a cpuid/getauxval call +-// for the asm to work correctly, unless compiled without asm code. ++// x86, x86_64, the ARMs, and ppc64le need to record the result of a ++// cpuid/getauxval call for the asm to work correctly, unless compiled without ++// asm code. + #define NEED_CPUID - - #if defined(OPENSSL_X86) || defined(OPENSSL_X86_64) || defined(OPENSSL_ARM) || \ -- defined(OPENSSL_AARCH64) -+ defined(OPENSSL_AARCH64) || defined(OPENSSL_PPC64LE) - // OPENSSL_cpuid_setup initializes the platform-specific feature cache. - void OPENSSL_cpuid_setup(void); - #endif -@@ -1606,6 +1606,16 @@ OPENSSL_INLINE int CRYPTO_is_ARMv8_SHA51 + // OPENSSL_cpuid_setup initializes the platform-specific feature cache. This +@@ -1723,6 +1724,16 @@ OPENSSL_INLINE int CRYPTO_is_ARMv8_SHA51 #endif // OPENSSL_ARM || OPENSSL_AARCH64 @@ -6789,10 +6697,10 @@ Index: chromium-122.0.6261.128/third_party/boringssl/src/crypto/internal.h #if defined(BORINGSSL_DISPATCH_TEST) // Runtime CPU dispatch testing support -Index: chromium-122.0.6261.128/third_party/boringssl/src/crypto/perlasm/ppc-xlate.pl +Index: chromium-130.0.6723.44/third_party/boringssl/src/crypto/perlasm/ppc-xlate.pl =================================================================== --- /dev/null -+++ chromium-122.0.6261.128/third_party/boringssl/src/crypto/perlasm/ppc-xlate.pl ++++ chromium-130.0.6723.44/third_party/boringssl/src/crypto/perlasm/ppc-xlate.pl @@ -0,0 +1,320 @@ +#! /usr/bin/env perl +# Copyright 2006-2016 The OpenSSL Project Authors. All Rights Reserved. @@ -7114,10 +7022,10 @@ Index: chromium-122.0.6261.128/third_party/boringssl/src/crypto/perlasm/ppc-xlat +___ + +close STDOUT or die "error closing STDOUT: $!"; -Index: chromium-122.0.6261.128/third_party/boringssl/src/crypto/test/asm/trampoline-ppc.pl +Index: chromium-130.0.6723.44/third_party/boringssl/src/crypto/test/asm/trampoline-ppc.pl =================================================================== --- /dev/null -+++ chromium-122.0.6261.128/third_party/boringssl/src/crypto/test/asm/trampoline-ppc.pl ++++ chromium-130.0.6723.44/third_party/boringssl/src/crypto/test/asm/trampoline-ppc.pl @@ -0,0 +1,262 @@ +#!/usr/bin/env perl +# Copyright (c) 2019, Google Inc. @@ -7381,10 +7289,10 @@ Index: chromium-122.0.6261.128/third_party/boringssl/src/crypto/test/asm/trampol + +print $code; +close STDOUT or die "error closing STDOUT: $!"; -Index: chromium-122.0.6261.128/third_party/boringssl/src/include/openssl/target.h +Index: chromium-130.0.6723.44/third_party/boringssl/src/include/openssl/target.h =================================================================== ---- chromium-122.0.6261.128.orig/third_party/boringssl/src/include/openssl/target.h -+++ chromium-122.0.6261.128/third_party/boringssl/src/include/openssl/target.h +--- chromium-130.0.6723.44.orig/third_party/boringssl/src/include/openssl/target.h ++++ chromium-130.0.6723.44/third_party/boringssl/src/include/openssl/target.h @@ -34,6 +34,9 @@ #elif defined(__ARMEL__) || defined(_M_ARM) #define OPENSSL_32_BIT @@ -7395,10 +7303,10 @@ Index: chromium-122.0.6261.128/third_party/boringssl/src/include/openssl/target. #elif defined(__MIPSEL__) && !defined(__LP64__) #define OPENSSL_32_BIT #define OPENSSL_MIPS -Index: chromium-122.0.6261.128/third_party/boringssl/src/util/fipstools/acvp/modulewrapper/main.cc +Index: chromium-130.0.6723.44/third_party/boringssl/src/util/fipstools/acvp/modulewrapper/main.cc =================================================================== ---- chromium-122.0.6261.128.orig/third_party/boringssl/src/util/fipstools/acvp/modulewrapper/main.cc -+++ chromium-122.0.6261.128/third_party/boringssl/src/util/fipstools/acvp/modulewrapper/main.cc +--- chromium-130.0.6723.44.orig/third_party/boringssl/src/util/fipstools/acvp/modulewrapper/main.cc ++++ chromium-130.0.6723.44/third_party/boringssl/src/util/fipstools/acvp/modulewrapper/main.cc @@ -37,6 +37,8 @@ int main(int argc, char **argv) { puts("ARM (32-bit)"); #elif defined(OPENSSL_AARCH64) @@ -7408,10 +7316,10 @@ Index: chromium-122.0.6261.128/third_party/boringssl/src/util/fipstools/acvp/mod #else #error "FIPS build not supported on this architecture" #endif -Index: chromium-122.0.6261.128/third_party/boringssl/src/util/fipstools/delocate/delocate.go +Index: chromium-130.0.6723.44/third_party/boringssl/src/util/fipstools/delocate/delocate.go =================================================================== ---- chromium-122.0.6261.128.orig/third_party/boringssl/src/util/fipstools/delocate/delocate.go -+++ chromium-122.0.6261.128/third_party/boringssl/src/util/fipstools/delocate/delocate.go +--- chromium-130.0.6723.44.orig/third_party/boringssl/src/util/fipstools/delocate/delocate.go ++++ chromium-130.0.6723.44/third_party/boringssl/src/util/fipstools/delocate/delocate.go @@ -54,7 +54,8 @@ type stringWriter interface { type processorType int @@ -7470,7 +7378,7 @@ Index: chromium-122.0.6261.128/third_party/boringssl/src/util/fipstools/delocate return statement, nil } -@@ -646,6 +658,191 @@ func (d *delocation) processAarch64Instr +@@ -659,6 +671,191 @@ func (d *delocation) processAarch64Instr return statement, nil } @@ -7662,7 +7570,7 @@ Index: chromium-122.0.6261.128/third_party/boringssl/src/util/fipstools/delocate func (d *delocation) gatherOffsets(symRef *node32, offsets string) (*node32, string) { for symRef != nil && symRef.pegRule == ruleOffset { offset := d.contents(symRef) -@@ -700,6 +897,215 @@ func (d *delocation) parseMemRef(memRef +@@ -713,6 +910,215 @@ func (d *delocation) parseMemRef(memRef return } @@ -7878,7 +7786,7 @@ Index: chromium-122.0.6261.128/third_party/boringssl/src/util/fipstools/delocate /* Intel */ type instructionType int -@@ -1323,6 +1729,8 @@ func writeAarch64Function(w stringWriter +@@ -1345,6 +1751,8 @@ func writeAarch64Function(w stringWriter func transform(w stringWriter, inputs []inputFile) error { // symbols contains all defined symbols. symbols := make(map[string]struct{}) @@ -7887,7 +7795,7 @@ Index: chromium-122.0.6261.128/third_party/boringssl/src/util/fipstools/delocate // fileNumbers is the set of IDs seen in .file directives. fileNumbers := make(map[int]struct{}) // maxObservedFileNumber contains the largest seen file number in a -@@ -1346,6 +1754,25 @@ func transform(w stringWriter, inputs [] +@@ -1368,6 +1776,25 @@ func transform(w stringWriter, inputs [] }, ruleStatement, ruleLabel, ruleSymbolName) forEachPath(input.ast.up, func(node *node32) { @@ -7913,7 +7821,7 @@ Index: chromium-122.0.6261.128/third_party/boringssl/src/util/fipstools/delocate assertNodeType(node, ruleLocationDirective) directive := input.contents[node.begin:node.end] if !strings.HasPrefix(directive, ".file") { -@@ -1393,11 +1820,13 @@ func transform(w stringWriter, inputs [] +@@ -1415,11 +1842,13 @@ func transform(w stringWriter, inputs [] d := &delocation{ symbols: symbols, @@ -7927,7 +7835,7 @@ Index: chromium-122.0.6261.128/third_party/boringssl/src/util/fipstools/delocate gotExternalsNeeded: make(map[string]struct{}), gotOffsetsNeeded: make(map[string]struct{}), gotOffOffsetsNeeded: make(map[string]struct{}), -@@ -1432,6 +1861,22 @@ func transform(w stringWriter, inputs [] +@@ -1454,6 +1883,22 @@ func transform(w stringWriter, inputs [] for _, name := range redirectorNames { redirector := d.redirectors[name] switch d.processor { @@ -7950,7 +7858,7 @@ Index: chromium-122.0.6261.128/third_party/boringssl/src/util/fipstools/delocate case aarch64: writeAarch64Function(w, redirector, func(w stringWriter) { w.WriteString("\tb " + name + "\n") -@@ -1456,6 +1901,13 @@ func transform(w stringWriter, inputs [] +@@ -1478,6 +1923,13 @@ func transform(w stringWriter, inputs [] target := d.bssAccessorsNeeded[name] switch d.processor { @@ -7964,7 +7872,7 @@ Index: chromium-122.0.6261.128/third_party/boringssl/src/util/fipstools/delocate case x86_64: w.WriteString(".type " + funcName + ", @function\n") w.WriteString(funcName + ":\n") -@@ -1471,6 +1923,26 @@ func transform(w stringWriter, inputs [] +@@ -1493,6 +1945,26 @@ func transform(w stringWriter, inputs [] } switch d.processor { @@ -7991,7 +7899,7 @@ Index: chromium-122.0.6261.128/third_party/boringssl/src/util/fipstools/delocate case aarch64: externalNames := sortedSet(d.gotExternalsNeeded) for _, symbol := range externalNames { -@@ -1781,6 +2253,10 @@ func localTargetName(name string) string +@@ -1803,6 +2275,10 @@ func localTargetName(name string) string return ".L" + name + "_local_target" } @@ -8002,7 +7910,7 @@ Index: chromium-122.0.6261.128/third_party/boringssl/src/util/fipstools/delocate func isSynthesized(symbol string) bool { return strings.HasSuffix(symbol, "_bss_get") || symbol == "OPENSSL_ia32cap_get" || -@@ -1836,6 +2312,8 @@ func detectProcessor(input inputFile) pr +@@ -1858,6 +2334,8 @@ func detectProcessor(input inputFile) pr switch instructionName { case "movq", "call", "leaq": return x86_64 @@ -8011,10 +7919,10 @@ Index: chromium-122.0.6261.128/third_party/boringssl/src/util/fipstools/delocate case "str", "bl", "ldr", "st1": return aarch64 } -Index: chromium-122.0.6261.128/third_party/boringssl/src/util/fipstools/delocate/delocate.peg +Index: chromium-130.0.6723.44/third_party/boringssl/src/util/fipstools/delocate/delocate.peg =================================================================== ---- chromium-122.0.6261.128.orig/third_party/boringssl/src/util/fipstools/delocate/delocate.peg -+++ chromium-122.0.6261.128/third_party/boringssl/src/util/fipstools/delocate/delocate.peg +--- chromium-130.0.6723.44.orig/third_party/boringssl/src/util/fipstools/delocate/delocate.peg ++++ chromium-130.0.6723.44/third_party/boringssl/src/util/fipstools/delocate/delocate.peg @@ -12,7 +12,7 @@ # OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN # CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ @@ -8024,10 +7932,10 @@ Index: chromium-122.0.6261.128/third_party/boringssl/src/util/fipstools/delocate # https://github.com/pointlander/peg. delocate.go has a go:generate line for # rebuilding delocate.peg.go from this file. -Index: chromium-122.0.6261.128/third_party/boringssl/src/util/fipstools/delocate/delocate_test.go +Index: chromium-130.0.6723.44/third_party/boringssl/src/util/fipstools/delocate/delocate_test.go =================================================================== ---- chromium-122.0.6261.128.orig/third_party/boringssl/src/util/fipstools/delocate/delocate_test.go -+++ chromium-122.0.6261.128/third_party/boringssl/src/util/fipstools/delocate/delocate_test.go +--- chromium-130.0.6723.44.orig/third_party/boringssl/src/util/fipstools/delocate/delocate_test.go ++++ chromium-130.0.6723.44/third_party/boringssl/src/util/fipstools/delocate/delocate_test.go @@ -39,6 +39,11 @@ func (test *delocateTest) Path(file stri var delocateTests = []delocateTest{ @@ -8040,10 +7948,10 @@ Index: chromium-122.0.6261.128/third_party/boringssl/src/util/fipstools/delocate {"x86_64-Basic", []string{"in.s"}, "out.s"}, {"x86_64-BSS", []string{"in.s"}, "out.s"}, {"x86_64-GOTRewrite", []string{"in.s"}, "out.s"}, -Index: chromium-122.0.6261.128/third_party/boringssl/src/util/fipstools/delocate/testdata/ppc64le-GlobalEntry/in.s +Index: chromium-130.0.6723.44/third_party/boringssl/src/util/fipstools/delocate/testdata/ppc64le-GlobalEntry/in.s =================================================================== --- /dev/null -+++ chromium-122.0.6261.128/third_party/boringssl/src/util/fipstools/delocate/testdata/ppc64le-GlobalEntry/in.s ++++ chromium-130.0.6723.44/third_party/boringssl/src/util/fipstools/delocate/testdata/ppc64le-GlobalEntry/in.s @@ -0,0 +1,9 @@ + .text +foo: @@ -8054,10 +7962,10 @@ Index: chromium-122.0.6261.128/third_party/boringssl/src/util/fipstools/delocate + .localentry foo,.-foo +.LVL0: + bl -Index: chromium-122.0.6261.128/third_party/boringssl/src/util/fipstools/delocate/testdata/ppc64le-GlobalEntry/out.s +Index: chromium-130.0.6723.44/third_party/boringssl/src/util/fipstools/delocate/testdata/ppc64le-GlobalEntry/out.s =================================================================== --- /dev/null -+++ chromium-122.0.6261.128/third_party/boringssl/src/util/fipstools/delocate/testdata/ppc64le-GlobalEntry/out.s ++++ chromium-130.0.6723.44/third_party/boringssl/src/util/fipstools/delocate/testdata/ppc64le-GlobalEntry/out.s @@ -0,0 +1,62 @@ +.text +.file 1 "inserted_by_delocate.c" @@ -8121,19 +8029,19 @@ Index: chromium-122.0.6261.128/third_party/boringssl/src/util/fipstools/delocate +.byte 0xff +.byte 0x31 +.byte 0x80 -Index: chromium-122.0.6261.128/third_party/boringssl/src/util/fipstools/delocate/testdata/ppc64le-LoadToR0/in.s +Index: chromium-130.0.6723.44/third_party/boringssl/src/util/fipstools/delocate/testdata/ppc64le-LoadToR0/in.s =================================================================== --- /dev/null -+++ chromium-122.0.6261.128/third_party/boringssl/src/util/fipstools/delocate/testdata/ppc64le-LoadToR0/in.s ++++ chromium-130.0.6723.44/third_party/boringssl/src/util/fipstools/delocate/testdata/ppc64le-LoadToR0/in.s @@ -0,0 +1,4 @@ + .text +foo: + addis 22,2,bar@toc@ha + ld 0,bar@toc@l(22) -Index: chromium-122.0.6261.128/third_party/boringssl/src/util/fipstools/delocate/testdata/ppc64le-LoadToR0/out.s +Index: chromium-130.0.6723.44/third_party/boringssl/src/util/fipstools/delocate/testdata/ppc64le-LoadToR0/out.s =================================================================== --- /dev/null -+++ chromium-122.0.6261.128/third_party/boringssl/src/util/fipstools/delocate/testdata/ppc64le-LoadToR0/out.s ++++ chromium-130.0.6723.44/third_party/boringssl/src/util/fipstools/delocate/testdata/ppc64le-LoadToR0/out.s @@ -0,0 +1,72 @@ +.text +.file 1 "inserted_by_delocate.c" @@ -8207,10 +8115,10 @@ Index: chromium-122.0.6261.128/third_party/boringssl/src/util/fipstools/delocate +.byte 0xff +.byte 0x31 +.byte 0x80 -Index: chromium-122.0.6261.128/third_party/boringssl/src/util/fipstools/delocate/testdata/ppc64le-Sample/in.s +Index: chromium-130.0.6723.44/third_party/boringssl/src/util/fipstools/delocate/testdata/ppc64le-Sample/in.s =================================================================== --- /dev/null -+++ chromium-122.0.6261.128/third_party/boringssl/src/util/fipstools/delocate/testdata/ppc64le-Sample/in.s ++++ chromium-130.0.6723.44/third_party/boringssl/src/util/fipstools/delocate/testdata/ppc64le-Sample/in.s @@ -0,0 +1,161 @@ + .file "foo.c" + .abiversion 2 @@ -8373,10 +8281,10 @@ Index: chromium-122.0.6261.128/third_party/boringssl/src/util/fipstools/delocate + .size exported_function,.-exported_function + .ident "GCC: (Ubuntu 4.9.2-10ubuntu13) 4.9.2" + .section .note.GNU-stack,"",@progbits -Index: chromium-122.0.6261.128/third_party/boringssl/src/util/fipstools/delocate/testdata/ppc64le-Sample/out.s +Index: chromium-130.0.6723.44/third_party/boringssl/src/util/fipstools/delocate/testdata/ppc64le-Sample/out.s =================================================================== --- /dev/null -+++ chromium-122.0.6261.128/third_party/boringssl/src/util/fipstools/delocate/testdata/ppc64le-Sample/out.s ++++ chromium-130.0.6723.44/third_party/boringssl/src/util/fipstools/delocate/testdata/ppc64le-Sample/out.s @@ -0,0 +1,552 @@ +.text +.file 1 "inserted_by_delocate.c" @@ -8930,10 +8838,10 @@ Index: chromium-122.0.6261.128/third_party/boringssl/src/util/fipstools/delocate +.byte 0xff +.byte 0x31 +.byte 0x80 -Index: chromium-122.0.6261.128/third_party/boringssl/src/util/fipstools/delocate/testdata/ppc64le-Sample2/in.s +Index: chromium-130.0.6723.44/third_party/boringssl/src/util/fipstools/delocate/testdata/ppc64le-Sample2/in.s =================================================================== --- /dev/null -+++ chromium-122.0.6261.128/third_party/boringssl/src/util/fipstools/delocate/testdata/ppc64le-Sample2/in.s ++++ chromium-130.0.6723.44/third_party/boringssl/src/util/fipstools/delocate/testdata/ppc64le-Sample2/in.s @@ -0,0 +1,226 @@ + .file "foo.c" + .abiversion 2 @@ -9161,10 +9069,10 @@ Index: chromium-122.0.6261.128/third_party/boringssl/src/util/fipstools/delocate + .zero 20 + .ident "GCC: (Ubuntu 4.9.2-10ubuntu13) 4.9.2" + .section .note.GNU-stack,"",@progbits -Index: chromium-122.0.6261.128/third_party/boringssl/src/util/fipstools/delocate/testdata/ppc64le-Sample2/out.s +Index: chromium-130.0.6723.44/third_party/boringssl/src/util/fipstools/delocate/testdata/ppc64le-Sample2/out.s =================================================================== --- /dev/null -+++ chromium-122.0.6261.128/third_party/boringssl/src/util/fipstools/delocate/testdata/ppc64le-Sample2/out.s ++++ chromium-130.0.6723.44/third_party/boringssl/src/util/fipstools/delocate/testdata/ppc64le-Sample2/out.s @@ -0,0 +1,677 @@ +.text +.file 1 "inserted_by_delocate.c" @@ -9843,10 +9751,10 @@ Index: chromium-122.0.6261.128/third_party/boringssl/src/util/fipstools/delocate +.byte 0xff +.byte 0x31 +.byte 0x80 -Index: chromium-122.0.6261.128/third_party/boringssl/src/util/fipstools/delocate/testdata/ppc64le-TOCWithOffset/in.s +Index: chromium-130.0.6723.44/third_party/boringssl/src/util/fipstools/delocate/testdata/ppc64le-TOCWithOffset/in.s =================================================================== --- /dev/null -+++ chromium-122.0.6261.128/third_party/boringssl/src/util/fipstools/delocate/testdata/ppc64le-TOCWithOffset/in.s ++++ chromium-130.0.6723.44/third_party/boringssl/src/util/fipstools/delocate/testdata/ppc64le-TOCWithOffset/in.s @@ -0,0 +1,23 @@ + .text +foo: @@ -9871,10 +9779,10 @@ Index: chromium-122.0.6261.128/third_party/boringssl/src/util/fipstools/delocate + + addis 4, 2, 1+foo-2@toc@ha+3 + addi 4, 4, 1+foo-2@toc@l+3 -Index: chromium-122.0.6261.128/third_party/boringssl/src/util/fipstools/delocate/testdata/ppc64le-TOCWithOffset/out.s +Index: chromium-130.0.6723.44/third_party/boringssl/src/util/fipstools/delocate/testdata/ppc64le-TOCWithOffset/out.s =================================================================== --- /dev/null -+++ chromium-122.0.6261.128/third_party/boringssl/src/util/fipstools/delocate/testdata/ppc64le-TOCWithOffset/out.s ++++ chromium-130.0.6723.44/third_party/boringssl/src/util/fipstools/delocate/testdata/ppc64le-TOCWithOffset/out.s @@ -0,0 +1,178 @@ +.text +.file 1 "inserted_by_delocate.c" @@ -10054,22 +9962,121 @@ Index: chromium-122.0.6261.128/third_party/boringssl/src/util/fipstools/delocate +.byte 0xff +.byte 0x31 +.byte 0x80 -Index: chromium-122.0.6261.128/third_party/boringssl/src/util/generate_build_files.py +Index: chromium-130.0.6723.44/third_party/boringssl/src/crypto/fipsmodule/sha/sha1.c.inc =================================================================== ---- chromium-122.0.6261.128.orig/third_party/boringssl/src/util/generate_build_files.py -+++ chromium-122.0.6261.128/third_party/boringssl/src/util/generate_build_files.py -@@ -35,6 +35,7 @@ OS_ARCH_COMBOS = [ - ('apple', 'x86_64', 'macosx', [], 'S'), - ('linux', 'arm', 'linux32', [], 'S'), - ('linux', 'aarch64', 'linux64', [], 'S'), -+ ('linux', 'ppc64le', 'linux64le', [], 'S'), - ('linux', 'x86', 'elf', ['-fPIC', '-DOPENSSL_IA32_SSE2'], 'S'), - ('linux', 'x86_64', 'elf', [], 'S'), - ('win', 'x86', 'win32n', ['-DOPENSSL_IA32_SSE2'], 'asm'), -Index: chromium-122.0.6261.128/third_party/lss/linux_syscall_support.h +--- chromium-130.0.6723.44.orig/third_party/boringssl/src/crypto/fipsmodule/sha/sha1.c.inc ++++ chromium-130.0.6723.44/third_party/boringssl/src/crypto/fipsmodule/sha/sha1.c.inc +@@ -408,6 +408,10 @@ static void sha1_block_data_order(uint32 + return; + } + #endif ++#if defined(SHA1_ASM_PPC64) ++ sha1_block_data_order_ppc64(state, data, num); ++ return; ++#endif + sha1_block_data_order_nohw(state, data, num); + } + +Index: chromium-130.0.6723.44/third_party/boringssl/src/build.json =================================================================== ---- chromium-122.0.6261.128.orig/third_party/lss/linux_syscall_support.h -+++ chromium-122.0.6261.128/third_party/lss/linux_syscall_support.h +--- chromium-130.0.6723.44.orig/third_party/boringssl/src/build.json ++++ chromium-130.0.6723.44/third_party/boringssl/src/build.json +@@ -118,6 +118,10 @@ + {"src": "crypto/fipsmodule/sha/asm/sha512-armv4.pl"}, + {"src": "crypto/fipsmodule/aes/asm/vpaes-armv7.pl"} + ], ++ "perlasm_ppc64le": [ ++ {"src": "crypto/fipsmodule/aes/asm/aesp8-ppc.pl"}, ++ {"src": "crypto/fipsmodule/modes/asm/ghashp8-ppc.pl"} ++ ], + "perlasm_x86": [ + {"src": "crypto/fipsmodule/aes/asm/aesni-x86.pl"}, + {"src": "crypto/fipsmodule/bn/asm/bn-586.pl"}, +@@ -219,6 +223,7 @@ + "crypto/cpu_arm_freebsd.c", + "crypto/cpu_arm_linux.c", + "crypto/cpu_intel.c", ++ "crypto/cpu_ppc64le.c", + "crypto/crypto.c", + "crypto/curve25519/curve25519.c", + "crypto/curve25519/curve25519_64_adx.c", +@@ -799,6 +804,9 @@ + "perlasm_arm": [ + {"src": "crypto/test/asm/trampoline-armv4.pl"} + ], ++ "perlasm_ppc64le": [ ++ {"src": "crypto/test/asm/trampoline-ppc.pl"} ++ ], + "perlasm_x86": [ + {"src": "crypto/test/asm/trampoline-x86.pl"} + ], +Index: chromium-130.0.6723.44/third_party/boringssl/src/util/pregenerate/build.go +=================================================================== +--- chromium-130.0.6723.44.orig/third_party/boringssl/src/util/pregenerate/build.go ++++ chromium-130.0.6723.44/third_party/boringssl/src/util/pregenerate/build.go +@@ -38,6 +38,7 @@ type InputTarget struct { + // architecture. + PerlasmAarch64 []PerlasmSource `json:"perlasm_aarch64,omitempty"` + PerlasmArm []PerlasmSource `json:"perlasm_arm,omitempty"` ++ PerlasmPPC64LE []PerlasmSource `json:"perlasm_ppc64le,omitempty"` + PerlasmX86 []PerlasmSource `json:"perlasm_x86,omitempty"` + PerlasmX86_64 []PerlasmSource `json:"perlasm_x86_64,omitempty"` + } +@@ -116,6 +117,9 @@ func (in *InputTarget) Pregenerate(name + for _, p := range in.PerlasmArm { + addPerlasmTask(&out.Asm, &p, "-linux.S", []string{"linux32"}) + } ++ for _, p := range in.PerlasmPPC64LE { ++ addPerlasmTask(&out.Asm, &p, "-linux.S", []string{"linux64le"}) ++ } + for _, p := range in.PerlasmX86 { + addPerlasmTask(&out.Asm, &p, "-apple.S", []string{"macosx", "-fPIC"}) + addPerlasmTask(&out.Asm, &p, "-linux.S", []string{"elf", "-fPIC"}) +Index: chromium-130.0.6723.44/third_party/boringssl/README.ppc64le +=================================================================== +--- /dev/null ++++ chromium-130.0.6723.44/third_party/boringssl/README.ppc64le +@@ -0,0 +1,8 @@ ++============================================================== ++To recreate boringssl pregenerated files patch for ppc64le: ++ ++cd third_party/boringssl/src ++cp -Rp gen gen.orig ++go run ./util/pregenerate ++cd ../../../../ ++diff -urN chromium-*/third_party/boringssl/src/gen.orig chromium-*/third_party/boringssl/src/gen +Index: chromium-130.0.6723.44/third_party/boringssl/src/gen/sources.gni +=================================================================== +--- chromium-130.0.6723.44.orig/third_party/boringssl/src/gen/sources.gni ++++ chromium-130.0.6723.44/third_party/boringssl/src/gen/sources.gni +@@ -107,6 +107,7 @@ bcm_sources_asm = [ + "gen/bcm/aesv8-gcm-armv8-apple.S", + "gen/bcm/aesv8-gcm-armv8-linux.S", + "gen/bcm/aesv8-gcm-armv8-win.S", ++ "gen/bcm/aesp8-ppc-linux.S", + "gen/bcm/armv4-mont-linux.S", + "gen/bcm/armv8-mont-apple.S", + "gen/bcm/armv8-mont-linux.S", +@@ -123,6 +124,7 @@ bcm_sources_asm = [ + "gen/bcm/ghash-neon-armv8-apple.S", + "gen/bcm/ghash-neon-armv8-linux.S", + "gen/bcm/ghash-neon-armv8-win.S", ++ "gen/bcm/ghashp8-ppc-linux.S", + "gen/bcm/ghash-ssse3-x86-apple.S", + "gen/bcm/ghash-ssse3-x86-linux.S", + "gen/bcm/ghash-ssse3-x86_64-apple.S", +@@ -314,6 +316,7 @@ crypto_sources = [ + "crypto/cpu_arm_freebsd.c", + "crypto/cpu_arm_linux.c", + "crypto/cpu_intel.c", ++ "crypto/cpu_ppc64le.c", + "crypto/crypto.c", + "crypto/curve25519/curve25519.c", + "crypto/curve25519/curve25519_64_adx.c", +Index: chromium-130.0.6723.44/third_party/lss/linux_syscall_support.h +=================================================================== +--- chromium-130.0.6723.44.orig/third_party/lss/linux_syscall_support.h ++++ chromium-130.0.6723.44/third_party/lss/linux_syscall_support.h @@ -4638,7 +4638,7 @@ struct kernel_statx { LSS_REG(2, buf); LSS_BODY(void*, mmap2, "0"(__r2)); @@ -10088,10 +10095,10 @@ Index: chromium-122.0.6261.128/third_party/lss/linux_syscall_support.h (defined(__s390__) && !defined(__s390x__)) /* On these architectures, implement mmap() with mmap2(). */ LSS_INLINE void* LSS_NAME(mmap)(void *s, size_t l, int p, int f, int d, -Index: chromium-122.0.6261.128/third_party/lss/linux_syscall_support.h +Index: chromium-130.0.6723.44/third_party/lss/linux_syscall_support.h =================================================================== ---- chromium-122.0.6261.128.orig/third_party/lss/linux_syscall_support.h -+++ chromium-122.0.6261.128/third_party/lss/linux_syscall_support.h +--- chromium-130.0.6723.44.orig/third_party/lss/linux_syscall_support.h ++++ chromium-130.0.6723.44/third_party/lss/linux_syscall_support.h @@ -87,7 +87,7 @@ * Porting to other related platforms should not be difficult. */ @@ -10266,11 +10273,11 @@ Subject: [PATCH] Add ppc64 target to libaom third_party/libaom/cmake_update.sh | 3 +++ 2 files changed, 15 insertions(+) -Index: chromium-122.0.6261.128/third_party/libaom/BUILD.gn +Index: chromium-130.0.6723.44/third_party/libaom/BUILD.gn =================================================================== ---- chromium-122.0.6261.128.orig/third_party/libaom/BUILD.gn -+++ chromium-122.0.6261.128/third_party/libaom/BUILD.gn -@@ -268,6 +268,18 @@ if (current_cpu == "arm64") { +--- chromium-130.0.6723.44.orig/third_party/libaom/BUILD.gn ++++ chromium-130.0.6723.44/third_party/libaom/BUILD.gn +@@ -279,6 +279,18 @@ if (current_cpu == "arm64") { } } @@ -10289,7 +10296,7 @@ Index: chromium-122.0.6261.128/third_party/libaom/BUILD.gn static_library("libaom") { check_includes = false if (!is_debug && is_win) { -@@ -333,6 +345,9 @@ static_library("libaom") { +@@ -342,6 +354,9 @@ static_library("libaom") { # This is needed by all arm boards due to aom_arm_cpu_caps() sources += [ "source/libaom/aom_ports/aarch32_cpudetect.c" ] } @@ -10299,13 +10306,13 @@ Index: chromium-122.0.6261.128/third_party/libaom/BUILD.gn if (is_android) { deps += [ "//third_party/cpu_features:ndk_compat" ] } -Index: chromium-122.0.6261.128/third_party/libaom/cmake_update.sh +Index: chromium-130.0.6723.44/third_party/libaom/cmake_update.sh =================================================================== ---- chromium-122.0.6261.128.orig/third_party/libaom/cmake_update.sh -+++ chromium-122.0.6261.128/third_party/libaom/cmake_update.sh -@@ -191,6 +191,9 @@ gen_config_files linux/arm64-cpu-detect - "${toolchain}/arm64-linux-gcc.cmake -DCONFIG_RUNTIME_CPU_DETECT=1 \ - ${all_platforms}" +--- chromium-130.0.6723.44.orig/third_party/libaom/cmake_update.sh ++++ chromium-130.0.6723.44/third_party/libaom/cmake_update.sh +@@ -189,6 +189,9 @@ reset_dirs linux/arm64-cpu-detect + gen_config_files linux/arm64-cpu-detect \ + "${toolchain}/arm64-linux-gcc.cmake ${all_platforms}" +reset_dirs linux/ppc64 +gen_config_files linux/ppc64 "${toolchain}/ppc-linux-gcc.cmake ${all_platforms}" @@ -10313,13 +10320,13 @@ Index: chromium-122.0.6261.128/third_party/libaom/cmake_update.sh # Copy linux configurations and modify for Windows. reset_dirs win/arm64-cpu-detect cp "${CFG}/linux/arm64-cpu-detect/config"/* \ -Index: chromium-122.0.6261.128/third_party/libaom/source/config/linux/ppc64/config/aom_config.asm +Index: chromium-130.0.6723.44/third_party/libaom/source/config/linux/ppc64/config/aom_config.asm =================================================================== --- /dev/null -+++ chromium-122.0.6261.128/third_party/libaom/source/config/linux/ppc64/config/aom_config.asm -@@ -0,0 +1,92 @@ ++++ chromium-130.0.6723.44/third_party/libaom/source/config/linux/ppc64/config/aom_config.asm +@@ -0,0 +1,95 @@ +; -+; Copyright (c) 2024, Alliance for Open Media. All rights reserved ++; Copyright (c) 2024, Alliance for Open Media. All rights reserved. +; +; This source code is subject to the terms of the BSD 2 Clause License and +; the Alliance for Open Media Patent License 1.0. If the BSD 2 Clause License @@ -10335,7 +10342,7 @@ Index: chromium-122.0.6261.128/third_party/libaom/source/config/linux/ppc64/conf +AOM_ARCH_X86_64 equ 0 +CONFIG_ACCOUNTING equ 0 +CONFIG_ANALYZER equ 0 -+CONFIG_AV1_DECODER equ 1 ++CONFIG_AV1_DECODER equ 0 +CONFIG_AV1_ENCODER equ 1 +CONFIG_AV1_HIGHBITDEPTH equ 0 +CONFIG_AV1_TEMPORAL_DENOISING equ 1 @@ -10360,17 +10367,19 @@ Index: chromium-122.0.6261.128/third_party/libaom/source/config/linux/ppc64/conf +CONFIG_INSPECTION equ 0 +CONFIG_INTERNAL_STATS equ 0 +CONFIG_INTER_STATS_ONLY equ 0 ++CONFIG_LIBVMAF_PSNR_PEAK equ 1 +CONFIG_LIBYUV equ 0 -+CONFIG_MAX_DECODE_PROFILE equ 0 ++CONFIG_MAX_DECODE_PROFILE equ 2 +CONFIG_MISMATCH_DEBUG equ 0 +CONFIG_MULTITHREAD equ 1 +CONFIG_NN_V2 equ 0 -+CONFIG_NORMAL_TILE_MODE equ 1 ++CONFIG_NORMAL_TILE_MODE equ 0 +CONFIG_OPTICAL_FLOW_API equ 0 +CONFIG_OS_SUPPORT equ 1 +CONFIG_OUTPUT_FRAME_SIZE equ 0 +CONFIG_PARTITION_SEARCH_ORDER equ 0 +CONFIG_PIC equ 1 ++CONFIG_QUANT_MATRIX equ 0 +CONFIG_RATECTRL_LOG equ 0 +CONFIG_RD_COMMAND equ 0 +CONFIG_RD_DEBUG equ 0 @@ -10380,8 +10389,8 @@ Index: chromium-122.0.6261.128/third_party/libaom/source/config/linux/ppc64/conf +CONFIG_SALIENCY_MAP equ 0 +CONFIG_SHARED equ 0 +CONFIG_SIZE_LIMIT equ 1 -+CONFIG_SPATIAL_RESAMPLING equ 1 +CONFIG_SPEED_STATS equ 0 ++CONFIG_SVT_AV1 equ 1 +CONFIG_TFLITE equ 0 +CONFIG_THREE_PASS equ 0 +CONFIG_TUNE_BUTTERAUGLI equ 0 @@ -10406,17 +10415,18 @@ Index: chromium-122.0.6261.128/third_party/libaom/source/config/linux/ppc64/conf +HAVE_SSE4_2 equ 0 +HAVE_SSSE3 equ 0 +HAVE_SVE equ 0 ++HAVE_SVE2 equ 0 +HAVE_UNISTD_H equ 1 +HAVE_VSX equ 1 +HAVE_WXWIDGETS equ 0 +STATIC_LINK_JXL equ 0 -Index: chromium-122.0.6261.128/third_party/libaom/source/config/linux/ppc64/config/aom_config.c +Index: chromium-130.0.6723.44/third_party/libaom/source/config/linux/ppc64/config/aom_config.c =================================================================== --- /dev/null -+++ chromium-122.0.6261.128/third_party/libaom/source/config/linux/ppc64/config/aom_config.c ++++ chromium-130.0.6723.44/third_party/libaom/source/config/linux/ppc64/config/aom_config.c @@ -0,0 +1,13 @@ +/* -+ * Copyright (c) 2024, Alliance for Open Media. All rights reserved ++ * Copyright (c) 2024, Alliance for Open Media. All rights reserved. + * + * This source code is subject to the terms of the BSD 2 Clause License and + * the Alliance for Open Media Patent License 1.0. If the BSD 2 Clause License @@ -10426,15 +10436,15 @@ Index: chromium-122.0.6261.128/third_party/libaom/source/config/linux/ppc64/conf + * PATENTS file, you can obtain it at www.aomedia.org/license/patent. + */ +#include "aom/aom_codec.h" -+static const char* const cfg = "cmake ../source/libaom -G \"Unix Makefiles\" -DCMAKE_TOOLCHAIN_FILE=\"../source/libaom/build/cmake/toolchains/ppc-linux-gcc.cmake\" -DCONFIG_AV1_ENCODER=1 -DCONFIG_LIBYUV=0 -DCONFIG_AV1_HIGHBITDEPTH=0 -DCONFIG_AV1_TEMPORAL_DENOISING=1 -DCONFIG_REALTIME_ONLY=1 -DCONFIG_MAX_DECODE_PROFILE=0 -DCONFIG_NORMAL_TILE_MODE=1 -DCONFIG_SIZE_LIMIT=1 -DDECODE_HEIGHT_LIMIT=16384 -DDECODE_WIDTH_LIMIT=16384"; ++static const char* const cfg = "cmake ../source/libaom -G \"Unix Makefiles\" -DCMAKE_TOOLCHAIN_FILE=\"../source/libaom/build/cmake/toolchains/ppc-linux-gcc.cmake\" -DCONFIG_AV1_DECODER=0 -DCONFIG_AV1_ENCODER=1 -DCONFIG_LIBYUV=0 -DCONFIG_AV1_HIGHBITDEPTH=0 -DCONFIG_AV1_TEMPORAL_DENOISING=1 -DCONFIG_QUANT_MATRIX=0 -DCONFIG_REALTIME_ONLY=1 -DCONFIG_SIZE_LIMIT=1 -DDECODE_HEIGHT_LIMIT=16384 -DDECODE_WIDTH_LIMIT=16384"; +const char *aom_codec_build_config(void) {return cfg;} -Index: chromium-122.0.6261.128/third_party/libaom/source/config/linux/ppc64/config/aom_config.h +Index: chromium-130.0.6723.44/third_party/libaom/source/config/linux/ppc64/config/aom_config.h =================================================================== --- /dev/null -+++ chromium-122.0.6261.128/third_party/libaom/source/config/linux/ppc64/config/aom_config.h -@@ -0,0 +1,96 @@ ++++ chromium-130.0.6723.44/third_party/libaom/source/config/linux/ppc64/config/aom_config.h +@@ -0,0 +1,98 @@ +/* -+ * Copyright (c) 2024, Alliance for Open Media. All rights reserved ++ * Copyright (c) 2024, Alliance for Open Media. All rights reserved. + * + * This source code is subject to the terms of the BSD 2 Clause License and + * the Alliance for Open Media Patent License 1.0. If the BSD 2 Clause License @@ -10452,7 +10462,7 @@ Index: chromium-122.0.6261.128/third_party/libaom/source/config/linux/ppc64/conf +#define AOM_ARCH_X86_64 0 +#define CONFIG_ACCOUNTING 0 +#define CONFIG_ANALYZER 0 -+#define CONFIG_AV1_DECODER 1 ++#define CONFIG_AV1_DECODER 0 +#define CONFIG_AV1_ENCODER 1 +#define CONFIG_AV1_HIGHBITDEPTH 0 +#define CONFIG_AV1_TEMPORAL_DENOISING 1 @@ -10477,17 +10487,19 @@ Index: chromium-122.0.6261.128/third_party/libaom/source/config/linux/ppc64/conf +#define CONFIG_INSPECTION 0 +#define CONFIG_INTERNAL_STATS 0 +#define CONFIG_INTER_STATS_ONLY 0 ++#define CONFIG_LIBVMAF_PSNR_PEAK 1 +#define CONFIG_LIBYUV 0 -+#define CONFIG_MAX_DECODE_PROFILE 0 ++#define CONFIG_MAX_DECODE_PROFILE 2 +#define CONFIG_MISMATCH_DEBUG 0 +#define CONFIG_MULTITHREAD 1 +#define CONFIG_NN_V2 0 -+#define CONFIG_NORMAL_TILE_MODE 1 ++#define CONFIG_NORMAL_TILE_MODE 0 +#define CONFIG_OPTICAL_FLOW_API 0 +#define CONFIG_OS_SUPPORT 1 +#define CONFIG_OUTPUT_FRAME_SIZE 0 +#define CONFIG_PARTITION_SEARCH_ORDER 0 +#define CONFIG_PIC 1 ++#define CONFIG_QUANT_MATRIX 0 +#define CONFIG_RATECTRL_LOG 0 +#define CONFIG_RD_COMMAND 0 +#define CONFIG_RD_DEBUG 0 @@ -10497,8 +10509,8 @@ Index: chromium-122.0.6261.128/third_party/libaom/source/config/linux/ppc64/conf +#define CONFIG_SALIENCY_MAP 0 +#define CONFIG_SHARED 0 +#define CONFIG_SIZE_LIMIT 1 -+#define CONFIG_SPATIAL_RESAMPLING 1 +#define CONFIG_SPEED_STATS 0 ++#define CONFIG_SVT_AV1 1 +#define CONFIG_TFLITE 0 +#define CONFIG_THREE_PASS 0 +#define CONFIG_TUNE_BUTTERAUGLI 0 @@ -10523,17 +10535,28 @@ Index: chromium-122.0.6261.128/third_party/libaom/source/config/linux/ppc64/conf +#define HAVE_SSE4_2 0 +#define HAVE_SSSE3 0 +#define HAVE_SVE 0 ++#define HAVE_SVE2 0 +#define HAVE_UNISTD_H 1 +#define HAVE_VSX 1 +#define HAVE_WXWIDGETS 0 -+#define INLINE inline +#define STATIC_LINK_JXL 0 +#endif // AOM_CONFIG_H_ -Index: chromium-122.0.6261.128/third_party/libaom/source/config/linux/ppc64/config/aom_dsp_rtcd.h +Index: chromium-130.0.6723.44/third_party/libaom/source/config/linux/ppc64/config/aom_dsp_rtcd.h =================================================================== --- /dev/null -+++ chromium-122.0.6261.128/third_party/libaom/source/config/linux/ppc64/config/aom_dsp_rtcd.h -@@ -0,0 +1,1541 @@ ++++ chromium-130.0.6723.44/third_party/libaom/source/config/linux/ppc64/config/aom_dsp_rtcd.h +@@ -0,0 +1,1501 @@ ++/* ++ * Copyright (c) 2024, Alliance for Open Media. All rights reserved. ++ * ++ * This source code is subject to the terms of the BSD 2 Clause License and ++ * the Alliance for Open Media Patent License 1.0. If the BSD 2 Clause License ++ * was not distributed with this source code in the LICENSE file, you can ++ * obtain it at www.aomedia.org/license/software. If the Alliance for Open ++ * Media Patent License 1.0 was not distributed with this source code in the ++ * PATENTS file, you can obtain it at www.aomedia.org/license/patent. ++ */ ++ +// This file is generated. Do not edit. +#ifndef AOM_DSP_RTCD_H_ +#define AOM_DSP_RTCD_H_ @@ -10582,9 +10605,6 @@ Index: chromium-122.0.6261.128/third_party/libaom/source/config/linux/ppc64/conf +void aom_comp_mask_pred_c(uint8_t *comp_pred, const uint8_t *pred, int width, int height, const uint8_t *ref, int ref_stride, const uint8_t *mask, int mask_stride, int invert_mask); +#define aom_comp_mask_pred aom_comp_mask_pred_c + -+void aom_convolve8_c(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const InterpKernel *filter, int x0_q4, int x_step_q4, int y0_q4, int y_step_q4, int w, int h); -+#define aom_convolve8 aom_convolve8_c -+ +void aom_convolve8_horiz_c(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h); +#define aom_convolve8_horiz aom_convolve8_horiz_c + @@ -11131,99 +11151,51 @@ Index: chromium-122.0.6261.128/third_party/libaom/source/config/linux/ppc64/conf +unsigned int aom_masked_sad128x128_c(const uint8_t *src, int src_stride, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask); +#define aom_masked_sad128x128 aom_masked_sad128x128_c + -+void aom_masked_sad128x128x4d_c(const uint8_t *src, int src_stride, const uint8_t *ref[4], int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask, unsigned sads[4]); -+#define aom_masked_sad128x128x4d aom_masked_sad128x128x4d_c -+ +unsigned int aom_masked_sad128x64_c(const uint8_t *src, int src_stride, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask); +#define aom_masked_sad128x64 aom_masked_sad128x64_c + -+void aom_masked_sad128x64x4d_c(const uint8_t *src, int src_stride, const uint8_t *ref[4], int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask, unsigned sads[4]); -+#define aom_masked_sad128x64x4d aom_masked_sad128x64x4d_c -+ +unsigned int aom_masked_sad16x16_c(const uint8_t *src, int src_stride, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask); +#define aom_masked_sad16x16 aom_masked_sad16x16_c + -+void aom_masked_sad16x16x4d_c(const uint8_t *src, int src_stride, const uint8_t *ref[4], int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask, unsigned sads[4]); -+#define aom_masked_sad16x16x4d aom_masked_sad16x16x4d_c -+ +unsigned int aom_masked_sad16x32_c(const uint8_t *src, int src_stride, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask); +#define aom_masked_sad16x32 aom_masked_sad16x32_c + -+void aom_masked_sad16x32x4d_c(const uint8_t *src, int src_stride, const uint8_t *ref[4], int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask, unsigned sads[4]); -+#define aom_masked_sad16x32x4d aom_masked_sad16x32x4d_c -+ +unsigned int aom_masked_sad16x8_c(const uint8_t *src, int src_stride, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask); +#define aom_masked_sad16x8 aom_masked_sad16x8_c + -+void aom_masked_sad16x8x4d_c(const uint8_t *src, int src_stride, const uint8_t *ref[4], int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask, unsigned sads[4]); -+#define aom_masked_sad16x8x4d aom_masked_sad16x8x4d_c -+ +unsigned int aom_masked_sad32x16_c(const uint8_t *src, int src_stride, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask); +#define aom_masked_sad32x16 aom_masked_sad32x16_c + -+void aom_masked_sad32x16x4d_c(const uint8_t *src, int src_stride, const uint8_t *ref[4], int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask, unsigned sads[4]); -+#define aom_masked_sad32x16x4d aom_masked_sad32x16x4d_c -+ +unsigned int aom_masked_sad32x32_c(const uint8_t *src, int src_stride, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask); +#define aom_masked_sad32x32 aom_masked_sad32x32_c + -+void aom_masked_sad32x32x4d_c(const uint8_t *src, int src_stride, const uint8_t *ref[4], int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask, unsigned sads[4]); -+#define aom_masked_sad32x32x4d aom_masked_sad32x32x4d_c -+ +unsigned int aom_masked_sad32x64_c(const uint8_t *src, int src_stride, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask); +#define aom_masked_sad32x64 aom_masked_sad32x64_c + -+void aom_masked_sad32x64x4d_c(const uint8_t *src, int src_stride, const uint8_t *ref[4], int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask, unsigned sads[4]); -+#define aom_masked_sad32x64x4d aom_masked_sad32x64x4d_c -+ +unsigned int aom_masked_sad4x4_c(const uint8_t *src, int src_stride, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask); +#define aom_masked_sad4x4 aom_masked_sad4x4_c + -+void aom_masked_sad4x4x4d_c(const uint8_t *src, int src_stride, const uint8_t *ref[4], int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask, unsigned sads[4]); -+#define aom_masked_sad4x4x4d aom_masked_sad4x4x4d_c -+ +unsigned int aom_masked_sad4x8_c(const uint8_t *src, int src_stride, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask); +#define aom_masked_sad4x8 aom_masked_sad4x8_c + -+void aom_masked_sad4x8x4d_c(const uint8_t *src, int src_stride, const uint8_t *ref[4], int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask, unsigned sads[4]); -+#define aom_masked_sad4x8x4d aom_masked_sad4x8x4d_c -+ +unsigned int aom_masked_sad64x128_c(const uint8_t *src, int src_stride, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask); +#define aom_masked_sad64x128 aom_masked_sad64x128_c + -+void aom_masked_sad64x128x4d_c(const uint8_t *src, int src_stride, const uint8_t *ref[4], int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask, unsigned sads[4]); -+#define aom_masked_sad64x128x4d aom_masked_sad64x128x4d_c -+ +unsigned int aom_masked_sad64x32_c(const uint8_t *src, int src_stride, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask); +#define aom_masked_sad64x32 aom_masked_sad64x32_c + -+void aom_masked_sad64x32x4d_c(const uint8_t *src, int src_stride, const uint8_t *ref[4], int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask, unsigned sads[4]); -+#define aom_masked_sad64x32x4d aom_masked_sad64x32x4d_c -+ +unsigned int aom_masked_sad64x64_c(const uint8_t *src, int src_stride, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask); +#define aom_masked_sad64x64 aom_masked_sad64x64_c + -+void aom_masked_sad64x64x4d_c(const uint8_t *src, int src_stride, const uint8_t *ref[4], int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask, unsigned sads[4]); -+#define aom_masked_sad64x64x4d aom_masked_sad64x64x4d_c -+ +unsigned int aom_masked_sad8x16_c(const uint8_t *src, int src_stride, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask); +#define aom_masked_sad8x16 aom_masked_sad8x16_c + -+void aom_masked_sad8x16x4d_c(const uint8_t *src, int src_stride, const uint8_t *ref[4], int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask, unsigned sads[4]); -+#define aom_masked_sad8x16x4d aom_masked_sad8x16x4d_c -+ +unsigned int aom_masked_sad8x4_c(const uint8_t *src, int src_stride, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask); +#define aom_masked_sad8x4 aom_masked_sad8x4_c + -+void aom_masked_sad8x4x4d_c(const uint8_t *src, int src_stride, const uint8_t *ref[4], int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask, unsigned sads[4]); -+#define aom_masked_sad8x4x4d aom_masked_sad8x4x4d_c -+ +unsigned int aom_masked_sad8x8_c(const uint8_t *src, int src_stride, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask); +#define aom_masked_sad8x8 aom_masked_sad8x8_c + -+void aom_masked_sad8x8x4d_c(const uint8_t *src, int src_stride, const uint8_t *ref[4], int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask, unsigned sads[4]); -+#define aom_masked_sad8x8x4d aom_masked_sad8x8x4d_c -+ +unsigned int aom_masked_sub_pixel_variance128x128_c(const uint8_t *src, int src_stride, int xoffset, int yoffset, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask, unsigned int *sse); +#define aom_masked_sub_pixel_variance128x128 aom_masked_sub_pixel_variance128x128_c + @@ -12075,11 +12047,22 @@ Index: chromium-122.0.6261.128/third_party/libaom/source/config/linux/ppc64/conf +#endif + +#endif -Index: chromium-122.0.6261.128/third_party/libaom/source/config/linux/ppc64/config/aom_scale_rtcd.h +Index: chromium-130.0.6723.44/third_party/libaom/source/config/linux/ppc64/config/aom_scale_rtcd.h =================================================================== --- /dev/null -+++ chromium-122.0.6261.128/third_party/libaom/source/config/linux/ppc64/config/aom_scale_rtcd.h -@@ -0,0 +1,105 @@ ++++ chromium-130.0.6723.44/third_party/libaom/source/config/linux/ppc64/config/aom_scale_rtcd.h +@@ -0,0 +1,91 @@ ++/* ++ * Copyright (c) 2024, Alliance for Open Media. All rights reserved. ++ * ++ * This source code is subject to the terms of the BSD 2 Clause License and ++ * the Alliance for Open Media Patent License 1.0. If the BSD 2 Clause License ++ * was not distributed with this source code in the LICENSE file, you can ++ * obtain it at www.aomedia.org/license/software. If the Alliance for Open ++ * Media Patent License 1.0 was not distributed with this source code in the ++ * PATENTS file, you can obtain it at www.aomedia.org/license/patent. ++ */ ++ +// This file is generated. Do not edit. +#ifndef AOM_SCALE_RTCD_H_ +#define AOM_SCALE_RTCD_H_ @@ -12090,55 +12073,30 @@ Index: chromium-122.0.6261.128/third_party/libaom/source/config/linux/ppc64/conf +#define RTCD_EXTERN extern +#endif + ++#include ++ +struct yv12_buffer_config; + +#ifdef __cplusplus +extern "C" { +#endif + -+void aom_extend_frame_borders_c(struct yv12_buffer_config *ybf, const int num_planes); ++void aom_extend_frame_borders_c(struct yv12_buffer_config *ybf, int num_planes); +#define aom_extend_frame_borders aom_extend_frame_borders_c + +void aom_extend_frame_borders_plane_row_c(const struct yv12_buffer_config *ybf, int plane, int v_start, int v_end); +#define aom_extend_frame_borders_plane_row aom_extend_frame_borders_plane_row_c + -+void aom_extend_frame_borders_y_c(struct yv12_buffer_config *ybf); -+#define aom_extend_frame_borders_y aom_extend_frame_borders_y_c -+ -+void aom_extend_frame_inner_borders_c(struct yv12_buffer_config *ybf, const int num_planes); -+#define aom_extend_frame_inner_borders aom_extend_frame_inner_borders_c -+ -+void aom_horizontal_line_2_1_scale_c(const unsigned char *source, unsigned int source_width, unsigned char *dest, unsigned int dest_width); -+#define aom_horizontal_line_2_1_scale aom_horizontal_line_2_1_scale_c -+ -+void aom_horizontal_line_5_3_scale_c(const unsigned char *source, unsigned int source_width, unsigned char *dest, unsigned int dest_width); -+#define aom_horizontal_line_5_3_scale aom_horizontal_line_5_3_scale_c -+ -+void aom_horizontal_line_5_4_scale_c(const unsigned char *source, unsigned int source_width, unsigned char *dest, unsigned int dest_width); -+#define aom_horizontal_line_5_4_scale aom_horizontal_line_5_4_scale_c -+ -+void aom_vertical_band_2_1_scale_c(unsigned char *source, int src_pitch, unsigned char *dest, int dest_pitch, unsigned int dest_width); -+#define aom_vertical_band_2_1_scale aom_vertical_band_2_1_scale_c -+ -+void aom_vertical_band_2_1_scale_i_c(unsigned char *source, int src_pitch, unsigned char *dest, int dest_pitch, unsigned int dest_width); -+#define aom_vertical_band_2_1_scale_i aom_vertical_band_2_1_scale_i_c -+ -+void aom_vertical_band_5_3_scale_c(unsigned char *source, int src_pitch, unsigned char *dest, int dest_pitch, unsigned int dest_width); -+#define aom_vertical_band_5_3_scale aom_vertical_band_5_3_scale_c -+ -+void aom_vertical_band_5_4_scale_c(unsigned char *source, int src_pitch, unsigned char *dest, int dest_pitch, unsigned int dest_width); -+#define aom_vertical_band_5_4_scale aom_vertical_band_5_4_scale_c -+ +void aom_yv12_copy_frame_c(const struct yv12_buffer_config *src_bc, struct yv12_buffer_config *dst_bc, const int num_planes); +#define aom_yv12_copy_frame aom_yv12_copy_frame_c + -+void aom_yv12_copy_u_c(const struct yv12_buffer_config *src_bc, struct yv12_buffer_config *dst_bc); ++void aom_yv12_copy_u_c(const struct yv12_buffer_config *src_bc, struct yv12_buffer_config *dst_bc, int use_crop); +#define aom_yv12_copy_u aom_yv12_copy_u_c + -+void aom_yv12_copy_v_c(const struct yv12_buffer_config *src_bc, struct yv12_buffer_config *dst_bc); ++void aom_yv12_copy_v_c(const struct yv12_buffer_config *src_bc, struct yv12_buffer_config *dst_bc, int use_crop); +#define aom_yv12_copy_v aom_yv12_copy_v_c + -+void aom_yv12_copy_y_c(const struct yv12_buffer_config *src_ybc, struct yv12_buffer_config *dst_ybc); ++void aom_yv12_copy_y_c(const struct yv12_buffer_config *src_ybc, struct yv12_buffer_config *dst_ybc, int use_crop); +#define aom_yv12_copy_y aom_yv12_copy_y_c + +void aom_yv12_extend_frame_borders_c(struct yv12_buffer_config *ybf, const int num_planes); @@ -12162,7 +12120,7 @@ Index: chromium-122.0.6261.128/third_party/libaom/source/config/linux/ppc64/conf +void aom_yv12_partial_copy_y_c(const struct yv12_buffer_config *src_ybc, int hstart1, int hend1, int vstart1, int vend1, struct yv12_buffer_config *dst_ybc, int hstart2, int vstart2); +#define aom_yv12_partial_copy_y aom_yv12_partial_copy_y_c + -+int aom_yv12_realloc_with_new_border_c(struct yv12_buffer_config *ybf, int new_border, int byte_alignment, int num_pyramid_levels, int num_planes); ++int aom_yv12_realloc_with_new_border_c(struct yv12_buffer_config *ybf, int new_border, int byte_alignment, bool alloc_pyramid, int num_planes); +#define aom_yv12_realloc_with_new_border aom_yv12_realloc_with_new_border_c + +void aom_scale_rtcd(void); @@ -12185,11 +12143,22 @@ Index: chromium-122.0.6261.128/third_party/libaom/source/config/linux/ppc64/conf +#endif + +#endif -Index: chromium-122.0.6261.128/third_party/libaom/source/config/linux/ppc64/config/av1_rtcd.h +Index: chromium-130.0.6723.44/third_party/libaom/source/config/linux/ppc64/config/av1_rtcd.h =================================================================== --- /dev/null -+++ chromium-122.0.6261.128/third_party/libaom/source/config/linux/ppc64/config/av1_rtcd.h -@@ -0,0 +1,478 @@ ++++ chromium-130.0.6723.44/third_party/libaom/source/config/linux/ppc64/config/av1_rtcd.h +@@ -0,0 +1,438 @@ ++/* ++ * Copyright (c) 2024, Alliance for Open Media. All rights reserved. ++ * ++ * This source code is subject to the terms of the BSD 2 Clause License and ++ * the Alliance for Open Media Patent License 1.0. If the BSD 2 Clause License ++ * was not distributed with this source code in the LICENSE file, you can ++ * obtain it at www.aomedia.org/license/software. If the Alliance for Open ++ * Media Patent License 1.0 was not distributed with this source code in the ++ * PATENTS file, you can obtain it at www.aomedia.org/license/patent. ++ */ ++ +// This file is generated. Do not edit. +#ifndef AV1_RTCD_H_ +#define AV1_RTCD_H_ @@ -12274,12 +12243,6 @@ Index: chromium-122.0.6261.128/third_party/libaom/source/config/linux/ppc64/conf + int ref_stride, int subpel_search); +#define aom_comp_avg_upsampled_pred aom_comp_avg_upsampled_pred_c + -+void aom_dist_wtd_comp_avg_upsampled_pred_c(MACROBLOCKD *xd, const struct AV1Common *const cm, int mi_row, int mi_col, -+ const MV *const mv, uint8_t *comp_pred, const uint8_t *pred, int width, -+ int height, int subpel_x_q3, int subpel_y_q3, const uint8_t *ref, -+ int ref_stride, const DIST_WTD_COMP_PARAMS *jcp_param, int subpel_search); -+#define aom_dist_wtd_comp_avg_upsampled_pred aom_dist_wtd_comp_avg_upsampled_pred_c -+ +void aom_quantize_b_helper_c(const tran_low_t *coeff_ptr, intptr_t n_coeffs, const int16_t *zbin_ptr, const int16_t *round_ptr, const int16_t *quant_ptr, const int16_t *quant_shift_ptr, tran_low_t *qcoeff_ptr, tran_low_t *dqcoeff_ptr, const int16_t *dequant_ptr, uint16_t *eob_ptr, const int16_t *scan, const int16_t *iscan, const qm_val_t *qm_ptr, const qm_val_t *iqm_ptr, const int log_scale); +#define aom_quantize_b_helper aom_quantize_b_helper_c + @@ -12357,6 +12320,9 @@ Index: chromium-122.0.6261.128/third_party/libaom/source/config/linux/ppc64/conf +void av1_dr_prediction_z3_c(uint8_t *dst, ptrdiff_t stride, int bw, int bh, const uint8_t *above, const uint8_t *left, int upsample_left, int dx, int dy); +#define av1_dr_prediction_z3 av1_dr_prediction_z3_c + ++void av1_fdwt8x8_uint8_input_c(const uint8_t *input, tran_low_t *output, int stride, int hbd); ++#define av1_fdwt8x8_uint8_input av1_fdwt8x8_uint8_input_c ++ +void av1_filter_intra_edge_c(uint8_t *p, int sz, int strength); +#define av1_filter_intra_edge av1_filter_intra_edge_c + @@ -12420,60 +12386,6 @@ Index: chromium-122.0.6261.128/third_party/libaom/source/config/linux/ppc64/conf +void av1_highbd_inv_txfm_add_c(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param); +#define av1_highbd_inv_txfm_add av1_highbd_inv_txfm_add_c + -+void av1_highbd_inv_txfm_add_16x32_c(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param); -+#define av1_highbd_inv_txfm_add_16x32 av1_highbd_inv_txfm_add_16x32_c -+ -+void av1_highbd_inv_txfm_add_16x4_c(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param); -+#define av1_highbd_inv_txfm_add_16x4 av1_highbd_inv_txfm_add_16x4_c -+ -+void av1_highbd_inv_txfm_add_16x64_c(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param); -+#define av1_highbd_inv_txfm_add_16x64 av1_highbd_inv_txfm_add_16x64_c -+ -+void av1_highbd_inv_txfm_add_16x8_c(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param); -+#define av1_highbd_inv_txfm_add_16x8 av1_highbd_inv_txfm_add_16x8_c -+ -+void av1_highbd_inv_txfm_add_32x16_c(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param); -+#define av1_highbd_inv_txfm_add_32x16 av1_highbd_inv_txfm_add_32x16_c -+ -+void av1_highbd_inv_txfm_add_32x32_c(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param); -+#define av1_highbd_inv_txfm_add_32x32 av1_highbd_inv_txfm_add_32x32_c -+ -+void av1_highbd_inv_txfm_add_32x64_c(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param); -+#define av1_highbd_inv_txfm_add_32x64 av1_highbd_inv_txfm_add_32x64_c -+ -+void av1_highbd_inv_txfm_add_32x8_c(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param); -+#define av1_highbd_inv_txfm_add_32x8 av1_highbd_inv_txfm_add_32x8_c -+ -+void av1_highbd_inv_txfm_add_4x16_c(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param); -+#define av1_highbd_inv_txfm_add_4x16 av1_highbd_inv_txfm_add_4x16_c -+ -+void av1_highbd_inv_txfm_add_4x4_c(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param); -+#define av1_highbd_inv_txfm_add_4x4 av1_highbd_inv_txfm_add_4x4_c -+ -+void av1_highbd_inv_txfm_add_4x8_c(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param); -+#define av1_highbd_inv_txfm_add_4x8 av1_highbd_inv_txfm_add_4x8_c -+ -+void av1_highbd_inv_txfm_add_64x16_c(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param); -+#define av1_highbd_inv_txfm_add_64x16 av1_highbd_inv_txfm_add_64x16_c -+ -+void av1_highbd_inv_txfm_add_64x32_c(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param); -+#define av1_highbd_inv_txfm_add_64x32 av1_highbd_inv_txfm_add_64x32_c -+ -+void av1_highbd_inv_txfm_add_64x64_c(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param); -+#define av1_highbd_inv_txfm_add_64x64 av1_highbd_inv_txfm_add_64x64_c -+ -+void av1_highbd_inv_txfm_add_8x16_c(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param); -+#define av1_highbd_inv_txfm_add_8x16 av1_highbd_inv_txfm_add_8x16_c -+ -+void av1_highbd_inv_txfm_add_8x32_c(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param); -+#define av1_highbd_inv_txfm_add_8x32 av1_highbd_inv_txfm_add_8x32_c -+ -+void av1_highbd_inv_txfm_add_8x4_c(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param); -+#define av1_highbd_inv_txfm_add_8x4 av1_highbd_inv_txfm_add_8x4_c -+ -+void av1_highbd_inv_txfm_add_8x8_c(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param); -+#define av1_highbd_inv_txfm_add_8x8 av1_highbd_inv_txfm_add_8x8_c -+ +void av1_highbd_iwht4x4_16_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, int bd); +#define av1_highbd_iwht4x4_16_add av1_highbd_iwht4x4_16_add_c + @@ -12567,6 +12479,12 @@ Index: chromium-122.0.6261.128/third_party/libaom/source/config/linux/ppc64/conf +void av1_resize_and_extend_frame_c(const YV12_BUFFER_CONFIG *src, YV12_BUFFER_CONFIG *dst, const InterpFilter filter, const int phase, const int num_planes); +#define av1_resize_and_extend_frame av1_resize_and_extend_frame_c + ++void av1_resize_horz_dir_c(const uint8_t *const input, int in_stride, uint8_t *intbuf, int height, int filtered_length, int width2); ++#define av1_resize_horz_dir av1_resize_horz_dir_c ++ ++bool av1_resize_vert_dir_c(uint8_t *intbuf, uint8_t *output, int out_stride, int height, int height2, int width2, int start_col); ++#define av1_resize_vert_dir av1_resize_vert_dir_c ++ +void av1_round_shift_array_c(int32_t *arr, int size, int bit); +#define av1_round_shift_array av1_round_shift_array_c + @@ -12668,11 +12586,21 @@ Index: chromium-122.0.6261.128/third_party/libaom/source/config/linux/ppc64/conf +#endif + +#endif -Index: chromium-122.0.6261.128/third_party/libvpx/source/config/linux/ppc64/vp8_rtcd.h +Index: chromium-130.0.6723.44/third_party/libvpx/source/config/linux/ppc64/vp8_rtcd.h =================================================================== ---- chromium-122.0.6261.128.orig/third_party/libvpx/source/config/linux/ppc64/vp8_rtcd.h +--- chromium-130.0.6723.44.orig/third_party/libvpx/source/config/linux/ppc64/vp8_rtcd.h +++ /dev/null -@@ -1,320 +0,0 @@ +@@ -1,330 +0,0 @@ +-/* +- * Copyright (c) 2024 The WebM project authors. All Rights Reserved. +- * +- * Use of this source code is governed by a BSD-style license +- * that can be found in the LICENSE file in the root of the source +- * tree. An additional intellectual property rights grant can be found +- * in the file PATENTS. All contributing project authors may +- * be found in the AUTHORS file in the root of the source tree. +- */ +- -// This file is generated. Do not edit. -#ifndef VP8_RTCD_H_ -#define VP8_RTCD_H_ @@ -12992,12 +12920,22 @@ Index: chromium-122.0.6261.128/third_party/libvpx/source/config/linux/ppc64/vp8_ -} // extern "C" -#endif - --#endif -Index: chromium-122.0.6261.128/third_party/libvpx/source/config/linux/ppc64/vp9_rtcd.h +-#endif // VP8_RTCD_H_ +Index: chromium-130.0.6723.44/third_party/libvpx/source/config/linux/ppc64/vp9_rtcd.h =================================================================== ---- chromium-122.0.6261.128.orig/third_party/libvpx/source/config/linux/ppc64/vp9_rtcd.h +--- chromium-130.0.6723.44.orig/third_party/libvpx/source/config/linux/ppc64/vp9_rtcd.h +++ /dev/null -@@ -1,193 +0,0 @@ +@@ -1,203 +0,0 @@ +-/* +- * Copyright (c) 2024 The WebM project authors. All Rights Reserved. +- * +- * Use of this source code is governed by a BSD-style license +- * that can be found in the LICENSE file in the root of the source +- * tree. An additional intellectual property rights grant can be found +- * in the file PATENTS. All contributing project authors may +- * be found in the AUTHORS file in the root of the source tree. +- */ +- -// This file is generated. Do not edit. -#ifndef VP9_RTCD_H_ -#define VP9_RTCD_H_ @@ -13190,12 +13128,12 @@ Index: chromium-122.0.6261.128/third_party/libvpx/source/config/linux/ppc64/vp9_ -} // extern "C" -#endif - --#endif -Index: chromium-122.0.6261.128/third_party/libvpx/source/config/linux/ppc64/vpx_config.asm +-#endif // VP9_RTCD_H_ +Index: chromium-130.0.6723.44/third_party/libvpx/source/config/linux/ppc64/vpx_config.asm =================================================================== ---- chromium-122.0.6261.128.orig/third_party/libvpx/source/config/linux/ppc64/vpx_config.asm +--- chromium-130.0.6723.44.orig/third_party/libvpx/source/config/linux/ppc64/vpx_config.asm +++ /dev/null -@@ -1,107 +0,0 @@ +@@ -1,108 +0,0 @@ -@ This file was created from a .asm file -@ using the ads2gas.pl script. -.syntax unified @@ -13218,6 +13156,7 @@ Index: chromium-122.0.6261.128/third_party/libvpx/source/config/linux/ppc64/vpx_ -.equ HAVE_NEON_DOTPROD , 0 -.equ HAVE_NEON_I8MM , 0 -.equ HAVE_SVE , 0 +-.equ HAVE_SVE2 , 0 -.equ HAVE_MIPS32 , 0 -.equ HAVE_DSPR2 , 0 -.equ HAVE_MSA , 0 @@ -13303,9 +13242,9 @@ Index: chromium-122.0.6261.128/third_party/libvpx/source/config/linux/ppc64/vpx_ -.equ DECODE_WIDTH_LIMIT , 16384 -.equ DECODE_HEIGHT_LIMIT , 16384 - .section .note.GNU-stack,"",%progbits -Index: chromium-122.0.6261.128/third_party/libvpx/source/config/linux/ppc64/vpx_config.c +Index: chromium-130.0.6723.44/third_party/libvpx/source/config/linux/ppc64/vpx_config.c =================================================================== ---- chromium-122.0.6261.128.orig/third_party/libvpx/source/config/linux/ppc64/vpx_config.c +--- chromium-130.0.6723.44.orig/third_party/libvpx/source/config/linux/ppc64/vpx_config.c +++ /dev/null @@ -1,10 +0,0 @@ -/* Copyright (c) 2011 The WebM project authors. All Rights Reserved. */ @@ -13316,13 +13255,13 @@ Index: chromium-122.0.6261.128/third_party/libvpx/source/config/linux/ppc64/vpx_ -/* in the file PATENTS. All contributing project authors may */ -/* be found in the AUTHORS file in the root of the source tree. */ -#include "vpx/vpx_codec.h" --static const char* const cfg = "--target=ppc64le-linux-gcc --enable-external-build --enable-postproc --enable-multi-res-encoding --enable-temporal-denoising --enable-vp9-temporal-denoising --enable-vp9-postproc --size-limit=16384x16384 --enable-realtime-only --disable-install-docs --disable-libyuv"; +-static const char* const cfg = "--target=ppc64le-linux-gcc --enable-external-build --enable-postproc --enable-multi-res-encoding --enable-temporal-denoising --enable-vp9-temporal-denoising --enable-vp9-postproc --size-limit=16384x16384 --enable-realtime-only --disable-install-docs --disable-libyuv --enable-unit-tests"; -const char *vpx_codec_build_config(void) {return cfg;} -Index: chromium-122.0.6261.128/third_party/libvpx/source/config/linux/ppc64/vpx_config.h +Index: chromium-130.0.6723.44/third_party/libvpx/source/config/linux/ppc64/vpx_config.h =================================================================== ---- chromium-122.0.6261.128.orig/third_party/libvpx/source/config/linux/ppc64/vpx_config.h +--- chromium-130.0.6723.44.orig/third_party/libvpx/source/config/linux/ppc64/vpx_config.h +++ /dev/null -@@ -1,116 +0,0 @@ +@@ -1,117 +0,0 @@ -/* Copyright (c) 2011 The WebM project authors. All Rights Reserved. */ -/* */ -/* Use of this source code is governed by a BSD-style license */ @@ -13354,6 +13293,7 @@ Index: chromium-122.0.6261.128/third_party/libvpx/source/config/linux/ppc64/vpx_ -#define HAVE_NEON_DOTPROD 0 -#define HAVE_NEON_I8MM 0 -#define HAVE_SVE 0 +-#define HAVE_SVE2 0 -#define HAVE_MIPS32 0 -#define HAVE_DSPR2 0 -#define HAVE_MSA 0 @@ -13439,11 +13379,21 @@ Index: chromium-122.0.6261.128/third_party/libvpx/source/config/linux/ppc64/vpx_ -#define DECODE_WIDTH_LIMIT 16384 -#define DECODE_HEIGHT_LIMIT 16384 -#endif /* VPX_CONFIG_H */ -Index: chromium-122.0.6261.128/third_party/libvpx/source/config/linux/ppc64/vpx_dsp_rtcd.h +Index: chromium-130.0.6723.44/third_party/libvpx/source/config/linux/ppc64/vpx_dsp_rtcd.h =================================================================== ---- chromium-122.0.6261.128.orig/third_party/libvpx/source/config/linux/ppc64/vpx_dsp_rtcd.h +--- chromium-130.0.6723.44.orig/third_party/libvpx/source/config/linux/ppc64/vpx_dsp_rtcd.h +++ /dev/null -@@ -1,2128 +0,0 @@ +@@ -1,2138 +0,0 @@ +-/* +- * Copyright (c) 2024 The WebM project authors. All Rights Reserved. +- * +- * Use of this source code is governed by a BSD-style license +- * that can be found in the LICENSE file in the root of the source +- * tree. An additional intellectual property rights grant can be found +- * in the file PATENTS. All contributing project authors may +- * be found in the AUTHORS file in the root of the source tree. +- */ +- -// This file is generated. Do not edit. -#ifndef VPX_DSP_RTCD_H_ -#define VPX_DSP_RTCD_H_ @@ -15571,12 +15521,22 @@ Index: chromium-122.0.6261.128/third_party/libvpx/source/config/linux/ppc64/vpx_ -} // extern "C" -#endif - --#endif -Index: chromium-122.0.6261.128/third_party/libvpx/source/config/linux/ppc64/vpx_scale_rtcd.h +-#endif // VPX_DSP_RTCD_H_ +Index: chromium-130.0.6723.44/third_party/libvpx/source/config/linux/ppc64/vpx_scale_rtcd.h =================================================================== ---- chromium-122.0.6261.128.orig/third_party/libvpx/source/config/linux/ppc64/vpx_scale_rtcd.h +--- chromium-130.0.6723.44.orig/third_party/libvpx/source/config/linux/ppc64/vpx_scale_rtcd.h +++ /dev/null -@@ -1,100 +0,0 @@ +@@ -1,110 +0,0 @@ +-/* +- * Copyright (c) 2024 The WebM project authors. All Rights Reserved. +- * +- * Use of this source code is governed by a BSD-style license +- * that can be found in the LICENSE file in the root of the source +- * tree. An additional intellectual property rights grant can be found +- * in the file PATENTS. All contributing project authors may +- * be found in the AUTHORS file in the root of the source tree. +- */ +- -// This file is generated. Do not edit. -#ifndef VPX_SCALE_RTCD_H_ -#define VPX_SCALE_RTCD_H_ @@ -15676,33 +15636,11 @@ Index: chromium-122.0.6261.128/third_party/libvpx/source/config/linux/ppc64/vpx_ -} // extern "C" -#endif - --#endif -Index: chromium-122.0.6261.128/third_party/boringssl/BUILD.generated.gni -=================================================================== ---- chromium-122.0.6261.128.orig/third_party/boringssl/BUILD.generated.gni -+++ chromium-122.0.6261.128/third_party/boringssl/BUILD.generated.gni -@@ -94,6 +94,7 @@ crypto_sources = [ - "src/crypto/cpu_arm_linux.c", - "src/crypto/cpu_arm_linux.h", - "src/crypto/cpu_intel.c", -+ "src/crypto/cpu_ppc64le.c", - "src/crypto/crypto.c", - "src/crypto/curve25519/curve25519.c", - "src/crypto/curve25519/curve25519_64_adx.c", -@@ -401,6 +402,9 @@ crypto_sources_asm = [ - "linux-arm/crypto/fipsmodule/sha512-armv4-linux.S", - "linux-arm/crypto/fipsmodule/vpaes-armv7-linux.S", - "linux-arm/crypto/test/trampoline-armv4-linux.S", -+ "linux-ppc64le/crypto/fipsmodule/aesp8-ppc-linux.S", -+ "linux-ppc64le/crypto/fipsmodule/ghashp8-ppc-linux.S", -+ "linux-ppc64le/crypto/test/trampoline-ppc-linux.S", - "linux-x86/crypto/chacha/chacha-x86-linux.S", - "linux-x86/crypto/fipsmodule/aesni-x86-linux.S", - "linux-x86/crypto/fipsmodule/bn-586-linux.S", -Index: chromium-122.0.6261.128/third_party/boringssl/linux-ppc64le/crypto/fipsmodule/aesp8-ppc-linux.S +-#endif // VPX_SCALE_RTCD_H_ +Index: chromium-130.0.6723.44/third_party/boringssl/src/gen/bcm/aesp8-ppc-linux.S =================================================================== --- /dev/null -+++ chromium-122.0.6261.128/third_party/boringssl/linux-ppc64le/crypto/fipsmodule/aesp8-ppc-linux.S ++++ chromium-130.0.6723.44/third_party/boringssl/src/gen/bcm/aesp8-ppc-linux.S @@ -0,0 +1,3673 @@ +// This file is generated from a similarly-named Perl script in the BoringSSL +// source tree. Do not edit by hand. @@ -19377,10 +19315,10 @@ Index: chromium-122.0.6261.128/third_party/boringssl/linux-ppc64le/crypto/fipsmo +// See https://www.airs.com/blog/archives/518. +.section .note.GNU-stack,"",%progbits +#endif -Index: chromium-122.0.6261.128/third_party/boringssl/linux-ppc64le/crypto/fipsmodule/ghashp8-ppc-linux.S +Index: chromium-130.0.6723.44/third_party/boringssl/src/gen/bcm/ghashp8-ppc-linux.S =================================================================== --- /dev/null -+++ chromium-122.0.6261.128/third_party/boringssl/linux-ppc64le/crypto/fipsmodule/ghashp8-ppc-linux.S ++++ chromium-130.0.6723.44/third_party/boringssl/src/gen/bcm/ghashp8-ppc-linux.S @@ -0,0 +1,590 @@ +// This file is generated from a similarly-named Perl script in the BoringSSL +// source tree. Do not edit by hand. @@ -19972,10 +19910,2986 @@ Index: chromium-122.0.6261.128/third_party/boringssl/linux-ppc64le/crypto/fipsmo +// See https://www.airs.com/blog/archives/518. +.section .note.GNU-stack,"",%progbits +#endif -Index: chromium-122.0.6261.128/third_party/boringssl/linux-ppc64le/crypto/test/trampoline-ppc-linux.S +Index: chromium-130.0.6723.44/third_party/boringssl/src/gen/sources.cmake +=================================================================== +--- chromium-130.0.6723.44.orig/third_party/boringssl/src/gen/sources.cmake ++++ chromium-130.0.6723.44/third_party/boringssl/src/gen/sources.cmake +@@ -106,6 +106,7 @@ set( + gen/bcm/aesni-x86-linux.S + gen/bcm/aesni-x86_64-apple.S + gen/bcm/aesni-x86_64-linux.S ++ gen/bcm/aesp8-ppc-linux.S + gen/bcm/aesv8-armv7-linux.S + gen/bcm/aesv8-armv8-apple.S + gen/bcm/aesv8-armv8-linux.S +@@ -137,6 +138,7 @@ set( + gen/bcm/ghash-x86-linux.S + gen/bcm/ghash-x86_64-apple.S + gen/bcm/ghash-x86_64-linux.S ++ gen/bcm/ghashp8-ppc-linux.S + gen/bcm/ghashv8-armv7-linux.S + gen/bcm/ghashv8-armv8-apple.S + gen/bcm/ghashv8-armv8-linux.S +@@ -328,6 +330,7 @@ set( + crypto/cpu_arm_freebsd.c + crypto/cpu_arm_linux.c + crypto/cpu_intel.c ++ crypto/cpu_ppc64le.c + crypto/crypto.c + crypto/curve25519/curve25519.c + crypto/curve25519/curve25519_64_adx.c +@@ -805,37 +808,6 @@ set( + CRYPTO_TEST_DATA + + crypto/blake2/blake2b256_tests.txt +- crypto/cipher_extra/test/aes_128_cbc_sha1_tls_implicit_iv_tests.txt +- crypto/cipher_extra/test/aes_128_cbc_sha1_tls_tests.txt +- crypto/cipher_extra/test/aes_128_ccm_bluetooth_8_tests.txt +- crypto/cipher_extra/test/aes_128_ccm_bluetooth_tests.txt +- crypto/cipher_extra/test/aes_128_ccm_matter_tests.txt +- crypto/cipher_extra/test/aes_128_ctr_hmac_sha256.txt +- crypto/cipher_extra/test/aes_128_gcm_randnonce_tests.txt +- crypto/cipher_extra/test/aes_128_gcm_siv_tests.txt +- crypto/cipher_extra/test/aes_128_gcm_tests.txt +- crypto/cipher_extra/test/aes_192_gcm_tests.txt +- crypto/cipher_extra/test/aes_256_cbc_sha1_tls_implicit_iv_tests.txt +- crypto/cipher_extra/test/aes_256_cbc_sha1_tls_tests.txt +- crypto/cipher_extra/test/aes_256_ctr_hmac_sha256.txt +- crypto/cipher_extra/test/aes_256_gcm_randnonce_tests.txt +- crypto/cipher_extra/test/aes_256_gcm_siv_tests.txt +- crypto/cipher_extra/test/aes_256_gcm_tests.txt +- crypto/cipher_extra/test/chacha20_poly1305_tests.txt +- crypto/cipher_extra/test/cipher_tests.txt +- crypto/cipher_extra/test/des_ede3_cbc_sha1_tls_implicit_iv_tests.txt +- crypto/cipher_extra/test/des_ede3_cbc_sha1_tls_tests.txt +- crypto/cipher_extra/test/nist_cavp/aes_128_cbc.txt +- crypto/cipher_extra/test/nist_cavp/aes_128_ctr.txt +- crypto/cipher_extra/test/nist_cavp/aes_128_gcm.txt +- crypto/cipher_extra/test/nist_cavp/aes_192_cbc.txt +- crypto/cipher_extra/test/nist_cavp/aes_192_ctr.txt +- crypto/cipher_extra/test/nist_cavp/aes_256_cbc.txt +- crypto/cipher_extra/test/nist_cavp/aes_256_ctr.txt +- crypto/cipher_extra/test/nist_cavp/aes_256_gcm.txt +- crypto/cipher_extra/test/nist_cavp/tdes_cbc.txt +- crypto/cipher_extra/test/nist_cavp/tdes_ecb.txt +- crypto/cipher_extra/test/xchacha20_poly1305_tests.txt + crypto/curve25519/ed25519_tests.txt + crypto/dilithium/dilithium_tests.txt + crypto/dilithium/edge_cases_draft_dilithium3_sign.txt +@@ -1279,1413 +1251,6 @@ set( + set( + PKI_TEST_DATA + +- pki/testdata/cert_issuer_source_static_unittest/c1.pem +- pki/testdata/cert_issuer_source_static_unittest/c2.pem +- pki/testdata/cert_issuer_source_static_unittest/d.pem +- pki/testdata/cert_issuer_source_static_unittest/e1.pem +- pki/testdata/cert_issuer_source_static_unittest/e2.pem +- pki/testdata/cert_issuer_source_static_unittest/i1_1.pem +- pki/testdata/cert_issuer_source_static_unittest/i1_2.pem +- pki/testdata/cert_issuer_source_static_unittest/i2.pem +- pki/testdata/cert_issuer_source_static_unittest/i3_1.pem +- pki/testdata/cert_issuer_source_static_unittest/i3_2.pem +- pki/testdata/cert_issuer_source_static_unittest/root.pem +- pki/testdata/certificate_policies_unittest/anypolicy.pem +- pki/testdata/certificate_policies_unittest/anypolicy_with_qualifier.pem +- pki/testdata/certificate_policies_unittest/invalid-anypolicy_with_custom_qualifier.pem +- pki/testdata/certificate_policies_unittest/invalid-empty.pem +- pki/testdata/certificate_policies_unittest/invalid-policy_1_2_3_dupe.pem +- pki/testdata/certificate_policies_unittest/invalid-policy_1_2_3_policyinformation_unconsumed_data.pem +- pki/testdata/certificate_policies_unittest/invalid-policy_1_2_3_policyqualifierinfo_unconsumed_data.pem +- pki/testdata/certificate_policies_unittest/invalid-policy_1_2_3_with_empty_qualifiers_sequence.pem +- pki/testdata/certificate_policies_unittest/invalid-policy_identifier_not_oid.pem +- pki/testdata/certificate_policies_unittest/policy_1_2_3.pem +- pki/testdata/certificate_policies_unittest/policy_1_2_3_and_1_2_4.pem +- pki/testdata/certificate_policies_unittest/policy_1_2_3_and_1_2_4_with_qualifiers.pem +- pki/testdata/certificate_policies_unittest/policy_1_2_3_with_custom_qualifier.pem +- pki/testdata/certificate_policies_unittest/policy_1_2_3_with_qualifier.pem +- pki/testdata/crl_unittest/bad_crldp_has_crlissuer.pem +- pki/testdata/crl_unittest/bad_fake_critical_crlentryextension.pem +- pki/testdata/crl_unittest/bad_fake_critical_extension.pem +- pki/testdata/crl_unittest/bad_idp_contains_wrong_uri.pem +- pki/testdata/crl_unittest/bad_idp_indirectcrl.pem +- pki/testdata/crl_unittest/bad_idp_onlycontainscacerts.pem +- pki/testdata/crl_unittest/bad_idp_onlycontainscacerts_no_basic_constraints.pem +- pki/testdata/crl_unittest/bad_idp_onlycontainsusercerts.pem +- pki/testdata/crl_unittest/bad_idp_uri_and_onlycontainscacerts.pem +- pki/testdata/crl_unittest/bad_idp_uri_and_onlycontainsusercerts.pem +- pki/testdata/crl_unittest/bad_key_rollover_signature.pem +- pki/testdata/crl_unittest/bad_nextupdate_too_old.pem +- pki/testdata/crl_unittest/bad_signature.pem +- pki/testdata/crl_unittest/bad_thisupdate_in_future.pem +- pki/testdata/crl_unittest/bad_thisupdate_too_old.pem +- pki/testdata/crl_unittest/bad_wrong_issuer.pem +- pki/testdata/crl_unittest/good.pem +- pki/testdata/crl_unittest/good_fake_extension.pem +- pki/testdata/crl_unittest/good_fake_extension_no_nextupdate.pem +- pki/testdata/crl_unittest/good_generalizedtime.pem +- pki/testdata/crl_unittest/good_idp_contains_uri.pem +- pki/testdata/crl_unittest/good_idp_onlycontainscacerts.pem +- pki/testdata/crl_unittest/good_idp_onlycontainsusercerts.pem +- pki/testdata/crl_unittest/good_idp_onlycontainsusercerts_no_basic_constraints.pem +- pki/testdata/crl_unittest/good_idp_uri_and_onlycontainscacerts.pem +- pki/testdata/crl_unittest/good_idp_uri_and_onlycontainsusercerts.pem +- pki/testdata/crl_unittest/good_issuer_name_normalization.pem +- pki/testdata/crl_unittest/good_issuer_no_keyusage.pem +- pki/testdata/crl_unittest/good_key_rollover.pem +- pki/testdata/crl_unittest/good_no_crldp.pem +- pki/testdata/crl_unittest/good_no_nextupdate.pem +- pki/testdata/crl_unittest/good_no_version.pem +- pki/testdata/crl_unittest/invalid_garbage_after_crlentryextensions.pem +- pki/testdata/crl_unittest/invalid_garbage_after_extensions.pem +- pki/testdata/crl_unittest/invalid_garbage_after_nextupdate.pem +- pki/testdata/crl_unittest/invalid_garbage_after_revocationdate.pem +- pki/testdata/crl_unittest/invalid_garbage_after_revokedcerts.pem +- pki/testdata/crl_unittest/invalid_garbage_after_signaturevalue.pem +- pki/testdata/crl_unittest/invalid_garbage_after_thisupdate.pem +- pki/testdata/crl_unittest/invalid_garbage_crlentry.pem +- pki/testdata/crl_unittest/invalid_garbage_issuer_name.pem +- pki/testdata/crl_unittest/invalid_garbage_revocationdate.pem +- pki/testdata/crl_unittest/invalid_garbage_revoked_serial_number.pem +- pki/testdata/crl_unittest/invalid_garbage_signaturealgorithm.pem +- pki/testdata/crl_unittest/invalid_garbage_signaturevalue.pem +- pki/testdata/crl_unittest/invalid_garbage_tbs_signature_algorithm.pem +- pki/testdata/crl_unittest/invalid_garbage_tbscertlist.pem +- pki/testdata/crl_unittest/invalid_garbage_thisupdate.pem +- pki/testdata/crl_unittest/invalid_garbage_version.pem +- pki/testdata/crl_unittest/invalid_idp_dpname_choice_extra_data.pem +- pki/testdata/crl_unittest/invalid_idp_empty_sequence.pem +- pki/testdata/crl_unittest/invalid_idp_onlycontains_user_and_ca_certs.pem +- pki/testdata/crl_unittest/invalid_idp_onlycontainsusercerts_v1_leaf.pem +- pki/testdata/crl_unittest/invalid_issuer_keyusage_no_crlsign.pem +- pki/testdata/crl_unittest/invalid_key_rollover_issuer_keyusage_no_crlsign.pem +- pki/testdata/crl_unittest/invalid_mismatched_signature_algorithm.pem +- pki/testdata/crl_unittest/invalid_revoked_empty_sequence.pem +- pki/testdata/crl_unittest/invalid_v1_explicit.pem +- pki/testdata/crl_unittest/invalid_v1_with_crlentryextension.pem +- pki/testdata/crl_unittest/invalid_v1_with_extension.pem +- pki/testdata/crl_unittest/invalid_v3.pem +- pki/testdata/crl_unittest/revoked.pem +- pki/testdata/crl_unittest/revoked_fake_crlentryextension.pem +- pki/testdata/crl_unittest/revoked_generalized_revocationdate.pem +- pki/testdata/crl_unittest/revoked_key_rollover.pem +- pki/testdata/crl_unittest/revoked_no_nextupdate.pem +- pki/testdata/name_constraints_unittest/directoryname-excludeall.pem +- pki/testdata/name_constraints_unittest/directoryname-excluded.pem +- pki/testdata/name_constraints_unittest/directoryname.pem +- pki/testdata/name_constraints_unittest/directoryname_and_dnsname.pem +- pki/testdata/name_constraints_unittest/directoryname_and_dnsname_and_ipaddress.pem +- pki/testdata/name_constraints_unittest/dnsname-exclude_dot.pem +- pki/testdata/name_constraints_unittest/dnsname-excludeall.pem +- pki/testdata/name_constraints_unittest/dnsname-excluded.pem +- pki/testdata/name_constraints_unittest/dnsname-excluded_with_leading_dot.pem +- pki/testdata/name_constraints_unittest/dnsname-permitted_two_dot.pem +- pki/testdata/name_constraints_unittest/dnsname-permitted_with_leading_dot.pem +- pki/testdata/name_constraints_unittest/dnsname-with_max.pem +- pki/testdata/name_constraints_unittest/dnsname-with_min_0.pem +- pki/testdata/name_constraints_unittest/dnsname-with_min_0_and_max.pem +- pki/testdata/name_constraints_unittest/dnsname-with_min_1.pem +- pki/testdata/name_constraints_unittest/dnsname-with_min_1_and_max.pem +- pki/testdata/name_constraints_unittest/dnsname.pem +- pki/testdata/name_constraints_unittest/dnsname2.pem +- pki/testdata/name_constraints_unittest/edipartyname-excluded.pem +- pki/testdata/name_constraints_unittest/edipartyname-permitted.pem +- pki/testdata/name_constraints_unittest/invalid-empty_excluded_subtree.pem +- pki/testdata/name_constraints_unittest/invalid-empty_permitted_subtree.pem +- pki/testdata/name_constraints_unittest/invalid-no_subtrees.pem +- pki/testdata/name_constraints_unittest/ipaddress-excludeall.pem +- pki/testdata/name_constraints_unittest/ipaddress-excluded.pem +- pki/testdata/name_constraints_unittest/ipaddress-invalid_addr.pem +- pki/testdata/name_constraints_unittest/ipaddress-invalid_mask_not_contiguous_1.pem +- pki/testdata/name_constraints_unittest/ipaddress-invalid_mask_not_contiguous_2.pem +- pki/testdata/name_constraints_unittest/ipaddress-invalid_mask_not_contiguous_3.pem +- pki/testdata/name_constraints_unittest/ipaddress-invalid_mask_not_contiguous_4.pem +- pki/testdata/name_constraints_unittest/ipaddress-mapped_addrs.pem +- pki/testdata/name_constraints_unittest/ipaddress-permit_all.pem +- pki/testdata/name_constraints_unittest/ipaddress-permit_prefix1.pem +- pki/testdata/name_constraints_unittest/ipaddress-permit_prefix31.pem +- pki/testdata/name_constraints_unittest/ipaddress-permit_singlehost.pem +- pki/testdata/name_constraints_unittest/ipaddress.pem +- pki/testdata/name_constraints_unittest/name-ca.pem +- pki/testdata/name_constraints_unittest/name-de.pem +- pki/testdata/name_constraints_unittest/name-empty.pem +- pki/testdata/name_constraints_unittest/name-jp-tokyo.pem +- pki/testdata/name_constraints_unittest/name-jp.pem +- pki/testdata/name_constraints_unittest/name-us-arizona-1.1.1.1.pem +- pki/testdata/name_constraints_unittest/name-us-arizona-192.168.1.1.pem +- pki/testdata/name_constraints_unittest/name-us-arizona-email-invalidstring.pem +- pki/testdata/name_constraints_unittest/name-us-arizona-email-localpartcase.pem +- pki/testdata/name_constraints_unittest/name-us-arizona-email-multiple.pem +- pki/testdata/name_constraints_unittest/name-us-arizona-email.pem +- pki/testdata/name_constraints_unittest/name-us-arizona-foo.com.pem +- pki/testdata/name_constraints_unittest/name-us-arizona-ipv6.pem +- pki/testdata/name_constraints_unittest/name-us-arizona-permitted.example.com.pem +- pki/testdata/name_constraints_unittest/name-us-arizona.pem +- pki/testdata/name_constraints_unittest/name-us-california-192.168.1.1.pem +- pki/testdata/name_constraints_unittest/name-us-california-mountain_view.pem +- pki/testdata/name_constraints_unittest/name-us-california-permitted.example.com.pem +- pki/testdata/name_constraints_unittest/name-us-california.pem +- pki/testdata/name_constraints_unittest/name-us.pem +- pki/testdata/name_constraints_unittest/othername-excluded.pem +- pki/testdata/name_constraints_unittest/othername-permitted.pem +- pki/testdata/name_constraints_unittest/registeredid-excluded.pem +- pki/testdata/name_constraints_unittest/registeredid-permitted.pem +- pki/testdata/name_constraints_unittest/rfc822name-excluded-empty.pem +- pki/testdata/name_constraints_unittest/rfc822name-excluded-hostname.pem +- pki/testdata/name_constraints_unittest/rfc822name-excluded-hostnamewithat.pem +- pki/testdata/name_constraints_unittest/rfc822name-excluded-ipv4.pem +- pki/testdata/name_constraints_unittest/rfc822name-excluded-quoted.pem +- pki/testdata/name_constraints_unittest/rfc822name-excluded-subdomains.pem +- pki/testdata/name_constraints_unittest/rfc822name-excluded.pem +- pki/testdata/name_constraints_unittest/rfc822name-permitted-empty.pem +- pki/testdata/name_constraints_unittest/rfc822name-permitted-hostname.pem +- pki/testdata/name_constraints_unittest/rfc822name-permitted-hostnamewithat.pem +- pki/testdata/name_constraints_unittest/rfc822name-permitted-ipv4.pem +- pki/testdata/name_constraints_unittest/rfc822name-permitted-quoted.pem +- pki/testdata/name_constraints_unittest/rfc822name-permitted-subdomains.pem +- pki/testdata/name_constraints_unittest/rfc822name-permitted.pem +- pki/testdata/name_constraints_unittest/san-directoryname.pem +- pki/testdata/name_constraints_unittest/san-dnsname.pem +- pki/testdata/name_constraints_unittest/san-edipartyname.pem +- pki/testdata/name_constraints_unittest/san-excluded-directoryname.pem +- pki/testdata/name_constraints_unittest/san-excluded-dnsname.pem +- pki/testdata/name_constraints_unittest/san-excluded-ipaddress.pem +- pki/testdata/name_constraints_unittest/san-invalid-empty.pem +- pki/testdata/name_constraints_unittest/san-invalid-ipaddress.pem +- pki/testdata/name_constraints_unittest/san-ipaddress4.pem +- pki/testdata/name_constraints_unittest/san-ipaddress6.pem +- pki/testdata/name_constraints_unittest/san-othername.pem +- pki/testdata/name_constraints_unittest/san-permitted.pem +- pki/testdata/name_constraints_unittest/san-registeredid.pem +- pki/testdata/name_constraints_unittest/san-rfc822name-domaincase.pem +- pki/testdata/name_constraints_unittest/san-rfc822name-empty-localpart.pem +- pki/testdata/name_constraints_unittest/san-rfc822name-empty.pem +- pki/testdata/name_constraints_unittest/san-rfc822name-ipv4.pem +- pki/testdata/name_constraints_unittest/san-rfc822name-localpartcase.pem +- pki/testdata/name_constraints_unittest/san-rfc822name-multiple.pem +- pki/testdata/name_constraints_unittest/san-rfc822name-no-at.pem +- pki/testdata/name_constraints_unittest/san-rfc822name-quoted.pem +- pki/testdata/name_constraints_unittest/san-rfc822name-subdomain-no-at.pem +- pki/testdata/name_constraints_unittest/san-rfc822name-subdomain-two-ats.pem +- pki/testdata/name_constraints_unittest/san-rfc822name-subdomain.pem +- pki/testdata/name_constraints_unittest/san-rfc822name-subdomaincase.pem +- pki/testdata/name_constraints_unittest/san-rfc822name-two-ats.pem +- pki/testdata/name_constraints_unittest/san-rfc822name.pem +- pki/testdata/name_constraints_unittest/san-uri.pem +- pki/testdata/name_constraints_unittest/san-x400address.pem +- pki/testdata/name_constraints_unittest/uri-excluded.pem +- pki/testdata/name_constraints_unittest/uri-permitted.pem +- pki/testdata/name_constraints_unittest/x400address-excluded.pem +- pki/testdata/name_constraints_unittest/x400address-permitted.pem +- pki/testdata/nist-pkits/certs/AllCertificatesNoPoliciesTest2EE.crt +- pki/testdata/nist-pkits/certs/AllCertificatesSamePoliciesTest10EE.crt +- pki/testdata/nist-pkits/certs/AllCertificatesSamePoliciesTest13EE.crt +- pki/testdata/nist-pkits/certs/AllCertificatesanyPolicyTest11EE.crt +- pki/testdata/nist-pkits/certs/AnyPolicyTest14EE.crt +- pki/testdata/nist-pkits/certs/BadCRLIssuerNameCACert.crt +- pki/testdata/nist-pkits/certs/BadCRLSignatureCACert.crt +- pki/testdata/nist-pkits/certs/BadSignedCACert.crt +- pki/testdata/nist-pkits/certs/BadnotAfterDateCACert.crt +- pki/testdata/nist-pkits/certs/BadnotBeforeDateCACert.crt +- pki/testdata/nist-pkits/certs/BasicSelfIssuedCRLSigningKeyCACert.crt +- pki/testdata/nist-pkits/certs/BasicSelfIssuedCRLSigningKeyCRLCert.crt +- pki/testdata/nist-pkits/certs/BasicSelfIssuedNewKeyCACert.crt +- pki/testdata/nist-pkits/certs/BasicSelfIssuedNewKeyOldWithNewCACert.crt +- pki/testdata/nist-pkits/certs/BasicSelfIssuedOldKeyCACert.crt +- pki/testdata/nist-pkits/certs/BasicSelfIssuedOldKeyNewWithOldCACert.crt +- pki/testdata/nist-pkits/certs/CPSPointerQualifierTest20EE.crt +- pki/testdata/nist-pkits/certs/DSACACert.crt +- pki/testdata/nist-pkits/certs/DSAParametersInheritedCACert.crt +- pki/testdata/nist-pkits/certs/DifferentPoliciesTest12EE.crt +- pki/testdata/nist-pkits/certs/DifferentPoliciesTest3EE.crt +- pki/testdata/nist-pkits/certs/DifferentPoliciesTest4EE.crt +- pki/testdata/nist-pkits/certs/DifferentPoliciesTest5EE.crt +- pki/testdata/nist-pkits/certs/DifferentPoliciesTest7EE.crt +- pki/testdata/nist-pkits/certs/DifferentPoliciesTest8EE.crt +- pki/testdata/nist-pkits/certs/DifferentPoliciesTest9EE.crt +- pki/testdata/nist-pkits/certs/GeneralizedTimeCRLnextUpdateCACert.crt +- pki/testdata/nist-pkits/certs/GoodCACert.crt +- pki/testdata/nist-pkits/certs/GoodsubCACert.crt +- pki/testdata/nist-pkits/certs/GoodsubCAPanyPolicyMapping1to2CACert.crt +- pki/testdata/nist-pkits/certs/InvalidBadCRLIssuerNameTest5EE.crt +- pki/testdata/nist-pkits/certs/InvalidBadCRLSignatureTest4EE.crt +- pki/testdata/nist-pkits/certs/InvalidBasicSelfIssuedCRLSigningKeyTest7EE.crt +- pki/testdata/nist-pkits/certs/InvalidBasicSelfIssuedCRLSigningKeyTest8EE.crt +- pki/testdata/nist-pkits/certs/InvalidBasicSelfIssuedNewWithOldTest5EE.crt +- pki/testdata/nist-pkits/certs/InvalidBasicSelfIssuedOldWithNewTest2EE.crt +- pki/testdata/nist-pkits/certs/InvalidCASignatureTest2EE.crt +- pki/testdata/nist-pkits/certs/InvalidCAnotAfterDateTest5EE.crt +- pki/testdata/nist-pkits/certs/InvalidCAnotBeforeDateTest1EE.crt +- pki/testdata/nist-pkits/certs/InvalidDNSnameConstraintsTest31EE.crt +- pki/testdata/nist-pkits/certs/InvalidDNSnameConstraintsTest33EE.crt +- pki/testdata/nist-pkits/certs/InvalidDNSnameConstraintsTest38EE.crt +- pki/testdata/nist-pkits/certs/InvalidDNandRFC822nameConstraintsTest28EE.crt +- pki/testdata/nist-pkits/certs/InvalidDNandRFC822nameConstraintsTest29EE.crt +- pki/testdata/nist-pkits/certs/InvalidDNnameConstraintsTest10EE.crt +- pki/testdata/nist-pkits/certs/InvalidDNnameConstraintsTest12EE.crt +- pki/testdata/nist-pkits/certs/InvalidDNnameConstraintsTest13EE.crt +- pki/testdata/nist-pkits/certs/InvalidDNnameConstraintsTest15EE.crt +- pki/testdata/nist-pkits/certs/InvalidDNnameConstraintsTest16EE.crt +- pki/testdata/nist-pkits/certs/InvalidDNnameConstraintsTest17EE.crt +- pki/testdata/nist-pkits/certs/InvalidDNnameConstraintsTest20EE.crt +- pki/testdata/nist-pkits/certs/InvalidDNnameConstraintsTest2EE.crt +- pki/testdata/nist-pkits/certs/InvalidDNnameConstraintsTest3EE.crt +- pki/testdata/nist-pkits/certs/InvalidDNnameConstraintsTest7EE.crt +- pki/testdata/nist-pkits/certs/InvalidDNnameConstraintsTest8EE.crt +- pki/testdata/nist-pkits/certs/InvalidDNnameConstraintsTest9EE.crt +- pki/testdata/nist-pkits/certs/InvalidDSASignatureTest6EE.crt +- pki/testdata/nist-pkits/certs/InvalidEESignatureTest3EE.crt +- pki/testdata/nist-pkits/certs/InvalidEEnotAfterDateTest6EE.crt +- pki/testdata/nist-pkits/certs/InvalidEEnotBeforeDateTest2EE.crt +- pki/testdata/nist-pkits/certs/InvalidIDPwithindirectCRLTest23EE.crt +- pki/testdata/nist-pkits/certs/InvalidIDPwithindirectCRLTest26EE.crt +- pki/testdata/nist-pkits/certs/InvalidLongSerialNumberTest18EE.crt +- pki/testdata/nist-pkits/certs/InvalidMappingFromanyPolicyTest7EE.crt +- pki/testdata/nist-pkits/certs/InvalidMappingToanyPolicyTest8EE.crt +- pki/testdata/nist-pkits/certs/InvalidMissingCRLTest1EE.crt +- pki/testdata/nist-pkits/certs/InvalidMissingbasicConstraintsTest1EE.crt +- pki/testdata/nist-pkits/certs/InvalidNameChainingOrderTest2EE.crt +- pki/testdata/nist-pkits/certs/InvalidNameChainingTest1EE.crt +- pki/testdata/nist-pkits/certs/InvalidNegativeSerialNumberTest15EE.crt +- pki/testdata/nist-pkits/certs/InvalidOldCRLnextUpdateTest11EE.crt +- pki/testdata/nist-pkits/certs/InvalidPolicyMappingTest10EE.crt +- pki/testdata/nist-pkits/certs/InvalidPolicyMappingTest2EE.crt +- pki/testdata/nist-pkits/certs/InvalidPolicyMappingTest4EE.crt +- pki/testdata/nist-pkits/certs/InvalidRFC822nameConstraintsTest22EE.crt +- pki/testdata/nist-pkits/certs/InvalidRFC822nameConstraintsTest24EE.crt +- pki/testdata/nist-pkits/certs/InvalidRFC822nameConstraintsTest26EE.crt +- pki/testdata/nist-pkits/certs/InvalidRevokedCATest2EE.crt +- pki/testdata/nist-pkits/certs/InvalidRevokedEETest3EE.crt +- pki/testdata/nist-pkits/certs/InvalidSelfIssuedinhibitAnyPolicyTest10EE.crt +- pki/testdata/nist-pkits/certs/InvalidSelfIssuedinhibitAnyPolicyTest8EE.crt +- pki/testdata/nist-pkits/certs/InvalidSelfIssuedinhibitPolicyMappingTest10EE.crt +- pki/testdata/nist-pkits/certs/InvalidSelfIssuedinhibitPolicyMappingTest11EE.crt +- pki/testdata/nist-pkits/certs/InvalidSelfIssuedinhibitPolicyMappingTest8EE.crt +- pki/testdata/nist-pkits/certs/InvalidSelfIssuedinhibitPolicyMappingTest9EE.crt +- pki/testdata/nist-pkits/certs/InvalidSelfIssuedpathLenConstraintTest16EE.crt +- pki/testdata/nist-pkits/certs/InvalidSelfIssuedrequireExplicitPolicyTest7EE.crt +- pki/testdata/nist-pkits/certs/InvalidSelfIssuedrequireExplicitPolicyTest8EE.crt +- pki/testdata/nist-pkits/certs/InvalidSeparateCertificateandCRLKeysTest20EE.crt +- pki/testdata/nist-pkits/certs/InvalidSeparateCertificateandCRLKeysTest21EE.crt +- pki/testdata/nist-pkits/certs/InvalidURInameConstraintsTest35EE.crt +- pki/testdata/nist-pkits/certs/InvalidURInameConstraintsTest37EE.crt +- pki/testdata/nist-pkits/certs/InvalidUnknownCRLEntryExtensionTest8EE.crt +- pki/testdata/nist-pkits/certs/InvalidUnknownCRLExtensionTest10EE.crt +- pki/testdata/nist-pkits/certs/InvalidUnknownCRLExtensionTest9EE.crt +- pki/testdata/nist-pkits/certs/InvalidUnknownCriticalCertificateExtensionTest2EE.crt +- pki/testdata/nist-pkits/certs/InvalidWrongCRLTest6EE.crt +- pki/testdata/nist-pkits/certs/InvalidcAFalseTest2EE.crt +- pki/testdata/nist-pkits/certs/InvalidcAFalseTest3EE.crt +- pki/testdata/nist-pkits/certs/InvalidcRLIssuerTest27EE.crt +- pki/testdata/nist-pkits/certs/InvalidcRLIssuerTest31EE.crt +- pki/testdata/nist-pkits/certs/InvalidcRLIssuerTest32EE.crt +- pki/testdata/nist-pkits/certs/InvalidcRLIssuerTest34EE.crt +- pki/testdata/nist-pkits/certs/InvalidcRLIssuerTest35EE.crt +- pki/testdata/nist-pkits/certs/InvaliddeltaCRLIndicatorNoBaseTest1EE.crt +- pki/testdata/nist-pkits/certs/InvaliddeltaCRLTest10EE.crt +- pki/testdata/nist-pkits/certs/InvaliddeltaCRLTest3EE.crt +- pki/testdata/nist-pkits/certs/InvaliddeltaCRLTest4EE.crt +- pki/testdata/nist-pkits/certs/InvaliddeltaCRLTest6EE.crt +- pki/testdata/nist-pkits/certs/InvaliddeltaCRLTest9EE.crt +- pki/testdata/nist-pkits/certs/InvaliddistributionPointTest2EE.crt +- pki/testdata/nist-pkits/certs/InvaliddistributionPointTest3EE.crt +- pki/testdata/nist-pkits/certs/InvaliddistributionPointTest6EE.crt +- pki/testdata/nist-pkits/certs/InvaliddistributionPointTest8EE.crt +- pki/testdata/nist-pkits/certs/InvaliddistributionPointTest9EE.crt +- pki/testdata/nist-pkits/certs/InvalidinhibitAnyPolicyTest1EE.crt +- pki/testdata/nist-pkits/certs/InvalidinhibitAnyPolicyTest4EE.crt +- pki/testdata/nist-pkits/certs/InvalidinhibitAnyPolicyTest5EE.crt +- pki/testdata/nist-pkits/certs/InvalidinhibitAnyPolicyTest6EE.crt +- pki/testdata/nist-pkits/certs/InvalidinhibitPolicyMappingTest1EE.crt +- pki/testdata/nist-pkits/certs/InvalidinhibitPolicyMappingTest3EE.crt +- pki/testdata/nist-pkits/certs/InvalidinhibitPolicyMappingTest5EE.crt +- pki/testdata/nist-pkits/certs/InvalidinhibitPolicyMappingTest6EE.crt +- pki/testdata/nist-pkits/certs/InvalidkeyUsageCriticalcRLSignFalseTest4EE.crt +- pki/testdata/nist-pkits/certs/InvalidkeyUsageCriticalkeyCertSignFalseTest1EE.crt +- pki/testdata/nist-pkits/certs/InvalidkeyUsageNotCriticalcRLSignFalseTest5EE.crt +- pki/testdata/nist-pkits/certs/InvalidkeyUsageNotCriticalkeyCertSignFalseTest2EE.crt +- pki/testdata/nist-pkits/certs/InvalidonlyContainsAttributeCertsTest14EE.crt +- pki/testdata/nist-pkits/certs/InvalidonlyContainsCACertsTest12EE.crt +- pki/testdata/nist-pkits/certs/InvalidonlyContainsUserCertsTest11EE.crt +- pki/testdata/nist-pkits/certs/InvalidonlySomeReasonsTest15EE.crt +- pki/testdata/nist-pkits/certs/InvalidonlySomeReasonsTest16EE.crt +- pki/testdata/nist-pkits/certs/InvalidonlySomeReasonsTest17EE.crt +- pki/testdata/nist-pkits/certs/InvalidonlySomeReasonsTest20EE.crt +- pki/testdata/nist-pkits/certs/InvalidonlySomeReasonsTest21EE.crt +- pki/testdata/nist-pkits/certs/InvalidpathLenConstraintTest10EE.crt +- pki/testdata/nist-pkits/certs/InvalidpathLenConstraintTest11EE.crt +- pki/testdata/nist-pkits/certs/InvalidpathLenConstraintTest12EE.crt +- pki/testdata/nist-pkits/certs/InvalidpathLenConstraintTest5EE.crt +- pki/testdata/nist-pkits/certs/InvalidpathLenConstraintTest6EE.crt +- pki/testdata/nist-pkits/certs/InvalidpathLenConstraintTest9EE.crt +- pki/testdata/nist-pkits/certs/Invalidpre2000CRLnextUpdateTest12EE.crt +- pki/testdata/nist-pkits/certs/Invalidpre2000UTCEEnotAfterDateTest7EE.crt +- pki/testdata/nist-pkits/certs/InvalidrequireExplicitPolicyTest3EE.crt +- pki/testdata/nist-pkits/certs/InvalidrequireExplicitPolicyTest5EE.crt +- pki/testdata/nist-pkits/certs/LongSerialNumberCACert.crt +- pki/testdata/nist-pkits/certs/Mapping1to2CACert.crt +- pki/testdata/nist-pkits/certs/MappingFromanyPolicyCACert.crt +- pki/testdata/nist-pkits/certs/MappingToanyPolicyCACert.crt +- pki/testdata/nist-pkits/certs/MissingbasicConstraintsCACert.crt +- pki/testdata/nist-pkits/certs/NameOrderingCACert.crt +- pki/testdata/nist-pkits/certs/NegativeSerialNumberCACert.crt +- pki/testdata/nist-pkits/certs/NoCRLCACert.crt +- pki/testdata/nist-pkits/certs/NoPoliciesCACert.crt +- pki/testdata/nist-pkits/certs/NoissuingDistributionPointCACert.crt +- pki/testdata/nist-pkits/certs/OldCRLnextUpdateCACert.crt +- pki/testdata/nist-pkits/certs/OverlappingPoliciesTest6EE.crt +- pki/testdata/nist-pkits/certs/P12Mapping1to3CACert.crt +- pki/testdata/nist-pkits/certs/P12Mapping1to3subCACert.crt +- pki/testdata/nist-pkits/certs/P12Mapping1to3subsubCACert.crt +- pki/testdata/nist-pkits/certs/P1Mapping1to234CACert.crt +- pki/testdata/nist-pkits/certs/P1Mapping1to234subCACert.crt +- pki/testdata/nist-pkits/certs/P1anyPolicyMapping1to2CACert.crt +- pki/testdata/nist-pkits/certs/PanyPolicyMapping1to2CACert.crt +- pki/testdata/nist-pkits/certs/PoliciesP1234CACert.crt +- pki/testdata/nist-pkits/certs/PoliciesP1234subCAP123Cert.crt +- pki/testdata/nist-pkits/certs/PoliciesP1234subsubCAP123P12Cert.crt +- pki/testdata/nist-pkits/certs/PoliciesP123CACert.crt +- pki/testdata/nist-pkits/certs/PoliciesP123subCAP12Cert.crt +- pki/testdata/nist-pkits/certs/PoliciesP123subsubCAP12P1Cert.crt +- pki/testdata/nist-pkits/certs/PoliciesP123subsubCAP12P2Cert.crt +- pki/testdata/nist-pkits/certs/PoliciesP123subsubsubCAP12P2P1Cert.crt +- pki/testdata/nist-pkits/certs/PoliciesP12CACert.crt +- pki/testdata/nist-pkits/certs/PoliciesP12subCAP1Cert.crt +- pki/testdata/nist-pkits/certs/PoliciesP12subsubCAP1P2Cert.crt +- pki/testdata/nist-pkits/certs/PoliciesP2subCA2Cert.crt +- pki/testdata/nist-pkits/certs/PoliciesP2subCACert.crt +- pki/testdata/nist-pkits/certs/PoliciesP3CACert.crt +- pki/testdata/nist-pkits/certs/RFC3280MandatoryAttributeTypesCACert.crt +- pki/testdata/nist-pkits/certs/RFC3280OptionalAttributeTypesCACert.crt +- pki/testdata/nist-pkits/certs/RevokedsubCACert.crt +- pki/testdata/nist-pkits/certs/RolloverfromPrintableStringtoUTF8StringCACert.crt +- pki/testdata/nist-pkits/certs/SeparateCertificateandCRLKeysCA2CRLSigningCert.crt +- pki/testdata/nist-pkits/certs/SeparateCertificateandCRLKeysCA2CertificateSigningCACert.crt +- pki/testdata/nist-pkits/certs/SeparateCertificateandCRLKeysCRLSigningCert.crt +- pki/testdata/nist-pkits/certs/SeparateCertificateandCRLKeysCertificateSigningCACert.crt +- pki/testdata/nist-pkits/certs/TrustAnchorRootCertificate.crt +- pki/testdata/nist-pkits/certs/TwoCRLsCACert.crt +- pki/testdata/nist-pkits/certs/UIDCACert.crt +- pki/testdata/nist-pkits/certs/UTF8StringCaseInsensitiveMatchCACert.crt +- pki/testdata/nist-pkits/certs/UTF8StringEncodedNamesCACert.crt +- pki/testdata/nist-pkits/certs/UnknownCRLEntryExtensionCACert.crt +- pki/testdata/nist-pkits/certs/UnknownCRLExtensionCACert.crt +- pki/testdata/nist-pkits/certs/UserNoticeQualifierTest15EE.crt +- pki/testdata/nist-pkits/certs/UserNoticeQualifierTest16EE.crt +- pki/testdata/nist-pkits/certs/UserNoticeQualifierTest17EE.crt +- pki/testdata/nist-pkits/certs/UserNoticeQualifierTest18EE.crt +- pki/testdata/nist-pkits/certs/UserNoticeQualifierTest19EE.crt +- pki/testdata/nist-pkits/certs/ValidBasicSelfIssuedCRLSigningKeyTest6EE.crt +- pki/testdata/nist-pkits/certs/ValidBasicSelfIssuedNewWithOldTest3EE.crt +- pki/testdata/nist-pkits/certs/ValidBasicSelfIssuedNewWithOldTest4EE.crt +- pki/testdata/nist-pkits/certs/ValidBasicSelfIssuedOldWithNewTest1EE.crt +- pki/testdata/nist-pkits/certs/ValidCertificatePathTest1EE.crt +- pki/testdata/nist-pkits/certs/ValidDNSnameConstraintsTest30EE.crt +- pki/testdata/nist-pkits/certs/ValidDNSnameConstraintsTest32EE.crt +- pki/testdata/nist-pkits/certs/ValidDNandRFC822nameConstraintsTest27EE.crt +- pki/testdata/nist-pkits/certs/ValidDNnameConstraintsTest11EE.crt +- pki/testdata/nist-pkits/certs/ValidDNnameConstraintsTest14EE.crt +- pki/testdata/nist-pkits/certs/ValidDNnameConstraintsTest18EE.crt +- pki/testdata/nist-pkits/certs/ValidDNnameConstraintsTest19EE.crt +- pki/testdata/nist-pkits/certs/ValidDNnameConstraintsTest1EE.crt +- pki/testdata/nist-pkits/certs/ValidDNnameConstraintsTest4EE.crt +- pki/testdata/nist-pkits/certs/ValidDNnameConstraintsTest5EE.crt +- pki/testdata/nist-pkits/certs/ValidDNnameConstraintsTest6EE.crt +- pki/testdata/nist-pkits/certs/ValidDSAParameterInheritanceTest5EE.crt +- pki/testdata/nist-pkits/certs/ValidDSASignaturesTest4EE.crt +- pki/testdata/nist-pkits/certs/ValidGeneralizedTimeCRLnextUpdateTest13EE.crt +- pki/testdata/nist-pkits/certs/ValidGeneralizedTimenotAfterDateTest8EE.crt +- pki/testdata/nist-pkits/certs/ValidGeneralizedTimenotBeforeDateTest4EE.crt +- pki/testdata/nist-pkits/certs/ValidIDPwithindirectCRLTest22EE.crt +- pki/testdata/nist-pkits/certs/ValidIDPwithindirectCRLTest24EE.crt +- pki/testdata/nist-pkits/certs/ValidIDPwithindirectCRLTest25EE.crt +- pki/testdata/nist-pkits/certs/ValidLongSerialNumberTest16EE.crt +- pki/testdata/nist-pkits/certs/ValidLongSerialNumberTest17EE.crt +- pki/testdata/nist-pkits/certs/ValidNameChainingCapitalizationTest5EE.crt +- pki/testdata/nist-pkits/certs/ValidNameChainingWhitespaceTest3EE.crt +- pki/testdata/nist-pkits/certs/ValidNameChainingWhitespaceTest4EE.crt +- pki/testdata/nist-pkits/certs/ValidNameUIDsTest6EE.crt +- pki/testdata/nist-pkits/certs/ValidNegativeSerialNumberTest14EE.crt +- pki/testdata/nist-pkits/certs/ValidNoissuingDistributionPointTest10EE.crt +- pki/testdata/nist-pkits/certs/ValidPolicyMappingTest11EE.crt +- pki/testdata/nist-pkits/certs/ValidPolicyMappingTest12EE.crt +- pki/testdata/nist-pkits/certs/ValidPolicyMappingTest13EE.crt +- pki/testdata/nist-pkits/certs/ValidPolicyMappingTest14EE.crt +- pki/testdata/nist-pkits/certs/ValidPolicyMappingTest1EE.crt +- pki/testdata/nist-pkits/certs/ValidPolicyMappingTest3EE.crt +- pki/testdata/nist-pkits/certs/ValidPolicyMappingTest5EE.crt +- pki/testdata/nist-pkits/certs/ValidPolicyMappingTest6EE.crt +- pki/testdata/nist-pkits/certs/ValidPolicyMappingTest9EE.crt +- pki/testdata/nist-pkits/certs/ValidRFC3280MandatoryAttributeTypesTest7EE.crt +- pki/testdata/nist-pkits/certs/ValidRFC3280OptionalAttributeTypesTest8EE.crt +- pki/testdata/nist-pkits/certs/ValidRFC822nameConstraintsTest21EE.crt +- pki/testdata/nist-pkits/certs/ValidRFC822nameConstraintsTest23EE.crt +- pki/testdata/nist-pkits/certs/ValidRFC822nameConstraintsTest25EE.crt +- pki/testdata/nist-pkits/certs/ValidRolloverfromPrintableStringtoUTF8StringTest10EE.crt +- pki/testdata/nist-pkits/certs/ValidSelfIssuedinhibitAnyPolicyTest7EE.crt +- pki/testdata/nist-pkits/certs/ValidSelfIssuedinhibitAnyPolicyTest9EE.crt +- pki/testdata/nist-pkits/certs/ValidSelfIssuedinhibitPolicyMappingTest7EE.crt +- pki/testdata/nist-pkits/certs/ValidSelfIssuedpathLenConstraintTest15EE.crt +- pki/testdata/nist-pkits/certs/ValidSelfIssuedpathLenConstraintTest17EE.crt +- pki/testdata/nist-pkits/certs/ValidSelfIssuedrequireExplicitPolicyTest6EE.crt +- pki/testdata/nist-pkits/certs/ValidSeparateCertificateandCRLKeysTest19EE.crt +- pki/testdata/nist-pkits/certs/ValidTwoCRLsTest7EE.crt +- pki/testdata/nist-pkits/certs/ValidURInameConstraintsTest34EE.crt +- pki/testdata/nist-pkits/certs/ValidURInameConstraintsTest36EE.crt +- pki/testdata/nist-pkits/certs/ValidUTF8StringCaseInsensitiveMatchTest11EE.crt +- pki/testdata/nist-pkits/certs/ValidUTF8StringEncodedNamesTest9EE.crt +- pki/testdata/nist-pkits/certs/ValidUnknownNotCriticalCertificateExtensionTest1EE.crt +- pki/testdata/nist-pkits/certs/ValidbasicConstraintsNotCriticalTest4EE.crt +- pki/testdata/nist-pkits/certs/ValidcRLIssuerTest28EE.crt +- pki/testdata/nist-pkits/certs/ValidcRLIssuerTest29EE.crt +- pki/testdata/nist-pkits/certs/ValidcRLIssuerTest30EE.crt +- pki/testdata/nist-pkits/certs/ValidcRLIssuerTest33EE.crt +- pki/testdata/nist-pkits/certs/ValiddeltaCRLTest2EE.crt +- pki/testdata/nist-pkits/certs/ValiddeltaCRLTest5EE.crt +- pki/testdata/nist-pkits/certs/ValiddeltaCRLTest7EE.crt +- pki/testdata/nist-pkits/certs/ValiddeltaCRLTest8EE.crt +- pki/testdata/nist-pkits/certs/ValiddistributionPointTest1EE.crt +- pki/testdata/nist-pkits/certs/ValiddistributionPointTest4EE.crt +- pki/testdata/nist-pkits/certs/ValiddistributionPointTest5EE.crt +- pki/testdata/nist-pkits/certs/ValiddistributionPointTest7EE.crt +- pki/testdata/nist-pkits/certs/ValidinhibitAnyPolicyTest2EE.crt +- pki/testdata/nist-pkits/certs/ValidinhibitPolicyMappingTest2EE.crt +- pki/testdata/nist-pkits/certs/ValidinhibitPolicyMappingTest4EE.crt +- pki/testdata/nist-pkits/certs/ValidkeyUsageNotCriticalTest3EE.crt +- pki/testdata/nist-pkits/certs/ValidonlyContainsCACertsTest13EE.crt +- pki/testdata/nist-pkits/certs/ValidonlySomeReasonsTest18EE.crt +- pki/testdata/nist-pkits/certs/ValidonlySomeReasonsTest19EE.crt +- pki/testdata/nist-pkits/certs/ValidpathLenConstraintTest13EE.crt +- pki/testdata/nist-pkits/certs/ValidpathLenConstraintTest14EE.crt +- pki/testdata/nist-pkits/certs/ValidpathLenConstraintTest7EE.crt +- pki/testdata/nist-pkits/certs/ValidpathLenConstraintTest8EE.crt +- pki/testdata/nist-pkits/certs/Validpre2000UTCnotBeforeDateTest3EE.crt +- pki/testdata/nist-pkits/certs/ValidrequireExplicitPolicyTest1EE.crt +- pki/testdata/nist-pkits/certs/ValidrequireExplicitPolicyTest2EE.crt +- pki/testdata/nist-pkits/certs/ValidrequireExplicitPolicyTest4EE.crt +- pki/testdata/nist-pkits/certs/WrongCRLCACert.crt +- pki/testdata/nist-pkits/certs/anyPolicyCACert.crt +- pki/testdata/nist-pkits/certs/basicConstraintsCriticalcAFalseCACert.crt +- pki/testdata/nist-pkits/certs/basicConstraintsNotCriticalCACert.crt +- pki/testdata/nist-pkits/certs/basicConstraintsNotCriticalcAFalseCACert.crt +- pki/testdata/nist-pkits/certs/deltaCRLCA1Cert.crt +- pki/testdata/nist-pkits/certs/deltaCRLCA2Cert.crt +- pki/testdata/nist-pkits/certs/deltaCRLCA3Cert.crt +- pki/testdata/nist-pkits/certs/deltaCRLIndicatorNoBaseCACert.crt +- pki/testdata/nist-pkits/certs/distributionPoint1CACert.crt +- pki/testdata/nist-pkits/certs/distributionPoint2CACert.crt +- pki/testdata/nist-pkits/certs/indirectCRLCA1Cert.crt +- pki/testdata/nist-pkits/certs/indirectCRLCA2Cert.crt +- pki/testdata/nist-pkits/certs/indirectCRLCA3Cert.crt +- pki/testdata/nist-pkits/certs/indirectCRLCA3cRLIssuerCert.crt +- pki/testdata/nist-pkits/certs/indirectCRLCA4Cert.crt +- pki/testdata/nist-pkits/certs/indirectCRLCA4cRLIssuerCert.crt +- pki/testdata/nist-pkits/certs/indirectCRLCA5Cert.crt +- pki/testdata/nist-pkits/certs/indirectCRLCA6Cert.crt +- pki/testdata/nist-pkits/certs/inhibitAnyPolicy0CACert.crt +- pki/testdata/nist-pkits/certs/inhibitAnyPolicy1CACert.crt +- pki/testdata/nist-pkits/certs/inhibitAnyPolicy1SelfIssuedCACert.crt +- pki/testdata/nist-pkits/certs/inhibitAnyPolicy1SelfIssuedsubCA2Cert.crt +- pki/testdata/nist-pkits/certs/inhibitAnyPolicy1subCA1Cert.crt +- pki/testdata/nist-pkits/certs/inhibitAnyPolicy1subCA2Cert.crt +- pki/testdata/nist-pkits/certs/inhibitAnyPolicy1subCAIAP5Cert.crt +- pki/testdata/nist-pkits/certs/inhibitAnyPolicy1subsubCA2Cert.crt +- pki/testdata/nist-pkits/certs/inhibitAnyPolicy5CACert.crt +- pki/testdata/nist-pkits/certs/inhibitAnyPolicy5subCACert.crt +- pki/testdata/nist-pkits/certs/inhibitAnyPolicy5subsubCACert.crt +- pki/testdata/nist-pkits/certs/inhibitAnyPolicyTest3EE.crt +- pki/testdata/nist-pkits/certs/inhibitPolicyMapping0CACert.crt +- pki/testdata/nist-pkits/certs/inhibitPolicyMapping0subCACert.crt +- pki/testdata/nist-pkits/certs/inhibitPolicyMapping1P12CACert.crt +- pki/testdata/nist-pkits/certs/inhibitPolicyMapping1P12subCACert.crt +- pki/testdata/nist-pkits/certs/inhibitPolicyMapping1P12subCAIPM5Cert.crt +- pki/testdata/nist-pkits/certs/inhibitPolicyMapping1P12subsubCACert.crt +- pki/testdata/nist-pkits/certs/inhibitPolicyMapping1P12subsubCAIPM5Cert.crt +- pki/testdata/nist-pkits/certs/inhibitPolicyMapping1P1CACert.crt +- pki/testdata/nist-pkits/certs/inhibitPolicyMapping1P1SelfIssuedCACert.crt +- pki/testdata/nist-pkits/certs/inhibitPolicyMapping1P1SelfIssuedsubCACert.crt +- pki/testdata/nist-pkits/certs/inhibitPolicyMapping1P1subCACert.crt +- pki/testdata/nist-pkits/certs/inhibitPolicyMapping1P1subsubCACert.crt +- pki/testdata/nist-pkits/certs/inhibitPolicyMapping5CACert.crt +- pki/testdata/nist-pkits/certs/inhibitPolicyMapping5subCACert.crt +- pki/testdata/nist-pkits/certs/inhibitPolicyMapping5subsubCACert.crt +- pki/testdata/nist-pkits/certs/inhibitPolicyMapping5subsubsubCACert.crt +- pki/testdata/nist-pkits/certs/keyUsageCriticalcRLSignFalseCACert.crt +- pki/testdata/nist-pkits/certs/keyUsageCriticalkeyCertSignFalseCACert.crt +- pki/testdata/nist-pkits/certs/keyUsageNotCriticalCACert.crt +- pki/testdata/nist-pkits/certs/keyUsageNotCriticalcRLSignFalseCACert.crt +- pki/testdata/nist-pkits/certs/keyUsageNotCriticalkeyCertSignFalseCACert.crt +- pki/testdata/nist-pkits/certs/nameConstraintsDN1CACert.crt +- pki/testdata/nist-pkits/certs/nameConstraintsDN1SelfIssuedCACert.crt +- pki/testdata/nist-pkits/certs/nameConstraintsDN1subCA1Cert.crt +- pki/testdata/nist-pkits/certs/nameConstraintsDN1subCA2Cert.crt +- pki/testdata/nist-pkits/certs/nameConstraintsDN1subCA3Cert.crt +- pki/testdata/nist-pkits/certs/nameConstraintsDN2CACert.crt +- pki/testdata/nist-pkits/certs/nameConstraintsDN3CACert.crt +- pki/testdata/nist-pkits/certs/nameConstraintsDN3subCA1Cert.crt +- pki/testdata/nist-pkits/certs/nameConstraintsDN3subCA2Cert.crt +- pki/testdata/nist-pkits/certs/nameConstraintsDN4CACert.crt +- pki/testdata/nist-pkits/certs/nameConstraintsDN5CACert.crt +- pki/testdata/nist-pkits/certs/nameConstraintsDNS1CACert.crt +- pki/testdata/nist-pkits/certs/nameConstraintsDNS2CACert.crt +- pki/testdata/nist-pkits/certs/nameConstraintsRFC822CA1Cert.crt +- pki/testdata/nist-pkits/certs/nameConstraintsRFC822CA2Cert.crt +- pki/testdata/nist-pkits/certs/nameConstraintsRFC822CA3Cert.crt +- pki/testdata/nist-pkits/certs/nameConstraintsURI1CACert.crt +- pki/testdata/nist-pkits/certs/nameConstraintsURI2CACert.crt +- pki/testdata/nist-pkits/certs/onlyContainsAttributeCertsCACert.crt +- pki/testdata/nist-pkits/certs/onlyContainsCACertsCACert.crt +- pki/testdata/nist-pkits/certs/onlyContainsUserCertsCACert.crt +- pki/testdata/nist-pkits/certs/onlySomeReasonsCA1Cert.crt +- pki/testdata/nist-pkits/certs/onlySomeReasonsCA2Cert.crt +- pki/testdata/nist-pkits/certs/onlySomeReasonsCA3Cert.crt +- pki/testdata/nist-pkits/certs/onlySomeReasonsCA4Cert.crt +- pki/testdata/nist-pkits/certs/pathLenConstraint0CACert.crt +- pki/testdata/nist-pkits/certs/pathLenConstraint0SelfIssuedCACert.crt +- pki/testdata/nist-pkits/certs/pathLenConstraint0subCA2Cert.crt +- pki/testdata/nist-pkits/certs/pathLenConstraint0subCACert.crt +- pki/testdata/nist-pkits/certs/pathLenConstraint1CACert.crt +- pki/testdata/nist-pkits/certs/pathLenConstraint1SelfIssuedCACert.crt +- pki/testdata/nist-pkits/certs/pathLenConstraint1SelfIssuedsubCACert.crt +- pki/testdata/nist-pkits/certs/pathLenConstraint1subCACert.crt +- pki/testdata/nist-pkits/certs/pathLenConstraint6CACert.crt +- pki/testdata/nist-pkits/certs/pathLenConstraint6subCA0Cert.crt +- pki/testdata/nist-pkits/certs/pathLenConstraint6subCA1Cert.crt +- pki/testdata/nist-pkits/certs/pathLenConstraint6subCA4Cert.crt +- pki/testdata/nist-pkits/certs/pathLenConstraint6subsubCA00Cert.crt +- pki/testdata/nist-pkits/certs/pathLenConstraint6subsubCA11Cert.crt +- pki/testdata/nist-pkits/certs/pathLenConstraint6subsubCA41Cert.crt +- pki/testdata/nist-pkits/certs/pathLenConstraint6subsubsubCA11XCert.crt +- pki/testdata/nist-pkits/certs/pathLenConstraint6subsubsubCA41XCert.crt +- pki/testdata/nist-pkits/certs/pre2000CRLnextUpdateCACert.crt +- pki/testdata/nist-pkits/certs/requireExplicitPolicy0CACert.crt +- pki/testdata/nist-pkits/certs/requireExplicitPolicy0subCACert.crt +- pki/testdata/nist-pkits/certs/requireExplicitPolicy0subsubCACert.crt +- pki/testdata/nist-pkits/certs/requireExplicitPolicy0subsubsubCACert.crt +- pki/testdata/nist-pkits/certs/requireExplicitPolicy10CACert.crt +- pki/testdata/nist-pkits/certs/requireExplicitPolicy10subCACert.crt +- pki/testdata/nist-pkits/certs/requireExplicitPolicy10subsubCACert.crt +- pki/testdata/nist-pkits/certs/requireExplicitPolicy10subsubsubCACert.crt +- pki/testdata/nist-pkits/certs/requireExplicitPolicy2CACert.crt +- pki/testdata/nist-pkits/certs/requireExplicitPolicy2SelfIssuedCACert.crt +- pki/testdata/nist-pkits/certs/requireExplicitPolicy2SelfIssuedsubCACert.crt +- pki/testdata/nist-pkits/certs/requireExplicitPolicy2subCACert.crt +- pki/testdata/nist-pkits/certs/requireExplicitPolicy4CACert.crt +- pki/testdata/nist-pkits/certs/requireExplicitPolicy4subCACert.crt +- pki/testdata/nist-pkits/certs/requireExplicitPolicy4subsubCACert.crt +- pki/testdata/nist-pkits/certs/requireExplicitPolicy4subsubsubCACert.crt +- pki/testdata/nist-pkits/certs/requireExplicitPolicy5CACert.crt +- pki/testdata/nist-pkits/certs/requireExplicitPolicy5subCACert.crt +- pki/testdata/nist-pkits/certs/requireExplicitPolicy5subsubCACert.crt +- pki/testdata/nist-pkits/certs/requireExplicitPolicy5subsubsubCACert.crt +- pki/testdata/nist-pkits/certs/requireExplicitPolicy7CACert.crt +- pki/testdata/nist-pkits/certs/requireExplicitPolicy7subCARE2Cert.crt +- pki/testdata/nist-pkits/certs/requireExplicitPolicy7subsubCARE2RE4Cert.crt +- pki/testdata/nist-pkits/certs/requireExplicitPolicy7subsubsubCARE2RE4Cert.crt +- pki/testdata/nist-pkits/crls/BadCRLIssuerNameCACRL.crl +- pki/testdata/nist-pkits/crls/BadCRLSignatureCACRL.crl +- pki/testdata/nist-pkits/crls/BadSignedCACRL.crl +- pki/testdata/nist-pkits/crls/BadnotAfterDateCACRL.crl +- pki/testdata/nist-pkits/crls/BadnotBeforeDateCACRL.crl +- pki/testdata/nist-pkits/crls/BasicSelfIssuedCRLSigningKeyCACRL.crl +- pki/testdata/nist-pkits/crls/BasicSelfIssuedCRLSigningKeyCRLCertCRL.crl +- pki/testdata/nist-pkits/crls/BasicSelfIssuedNewKeyCACRL.crl +- pki/testdata/nist-pkits/crls/BasicSelfIssuedOldKeyCACRL.crl +- pki/testdata/nist-pkits/crls/BasicSelfIssuedOldKeySelfIssuedCertCRL.crl +- pki/testdata/nist-pkits/crls/DSACACRL.crl +- pki/testdata/nist-pkits/crls/DSAParametersInheritedCACRL.crl +- pki/testdata/nist-pkits/crls/GeneralizedTimeCRLnextUpdateCACRL.crl +- pki/testdata/nist-pkits/crls/GoodCACRL.crl +- pki/testdata/nist-pkits/crls/GoodsubCACRL.crl +- pki/testdata/nist-pkits/crls/GoodsubCAPanyPolicyMapping1to2CACRL.crl +- pki/testdata/nist-pkits/crls/LongSerialNumberCACRL.crl +- pki/testdata/nist-pkits/crls/Mapping1to2CACRL.crl +- pki/testdata/nist-pkits/crls/MappingFromanyPolicyCACRL.crl +- pki/testdata/nist-pkits/crls/MappingToanyPolicyCACRL.crl +- pki/testdata/nist-pkits/crls/MissingbasicConstraintsCACRL.crl +- pki/testdata/nist-pkits/crls/NameOrderCACRL.crl +- pki/testdata/nist-pkits/crls/NegativeSerialNumberCACRL.crl +- pki/testdata/nist-pkits/crls/NoPoliciesCACRL.crl +- pki/testdata/nist-pkits/crls/NoissuingDistributionPointCACRL.crl +- pki/testdata/nist-pkits/crls/OldCRLnextUpdateCACRL.crl +- pki/testdata/nist-pkits/crls/P12Mapping1to3CACRL.crl +- pki/testdata/nist-pkits/crls/P12Mapping1to3subCACRL.crl +- pki/testdata/nist-pkits/crls/P12Mapping1to3subsubCACRL.crl +- pki/testdata/nist-pkits/crls/P1Mapping1to234CACRL.crl +- pki/testdata/nist-pkits/crls/P1Mapping1to234subCACRL.crl +- pki/testdata/nist-pkits/crls/P1anyPolicyMapping1to2CACRL.crl +- pki/testdata/nist-pkits/crls/PanyPolicyMapping1to2CACRL.crl +- pki/testdata/nist-pkits/crls/PoliciesP1234CACRL.crl +- pki/testdata/nist-pkits/crls/PoliciesP1234subCAP123CRL.crl +- pki/testdata/nist-pkits/crls/PoliciesP1234subsubCAP123P12CRL.crl +- pki/testdata/nist-pkits/crls/PoliciesP123CACRL.crl +- pki/testdata/nist-pkits/crls/PoliciesP123subCAP12CRL.crl +- pki/testdata/nist-pkits/crls/PoliciesP123subsubCAP12P1CRL.crl +- pki/testdata/nist-pkits/crls/PoliciesP123subsubCAP2P2CRL.crl +- pki/testdata/nist-pkits/crls/PoliciesP123subsubsubCAP12P2P1CRL.crl +- pki/testdata/nist-pkits/crls/PoliciesP12CACRL.crl +- pki/testdata/nist-pkits/crls/PoliciesP12subCAP1CRL.crl +- pki/testdata/nist-pkits/crls/PoliciesP12subsubCAP1P2CRL.crl +- pki/testdata/nist-pkits/crls/PoliciesP2subCA2CRL.crl +- pki/testdata/nist-pkits/crls/PoliciesP2subCACRL.crl +- pki/testdata/nist-pkits/crls/PoliciesP3CACRL.crl +- pki/testdata/nist-pkits/crls/RFC3280MandatoryAttributeTypesCACRL.crl +- pki/testdata/nist-pkits/crls/RFC3280OptionalAttributeTypesCACRL.crl +- pki/testdata/nist-pkits/crls/RevokedsubCACRL.crl +- pki/testdata/nist-pkits/crls/RolloverfromPrintableStringtoUTF8StringCACRL.crl +- pki/testdata/nist-pkits/crls/SeparateCertificateandCRLKeysCA2CRL.crl +- pki/testdata/nist-pkits/crls/SeparateCertificateandCRLKeysCRL.crl +- pki/testdata/nist-pkits/crls/TrustAnchorRootCRL.crl +- pki/testdata/nist-pkits/crls/TwoCRLsCABadCRL.crl +- pki/testdata/nist-pkits/crls/TwoCRLsCAGoodCRL.crl +- pki/testdata/nist-pkits/crls/UIDCACRL.crl +- pki/testdata/nist-pkits/crls/UTF8StringCaseInsensitiveMatchCACRL.crl +- pki/testdata/nist-pkits/crls/UTF8StringEncodedNamesCACRL.crl +- pki/testdata/nist-pkits/crls/UnknownCRLEntryExtensionCACRL.crl +- pki/testdata/nist-pkits/crls/UnknownCRLExtensionCACRL.crl +- pki/testdata/nist-pkits/crls/WrongCRLCACRL.crl +- pki/testdata/nist-pkits/crls/anyPolicyCACRL.crl +- pki/testdata/nist-pkits/crls/basicConstraintsCriticalcAFalseCACRL.crl +- pki/testdata/nist-pkits/crls/basicConstraintsNotCriticalCACRL.crl +- pki/testdata/nist-pkits/crls/basicConstraintsNotCriticalcAFalseCACRL.crl +- pki/testdata/nist-pkits/crls/deltaCRLCA1CRL.crl +- pki/testdata/nist-pkits/crls/deltaCRLCA1deltaCRL.crl +- pki/testdata/nist-pkits/crls/deltaCRLCA2CRL.crl +- pki/testdata/nist-pkits/crls/deltaCRLCA2deltaCRL.crl +- pki/testdata/nist-pkits/crls/deltaCRLCA3CRL.crl +- pki/testdata/nist-pkits/crls/deltaCRLCA3deltaCRL.crl +- pki/testdata/nist-pkits/crls/deltaCRLIndicatorNoBaseCACRL.crl +- pki/testdata/nist-pkits/crls/distributionPoint1CACRL.crl +- pki/testdata/nist-pkits/crls/distributionPoint2CACRL.crl +- pki/testdata/nist-pkits/crls/indirectCRLCA1CRL.crl +- pki/testdata/nist-pkits/crls/indirectCRLCA3CRL.crl +- pki/testdata/nist-pkits/crls/indirectCRLCA3cRLIssuerCRL.crl +- pki/testdata/nist-pkits/crls/indirectCRLCA4cRLIssuerCRL.crl +- pki/testdata/nist-pkits/crls/indirectCRLCA5CRL.crl +- pki/testdata/nist-pkits/crls/inhibitAnyPolicy0CACRL.crl +- pki/testdata/nist-pkits/crls/inhibitAnyPolicy1CACRL.crl +- pki/testdata/nist-pkits/crls/inhibitAnyPolicy1subCA1CRL.crl +- pki/testdata/nist-pkits/crls/inhibitAnyPolicy1subCA2CRL.crl +- pki/testdata/nist-pkits/crls/inhibitAnyPolicy1subCAIAP5CRL.crl +- pki/testdata/nist-pkits/crls/inhibitAnyPolicy1subsubCA2CRL.crl +- pki/testdata/nist-pkits/crls/inhibitAnyPolicy5CACRL.crl +- pki/testdata/nist-pkits/crls/inhibitAnyPolicy5subCACRL.crl +- pki/testdata/nist-pkits/crls/inhibitAnyPolicy5subsubCACRL.crl +- pki/testdata/nist-pkits/crls/inhibitPolicyMapping0CACRL.crl +- pki/testdata/nist-pkits/crls/inhibitPolicyMapping0subCACRL.crl +- pki/testdata/nist-pkits/crls/inhibitPolicyMapping1P12CACRL.crl +- pki/testdata/nist-pkits/crls/inhibitPolicyMapping1P12subCACRL.crl +- pki/testdata/nist-pkits/crls/inhibitPolicyMapping1P12subCAIPM5CRL.crl +- pki/testdata/nist-pkits/crls/inhibitPolicyMapping1P12subsubCACRL.crl +- pki/testdata/nist-pkits/crls/inhibitPolicyMapping1P12subsubCAIPM5CRL.crl +- pki/testdata/nist-pkits/crls/inhibitPolicyMapping1P1CACRL.crl +- pki/testdata/nist-pkits/crls/inhibitPolicyMapping1P1subCACRL.crl +- pki/testdata/nist-pkits/crls/inhibitPolicyMapping1P1subsubCACRL.crl +- pki/testdata/nist-pkits/crls/inhibitPolicyMapping5CACRL.crl +- pki/testdata/nist-pkits/crls/inhibitPolicyMapping5subCACRL.crl +- pki/testdata/nist-pkits/crls/inhibitPolicyMapping5subsubCACRL.crl +- pki/testdata/nist-pkits/crls/inhibitPolicyMapping5subsubsubCACRL.crl +- pki/testdata/nist-pkits/crls/keyUsageCriticalcRLSignFalseCACRL.crl +- pki/testdata/nist-pkits/crls/keyUsageCriticalkeyCertSignFalseCACRL.crl +- pki/testdata/nist-pkits/crls/keyUsageNotCriticalCACRL.crl +- pki/testdata/nist-pkits/crls/keyUsageNotCriticalcRLSignFalseCACRL.crl +- pki/testdata/nist-pkits/crls/keyUsageNotCriticalkeyCertSignFalseCACRL.crl +- pki/testdata/nist-pkits/crls/nameConstraintsDN1CACRL.crl +- pki/testdata/nist-pkits/crls/nameConstraintsDN1subCA1CRL.crl +- pki/testdata/nist-pkits/crls/nameConstraintsDN1subCA2CRL.crl +- pki/testdata/nist-pkits/crls/nameConstraintsDN1subCA3CRL.crl +- pki/testdata/nist-pkits/crls/nameConstraintsDN2CACRL.crl +- pki/testdata/nist-pkits/crls/nameConstraintsDN3CACRL.crl +- pki/testdata/nist-pkits/crls/nameConstraintsDN3subCA1CRL.crl +- pki/testdata/nist-pkits/crls/nameConstraintsDN3subCA2CRL.crl +- pki/testdata/nist-pkits/crls/nameConstraintsDN4CACRL.crl +- pki/testdata/nist-pkits/crls/nameConstraintsDN5CACRL.crl +- pki/testdata/nist-pkits/crls/nameConstraintsDNS1CACRL.crl +- pki/testdata/nist-pkits/crls/nameConstraintsDNS2CACRL.crl +- pki/testdata/nist-pkits/crls/nameConstraintsRFC822CA1CRL.crl +- pki/testdata/nist-pkits/crls/nameConstraintsRFC822CA2CRL.crl +- pki/testdata/nist-pkits/crls/nameConstraintsRFC822CA3CRL.crl +- pki/testdata/nist-pkits/crls/nameConstraintsURI1CACRL.crl +- pki/testdata/nist-pkits/crls/nameConstraintsURI2CACRL.crl +- pki/testdata/nist-pkits/crls/onlyContainsAttributeCertsCACRL.crl +- pki/testdata/nist-pkits/crls/onlyContainsCACertsCACRL.crl +- pki/testdata/nist-pkits/crls/onlyContainsUserCertsCACRL.crl +- pki/testdata/nist-pkits/crls/onlySomeReasonsCA1compromiseCRL.crl +- pki/testdata/nist-pkits/crls/onlySomeReasonsCA1otherreasonsCRL.crl +- pki/testdata/nist-pkits/crls/onlySomeReasonsCA2CRL1.crl +- pki/testdata/nist-pkits/crls/onlySomeReasonsCA2CRL2.crl +- pki/testdata/nist-pkits/crls/onlySomeReasonsCA3compromiseCRL.crl +- pki/testdata/nist-pkits/crls/onlySomeReasonsCA3otherreasonsCRL.crl +- pki/testdata/nist-pkits/crls/onlySomeReasonsCA4compromiseCRL.crl +- pki/testdata/nist-pkits/crls/onlySomeReasonsCA4otherreasonsCRL.crl +- pki/testdata/nist-pkits/crls/pathLenConstraint0CACRL.crl +- pki/testdata/nist-pkits/crls/pathLenConstraint0subCA2CRL.crl +- pki/testdata/nist-pkits/crls/pathLenConstraint0subCACRL.crl +- pki/testdata/nist-pkits/crls/pathLenConstraint1CACRL.crl +- pki/testdata/nist-pkits/crls/pathLenConstraint1subCACRL.crl +- pki/testdata/nist-pkits/crls/pathLenConstraint6CACRL.crl +- pki/testdata/nist-pkits/crls/pathLenConstraint6subCA0CRL.crl +- pki/testdata/nist-pkits/crls/pathLenConstraint6subCA1CRL.crl +- pki/testdata/nist-pkits/crls/pathLenConstraint6subCA4CRL.crl +- pki/testdata/nist-pkits/crls/pathLenConstraint6subsubCA00CRL.crl +- pki/testdata/nist-pkits/crls/pathLenConstraint6subsubCA11CRL.crl +- pki/testdata/nist-pkits/crls/pathLenConstraint6subsubCA41CRL.crl +- pki/testdata/nist-pkits/crls/pathLenConstraint6subsubsubCA11XCRL.crl +- pki/testdata/nist-pkits/crls/pathLenConstraint6subsubsubCA41XCRL.crl +- pki/testdata/nist-pkits/crls/pre2000CRLnextUpdateCACRL.crl +- pki/testdata/nist-pkits/crls/requireExplicitPolicy0CACRL.crl +- pki/testdata/nist-pkits/crls/requireExplicitPolicy0subCACRL.crl +- pki/testdata/nist-pkits/crls/requireExplicitPolicy0subsubCACRL.crl +- pki/testdata/nist-pkits/crls/requireExplicitPolicy0subsubsubCACRL.crl +- pki/testdata/nist-pkits/crls/requireExplicitPolicy10CACRL.crl +- pki/testdata/nist-pkits/crls/requireExplicitPolicy10subCACRL.crl +- pki/testdata/nist-pkits/crls/requireExplicitPolicy10subsubCACRL.crl +- pki/testdata/nist-pkits/crls/requireExplicitPolicy10subsubsubCACRL.crl +- pki/testdata/nist-pkits/crls/requireExplicitPolicy2CACRL.crl +- pki/testdata/nist-pkits/crls/requireExplicitPolicy2subCACRL.crl +- pki/testdata/nist-pkits/crls/requireExplicitPolicy4CACRL.crl +- pki/testdata/nist-pkits/crls/requireExplicitPolicy4subCACRL.crl +- pki/testdata/nist-pkits/crls/requireExplicitPolicy4subsubCACRL.crl +- pki/testdata/nist-pkits/crls/requireExplicitPolicy4subsubsubCACRL.crl +- pki/testdata/nist-pkits/crls/requireExplicitPolicy5CACRL.crl +- pki/testdata/nist-pkits/crls/requireExplicitPolicy5subCACRL.crl +- pki/testdata/nist-pkits/crls/requireExplicitPolicy5subsubCACRL.crl +- pki/testdata/nist-pkits/crls/requireExplicitPolicy5subsubsubCACRL.crl +- pki/testdata/nist-pkits/crls/requireExplicitPolicy7CACRL.crl +- pki/testdata/nist-pkits/crls/requireExplicitPolicy7subCARE2CRL.crl +- pki/testdata/nist-pkits/crls/requireExplicitPolicy7subsubCARE2RE4CRL.crl +- pki/testdata/nist-pkits/crls/requireExplicitPolicy7subsubsubCARE2RE4CRL.crl +- pki/testdata/ocsp_unittest/bad_ocsp_type.pem +- pki/testdata/ocsp_unittest/bad_signature.pem +- pki/testdata/ocsp_unittest/bad_status.pem +- pki/testdata/ocsp_unittest/good_response.pem +- pki/testdata/ocsp_unittest/good_response_next_update.pem +- pki/testdata/ocsp_unittest/good_response_sha256.pem +- pki/testdata/ocsp_unittest/has_critical_ct_extension.pem +- pki/testdata/ocsp_unittest/has_critical_response_extension.pem +- pki/testdata/ocsp_unittest/has_critical_single_extension.pem +- pki/testdata/ocsp_unittest/has_extension.pem +- pki/testdata/ocsp_unittest/has_single_extension.pem +- pki/testdata/ocsp_unittest/has_version.pem +- pki/testdata/ocsp_unittest/malformed_request.pem +- pki/testdata/ocsp_unittest/missing_response.pem +- pki/testdata/ocsp_unittest/multiple_response.pem +- pki/testdata/ocsp_unittest/no_response.pem +- pki/testdata/ocsp_unittest/ocsp_extra_certs.pem +- pki/testdata/ocsp_unittest/ocsp_sign_bad_indirect.pem +- pki/testdata/ocsp_unittest/ocsp_sign_direct.pem +- pki/testdata/ocsp_unittest/ocsp_sign_indirect.pem +- pki/testdata/ocsp_unittest/ocsp_sign_indirect_missing.pem +- pki/testdata/ocsp_unittest/other_response.pem +- pki/testdata/ocsp_unittest/responder_id.pem +- pki/testdata/ocsp_unittest/responder_name.pem +- pki/testdata/ocsp_unittest/revoke_response.pem +- pki/testdata/ocsp_unittest/revoke_response_reason.pem +- pki/testdata/ocsp_unittest/unknown_response.pem +- pki/testdata/parse_certificate_unittest/authority_key_identifier/empty_sequence.pem +- pki/testdata/parse_certificate_unittest/authority_key_identifier/extra_contents_after_extension_sequence.pem +- pki/testdata/parse_certificate_unittest/authority_key_identifier/extra_contents_after_issuer_and_serial.pem +- pki/testdata/parse_certificate_unittest/authority_key_identifier/invalid_contents.pem +- pki/testdata/parse_certificate_unittest/authority_key_identifier/invalid_issuer.pem +- pki/testdata/parse_certificate_unittest/authority_key_identifier/invalid_key_identifier.pem +- pki/testdata/parse_certificate_unittest/authority_key_identifier/invalid_serial.pem +- pki/testdata/parse_certificate_unittest/authority_key_identifier/issuer_and_serial.pem +- pki/testdata/parse_certificate_unittest/authority_key_identifier/issuer_only.pem +- pki/testdata/parse_certificate_unittest/authority_key_identifier/key_identifier.pem +- pki/testdata/parse_certificate_unittest/authority_key_identifier/key_identifier_and_issuer_and_serial.pem +- pki/testdata/parse_certificate_unittest/authority_key_identifier/serial_only.pem +- pki/testdata/parse_certificate_unittest/authority_key_identifier/url_issuer_and_serial.pem +- pki/testdata/parse_certificate_unittest/authority_key_identifier_not_sequence.pem +- pki/testdata/parse_certificate_unittest/bad_key_usage.pem +- pki/testdata/parse_certificate_unittest/bad_policy_qualifiers.pem +- pki/testdata/parse_certificate_unittest/bad_signature_algorithm_oid.pem +- pki/testdata/parse_certificate_unittest/bad_validity.pem +- pki/testdata/parse_certificate_unittest/basic_constraints_ca_false.pem +- pki/testdata/parse_certificate_unittest/basic_constraints_ca_no_path.pem +- pki/testdata/parse_certificate_unittest/basic_constraints_ca_path_9.pem +- pki/testdata/parse_certificate_unittest/basic_constraints_negative_path.pem +- pki/testdata/parse_certificate_unittest/basic_constraints_not_ca.pem +- pki/testdata/parse_certificate_unittest/basic_constraints_path_too_large.pem +- pki/testdata/parse_certificate_unittest/basic_constraints_pathlen_255.pem +- pki/testdata/parse_certificate_unittest/basic_constraints_pathlen_256.pem +- pki/testdata/parse_certificate_unittest/basic_constraints_pathlen_not_ca.pem +- pki/testdata/parse_certificate_unittest/basic_constraints_unconsumed_data.pem +- pki/testdata/parse_certificate_unittest/cert_algorithm_not_sequence.pem +- pki/testdata/parse_certificate_unittest/cert_data_after_signature.pem +- pki/testdata/parse_certificate_unittest/cert_empty_sequence.pem +- pki/testdata/parse_certificate_unittest/cert_missing_signature.pem +- pki/testdata/parse_certificate_unittest/cert_not_sequence.pem +- pki/testdata/parse_certificate_unittest/cert_signature_not_bit_string.pem +- pki/testdata/parse_certificate_unittest/cert_skeleton.pem +- pki/testdata/parse_certificate_unittest/cert_version3.pem +- pki/testdata/parse_certificate_unittest/crldp_1uri_noissuer.pem +- pki/testdata/parse_certificate_unittest/crldp_3uri_noissuer.pem +- pki/testdata/parse_certificate_unittest/crldp_full_name_as_dirname.pem +- pki/testdata/parse_certificate_unittest/crldp_issuer_as_dirname.pem +- pki/testdata/parse_certificate_unittest/extended_key_usage.pem +- pki/testdata/parse_certificate_unittest/extension_critical.pem +- pki/testdata/parse_certificate_unittest/extension_critical_0.pem +- pki/testdata/parse_certificate_unittest/extension_critical_3.pem +- pki/testdata/parse_certificate_unittest/extension_not_critical.pem +- pki/testdata/parse_certificate_unittest/extensions_data_after_sequence.pem +- pki/testdata/parse_certificate_unittest/extensions_duplicate_key_usage.pem +- pki/testdata/parse_certificate_unittest/extensions_empty_sequence.pem +- pki/testdata/parse_certificate_unittest/extensions_not_sequence.pem +- pki/testdata/parse_certificate_unittest/extensions_real.pem +- pki/testdata/parse_certificate_unittest/failed_signature_algorithm.pem +- pki/testdata/parse_certificate_unittest/inhibit_any_policy.pem +- pki/testdata/parse_certificate_unittest/issuer_bad_printable_string.pem +- pki/testdata/parse_certificate_unittest/key_usage.pem +- pki/testdata/parse_certificate_unittest/name_constraints_bad_ip.pem +- pki/testdata/parse_certificate_unittest/policies.pem +- pki/testdata/parse_certificate_unittest/policy_constraints_empty.pem +- pki/testdata/parse_certificate_unittest/policy_constraints_inhibit.pem +- pki/testdata/parse_certificate_unittest/policy_constraints_inhibit_require.pem +- pki/testdata/parse_certificate_unittest/policy_constraints_require.pem +- pki/testdata/parse_certificate_unittest/policy_qualifiers_empty_sequence.pem +- pki/testdata/parse_certificate_unittest/serial_37_bytes.pem +- pki/testdata/parse_certificate_unittest/serial_negative.pem +- pki/testdata/parse_certificate_unittest/serial_not_minimal.pem +- pki/testdata/parse_certificate_unittest/serial_not_number.pem +- pki/testdata/parse_certificate_unittest/serial_zero.pem +- pki/testdata/parse_certificate_unittest/serial_zero_padded.pem +- pki/testdata/parse_certificate_unittest/serial_zero_padded_21_bytes.pem +- pki/testdata/parse_certificate_unittest/signature_algorithm_null.pem +- pki/testdata/parse_certificate_unittest/subject_alt_name.pem +- pki/testdata/parse_certificate_unittest/subject_blank_subjectaltname_not_critical.pem +- pki/testdata/parse_certificate_unittest/subject_key_identifier_not_octet_string.pem +- pki/testdata/parse_certificate_unittest/subject_not_ascii.pem +- pki/testdata/parse_certificate_unittest/subject_not_printable_string.pem +- pki/testdata/parse_certificate_unittest/subject_printable_string_containing_utf8_client_cert.pem +- pki/testdata/parse_certificate_unittest/subject_t61string.pem +- pki/testdata/parse_certificate_unittest/subject_t61string_1-32.pem +- pki/testdata/parse_certificate_unittest/subject_t61string_126-160.pem +- pki/testdata/parse_certificate_unittest/subject_t61string_actual.pem +- pki/testdata/parse_certificate_unittest/subjectaltname_bad_ip.pem +- pki/testdata/parse_certificate_unittest/subjectaltname_dns_not_ascii.pem +- pki/testdata/parse_certificate_unittest/subjectaltname_general_names_empty_sequence.pem +- pki/testdata/parse_certificate_unittest/subjectaltname_trailing_data.pem +- pki/testdata/parse_certificate_unittest/tbs_explicit_v1.pem +- pki/testdata/parse_certificate_unittest/tbs_v1.pem +- pki/testdata/parse_certificate_unittest/tbs_v1_extensions.pem +- pki/testdata/parse_certificate_unittest/tbs_v2_extensions.pem +- pki/testdata/parse_certificate_unittest/tbs_v2_issuer_and_subject_unique_id.pem +- pki/testdata/parse_certificate_unittest/tbs_v2_issuer_unique_id.pem +- pki/testdata/parse_certificate_unittest/tbs_v2_no_optionals.pem +- pki/testdata/parse_certificate_unittest/tbs_v3_all_optionals.pem +- pki/testdata/parse_certificate_unittest/tbs_v3_data_after_extensions.pem +- pki/testdata/parse_certificate_unittest/tbs_v3_extensions.pem +- pki/testdata/parse_certificate_unittest/tbs_v3_extensions_not_sequence.pem +- pki/testdata/parse_certificate_unittest/tbs_v3_no_optionals.pem +- pki/testdata/parse_certificate_unittest/tbs_v3_real.pem +- pki/testdata/parse_certificate_unittest/tbs_v4.pem +- pki/testdata/parse_certificate_unittest/tbs_validity_both_generalized_time.pem +- pki/testdata/parse_certificate_unittest/tbs_validity_both_utc_time.pem +- pki/testdata/parse_certificate_unittest/tbs_validity_generalized_time_and_utc_time.pem +- pki/testdata/parse_certificate_unittest/tbs_validity_relaxed.pem +- pki/testdata/parse_certificate_unittest/tbs_validity_utc_time_and_generalized_time.pem +- pki/testdata/parse_certificate_unittest/v1_explicit_version.pem +- pki/testdata/path_builder_unittest/key_id_name_and_serial_prioritization/int_match_name_only.pem +- pki/testdata/path_builder_unittest/key_id_name_and_serial_prioritization/int_matching.pem +- pki/testdata/path_builder_unittest/key_id_name_and_serial_prioritization/int_mismatch.pem +- pki/testdata/path_builder_unittest/key_id_name_and_serial_prioritization/root.pem +- pki/testdata/path_builder_unittest/key_id_name_and_serial_prioritization/root2.pem +- pki/testdata/path_builder_unittest/key_id_name_and_serial_prioritization/target.pem +- pki/testdata/path_builder_unittest/key_id_prioritization/int_different_ski_a.pem +- pki/testdata/path_builder_unittest/key_id_prioritization/int_different_ski_b.pem +- pki/testdata/path_builder_unittest/key_id_prioritization/int_different_ski_c.pem +- pki/testdata/path_builder_unittest/key_id_prioritization/int_matching_ski_a.pem +- pki/testdata/path_builder_unittest/key_id_prioritization/int_matching_ski_b.pem +- pki/testdata/path_builder_unittest/key_id_prioritization/int_matching_ski_c.pem +- pki/testdata/path_builder_unittest/key_id_prioritization/int_no_ski_a.pem +- pki/testdata/path_builder_unittest/key_id_prioritization/int_no_ski_b.pem +- pki/testdata/path_builder_unittest/key_id_prioritization/int_no_ski_c.pem +- pki/testdata/path_builder_unittest/key_id_prioritization/root.pem +- pki/testdata/path_builder_unittest/key_id_prioritization/target.pem +- pki/testdata/path_builder_unittest/multi-root-A-by-B.pem +- pki/testdata/path_builder_unittest/multi-root-B-by-C.pem +- pki/testdata/path_builder_unittest/multi-root-B-by-F.pem +- pki/testdata/path_builder_unittest/multi-root-C-by-D.pem +- pki/testdata/path_builder_unittest/multi-root-C-by-E.pem +- pki/testdata/path_builder_unittest/multi-root-D-by-D.pem +- pki/testdata/path_builder_unittest/multi-root-E-by-E.pem +- pki/testdata/path_builder_unittest/multi-root-F-by-E.pem +- pki/testdata/path_builder_unittest/precertificate/precertificate.pem +- pki/testdata/path_builder_unittest/precertificate/root.pem +- pki/testdata/path_builder_unittest/self_issued_prioritization/root1.pem +- pki/testdata/path_builder_unittest/self_issued_prioritization/root1_cross.pem +- pki/testdata/path_builder_unittest/self_issued_prioritization/root2.pem +- pki/testdata/path_builder_unittest/self_issued_prioritization/target.pem +- pki/testdata/path_builder_unittest/validity_date_prioritization/int_ac.pem +- pki/testdata/path_builder_unittest/validity_date_prioritization/int_ad.pem +- pki/testdata/path_builder_unittest/validity_date_prioritization/int_bc.pem +- pki/testdata/path_builder_unittest/validity_date_prioritization/int_bd.pem +- pki/testdata/path_builder_unittest/validity_date_prioritization/root.pem +- pki/testdata/path_builder_unittest/validity_date_prioritization/target.pem +- pki/testdata/verify_certificate_chain_unittest/basic-constraints-pathlen-0-self-issued/chain.pem +- pki/testdata/verify_certificate_chain_unittest/basic-constraints-pathlen-0-self-issued/main.test +- pki/testdata/verify_certificate_chain_unittest/expired-intermediate/chain.pem +- pki/testdata/verify_certificate_chain_unittest/expired-intermediate/not-after.test +- pki/testdata/verify_certificate_chain_unittest/expired-intermediate/not-before.test +- pki/testdata/verify_certificate_chain_unittest/expired-root/chain.pem +- pki/testdata/verify_certificate_chain_unittest/expired-root/not-after-ta-with-constraints.test +- pki/testdata/verify_certificate_chain_unittest/expired-root/not-after-ta-with-expiration-and-constraints.test +- pki/testdata/verify_certificate_chain_unittest/expired-root/not-after-ta-with-expiration.test +- pki/testdata/verify_certificate_chain_unittest/expired-root/not-after.test +- pki/testdata/verify_certificate_chain_unittest/expired-root/not-before-ta-with-expiration.test +- pki/testdata/verify_certificate_chain_unittest/expired-root/not-before.test +- pki/testdata/verify_certificate_chain_unittest/expired-target/chain.pem +- pki/testdata/verify_certificate_chain_unittest/expired-target/not-after.test +- pki/testdata/verify_certificate_chain_unittest/expired-target/not-before.test +- pki/testdata/verify_certificate_chain_unittest/incorrect-trust-anchor/chain.pem +- pki/testdata/verify_certificate_chain_unittest/incorrect-trust-anchor/main.test +- pki/testdata/verify_certificate_chain_unittest/intermediate-and-target-wrong-signature/chain.pem +- pki/testdata/verify_certificate_chain_unittest/intermediate-and-target-wrong-signature/main.test +- pki/testdata/verify_certificate_chain_unittest/intermediate-basic-constraints-ca-false/chain.pem +- pki/testdata/verify_certificate_chain_unittest/intermediate-basic-constraints-ca-false/main.test +- pki/testdata/verify_certificate_chain_unittest/intermediate-basic-constraints-not-critical/chain.pem +- pki/testdata/verify_certificate_chain_unittest/intermediate-basic-constraints-not-critical/main.test +- pki/testdata/verify_certificate_chain_unittest/intermediate-eku-any-and-clientauth/any.test +- pki/testdata/verify_certificate_chain_unittest/intermediate-eku-any-and-clientauth/chain.pem +- pki/testdata/verify_certificate_chain_unittest/intermediate-eku-any-and-clientauth/clientauth-strict-leaf.test +- pki/testdata/verify_certificate_chain_unittest/intermediate-eku-any-and-clientauth/clientauth-strict.test +- pki/testdata/verify_certificate_chain_unittest/intermediate-eku-any-and-clientauth/clientauth.test +- pki/testdata/verify_certificate_chain_unittest/intermediate-eku-any-and-clientauth/serverauth-strict-leaf.test +- pki/testdata/verify_certificate_chain_unittest/intermediate-eku-any-and-clientauth/serverauth-strict.test +- pki/testdata/verify_certificate_chain_unittest/intermediate-eku-any-and-clientauth/serverauth.test +- pki/testdata/verify_certificate_chain_unittest/intermediate-eku-clientauth/any.test +- pki/testdata/verify_certificate_chain_unittest/intermediate-eku-clientauth/chain.pem +- pki/testdata/verify_certificate_chain_unittest/intermediate-eku-clientauth/clientauth-strict-leaf.test +- pki/testdata/verify_certificate_chain_unittest/intermediate-eku-clientauth/clientauth-strict.test +- pki/testdata/verify_certificate_chain_unittest/intermediate-eku-clientauth/clientauth.test +- pki/testdata/verify_certificate_chain_unittest/intermediate-eku-clientauth/serverauth-strict-leaf.test +- pki/testdata/verify_certificate_chain_unittest/intermediate-eku-clientauth/serverauth-strict.test +- pki/testdata/verify_certificate_chain_unittest/intermediate-eku-clientauth/serverauth.test +- pki/testdata/verify_certificate_chain_unittest/intermediate-eku-server-gated-crypto/sha1-chain.pem +- pki/testdata/verify_certificate_chain_unittest/intermediate-eku-server-gated-crypto/sha1-eku-any.test +- pki/testdata/verify_certificate_chain_unittest/intermediate-eku-server-gated-crypto/sha1-eku-clientAuth-strict.test +- pki/testdata/verify_certificate_chain_unittest/intermediate-eku-server-gated-crypto/sha1-eku-clientAuth.test +- pki/testdata/verify_certificate_chain_unittest/intermediate-eku-server-gated-crypto/sha1-eku-serverAuth-strict.test +- pki/testdata/verify_certificate_chain_unittest/intermediate-eku-server-gated-crypto/sha1-eku-serverAuth.test +- pki/testdata/verify_certificate_chain_unittest/intermediate-eku-server-gated-crypto/sha256-chain.pem +- pki/testdata/verify_certificate_chain_unittest/intermediate-eku-server-gated-crypto/sha256-eku-any.test +- pki/testdata/verify_certificate_chain_unittest/intermediate-eku-server-gated-crypto/sha256-eku-clientAuth-strict.test +- pki/testdata/verify_certificate_chain_unittest/intermediate-eku-server-gated-crypto/sha256-eku-clientAuth.test +- pki/testdata/verify_certificate_chain_unittest/intermediate-eku-server-gated-crypto/sha256-eku-serverAuth-strict.test +- pki/testdata/verify_certificate_chain_unittest/intermediate-eku-server-gated-crypto/sha256-eku-serverAuth.test +- pki/testdata/verify_certificate_chain_unittest/intermediate-invalid-spki/chain.pem +- pki/testdata/verify_certificate_chain_unittest/intermediate-invalid-spki/main.test +- pki/testdata/verify_certificate_chain_unittest/intermediate-lacks-basic-constraints/chain.pem +- pki/testdata/verify_certificate_chain_unittest/intermediate-lacks-basic-constraints/main.test +- pki/testdata/verify_certificate_chain_unittest/intermediate-lacks-signing-key-usage/chain.pem +- pki/testdata/verify_certificate_chain_unittest/intermediate-lacks-signing-key-usage/main.test +- pki/testdata/verify_certificate_chain_unittest/intermediate-signed-with-sha1/chain.pem +- pki/testdata/verify_certificate_chain_unittest/intermediate-signed-with-sha1/main.test +- pki/testdata/verify_certificate_chain_unittest/intermediate-unknown-critical-extension/chain.pem +- pki/testdata/verify_certificate_chain_unittest/intermediate-unknown-critical-extension/main.test +- pki/testdata/verify_certificate_chain_unittest/intermediate-unknown-non-critical-extension/chain.pem +- pki/testdata/verify_certificate_chain_unittest/intermediate-unknown-non-critical-extension/main.test +- pki/testdata/verify_certificate_chain_unittest/intermediate-wrong-signature-no-authority-key-identifier/chain.pem +- pki/testdata/verify_certificate_chain_unittest/intermediate-wrong-signature-no-authority-key-identifier/main.test +- pki/testdata/verify_certificate_chain_unittest/issuer-and-subject-not-byte-for-byte-equal/anchor.pem +- pki/testdata/verify_certificate_chain_unittest/issuer-and-subject-not-byte-for-byte-equal/anchor.test +- pki/testdata/verify_certificate_chain_unittest/issuer-and-subject-not-byte-for-byte-equal/target.pem +- pki/testdata/verify_certificate_chain_unittest/issuer-and-subject-not-byte-for-byte-equal/target.test +- pki/testdata/verify_certificate_chain_unittest/key-rollover/longrolloverchain.pem +- pki/testdata/verify_certificate_chain_unittest/key-rollover/longrolloverchain.test +- pki/testdata/verify_certificate_chain_unittest/key-rollover/newchain.pem +- pki/testdata/verify_certificate_chain_unittest/key-rollover/newchain.test +- pki/testdata/verify_certificate_chain_unittest/key-rollover/oldchain.pem +- pki/testdata/verify_certificate_chain_unittest/key-rollover/oldchain.test +- pki/testdata/verify_certificate_chain_unittest/key-rollover/rolloverchain.pem +- pki/testdata/verify_certificate_chain_unittest/key-rollover/rolloverchain.test +- pki/testdata/verify_certificate_chain_unittest/many-names/ok-all-types.pem +- pki/testdata/verify_certificate_chain_unittest/many-names/ok-all-types.test +- pki/testdata/verify_certificate_chain_unittest/many-names/toomany-all-types.pem +- pki/testdata/verify_certificate_chain_unittest/many-names/toomany-all-types.test +- pki/testdata/verify_certificate_chain_unittest/many-names/toomany-dirnames-excluded.pem +- pki/testdata/verify_certificate_chain_unittest/many-names/toomany-dirnames-excluded.test +- pki/testdata/verify_certificate_chain_unittest/many-names/toomany-dirnames-permitted.pem +- pki/testdata/verify_certificate_chain_unittest/many-names/toomany-dirnames-permitted.test +- pki/testdata/verify_certificate_chain_unittest/many-names/toomany-dns-excluded.pem +- pki/testdata/verify_certificate_chain_unittest/many-names/toomany-dns-excluded.test +- pki/testdata/verify_certificate_chain_unittest/many-names/toomany-dns-permitted.pem +- pki/testdata/verify_certificate_chain_unittest/many-names/toomany-dns-permitted.test +- pki/testdata/verify_certificate_chain_unittest/many-names/toomany-ips-excluded.pem +- pki/testdata/verify_certificate_chain_unittest/many-names/toomany-ips-excluded.test +- pki/testdata/verify_certificate_chain_unittest/many-names/toomany-ips-permitted.pem +- pki/testdata/verify_certificate_chain_unittest/many-names/toomany-ips-permitted.test +- pki/testdata/verify_certificate_chain_unittest/non-self-signed-root/chain.pem +- pki/testdata/verify_certificate_chain_unittest/non-self-signed-root/main.test +- pki/testdata/verify_certificate_chain_unittest/non-self-signed-root/ta-with-constraints.test +- pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.1.2.txt +- pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.1.3.txt +- pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.1.4.txt +- pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.1.5.txt +- pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.1.6.txt +- pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.10.1.2.txt +- pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.10.1.3.txt +- pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.10.10.txt +- pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.10.13.txt +- pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.10.2.txt +- pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.10.3.txt +- pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.10.4.txt +- pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.10.5.txt +- pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.10.6.txt +- pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.10.7.txt +- pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.10.8.txt +- pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.11.1.txt +- pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.11.10.txt +- pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.11.11.txt +- pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.11.3.txt +- pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.11.5.txt +- pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.11.6.txt +- pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.11.8.txt +- pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.11.9.txt +- pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.12.1.txt +- pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.12.10.txt +- pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.12.3.txt +- pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.12.4.txt +- pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.12.5.txt +- pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.12.6.txt +- pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.12.8.txt +- pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.13.10.txt +- pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.13.12.txt +- pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.13.13.txt +- pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.13.15.txt +- pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.13.16.txt +- pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.13.17.txt +- pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.13.2.txt +- pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.13.20.txt +- pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.13.21.txt +- pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.13.22.txt +- pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.13.23.txt +- pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.13.24.txt +- pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.13.25.txt +- pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.13.26.txt +- pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.13.27.txt +- pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.13.28.txt +- pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.13.29.txt +- pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.13.3.txt +- pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.13.31.txt +- pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.13.33.txt +- pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.13.34.txt +- pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.13.35.txt +- pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.13.36.txt +- pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.13.37.txt +- pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.13.38.txt +- pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.13.7.txt +- pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.13.8.txt +- pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.13.9.txt +- pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.16.2.txt +- pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.2.1.txt +- pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.2.2.txt +- pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.2.5.txt +- pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.2.6.txt +- pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.2.7.txt +- pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.3.1.txt +- pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.3.2.txt +- pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.6.1.txt +- pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.6.10.txt +- pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.6.11.txt +- pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.6.12.txt +- pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.6.16.txt +- pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.6.2.txt +- pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.6.3.txt +- pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.6.5.txt +- pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.6.6.txt +- pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.6.9.txt +- pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.7.1.txt +- pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.7.2.txt +- pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.8.1.txt +- pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.8.12.txt +- pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.8.14.txt +- pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.8.2.txt +- pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.8.3.txt +- pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.8.4.txt +- pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.8.5.txt +- pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.8.6.txt +- pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.8.7.txt +- pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.8.8.txt +- pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.8.9.txt +- pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.9.3.txt +- pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.9.5.txt +- pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.9.7.txt +- pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.9.8.txt +- pki/testdata/verify_certificate_chain_unittest/policies-inhibit-anypolicy-by-root-fail/chain.pem +- pki/testdata/verify_certificate_chain_unittest/policies-inhibit-anypolicy-by-root-fail/main.test +- pki/testdata/verify_certificate_chain_unittest/policies-inhibit-anypolicy-by-root-fail/ta-with-constraints.test +- pki/testdata/verify_certificate_chain_unittest/policies-inhibit-anypolicy-by-root-ok/chain.pem +- pki/testdata/verify_certificate_chain_unittest/policies-inhibit-anypolicy-by-root-ok/main.test +- pki/testdata/verify_certificate_chain_unittest/policies-inhibit-anypolicy-by-root-ok/ta-with-constraints.test +- pki/testdata/verify_certificate_chain_unittest/policies-inhibit-mapping-by-root-fail/chain.pem +- pki/testdata/verify_certificate_chain_unittest/policies-inhibit-mapping-by-root-fail/main.test +- pki/testdata/verify_certificate_chain_unittest/policies-inhibit-mapping-by-root-fail/ta-with-constraints.test +- pki/testdata/verify_certificate_chain_unittest/policies-inhibit-mapping-by-root-ok/chain.pem +- pki/testdata/verify_certificate_chain_unittest/policies-inhibit-mapping-by-root-ok/main.test +- pki/testdata/verify_certificate_chain_unittest/policies-inhibit-mapping-by-root-ok/ta-with-constraints.test +- pki/testdata/verify_certificate_chain_unittest/policies-ok/chain.pem +- pki/testdata/verify_certificate_chain_unittest/policies-ok/main.test +- pki/testdata/verify_certificate_chain_unittest/policies-ok/ta-with-constraints.test +- pki/testdata/verify_certificate_chain_unittest/policies-on-root-ok/chain.pem +- pki/testdata/verify_certificate_chain_unittest/policies-on-root-ok/main.test +- pki/testdata/verify_certificate_chain_unittest/policies-on-root-ok/ta-with-constraints.test +- pki/testdata/verify_certificate_chain_unittest/policies-on-root-wrong/chain.pem +- pki/testdata/verify_certificate_chain_unittest/policies-on-root-wrong/main.test +- pki/testdata/verify_certificate_chain_unittest/policies-on-root-wrong/ta-with-constraints.test +- pki/testdata/verify_certificate_chain_unittest/policies-required-by-root-fail/chain.pem +- pki/testdata/verify_certificate_chain_unittest/policies-required-by-root-fail/main.test +- pki/testdata/verify_certificate_chain_unittest/policies-required-by-root-fail/ta-with-constraints.test +- pki/testdata/verify_certificate_chain_unittest/policies-required-by-root-ok/chain.pem +- pki/testdata/verify_certificate_chain_unittest/policies-required-by-root-ok/main.test +- pki/testdata/verify_certificate_chain_unittest/policies-required-by-root-ok/ta-with-constraints.test +- pki/testdata/verify_certificate_chain_unittest/policy-mappings-on-root-fail/chain.pem +- pki/testdata/verify_certificate_chain_unittest/policy-mappings-on-root-fail/main.test +- pki/testdata/verify_certificate_chain_unittest/policy-mappings-on-root-fail/ta-with-constraints.test +- pki/testdata/verify_certificate_chain_unittest/policy-mappings-on-root-ok/chain.pem +- pki/testdata/verify_certificate_chain_unittest/policy-mappings-on-root-ok/main.test +- pki/testdata/verify_certificate_chain_unittest/policy-mappings-on-root-ok/ta-with-constraints.test +- pki/testdata/verify_certificate_chain_unittest/root-basic-constraints-ca-false/chain.pem +- pki/testdata/verify_certificate_chain_unittest/root-basic-constraints-ca-false/main.test +- pki/testdata/verify_certificate_chain_unittest/root-basic-constraints-ca-false/ta-with-constraints.test +- pki/testdata/verify_certificate_chain_unittest/root-eku-clientauth/chain.pem +- pki/testdata/verify_certificate_chain_unittest/root-eku-clientauth/serverauth-strict.test +- pki/testdata/verify_certificate_chain_unittest/root-eku-clientauth/serverauth-ta-with-constraints-strict.test +- pki/testdata/verify_certificate_chain_unittest/root-eku-clientauth/serverauth-ta-with-constraints.test +- pki/testdata/verify_certificate_chain_unittest/root-eku-clientauth/serverauth-ta-with-expiration-and-constraints.test +- pki/testdata/verify_certificate_chain_unittest/root-eku-clientauth/serverauth-ta-with-expiration.test +- pki/testdata/verify_certificate_chain_unittest/root-eku-clientauth/serverauth.test +- pki/testdata/verify_certificate_chain_unittest/root-lacks-basic-constraints/chain.pem +- pki/testdata/verify_certificate_chain_unittest/root-lacks-basic-constraints/main.test +- pki/testdata/verify_certificate_chain_unittest/root-lacks-basic-constraints/ta-with-constraints-require-basic-constraints.test +- pki/testdata/verify_certificate_chain_unittest/root-lacks-basic-constraints/ta-with-constraints.test +- pki/testdata/verify_certificate_chain_unittest/root-lacks-basic-constraints/ta-with-require-basic-constraints.test +- pki/testdata/verify_certificate_chain_unittest/root-lacks-keycertsign-key-usage/chain.pem +- pki/testdata/verify_certificate_chain_unittest/root-lacks-keycertsign-key-usage/main.test +- pki/testdata/verify_certificate_chain_unittest/root-lacks-keycertsign-key-usage/ta-with-constraints.test +- pki/testdata/verify_certificate_chain_unittest/target-and-intermediate/chain.pem +- pki/testdata/verify_certificate_chain_unittest/target-and-intermediate/distrusted-root-expired.test +- pki/testdata/verify_certificate_chain_unittest/target-and-intermediate/distrusted-root.test +- pki/testdata/verify_certificate_chain_unittest/target-and-intermediate/main.test +- pki/testdata/verify_certificate_chain_unittest/target-and-intermediate/ta-with-constraints.test +- pki/testdata/verify_certificate_chain_unittest/target-and-intermediate/ta-with-expiration.test +- pki/testdata/verify_certificate_chain_unittest/target-and-intermediate/trusted_leaf-and-trust_anchor.test +- pki/testdata/verify_certificate_chain_unittest/target-and-intermediate/trusted_leaf-root.test +- pki/testdata/verify_certificate_chain_unittest/target-and-intermediate/unspecified-trust-root.test +- pki/testdata/verify_certificate_chain_unittest/target-eku-any/any.test +- pki/testdata/verify_certificate_chain_unittest/target-eku-any/chain.pem +- pki/testdata/verify_certificate_chain_unittest/target-eku-any/clientauth-strict-leaf.test +- pki/testdata/verify_certificate_chain_unittest/target-eku-any/clientauth-strict.test +- pki/testdata/verify_certificate_chain_unittest/target-eku-any/clientauth.test +- pki/testdata/verify_certificate_chain_unittest/target-eku-any/serverauth-strict-leaf.test +- pki/testdata/verify_certificate_chain_unittest/target-eku-any/serverauth-strict.test +- pki/testdata/verify_certificate_chain_unittest/target-eku-any/serverauth.test +- pki/testdata/verify_certificate_chain_unittest/target-eku-clientauth/any.test +- pki/testdata/verify_certificate_chain_unittest/target-eku-clientauth/chain.pem +- pki/testdata/verify_certificate_chain_unittest/target-eku-clientauth/clientauth-strict.test +- pki/testdata/verify_certificate_chain_unittest/target-eku-clientauth/clientauth.test +- pki/testdata/verify_certificate_chain_unittest/target-eku-clientauth/serverauth-strict.test +- pki/testdata/verify_certificate_chain_unittest/target-eku-clientauth/serverauth.test +- pki/testdata/verify_certificate_chain_unittest/target-eku-many/any.test +- pki/testdata/verify_certificate_chain_unittest/target-eku-many/chain.pem +- pki/testdata/verify_certificate_chain_unittest/target-eku-many/clientauth-strict-leaf.test +- pki/testdata/verify_certificate_chain_unittest/target-eku-many/clientauth-strict.test +- pki/testdata/verify_certificate_chain_unittest/target-eku-many/clientauth.test +- pki/testdata/verify_certificate_chain_unittest/target-eku-many/serverauth-strict-leaf.test +- pki/testdata/verify_certificate_chain_unittest/target-eku-many/serverauth-strict.test +- pki/testdata/verify_certificate_chain_unittest/target-eku-many/serverauth.test +- pki/testdata/verify_certificate_chain_unittest/target-eku-none/any.test +- pki/testdata/verify_certificate_chain_unittest/target-eku-none/chain.pem +- pki/testdata/verify_certificate_chain_unittest/target-eku-none/clientauth-strict-leaf.test +- pki/testdata/verify_certificate_chain_unittest/target-eku-none/clientauth-strict.test +- pki/testdata/verify_certificate_chain_unittest/target-eku-none/clientauth.test +- pki/testdata/verify_certificate_chain_unittest/target-eku-none/serverauth-strict.test +- pki/testdata/verify_certificate_chain_unittest/target-eku-none/serverauth.test +- pki/testdata/verify_certificate_chain_unittest/target-has-512bit-rsa-key/chain.pem +- pki/testdata/verify_certificate_chain_unittest/target-has-512bit-rsa-key/main.test +- pki/testdata/verify_certificate_chain_unittest/target-has-ca-basic-constraints/chain.pem +- pki/testdata/verify_certificate_chain_unittest/target-has-ca-basic-constraints/main.test +- pki/testdata/verify_certificate_chain_unittest/target-has-ca-basic-constraints/strict.test +- pki/testdata/verify_certificate_chain_unittest/target-has-ca-basic-constraints/target_only-trusted_leaf-strict.test +- pki/testdata/verify_certificate_chain_unittest/target-has-ca-basic-constraints/target_only-trusted_leaf.test +- pki/testdata/verify_certificate_chain_unittest/target-has-ca-basic-constraints/target_only.pem +- pki/testdata/verify_certificate_chain_unittest/target-has-keycertsign-but-not-ca/chain.pem +- pki/testdata/verify_certificate_chain_unittest/target-has-keycertsign-but-not-ca/main.test +- pki/testdata/verify_certificate_chain_unittest/target-has-pathlen-but-not-ca/chain.pem +- pki/testdata/verify_certificate_chain_unittest/target-has-pathlen-but-not-ca/main.test +- pki/testdata/verify_certificate_chain_unittest/target-msapplicationpolicies-and-eku/chain.pem +- pki/testdata/verify_certificate_chain_unittest/target-msapplicationpolicies-and-eku/main.test +- pki/testdata/verify_certificate_chain_unittest/target-msapplicationpolicies-no-eku/chain.pem +- pki/testdata/verify_certificate_chain_unittest/target-msapplicationpolicies-no-eku/main.test +- pki/testdata/verify_certificate_chain_unittest/target-not-end-entity/chain.pem +- pki/testdata/verify_certificate_chain_unittest/target-not-end-entity/main.test +- pki/testdata/verify_certificate_chain_unittest/target-not-end-entity/strict-leaf.test +- pki/testdata/verify_certificate_chain_unittest/target-not-end-entity/strict.test +- pki/testdata/verify_certificate_chain_unittest/target-only/chain.pem +- pki/testdata/verify_certificate_chain_unittest/target-only/trusted_anchor.test +- pki/testdata/verify_certificate_chain_unittest/target-only/trusted_leaf-and-trust_anchor.test +- pki/testdata/verify_certificate_chain_unittest/target-only/trusted_leaf-not_after.test +- pki/testdata/verify_certificate_chain_unittest/target-only/trusted_leaf-wrong_eku.test +- pki/testdata/verify_certificate_chain_unittest/target-only/trusted_leaf.test +- pki/testdata/verify_certificate_chain_unittest/target-only/trusted_leaf_require_self_signed.test +- pki/testdata/verify_certificate_chain_unittest/target-selfissued/chain.pem +- pki/testdata/verify_certificate_chain_unittest/target-selfissued/trusted_anchor.test +- pki/testdata/verify_certificate_chain_unittest/target-selfissued/trusted_leaf-and-trust_anchor.test +- pki/testdata/verify_certificate_chain_unittest/target-selfissued/trusted_leaf.test +- pki/testdata/verify_certificate_chain_unittest/target-selfissued/trusted_leaf_require_self_signed.test +- pki/testdata/verify_certificate_chain_unittest/target-selfsigned/chain.pem +- pki/testdata/verify_certificate_chain_unittest/target-selfsigned/trusted_leaf-and-trust_anchor.test +- pki/testdata/verify_certificate_chain_unittest/target-selfsigned/trusted_leaf-not_after.test +- pki/testdata/verify_certificate_chain_unittest/target-selfsigned/trusted_leaf-wrong_eku.test +- pki/testdata/verify_certificate_chain_unittest/target-selfsigned/trusted_leaf.test +- pki/testdata/verify_certificate_chain_unittest/target-selfsigned/trusted_leaf_require_self_signed.test +- pki/testdata/verify_certificate_chain_unittest/target-serverauth-various-keyusages/ec-decipherOnly.pem +- pki/testdata/verify_certificate_chain_unittest/target-serverauth-various-keyusages/ec-decipherOnly.test +- pki/testdata/verify_certificate_chain_unittest/target-serverauth-various-keyusages/ec-digitalSignature.pem +- pki/testdata/verify_certificate_chain_unittest/target-serverauth-various-keyusages/ec-digitalSignature.test +- pki/testdata/verify_certificate_chain_unittest/target-serverauth-various-keyusages/ec-keyAgreement.pem +- pki/testdata/verify_certificate_chain_unittest/target-serverauth-various-keyusages/ec-keyAgreement.test +- pki/testdata/verify_certificate_chain_unittest/target-serverauth-various-keyusages/ec-keyEncipherment.pem +- pki/testdata/verify_certificate_chain_unittest/target-serverauth-various-keyusages/ec-keyEncipherment.test +- pki/testdata/verify_certificate_chain_unittest/target-serverauth-various-keyusages/rsa-decipherOnly.pem +- pki/testdata/verify_certificate_chain_unittest/target-serverauth-various-keyusages/rsa-decipherOnly.test +- pki/testdata/verify_certificate_chain_unittest/target-serverauth-various-keyusages/rsa-digitalSignature.pem +- pki/testdata/verify_certificate_chain_unittest/target-serverauth-various-keyusages/rsa-digitalSignature.test +- pki/testdata/verify_certificate_chain_unittest/target-serverauth-various-keyusages/rsa-keyAgreement.pem +- pki/testdata/verify_certificate_chain_unittest/target-serverauth-various-keyusages/rsa-keyAgreement.test +- pki/testdata/verify_certificate_chain_unittest/target-serverauth-various-keyusages/rsa-keyEncipherment.pem +- pki/testdata/verify_certificate_chain_unittest/target-serverauth-various-keyusages/rsa-keyEncipherment.test +- pki/testdata/verify_certificate_chain_unittest/target-signed-by-512bit-rsa/chain.pem +- pki/testdata/verify_certificate_chain_unittest/target-signed-by-512bit-rsa/main.test +- pki/testdata/verify_certificate_chain_unittest/target-signed-using-ecdsa/chain.pem +- pki/testdata/verify_certificate_chain_unittest/target-signed-using-ecdsa/main.test +- pki/testdata/verify_certificate_chain_unittest/target-signed-with-sha1/chain.pem +- pki/testdata/verify_certificate_chain_unittest/target-signed-with-sha1/main.test +- pki/testdata/verify_certificate_chain_unittest/target-unknown-critical-extension/chain.pem +- pki/testdata/verify_certificate_chain_unittest/target-unknown-critical-extension/main.test +- pki/testdata/verify_certificate_chain_unittest/target-unknown-critical-extension/target_only-trusted_leaf.test +- pki/testdata/verify_certificate_chain_unittest/target-unknown-critical-extension/target_only.pem +- pki/testdata/verify_certificate_chain_unittest/target-wrong-signature-no-authority-key-identifier/chain.pem +- pki/testdata/verify_certificate_chain_unittest/target-wrong-signature-no-authority-key-identifier/main.test +- pki/testdata/verify_certificate_chain_unittest/target-wrong-signature/chain.pem +- pki/testdata/verify_certificate_chain_unittest/target-wrong-signature/main.test +- pki/testdata/verify_certificate_chain_unittest/unknown-critical-policy-qualifier/chain.pem +- pki/testdata/verify_certificate_chain_unittest/unknown-critical-policy-qualifier/main.test +- pki/testdata/verify_certificate_chain_unittest/unknown-non-critical-policy-qualifier/chain.pem +- pki/testdata/verify_certificate_chain_unittest/unknown-non-critical-policy-qualifier/main.test +- pki/testdata/verify_certificate_chain_unittest/violates-basic-constraints-pathlen-0/chain.pem +- pki/testdata/verify_certificate_chain_unittest/violates-basic-constraints-pathlen-0/main.test +- pki/testdata/verify_certificate_chain_unittest/violates-pathlen-1-from-root/chain.pem +- pki/testdata/verify_certificate_chain_unittest/violates-pathlen-1-from-root/main.test +- pki/testdata/verify_certificate_chain_unittest/violates-pathlen-1-from-root/ta-with-constraints.test +- pki/testdata/verify_name_match_unittest/names/ascii-BMPSTRING-case_swap-dupe_attr.pem +- pki/testdata/verify_name_match_unittest/names/ascii-BMPSTRING-case_swap-extra_attr.pem +- pki/testdata/verify_name_match_unittest/names/ascii-BMPSTRING-case_swap-extra_rdn.pem +- pki/testdata/verify_name_match_unittest/names/ascii-BMPSTRING-case_swap.pem +- pki/testdata/verify_name_match_unittest/names/ascii-BMPSTRING-extra_whitespace-dupe_attr.pem +- pki/testdata/verify_name_match_unittest/names/ascii-BMPSTRING-extra_whitespace-extra_attr.pem +- pki/testdata/verify_name_match_unittest/names/ascii-BMPSTRING-extra_whitespace-extra_rdn.pem +- pki/testdata/verify_name_match_unittest/names/ascii-BMPSTRING-extra_whitespace.pem +- pki/testdata/verify_name_match_unittest/names/ascii-BMPSTRING-unmangled-dupe_attr.pem +- pki/testdata/verify_name_match_unittest/names/ascii-BMPSTRING-unmangled-extra_attr.pem +- pki/testdata/verify_name_match_unittest/names/ascii-BMPSTRING-unmangled-extra_rdn.pem +- pki/testdata/verify_name_match_unittest/names/ascii-BMPSTRING-unmangled.pem +- pki/testdata/verify_name_match_unittest/names/ascii-PRINTABLESTRING-case_swap-dupe_attr.pem +- pki/testdata/verify_name_match_unittest/names/ascii-PRINTABLESTRING-case_swap-extra_attr.pem +- pki/testdata/verify_name_match_unittest/names/ascii-PRINTABLESTRING-case_swap-extra_rdn.pem +- pki/testdata/verify_name_match_unittest/names/ascii-PRINTABLESTRING-case_swap.pem +- pki/testdata/verify_name_match_unittest/names/ascii-PRINTABLESTRING-extra_whitespace-dupe_attr.pem +- pki/testdata/verify_name_match_unittest/names/ascii-PRINTABLESTRING-extra_whitespace-extra_attr.pem +- pki/testdata/verify_name_match_unittest/names/ascii-PRINTABLESTRING-extra_whitespace-extra_rdn.pem +- pki/testdata/verify_name_match_unittest/names/ascii-PRINTABLESTRING-extra_whitespace.pem +- pki/testdata/verify_name_match_unittest/names/ascii-PRINTABLESTRING-rdn_sorting_1.pem +- pki/testdata/verify_name_match_unittest/names/ascii-PRINTABLESTRING-rdn_sorting_2.pem +- pki/testdata/verify_name_match_unittest/names/ascii-PRINTABLESTRING-unmangled-dupe_attr.pem +- pki/testdata/verify_name_match_unittest/names/ascii-PRINTABLESTRING-unmangled-extra_attr.pem +- pki/testdata/verify_name_match_unittest/names/ascii-PRINTABLESTRING-unmangled-extra_rdn.pem +- pki/testdata/verify_name_match_unittest/names/ascii-PRINTABLESTRING-unmangled.pem +- pki/testdata/verify_name_match_unittest/names/ascii-T61STRING-case_swap-dupe_attr.pem +- pki/testdata/verify_name_match_unittest/names/ascii-T61STRING-case_swap-extra_attr.pem +- pki/testdata/verify_name_match_unittest/names/ascii-T61STRING-case_swap-extra_rdn.pem +- pki/testdata/verify_name_match_unittest/names/ascii-T61STRING-case_swap.pem +- pki/testdata/verify_name_match_unittest/names/ascii-T61STRING-extra_whitespace-dupe_attr.pem +- pki/testdata/verify_name_match_unittest/names/ascii-T61STRING-extra_whitespace-extra_attr.pem +- pki/testdata/verify_name_match_unittest/names/ascii-T61STRING-extra_whitespace-extra_rdn.pem +- pki/testdata/verify_name_match_unittest/names/ascii-T61STRING-extra_whitespace.pem +- pki/testdata/verify_name_match_unittest/names/ascii-T61STRING-unmangled-dupe_attr.pem +- pki/testdata/verify_name_match_unittest/names/ascii-T61STRING-unmangled-extra_attr.pem +- pki/testdata/verify_name_match_unittest/names/ascii-T61STRING-unmangled-extra_rdn.pem +- pki/testdata/verify_name_match_unittest/names/ascii-T61STRING-unmangled.pem +- pki/testdata/verify_name_match_unittest/names/ascii-UNIVERSALSTRING-case_swap-dupe_attr.pem +- pki/testdata/verify_name_match_unittest/names/ascii-UNIVERSALSTRING-case_swap-extra_attr.pem +- pki/testdata/verify_name_match_unittest/names/ascii-UNIVERSALSTRING-case_swap-extra_rdn.pem +- pki/testdata/verify_name_match_unittest/names/ascii-UNIVERSALSTRING-case_swap.pem +- pki/testdata/verify_name_match_unittest/names/ascii-UNIVERSALSTRING-extra_whitespace-dupe_attr.pem +- pki/testdata/verify_name_match_unittest/names/ascii-UNIVERSALSTRING-extra_whitespace-extra_attr.pem +- pki/testdata/verify_name_match_unittest/names/ascii-UNIVERSALSTRING-extra_whitespace-extra_rdn.pem +- pki/testdata/verify_name_match_unittest/names/ascii-UNIVERSALSTRING-extra_whitespace.pem +- pki/testdata/verify_name_match_unittest/names/ascii-UNIVERSALSTRING-unmangled-dupe_attr.pem +- pki/testdata/verify_name_match_unittest/names/ascii-UNIVERSALSTRING-unmangled-extra_attr.pem +- pki/testdata/verify_name_match_unittest/names/ascii-UNIVERSALSTRING-unmangled-extra_rdn.pem +- pki/testdata/verify_name_match_unittest/names/ascii-UNIVERSALSTRING-unmangled.pem +- pki/testdata/verify_name_match_unittest/names/ascii-UTF8-case_swap-dupe_attr.pem +- pki/testdata/verify_name_match_unittest/names/ascii-UTF8-case_swap-extra_attr.pem +- pki/testdata/verify_name_match_unittest/names/ascii-UTF8-case_swap-extra_rdn.pem +- pki/testdata/verify_name_match_unittest/names/ascii-UTF8-case_swap.pem +- pki/testdata/verify_name_match_unittest/names/ascii-UTF8-extra_whitespace-dupe_attr.pem +- pki/testdata/verify_name_match_unittest/names/ascii-UTF8-extra_whitespace-extra_attr.pem +- pki/testdata/verify_name_match_unittest/names/ascii-UTF8-extra_whitespace-extra_rdn.pem +- pki/testdata/verify_name_match_unittest/names/ascii-UTF8-extra_whitespace.pem +- pki/testdata/verify_name_match_unittest/names/ascii-UTF8-unmangled-dupe_attr.pem +- pki/testdata/verify_name_match_unittest/names/ascii-UTF8-unmangled-extra_attr.pem +- pki/testdata/verify_name_match_unittest/names/ascii-UTF8-unmangled-extra_rdn.pem +- pki/testdata/verify_name_match_unittest/names/ascii-UTF8-unmangled.pem +- pki/testdata/verify_name_match_unittest/names/ascii-mixed-rdn_dupetype_sorting_1.pem +- pki/testdata/verify_name_match_unittest/names/ascii-mixed-rdn_dupetype_sorting_2.pem +- pki/testdata/verify_name_match_unittest/names/custom-custom-normalized.pem +- pki/testdata/verify_name_match_unittest/names/invalid-AttributeTypeAndValue-badAttributeType.pem +- pki/testdata/verify_name_match_unittest/names/invalid-AttributeTypeAndValue-empty.pem +- pki/testdata/verify_name_match_unittest/names/invalid-AttributeTypeAndValue-extradata.pem +- pki/testdata/verify_name_match_unittest/names/invalid-AttributeTypeAndValue-onlyOneElement.pem +- pki/testdata/verify_name_match_unittest/names/invalid-AttributeTypeAndValue-setNotSequence.pem +- pki/testdata/verify_name_match_unittest/names/invalid-Name-setInsteadOfSequence.pem +- pki/testdata/verify_name_match_unittest/names/invalid-RDN-empty.pem +- pki/testdata/verify_name_match_unittest/names/invalid-RDN-sequenceInsteadOfSet.pem +- pki/testdata/verify_name_match_unittest/names/unicode-mixed-normalized.pem +- pki/testdata/verify_name_match_unittest/names/unicode-mixed-unnormalized.pem +- pki/testdata/verify_name_match_unittest/names/unicode_bmp-BMPSTRING-unmangled.pem +- pki/testdata/verify_name_match_unittest/names/unicode_bmp-UNIVERSALSTRING-unmangled.pem +- pki/testdata/verify_name_match_unittest/names/unicode_bmp-UTF8-unmangled.pem +- pki/testdata/verify_name_match_unittest/names/unicode_supplementary-UNIVERSALSTRING-unmangled.pem +- pki/testdata/verify_name_match_unittest/names/unicode_supplementary-UTF8-unmangled.pem +- pki/testdata/verify_name_match_unittest/names/valid-Name-empty.pem +- pki/testdata/verify_name_match_unittest/names/valid-minimal.pem +- pki/testdata/verify_signed_data_unittest/ecdsa-prime256v1-sha512-spki-params-null.pem +- pki/testdata/verify_signed_data_unittest/ecdsa-prime256v1-sha512-unused-bits-signature.pem +- pki/testdata/verify_signed_data_unittest/ecdsa-prime256v1-sha512-using-ecdh-key.pem +- pki/testdata/verify_signed_data_unittest/ecdsa-prime256v1-sha512-using-ecmqv-key.pem +- pki/testdata/verify_signed_data_unittest/ecdsa-prime256v1-sha512-using-rsa-algorithm.pem +- pki/testdata/verify_signed_data_unittest/ecdsa-prime256v1-sha512-wrong-signature-format.pem +- pki/testdata/verify_signed_data_unittest/ecdsa-prime256v1-sha512.pem +- pki/testdata/verify_signed_data_unittest/ecdsa-secp384r1-sha256-corrupted-data.pem +- pki/testdata/verify_signed_data_unittest/ecdsa-secp384r1-sha256.pem +- pki/testdata/verify_signed_data_unittest/ecdsa-using-rsa-key.pem +- pki/testdata/verify_signed_data_unittest/rsa-pkcs1-sha1-bad-key-der-length.pem +- pki/testdata/verify_signed_data_unittest/rsa-pkcs1-sha1-bad-key-der-null.pem +- pki/testdata/verify_signed_data_unittest/rsa-pkcs1-sha1-key-params-absent.pem +- pki/testdata/verify_signed_data_unittest/rsa-pkcs1-sha1-using-pss-key-no-params.pem +- pki/testdata/verify_signed_data_unittest/rsa-pkcs1-sha1-wrong-algorithm.pem +- pki/testdata/verify_signed_data_unittest/rsa-pkcs1-sha1.pem +- pki/testdata/verify_signed_data_unittest/rsa-pkcs1-sha256-key-encoded-ber.pem +- pki/testdata/verify_signed_data_unittest/rsa-pkcs1-sha256-spki-non-null-params.pem +- pki/testdata/verify_signed_data_unittest/rsa-pkcs1-sha256-using-ecdsa-algorithm.pem +- pki/testdata/verify_signed_data_unittest/rsa-pkcs1-sha256-using-id-ea-rsa.pem +- pki/testdata/verify_signed_data_unittest/rsa-pkcs1-sha256.pem +- pki/testdata/verify_signed_data_unittest/rsa-pss-sha256-using-pss-key-with-params.pem +- pki/testdata/verify_signed_data_unittest/rsa-pss-sha256-wrong-salt.pem +- pki/testdata/verify_signed_data_unittest/rsa-pss-sha256.pem +- pki/testdata/verify_signed_data_unittest/rsa-using-ec-key.pem +- pki/testdata/verify_signed_data_unittest/rsa2048-pkcs1-sha512.pem + pki/testdata/verify_unittest/google-intermediate1.der + pki/testdata/verify_unittest/google-intermediate2.der + pki/testdata/verify_unittest/google-leaf.der +@@ -2838,6 +1403,7 @@ set( + gen/test_support/trampoline-armv8-apple.S + gen/test_support/trampoline-armv8-linux.S + gen/test_support/trampoline-armv8-win.S ++ gen/test_support/trampoline-ppc-linux.S + gen/test_support/trampoline-x86-apple.S + gen/test_support/trampoline-x86-linux.S + gen/test_support/trampoline-x86_64-apple.S +Index: chromium-130.0.6723.44/third_party/boringssl/src/gen/sources.json +=================================================================== +--- chromium-130.0.6723.44.orig/third_party/boringssl/src/gen/sources.json ++++ chromium-130.0.6723.44/third_party/boringssl/src/gen/sources.json +@@ -84,6 +84,7 @@ + "gen/bcm/aesni-x86-linux.S", + "gen/bcm/aesni-x86_64-apple.S", + "gen/bcm/aesni-x86_64-linux.S", ++ "gen/bcm/aesp8-ppc-linux.S", + "gen/bcm/aesv8-armv7-linux.S", + "gen/bcm/aesv8-armv8-apple.S", + "gen/bcm/aesv8-armv8-linux.S", +@@ -115,6 +116,7 @@ + "gen/bcm/ghash-x86-linux.S", + "gen/bcm/ghash-x86_64-apple.S", + "gen/bcm/ghash-x86_64-linux.S", ++ "gen/bcm/ghashp8-ppc-linux.S", + "gen/bcm/ghashv8-armv7-linux.S", + "gen/bcm/ghashv8-armv8-apple.S", + "gen/bcm/ghashv8-armv8-linux.S", +@@ -298,6 +300,7 @@ + "crypto/cpu_arm_freebsd.c", + "crypto/cpu_arm_linux.c", + "crypto/cpu_intel.c", ++ "crypto/cpu_ppc64le.c", + "crypto/crypto.c", + "crypto/curve25519/curve25519.c", + "crypto/curve25519/curve25519_64_adx.c", +@@ -759,37 +762,6 @@ + ], + "data": [ + "crypto/blake2/blake2b256_tests.txt", +- "crypto/cipher_extra/test/aes_128_cbc_sha1_tls_implicit_iv_tests.txt", +- "crypto/cipher_extra/test/aes_128_cbc_sha1_tls_tests.txt", +- "crypto/cipher_extra/test/aes_128_ccm_bluetooth_8_tests.txt", +- "crypto/cipher_extra/test/aes_128_ccm_bluetooth_tests.txt", +- "crypto/cipher_extra/test/aes_128_ccm_matter_tests.txt", +- "crypto/cipher_extra/test/aes_128_ctr_hmac_sha256.txt", +- "crypto/cipher_extra/test/aes_128_gcm_randnonce_tests.txt", +- "crypto/cipher_extra/test/aes_128_gcm_siv_tests.txt", +- "crypto/cipher_extra/test/aes_128_gcm_tests.txt", +- "crypto/cipher_extra/test/aes_192_gcm_tests.txt", +- "crypto/cipher_extra/test/aes_256_cbc_sha1_tls_implicit_iv_tests.txt", +- "crypto/cipher_extra/test/aes_256_cbc_sha1_tls_tests.txt", +- "crypto/cipher_extra/test/aes_256_ctr_hmac_sha256.txt", +- "crypto/cipher_extra/test/aes_256_gcm_randnonce_tests.txt", +- "crypto/cipher_extra/test/aes_256_gcm_siv_tests.txt", +- "crypto/cipher_extra/test/aes_256_gcm_tests.txt", +- "crypto/cipher_extra/test/chacha20_poly1305_tests.txt", +- "crypto/cipher_extra/test/cipher_tests.txt", +- "crypto/cipher_extra/test/des_ede3_cbc_sha1_tls_implicit_iv_tests.txt", +- "crypto/cipher_extra/test/des_ede3_cbc_sha1_tls_tests.txt", +- "crypto/cipher_extra/test/nist_cavp/aes_128_cbc.txt", +- "crypto/cipher_extra/test/nist_cavp/aes_128_ctr.txt", +- "crypto/cipher_extra/test/nist_cavp/aes_128_gcm.txt", +- "crypto/cipher_extra/test/nist_cavp/aes_192_cbc.txt", +- "crypto/cipher_extra/test/nist_cavp/aes_192_ctr.txt", +- "crypto/cipher_extra/test/nist_cavp/aes_256_cbc.txt", +- "crypto/cipher_extra/test/nist_cavp/aes_256_ctr.txt", +- "crypto/cipher_extra/test/nist_cavp/aes_256_gcm.txt", +- "crypto/cipher_extra/test/nist_cavp/tdes_cbc.txt", +- "crypto/cipher_extra/test/nist_cavp/tdes_ecb.txt", +- "crypto/cipher_extra/test/xchacha20_poly1305_tests.txt", + "crypto/curve25519/ed25519_tests.txt", + "crypto/dilithium/dilithium_tests.txt", + "crypto/dilithium/edge_cases_draft_dilithium3_sign.txt", +@@ -1216,1413 +1188,6 @@ + "pki/verify_unittest.cc" + ], + "data": [ +- "pki/testdata/cert_issuer_source_static_unittest/c1.pem", +- "pki/testdata/cert_issuer_source_static_unittest/c2.pem", +- "pki/testdata/cert_issuer_source_static_unittest/d.pem", +- "pki/testdata/cert_issuer_source_static_unittest/e1.pem", +- "pki/testdata/cert_issuer_source_static_unittest/e2.pem", +- "pki/testdata/cert_issuer_source_static_unittest/i1_1.pem", +- "pki/testdata/cert_issuer_source_static_unittest/i1_2.pem", +- "pki/testdata/cert_issuer_source_static_unittest/i2.pem", +- "pki/testdata/cert_issuer_source_static_unittest/i3_1.pem", +- "pki/testdata/cert_issuer_source_static_unittest/i3_2.pem", +- "pki/testdata/cert_issuer_source_static_unittest/root.pem", +- "pki/testdata/certificate_policies_unittest/anypolicy.pem", +- "pki/testdata/certificate_policies_unittest/anypolicy_with_qualifier.pem", +- "pki/testdata/certificate_policies_unittest/invalid-anypolicy_with_custom_qualifier.pem", +- "pki/testdata/certificate_policies_unittest/invalid-empty.pem", +- "pki/testdata/certificate_policies_unittest/invalid-policy_1_2_3_dupe.pem", +- "pki/testdata/certificate_policies_unittest/invalid-policy_1_2_3_policyinformation_unconsumed_data.pem", +- "pki/testdata/certificate_policies_unittest/invalid-policy_1_2_3_policyqualifierinfo_unconsumed_data.pem", +- "pki/testdata/certificate_policies_unittest/invalid-policy_1_2_3_with_empty_qualifiers_sequence.pem", +- "pki/testdata/certificate_policies_unittest/invalid-policy_identifier_not_oid.pem", +- "pki/testdata/certificate_policies_unittest/policy_1_2_3.pem", +- "pki/testdata/certificate_policies_unittest/policy_1_2_3_and_1_2_4.pem", +- "pki/testdata/certificate_policies_unittest/policy_1_2_3_and_1_2_4_with_qualifiers.pem", +- "pki/testdata/certificate_policies_unittest/policy_1_2_3_with_custom_qualifier.pem", +- "pki/testdata/certificate_policies_unittest/policy_1_2_3_with_qualifier.pem", +- "pki/testdata/crl_unittest/bad_crldp_has_crlissuer.pem", +- "pki/testdata/crl_unittest/bad_fake_critical_crlentryextension.pem", +- "pki/testdata/crl_unittest/bad_fake_critical_extension.pem", +- "pki/testdata/crl_unittest/bad_idp_contains_wrong_uri.pem", +- "pki/testdata/crl_unittest/bad_idp_indirectcrl.pem", +- "pki/testdata/crl_unittest/bad_idp_onlycontainscacerts.pem", +- "pki/testdata/crl_unittest/bad_idp_onlycontainscacerts_no_basic_constraints.pem", +- "pki/testdata/crl_unittest/bad_idp_onlycontainsusercerts.pem", +- "pki/testdata/crl_unittest/bad_idp_uri_and_onlycontainscacerts.pem", +- "pki/testdata/crl_unittest/bad_idp_uri_and_onlycontainsusercerts.pem", +- "pki/testdata/crl_unittest/bad_key_rollover_signature.pem", +- "pki/testdata/crl_unittest/bad_nextupdate_too_old.pem", +- "pki/testdata/crl_unittest/bad_signature.pem", +- "pki/testdata/crl_unittest/bad_thisupdate_in_future.pem", +- "pki/testdata/crl_unittest/bad_thisupdate_too_old.pem", +- "pki/testdata/crl_unittest/bad_wrong_issuer.pem", +- "pki/testdata/crl_unittest/good.pem", +- "pki/testdata/crl_unittest/good_fake_extension.pem", +- "pki/testdata/crl_unittest/good_fake_extension_no_nextupdate.pem", +- "pki/testdata/crl_unittest/good_generalizedtime.pem", +- "pki/testdata/crl_unittest/good_idp_contains_uri.pem", +- "pki/testdata/crl_unittest/good_idp_onlycontainscacerts.pem", +- "pki/testdata/crl_unittest/good_idp_onlycontainsusercerts.pem", +- "pki/testdata/crl_unittest/good_idp_onlycontainsusercerts_no_basic_constraints.pem", +- "pki/testdata/crl_unittest/good_idp_uri_and_onlycontainscacerts.pem", +- "pki/testdata/crl_unittest/good_idp_uri_and_onlycontainsusercerts.pem", +- "pki/testdata/crl_unittest/good_issuer_name_normalization.pem", +- "pki/testdata/crl_unittest/good_issuer_no_keyusage.pem", +- "pki/testdata/crl_unittest/good_key_rollover.pem", +- "pki/testdata/crl_unittest/good_no_crldp.pem", +- "pki/testdata/crl_unittest/good_no_nextupdate.pem", +- "pki/testdata/crl_unittest/good_no_version.pem", +- "pki/testdata/crl_unittest/invalid_garbage_after_crlentryextensions.pem", +- "pki/testdata/crl_unittest/invalid_garbage_after_extensions.pem", +- "pki/testdata/crl_unittest/invalid_garbage_after_nextupdate.pem", +- "pki/testdata/crl_unittest/invalid_garbage_after_revocationdate.pem", +- "pki/testdata/crl_unittest/invalid_garbage_after_revokedcerts.pem", +- "pki/testdata/crl_unittest/invalid_garbage_after_signaturevalue.pem", +- "pki/testdata/crl_unittest/invalid_garbage_after_thisupdate.pem", +- "pki/testdata/crl_unittest/invalid_garbage_crlentry.pem", +- "pki/testdata/crl_unittest/invalid_garbage_issuer_name.pem", +- "pki/testdata/crl_unittest/invalid_garbage_revocationdate.pem", +- "pki/testdata/crl_unittest/invalid_garbage_revoked_serial_number.pem", +- "pki/testdata/crl_unittest/invalid_garbage_signaturealgorithm.pem", +- "pki/testdata/crl_unittest/invalid_garbage_signaturevalue.pem", +- "pki/testdata/crl_unittest/invalid_garbage_tbs_signature_algorithm.pem", +- "pki/testdata/crl_unittest/invalid_garbage_tbscertlist.pem", +- "pki/testdata/crl_unittest/invalid_garbage_thisupdate.pem", +- "pki/testdata/crl_unittest/invalid_garbage_version.pem", +- "pki/testdata/crl_unittest/invalid_idp_dpname_choice_extra_data.pem", +- "pki/testdata/crl_unittest/invalid_idp_empty_sequence.pem", +- "pki/testdata/crl_unittest/invalid_idp_onlycontains_user_and_ca_certs.pem", +- "pki/testdata/crl_unittest/invalid_idp_onlycontainsusercerts_v1_leaf.pem", +- "pki/testdata/crl_unittest/invalid_issuer_keyusage_no_crlsign.pem", +- "pki/testdata/crl_unittest/invalid_key_rollover_issuer_keyusage_no_crlsign.pem", +- "pki/testdata/crl_unittest/invalid_mismatched_signature_algorithm.pem", +- "pki/testdata/crl_unittest/invalid_revoked_empty_sequence.pem", +- "pki/testdata/crl_unittest/invalid_v1_explicit.pem", +- "pki/testdata/crl_unittest/invalid_v1_with_crlentryextension.pem", +- "pki/testdata/crl_unittest/invalid_v1_with_extension.pem", +- "pki/testdata/crl_unittest/invalid_v3.pem", +- "pki/testdata/crl_unittest/revoked.pem", +- "pki/testdata/crl_unittest/revoked_fake_crlentryextension.pem", +- "pki/testdata/crl_unittest/revoked_generalized_revocationdate.pem", +- "pki/testdata/crl_unittest/revoked_key_rollover.pem", +- "pki/testdata/crl_unittest/revoked_no_nextupdate.pem", +- "pki/testdata/name_constraints_unittest/directoryname-excludeall.pem", +- "pki/testdata/name_constraints_unittest/directoryname-excluded.pem", +- "pki/testdata/name_constraints_unittest/directoryname.pem", +- "pki/testdata/name_constraints_unittest/directoryname_and_dnsname.pem", +- "pki/testdata/name_constraints_unittest/directoryname_and_dnsname_and_ipaddress.pem", +- "pki/testdata/name_constraints_unittest/dnsname-exclude_dot.pem", +- "pki/testdata/name_constraints_unittest/dnsname-excludeall.pem", +- "pki/testdata/name_constraints_unittest/dnsname-excluded.pem", +- "pki/testdata/name_constraints_unittest/dnsname-excluded_with_leading_dot.pem", +- "pki/testdata/name_constraints_unittest/dnsname-permitted_two_dot.pem", +- "pki/testdata/name_constraints_unittest/dnsname-permitted_with_leading_dot.pem", +- "pki/testdata/name_constraints_unittest/dnsname-with_max.pem", +- "pki/testdata/name_constraints_unittest/dnsname-with_min_0.pem", +- "pki/testdata/name_constraints_unittest/dnsname-with_min_0_and_max.pem", +- "pki/testdata/name_constraints_unittest/dnsname-with_min_1.pem", +- "pki/testdata/name_constraints_unittest/dnsname-with_min_1_and_max.pem", +- "pki/testdata/name_constraints_unittest/dnsname.pem", +- "pki/testdata/name_constraints_unittest/dnsname2.pem", +- "pki/testdata/name_constraints_unittest/edipartyname-excluded.pem", +- "pki/testdata/name_constraints_unittest/edipartyname-permitted.pem", +- "pki/testdata/name_constraints_unittest/invalid-empty_excluded_subtree.pem", +- "pki/testdata/name_constraints_unittest/invalid-empty_permitted_subtree.pem", +- "pki/testdata/name_constraints_unittest/invalid-no_subtrees.pem", +- "pki/testdata/name_constraints_unittest/ipaddress-excludeall.pem", +- "pki/testdata/name_constraints_unittest/ipaddress-excluded.pem", +- "pki/testdata/name_constraints_unittest/ipaddress-invalid_addr.pem", +- "pki/testdata/name_constraints_unittest/ipaddress-invalid_mask_not_contiguous_1.pem", +- "pki/testdata/name_constraints_unittest/ipaddress-invalid_mask_not_contiguous_2.pem", +- "pki/testdata/name_constraints_unittest/ipaddress-invalid_mask_not_contiguous_3.pem", +- "pki/testdata/name_constraints_unittest/ipaddress-invalid_mask_not_contiguous_4.pem", +- "pki/testdata/name_constraints_unittest/ipaddress-mapped_addrs.pem", +- "pki/testdata/name_constraints_unittest/ipaddress-permit_all.pem", +- "pki/testdata/name_constraints_unittest/ipaddress-permit_prefix1.pem", +- "pki/testdata/name_constraints_unittest/ipaddress-permit_prefix31.pem", +- "pki/testdata/name_constraints_unittest/ipaddress-permit_singlehost.pem", +- "pki/testdata/name_constraints_unittest/ipaddress.pem", +- "pki/testdata/name_constraints_unittest/name-ca.pem", +- "pki/testdata/name_constraints_unittest/name-de.pem", +- "pki/testdata/name_constraints_unittest/name-empty.pem", +- "pki/testdata/name_constraints_unittest/name-jp-tokyo.pem", +- "pki/testdata/name_constraints_unittest/name-jp.pem", +- "pki/testdata/name_constraints_unittest/name-us-arizona-1.1.1.1.pem", +- "pki/testdata/name_constraints_unittest/name-us-arizona-192.168.1.1.pem", +- "pki/testdata/name_constraints_unittest/name-us-arizona-email-invalidstring.pem", +- "pki/testdata/name_constraints_unittest/name-us-arizona-email-localpartcase.pem", +- "pki/testdata/name_constraints_unittest/name-us-arizona-email-multiple.pem", +- "pki/testdata/name_constraints_unittest/name-us-arizona-email.pem", +- "pki/testdata/name_constraints_unittest/name-us-arizona-foo.com.pem", +- "pki/testdata/name_constraints_unittest/name-us-arizona-ipv6.pem", +- "pki/testdata/name_constraints_unittest/name-us-arizona-permitted.example.com.pem", +- "pki/testdata/name_constraints_unittest/name-us-arizona.pem", +- "pki/testdata/name_constraints_unittest/name-us-california-192.168.1.1.pem", +- "pki/testdata/name_constraints_unittest/name-us-california-mountain_view.pem", +- "pki/testdata/name_constraints_unittest/name-us-california-permitted.example.com.pem", +- "pki/testdata/name_constraints_unittest/name-us-california.pem", +- "pki/testdata/name_constraints_unittest/name-us.pem", +- "pki/testdata/name_constraints_unittest/othername-excluded.pem", +- "pki/testdata/name_constraints_unittest/othername-permitted.pem", +- "pki/testdata/name_constraints_unittest/registeredid-excluded.pem", +- "pki/testdata/name_constraints_unittest/registeredid-permitted.pem", +- "pki/testdata/name_constraints_unittest/rfc822name-excluded-empty.pem", +- "pki/testdata/name_constraints_unittest/rfc822name-excluded-hostname.pem", +- "pki/testdata/name_constraints_unittest/rfc822name-excluded-hostnamewithat.pem", +- "pki/testdata/name_constraints_unittest/rfc822name-excluded-ipv4.pem", +- "pki/testdata/name_constraints_unittest/rfc822name-excluded-quoted.pem", +- "pki/testdata/name_constraints_unittest/rfc822name-excluded-subdomains.pem", +- "pki/testdata/name_constraints_unittest/rfc822name-excluded.pem", +- "pki/testdata/name_constraints_unittest/rfc822name-permitted-empty.pem", +- "pki/testdata/name_constraints_unittest/rfc822name-permitted-hostname.pem", +- "pki/testdata/name_constraints_unittest/rfc822name-permitted-hostnamewithat.pem", +- "pki/testdata/name_constraints_unittest/rfc822name-permitted-ipv4.pem", +- "pki/testdata/name_constraints_unittest/rfc822name-permitted-quoted.pem", +- "pki/testdata/name_constraints_unittest/rfc822name-permitted-subdomains.pem", +- "pki/testdata/name_constraints_unittest/rfc822name-permitted.pem", +- "pki/testdata/name_constraints_unittest/san-directoryname.pem", +- "pki/testdata/name_constraints_unittest/san-dnsname.pem", +- "pki/testdata/name_constraints_unittest/san-edipartyname.pem", +- "pki/testdata/name_constraints_unittest/san-excluded-directoryname.pem", +- "pki/testdata/name_constraints_unittest/san-excluded-dnsname.pem", +- "pki/testdata/name_constraints_unittest/san-excluded-ipaddress.pem", +- "pki/testdata/name_constraints_unittest/san-invalid-empty.pem", +- "pki/testdata/name_constraints_unittest/san-invalid-ipaddress.pem", +- "pki/testdata/name_constraints_unittest/san-ipaddress4.pem", +- "pki/testdata/name_constraints_unittest/san-ipaddress6.pem", +- "pki/testdata/name_constraints_unittest/san-othername.pem", +- "pki/testdata/name_constraints_unittest/san-permitted.pem", +- "pki/testdata/name_constraints_unittest/san-registeredid.pem", +- "pki/testdata/name_constraints_unittest/san-rfc822name-domaincase.pem", +- "pki/testdata/name_constraints_unittest/san-rfc822name-empty-localpart.pem", +- "pki/testdata/name_constraints_unittest/san-rfc822name-empty.pem", +- "pki/testdata/name_constraints_unittest/san-rfc822name-ipv4.pem", +- "pki/testdata/name_constraints_unittest/san-rfc822name-localpartcase.pem", +- "pki/testdata/name_constraints_unittest/san-rfc822name-multiple.pem", +- "pki/testdata/name_constraints_unittest/san-rfc822name-no-at.pem", +- "pki/testdata/name_constraints_unittest/san-rfc822name-quoted.pem", +- "pki/testdata/name_constraints_unittest/san-rfc822name-subdomain-no-at.pem", +- "pki/testdata/name_constraints_unittest/san-rfc822name-subdomain-two-ats.pem", +- "pki/testdata/name_constraints_unittest/san-rfc822name-subdomain.pem", +- "pki/testdata/name_constraints_unittest/san-rfc822name-subdomaincase.pem", +- "pki/testdata/name_constraints_unittest/san-rfc822name-two-ats.pem", +- "pki/testdata/name_constraints_unittest/san-rfc822name.pem", +- "pki/testdata/name_constraints_unittest/san-uri.pem", +- "pki/testdata/name_constraints_unittest/san-x400address.pem", +- "pki/testdata/name_constraints_unittest/uri-excluded.pem", +- "pki/testdata/name_constraints_unittest/uri-permitted.pem", +- "pki/testdata/name_constraints_unittest/x400address-excluded.pem", +- "pki/testdata/name_constraints_unittest/x400address-permitted.pem", +- "pki/testdata/nist-pkits/certs/AllCertificatesNoPoliciesTest2EE.crt", +- "pki/testdata/nist-pkits/certs/AllCertificatesSamePoliciesTest10EE.crt", +- "pki/testdata/nist-pkits/certs/AllCertificatesSamePoliciesTest13EE.crt", +- "pki/testdata/nist-pkits/certs/AllCertificatesanyPolicyTest11EE.crt", +- "pki/testdata/nist-pkits/certs/AnyPolicyTest14EE.crt", +- "pki/testdata/nist-pkits/certs/BadCRLIssuerNameCACert.crt", +- "pki/testdata/nist-pkits/certs/BadCRLSignatureCACert.crt", +- "pki/testdata/nist-pkits/certs/BadSignedCACert.crt", +- "pki/testdata/nist-pkits/certs/BadnotAfterDateCACert.crt", +- "pki/testdata/nist-pkits/certs/BadnotBeforeDateCACert.crt", +- "pki/testdata/nist-pkits/certs/BasicSelfIssuedCRLSigningKeyCACert.crt", +- "pki/testdata/nist-pkits/certs/BasicSelfIssuedCRLSigningKeyCRLCert.crt", +- "pki/testdata/nist-pkits/certs/BasicSelfIssuedNewKeyCACert.crt", +- "pki/testdata/nist-pkits/certs/BasicSelfIssuedNewKeyOldWithNewCACert.crt", +- "pki/testdata/nist-pkits/certs/BasicSelfIssuedOldKeyCACert.crt", +- "pki/testdata/nist-pkits/certs/BasicSelfIssuedOldKeyNewWithOldCACert.crt", +- "pki/testdata/nist-pkits/certs/CPSPointerQualifierTest20EE.crt", +- "pki/testdata/nist-pkits/certs/DSACACert.crt", +- "pki/testdata/nist-pkits/certs/DSAParametersInheritedCACert.crt", +- "pki/testdata/nist-pkits/certs/DifferentPoliciesTest12EE.crt", +- "pki/testdata/nist-pkits/certs/DifferentPoliciesTest3EE.crt", +- "pki/testdata/nist-pkits/certs/DifferentPoliciesTest4EE.crt", +- "pki/testdata/nist-pkits/certs/DifferentPoliciesTest5EE.crt", +- "pki/testdata/nist-pkits/certs/DifferentPoliciesTest7EE.crt", +- "pki/testdata/nist-pkits/certs/DifferentPoliciesTest8EE.crt", +- "pki/testdata/nist-pkits/certs/DifferentPoliciesTest9EE.crt", +- "pki/testdata/nist-pkits/certs/GeneralizedTimeCRLnextUpdateCACert.crt", +- "pki/testdata/nist-pkits/certs/GoodCACert.crt", +- "pki/testdata/nist-pkits/certs/GoodsubCACert.crt", +- "pki/testdata/nist-pkits/certs/GoodsubCAPanyPolicyMapping1to2CACert.crt", +- "pki/testdata/nist-pkits/certs/InvalidBadCRLIssuerNameTest5EE.crt", +- "pki/testdata/nist-pkits/certs/InvalidBadCRLSignatureTest4EE.crt", +- "pki/testdata/nist-pkits/certs/InvalidBasicSelfIssuedCRLSigningKeyTest7EE.crt", +- "pki/testdata/nist-pkits/certs/InvalidBasicSelfIssuedCRLSigningKeyTest8EE.crt", +- "pki/testdata/nist-pkits/certs/InvalidBasicSelfIssuedNewWithOldTest5EE.crt", +- "pki/testdata/nist-pkits/certs/InvalidBasicSelfIssuedOldWithNewTest2EE.crt", +- "pki/testdata/nist-pkits/certs/InvalidCASignatureTest2EE.crt", +- "pki/testdata/nist-pkits/certs/InvalidCAnotAfterDateTest5EE.crt", +- "pki/testdata/nist-pkits/certs/InvalidCAnotBeforeDateTest1EE.crt", +- "pki/testdata/nist-pkits/certs/InvalidDNSnameConstraintsTest31EE.crt", +- "pki/testdata/nist-pkits/certs/InvalidDNSnameConstraintsTest33EE.crt", +- "pki/testdata/nist-pkits/certs/InvalidDNSnameConstraintsTest38EE.crt", +- "pki/testdata/nist-pkits/certs/InvalidDNandRFC822nameConstraintsTest28EE.crt", +- "pki/testdata/nist-pkits/certs/InvalidDNandRFC822nameConstraintsTest29EE.crt", +- "pki/testdata/nist-pkits/certs/InvalidDNnameConstraintsTest10EE.crt", +- "pki/testdata/nist-pkits/certs/InvalidDNnameConstraintsTest12EE.crt", +- "pki/testdata/nist-pkits/certs/InvalidDNnameConstraintsTest13EE.crt", +- "pki/testdata/nist-pkits/certs/InvalidDNnameConstraintsTest15EE.crt", +- "pki/testdata/nist-pkits/certs/InvalidDNnameConstraintsTest16EE.crt", +- "pki/testdata/nist-pkits/certs/InvalidDNnameConstraintsTest17EE.crt", +- "pki/testdata/nist-pkits/certs/InvalidDNnameConstraintsTest20EE.crt", +- "pki/testdata/nist-pkits/certs/InvalidDNnameConstraintsTest2EE.crt", +- "pki/testdata/nist-pkits/certs/InvalidDNnameConstraintsTest3EE.crt", +- "pki/testdata/nist-pkits/certs/InvalidDNnameConstraintsTest7EE.crt", +- "pki/testdata/nist-pkits/certs/InvalidDNnameConstraintsTest8EE.crt", +- "pki/testdata/nist-pkits/certs/InvalidDNnameConstraintsTest9EE.crt", +- "pki/testdata/nist-pkits/certs/InvalidDSASignatureTest6EE.crt", +- "pki/testdata/nist-pkits/certs/InvalidEESignatureTest3EE.crt", +- "pki/testdata/nist-pkits/certs/InvalidEEnotAfterDateTest6EE.crt", +- "pki/testdata/nist-pkits/certs/InvalidEEnotBeforeDateTest2EE.crt", +- "pki/testdata/nist-pkits/certs/InvalidIDPwithindirectCRLTest23EE.crt", +- "pki/testdata/nist-pkits/certs/InvalidIDPwithindirectCRLTest26EE.crt", +- "pki/testdata/nist-pkits/certs/InvalidLongSerialNumberTest18EE.crt", +- "pki/testdata/nist-pkits/certs/InvalidMappingFromanyPolicyTest7EE.crt", +- "pki/testdata/nist-pkits/certs/InvalidMappingToanyPolicyTest8EE.crt", +- "pki/testdata/nist-pkits/certs/InvalidMissingCRLTest1EE.crt", +- "pki/testdata/nist-pkits/certs/InvalidMissingbasicConstraintsTest1EE.crt", +- "pki/testdata/nist-pkits/certs/InvalidNameChainingOrderTest2EE.crt", +- "pki/testdata/nist-pkits/certs/InvalidNameChainingTest1EE.crt", +- "pki/testdata/nist-pkits/certs/InvalidNegativeSerialNumberTest15EE.crt", +- "pki/testdata/nist-pkits/certs/InvalidOldCRLnextUpdateTest11EE.crt", +- "pki/testdata/nist-pkits/certs/InvalidPolicyMappingTest10EE.crt", +- "pki/testdata/nist-pkits/certs/InvalidPolicyMappingTest2EE.crt", +- "pki/testdata/nist-pkits/certs/InvalidPolicyMappingTest4EE.crt", +- "pki/testdata/nist-pkits/certs/InvalidRFC822nameConstraintsTest22EE.crt", +- "pki/testdata/nist-pkits/certs/InvalidRFC822nameConstraintsTest24EE.crt", +- "pki/testdata/nist-pkits/certs/InvalidRFC822nameConstraintsTest26EE.crt", +- "pki/testdata/nist-pkits/certs/InvalidRevokedCATest2EE.crt", +- "pki/testdata/nist-pkits/certs/InvalidRevokedEETest3EE.crt", +- "pki/testdata/nist-pkits/certs/InvalidSelfIssuedinhibitAnyPolicyTest10EE.crt", +- "pki/testdata/nist-pkits/certs/InvalidSelfIssuedinhibitAnyPolicyTest8EE.crt", +- "pki/testdata/nist-pkits/certs/InvalidSelfIssuedinhibitPolicyMappingTest10EE.crt", +- "pki/testdata/nist-pkits/certs/InvalidSelfIssuedinhibitPolicyMappingTest11EE.crt", +- "pki/testdata/nist-pkits/certs/InvalidSelfIssuedinhibitPolicyMappingTest8EE.crt", +- "pki/testdata/nist-pkits/certs/InvalidSelfIssuedinhibitPolicyMappingTest9EE.crt", +- "pki/testdata/nist-pkits/certs/InvalidSelfIssuedpathLenConstraintTest16EE.crt", +- "pki/testdata/nist-pkits/certs/InvalidSelfIssuedrequireExplicitPolicyTest7EE.crt", +- "pki/testdata/nist-pkits/certs/InvalidSelfIssuedrequireExplicitPolicyTest8EE.crt", +- "pki/testdata/nist-pkits/certs/InvalidSeparateCertificateandCRLKeysTest20EE.crt", +- "pki/testdata/nist-pkits/certs/InvalidSeparateCertificateandCRLKeysTest21EE.crt", +- "pki/testdata/nist-pkits/certs/InvalidURInameConstraintsTest35EE.crt", +- "pki/testdata/nist-pkits/certs/InvalidURInameConstraintsTest37EE.crt", +- "pki/testdata/nist-pkits/certs/InvalidUnknownCRLEntryExtensionTest8EE.crt", +- "pki/testdata/nist-pkits/certs/InvalidUnknownCRLExtensionTest10EE.crt", +- "pki/testdata/nist-pkits/certs/InvalidUnknownCRLExtensionTest9EE.crt", +- "pki/testdata/nist-pkits/certs/InvalidUnknownCriticalCertificateExtensionTest2EE.crt", +- "pki/testdata/nist-pkits/certs/InvalidWrongCRLTest6EE.crt", +- "pki/testdata/nist-pkits/certs/InvalidcAFalseTest2EE.crt", +- "pki/testdata/nist-pkits/certs/InvalidcAFalseTest3EE.crt", +- "pki/testdata/nist-pkits/certs/InvalidcRLIssuerTest27EE.crt", +- "pki/testdata/nist-pkits/certs/InvalidcRLIssuerTest31EE.crt", +- "pki/testdata/nist-pkits/certs/InvalidcRLIssuerTest32EE.crt", +- "pki/testdata/nist-pkits/certs/InvalidcRLIssuerTest34EE.crt", +- "pki/testdata/nist-pkits/certs/InvalidcRLIssuerTest35EE.crt", +- "pki/testdata/nist-pkits/certs/InvaliddeltaCRLIndicatorNoBaseTest1EE.crt", +- "pki/testdata/nist-pkits/certs/InvaliddeltaCRLTest10EE.crt", +- "pki/testdata/nist-pkits/certs/InvaliddeltaCRLTest3EE.crt", +- "pki/testdata/nist-pkits/certs/InvaliddeltaCRLTest4EE.crt", +- "pki/testdata/nist-pkits/certs/InvaliddeltaCRLTest6EE.crt", +- "pki/testdata/nist-pkits/certs/InvaliddeltaCRLTest9EE.crt", +- "pki/testdata/nist-pkits/certs/InvaliddistributionPointTest2EE.crt", +- "pki/testdata/nist-pkits/certs/InvaliddistributionPointTest3EE.crt", +- "pki/testdata/nist-pkits/certs/InvaliddistributionPointTest6EE.crt", +- "pki/testdata/nist-pkits/certs/InvaliddistributionPointTest8EE.crt", +- "pki/testdata/nist-pkits/certs/InvaliddistributionPointTest9EE.crt", +- "pki/testdata/nist-pkits/certs/InvalidinhibitAnyPolicyTest1EE.crt", +- "pki/testdata/nist-pkits/certs/InvalidinhibitAnyPolicyTest4EE.crt", +- "pki/testdata/nist-pkits/certs/InvalidinhibitAnyPolicyTest5EE.crt", +- "pki/testdata/nist-pkits/certs/InvalidinhibitAnyPolicyTest6EE.crt", +- "pki/testdata/nist-pkits/certs/InvalidinhibitPolicyMappingTest1EE.crt", +- "pki/testdata/nist-pkits/certs/InvalidinhibitPolicyMappingTest3EE.crt", +- "pki/testdata/nist-pkits/certs/InvalidinhibitPolicyMappingTest5EE.crt", +- "pki/testdata/nist-pkits/certs/InvalidinhibitPolicyMappingTest6EE.crt", +- "pki/testdata/nist-pkits/certs/InvalidkeyUsageCriticalcRLSignFalseTest4EE.crt", +- "pki/testdata/nist-pkits/certs/InvalidkeyUsageCriticalkeyCertSignFalseTest1EE.crt", +- "pki/testdata/nist-pkits/certs/InvalidkeyUsageNotCriticalcRLSignFalseTest5EE.crt", +- "pki/testdata/nist-pkits/certs/InvalidkeyUsageNotCriticalkeyCertSignFalseTest2EE.crt", +- "pki/testdata/nist-pkits/certs/InvalidonlyContainsAttributeCertsTest14EE.crt", +- "pki/testdata/nist-pkits/certs/InvalidonlyContainsCACertsTest12EE.crt", +- "pki/testdata/nist-pkits/certs/InvalidonlyContainsUserCertsTest11EE.crt", +- "pki/testdata/nist-pkits/certs/InvalidonlySomeReasonsTest15EE.crt", +- "pki/testdata/nist-pkits/certs/InvalidonlySomeReasonsTest16EE.crt", +- "pki/testdata/nist-pkits/certs/InvalidonlySomeReasonsTest17EE.crt", +- "pki/testdata/nist-pkits/certs/InvalidonlySomeReasonsTest20EE.crt", +- "pki/testdata/nist-pkits/certs/InvalidonlySomeReasonsTest21EE.crt", +- "pki/testdata/nist-pkits/certs/InvalidpathLenConstraintTest10EE.crt", +- "pki/testdata/nist-pkits/certs/InvalidpathLenConstraintTest11EE.crt", +- "pki/testdata/nist-pkits/certs/InvalidpathLenConstraintTest12EE.crt", +- "pki/testdata/nist-pkits/certs/InvalidpathLenConstraintTest5EE.crt", +- "pki/testdata/nist-pkits/certs/InvalidpathLenConstraintTest6EE.crt", +- "pki/testdata/nist-pkits/certs/InvalidpathLenConstraintTest9EE.crt", +- "pki/testdata/nist-pkits/certs/Invalidpre2000CRLnextUpdateTest12EE.crt", +- "pki/testdata/nist-pkits/certs/Invalidpre2000UTCEEnotAfterDateTest7EE.crt", +- "pki/testdata/nist-pkits/certs/InvalidrequireExplicitPolicyTest3EE.crt", +- "pki/testdata/nist-pkits/certs/InvalidrequireExplicitPolicyTest5EE.crt", +- "pki/testdata/nist-pkits/certs/LongSerialNumberCACert.crt", +- "pki/testdata/nist-pkits/certs/Mapping1to2CACert.crt", +- "pki/testdata/nist-pkits/certs/MappingFromanyPolicyCACert.crt", +- "pki/testdata/nist-pkits/certs/MappingToanyPolicyCACert.crt", +- "pki/testdata/nist-pkits/certs/MissingbasicConstraintsCACert.crt", +- "pki/testdata/nist-pkits/certs/NameOrderingCACert.crt", +- "pki/testdata/nist-pkits/certs/NegativeSerialNumberCACert.crt", +- "pki/testdata/nist-pkits/certs/NoCRLCACert.crt", +- "pki/testdata/nist-pkits/certs/NoPoliciesCACert.crt", +- "pki/testdata/nist-pkits/certs/NoissuingDistributionPointCACert.crt", +- "pki/testdata/nist-pkits/certs/OldCRLnextUpdateCACert.crt", +- "pki/testdata/nist-pkits/certs/OverlappingPoliciesTest6EE.crt", +- "pki/testdata/nist-pkits/certs/P12Mapping1to3CACert.crt", +- "pki/testdata/nist-pkits/certs/P12Mapping1to3subCACert.crt", +- "pki/testdata/nist-pkits/certs/P12Mapping1to3subsubCACert.crt", +- "pki/testdata/nist-pkits/certs/P1Mapping1to234CACert.crt", +- "pki/testdata/nist-pkits/certs/P1Mapping1to234subCACert.crt", +- "pki/testdata/nist-pkits/certs/P1anyPolicyMapping1to2CACert.crt", +- "pki/testdata/nist-pkits/certs/PanyPolicyMapping1to2CACert.crt", +- "pki/testdata/nist-pkits/certs/PoliciesP1234CACert.crt", +- "pki/testdata/nist-pkits/certs/PoliciesP1234subCAP123Cert.crt", +- "pki/testdata/nist-pkits/certs/PoliciesP1234subsubCAP123P12Cert.crt", +- "pki/testdata/nist-pkits/certs/PoliciesP123CACert.crt", +- "pki/testdata/nist-pkits/certs/PoliciesP123subCAP12Cert.crt", +- "pki/testdata/nist-pkits/certs/PoliciesP123subsubCAP12P1Cert.crt", +- "pki/testdata/nist-pkits/certs/PoliciesP123subsubCAP12P2Cert.crt", +- "pki/testdata/nist-pkits/certs/PoliciesP123subsubsubCAP12P2P1Cert.crt", +- "pki/testdata/nist-pkits/certs/PoliciesP12CACert.crt", +- "pki/testdata/nist-pkits/certs/PoliciesP12subCAP1Cert.crt", +- "pki/testdata/nist-pkits/certs/PoliciesP12subsubCAP1P2Cert.crt", +- "pki/testdata/nist-pkits/certs/PoliciesP2subCA2Cert.crt", +- "pki/testdata/nist-pkits/certs/PoliciesP2subCACert.crt", +- "pki/testdata/nist-pkits/certs/PoliciesP3CACert.crt", +- "pki/testdata/nist-pkits/certs/RFC3280MandatoryAttributeTypesCACert.crt", +- "pki/testdata/nist-pkits/certs/RFC3280OptionalAttributeTypesCACert.crt", +- "pki/testdata/nist-pkits/certs/RevokedsubCACert.crt", +- "pki/testdata/nist-pkits/certs/RolloverfromPrintableStringtoUTF8StringCACert.crt", +- "pki/testdata/nist-pkits/certs/SeparateCertificateandCRLKeysCA2CRLSigningCert.crt", +- "pki/testdata/nist-pkits/certs/SeparateCertificateandCRLKeysCA2CertificateSigningCACert.crt", +- "pki/testdata/nist-pkits/certs/SeparateCertificateandCRLKeysCRLSigningCert.crt", +- "pki/testdata/nist-pkits/certs/SeparateCertificateandCRLKeysCertificateSigningCACert.crt", +- "pki/testdata/nist-pkits/certs/TrustAnchorRootCertificate.crt", +- "pki/testdata/nist-pkits/certs/TwoCRLsCACert.crt", +- "pki/testdata/nist-pkits/certs/UIDCACert.crt", +- "pki/testdata/nist-pkits/certs/UTF8StringCaseInsensitiveMatchCACert.crt", +- "pki/testdata/nist-pkits/certs/UTF8StringEncodedNamesCACert.crt", +- "pki/testdata/nist-pkits/certs/UnknownCRLEntryExtensionCACert.crt", +- "pki/testdata/nist-pkits/certs/UnknownCRLExtensionCACert.crt", +- "pki/testdata/nist-pkits/certs/UserNoticeQualifierTest15EE.crt", +- "pki/testdata/nist-pkits/certs/UserNoticeQualifierTest16EE.crt", +- "pki/testdata/nist-pkits/certs/UserNoticeQualifierTest17EE.crt", +- "pki/testdata/nist-pkits/certs/UserNoticeQualifierTest18EE.crt", +- "pki/testdata/nist-pkits/certs/UserNoticeQualifierTest19EE.crt", +- "pki/testdata/nist-pkits/certs/ValidBasicSelfIssuedCRLSigningKeyTest6EE.crt", +- "pki/testdata/nist-pkits/certs/ValidBasicSelfIssuedNewWithOldTest3EE.crt", +- "pki/testdata/nist-pkits/certs/ValidBasicSelfIssuedNewWithOldTest4EE.crt", +- "pki/testdata/nist-pkits/certs/ValidBasicSelfIssuedOldWithNewTest1EE.crt", +- "pki/testdata/nist-pkits/certs/ValidCertificatePathTest1EE.crt", +- "pki/testdata/nist-pkits/certs/ValidDNSnameConstraintsTest30EE.crt", +- "pki/testdata/nist-pkits/certs/ValidDNSnameConstraintsTest32EE.crt", +- "pki/testdata/nist-pkits/certs/ValidDNandRFC822nameConstraintsTest27EE.crt", +- "pki/testdata/nist-pkits/certs/ValidDNnameConstraintsTest11EE.crt", +- "pki/testdata/nist-pkits/certs/ValidDNnameConstraintsTest14EE.crt", +- "pki/testdata/nist-pkits/certs/ValidDNnameConstraintsTest18EE.crt", +- "pki/testdata/nist-pkits/certs/ValidDNnameConstraintsTest19EE.crt", +- "pki/testdata/nist-pkits/certs/ValidDNnameConstraintsTest1EE.crt", +- "pki/testdata/nist-pkits/certs/ValidDNnameConstraintsTest4EE.crt", +- "pki/testdata/nist-pkits/certs/ValidDNnameConstraintsTest5EE.crt", +- "pki/testdata/nist-pkits/certs/ValidDNnameConstraintsTest6EE.crt", +- "pki/testdata/nist-pkits/certs/ValidDSAParameterInheritanceTest5EE.crt", +- "pki/testdata/nist-pkits/certs/ValidDSASignaturesTest4EE.crt", +- "pki/testdata/nist-pkits/certs/ValidGeneralizedTimeCRLnextUpdateTest13EE.crt", +- "pki/testdata/nist-pkits/certs/ValidGeneralizedTimenotAfterDateTest8EE.crt", +- "pki/testdata/nist-pkits/certs/ValidGeneralizedTimenotBeforeDateTest4EE.crt", +- "pki/testdata/nist-pkits/certs/ValidIDPwithindirectCRLTest22EE.crt", +- "pki/testdata/nist-pkits/certs/ValidIDPwithindirectCRLTest24EE.crt", +- "pki/testdata/nist-pkits/certs/ValidIDPwithindirectCRLTest25EE.crt", +- "pki/testdata/nist-pkits/certs/ValidLongSerialNumberTest16EE.crt", +- "pki/testdata/nist-pkits/certs/ValidLongSerialNumberTest17EE.crt", +- "pki/testdata/nist-pkits/certs/ValidNameChainingCapitalizationTest5EE.crt", +- "pki/testdata/nist-pkits/certs/ValidNameChainingWhitespaceTest3EE.crt", +- "pki/testdata/nist-pkits/certs/ValidNameChainingWhitespaceTest4EE.crt", +- "pki/testdata/nist-pkits/certs/ValidNameUIDsTest6EE.crt", +- "pki/testdata/nist-pkits/certs/ValidNegativeSerialNumberTest14EE.crt", +- "pki/testdata/nist-pkits/certs/ValidNoissuingDistributionPointTest10EE.crt", +- "pki/testdata/nist-pkits/certs/ValidPolicyMappingTest11EE.crt", +- "pki/testdata/nist-pkits/certs/ValidPolicyMappingTest12EE.crt", +- "pki/testdata/nist-pkits/certs/ValidPolicyMappingTest13EE.crt", +- "pki/testdata/nist-pkits/certs/ValidPolicyMappingTest14EE.crt", +- "pki/testdata/nist-pkits/certs/ValidPolicyMappingTest1EE.crt", +- "pki/testdata/nist-pkits/certs/ValidPolicyMappingTest3EE.crt", +- "pki/testdata/nist-pkits/certs/ValidPolicyMappingTest5EE.crt", +- "pki/testdata/nist-pkits/certs/ValidPolicyMappingTest6EE.crt", +- "pki/testdata/nist-pkits/certs/ValidPolicyMappingTest9EE.crt", +- "pki/testdata/nist-pkits/certs/ValidRFC3280MandatoryAttributeTypesTest7EE.crt", +- "pki/testdata/nist-pkits/certs/ValidRFC3280OptionalAttributeTypesTest8EE.crt", +- "pki/testdata/nist-pkits/certs/ValidRFC822nameConstraintsTest21EE.crt", +- "pki/testdata/nist-pkits/certs/ValidRFC822nameConstraintsTest23EE.crt", +- "pki/testdata/nist-pkits/certs/ValidRFC822nameConstraintsTest25EE.crt", +- "pki/testdata/nist-pkits/certs/ValidRolloverfromPrintableStringtoUTF8StringTest10EE.crt", +- "pki/testdata/nist-pkits/certs/ValidSelfIssuedinhibitAnyPolicyTest7EE.crt", +- "pki/testdata/nist-pkits/certs/ValidSelfIssuedinhibitAnyPolicyTest9EE.crt", +- "pki/testdata/nist-pkits/certs/ValidSelfIssuedinhibitPolicyMappingTest7EE.crt", +- "pki/testdata/nist-pkits/certs/ValidSelfIssuedpathLenConstraintTest15EE.crt", +- "pki/testdata/nist-pkits/certs/ValidSelfIssuedpathLenConstraintTest17EE.crt", +- "pki/testdata/nist-pkits/certs/ValidSelfIssuedrequireExplicitPolicyTest6EE.crt", +- "pki/testdata/nist-pkits/certs/ValidSeparateCertificateandCRLKeysTest19EE.crt", +- "pki/testdata/nist-pkits/certs/ValidTwoCRLsTest7EE.crt", +- "pki/testdata/nist-pkits/certs/ValidURInameConstraintsTest34EE.crt", +- "pki/testdata/nist-pkits/certs/ValidURInameConstraintsTest36EE.crt", +- "pki/testdata/nist-pkits/certs/ValidUTF8StringCaseInsensitiveMatchTest11EE.crt", +- "pki/testdata/nist-pkits/certs/ValidUTF8StringEncodedNamesTest9EE.crt", +- "pki/testdata/nist-pkits/certs/ValidUnknownNotCriticalCertificateExtensionTest1EE.crt", +- "pki/testdata/nist-pkits/certs/ValidbasicConstraintsNotCriticalTest4EE.crt", +- "pki/testdata/nist-pkits/certs/ValidcRLIssuerTest28EE.crt", +- "pki/testdata/nist-pkits/certs/ValidcRLIssuerTest29EE.crt", +- "pki/testdata/nist-pkits/certs/ValidcRLIssuerTest30EE.crt", +- "pki/testdata/nist-pkits/certs/ValidcRLIssuerTest33EE.crt", +- "pki/testdata/nist-pkits/certs/ValiddeltaCRLTest2EE.crt", +- "pki/testdata/nist-pkits/certs/ValiddeltaCRLTest5EE.crt", +- "pki/testdata/nist-pkits/certs/ValiddeltaCRLTest7EE.crt", +- "pki/testdata/nist-pkits/certs/ValiddeltaCRLTest8EE.crt", +- "pki/testdata/nist-pkits/certs/ValiddistributionPointTest1EE.crt", +- "pki/testdata/nist-pkits/certs/ValiddistributionPointTest4EE.crt", +- "pki/testdata/nist-pkits/certs/ValiddistributionPointTest5EE.crt", +- "pki/testdata/nist-pkits/certs/ValiddistributionPointTest7EE.crt", +- "pki/testdata/nist-pkits/certs/ValidinhibitAnyPolicyTest2EE.crt", +- "pki/testdata/nist-pkits/certs/ValidinhibitPolicyMappingTest2EE.crt", +- "pki/testdata/nist-pkits/certs/ValidinhibitPolicyMappingTest4EE.crt", +- "pki/testdata/nist-pkits/certs/ValidkeyUsageNotCriticalTest3EE.crt", +- "pki/testdata/nist-pkits/certs/ValidonlyContainsCACertsTest13EE.crt", +- "pki/testdata/nist-pkits/certs/ValidonlySomeReasonsTest18EE.crt", +- "pki/testdata/nist-pkits/certs/ValidonlySomeReasonsTest19EE.crt", +- "pki/testdata/nist-pkits/certs/ValidpathLenConstraintTest13EE.crt", +- "pki/testdata/nist-pkits/certs/ValidpathLenConstraintTest14EE.crt", +- "pki/testdata/nist-pkits/certs/ValidpathLenConstraintTest7EE.crt", +- "pki/testdata/nist-pkits/certs/ValidpathLenConstraintTest8EE.crt", +- "pki/testdata/nist-pkits/certs/Validpre2000UTCnotBeforeDateTest3EE.crt", +- "pki/testdata/nist-pkits/certs/ValidrequireExplicitPolicyTest1EE.crt", +- "pki/testdata/nist-pkits/certs/ValidrequireExplicitPolicyTest2EE.crt", +- "pki/testdata/nist-pkits/certs/ValidrequireExplicitPolicyTest4EE.crt", +- "pki/testdata/nist-pkits/certs/WrongCRLCACert.crt", +- "pki/testdata/nist-pkits/certs/anyPolicyCACert.crt", +- "pki/testdata/nist-pkits/certs/basicConstraintsCriticalcAFalseCACert.crt", +- "pki/testdata/nist-pkits/certs/basicConstraintsNotCriticalCACert.crt", +- "pki/testdata/nist-pkits/certs/basicConstraintsNotCriticalcAFalseCACert.crt", +- "pki/testdata/nist-pkits/certs/deltaCRLCA1Cert.crt", +- "pki/testdata/nist-pkits/certs/deltaCRLCA2Cert.crt", +- "pki/testdata/nist-pkits/certs/deltaCRLCA3Cert.crt", +- "pki/testdata/nist-pkits/certs/deltaCRLIndicatorNoBaseCACert.crt", +- "pki/testdata/nist-pkits/certs/distributionPoint1CACert.crt", +- "pki/testdata/nist-pkits/certs/distributionPoint2CACert.crt", +- "pki/testdata/nist-pkits/certs/indirectCRLCA1Cert.crt", +- "pki/testdata/nist-pkits/certs/indirectCRLCA2Cert.crt", +- "pki/testdata/nist-pkits/certs/indirectCRLCA3Cert.crt", +- "pki/testdata/nist-pkits/certs/indirectCRLCA3cRLIssuerCert.crt", +- "pki/testdata/nist-pkits/certs/indirectCRLCA4Cert.crt", +- "pki/testdata/nist-pkits/certs/indirectCRLCA4cRLIssuerCert.crt", +- "pki/testdata/nist-pkits/certs/indirectCRLCA5Cert.crt", +- "pki/testdata/nist-pkits/certs/indirectCRLCA6Cert.crt", +- "pki/testdata/nist-pkits/certs/inhibitAnyPolicy0CACert.crt", +- "pki/testdata/nist-pkits/certs/inhibitAnyPolicy1CACert.crt", +- "pki/testdata/nist-pkits/certs/inhibitAnyPolicy1SelfIssuedCACert.crt", +- "pki/testdata/nist-pkits/certs/inhibitAnyPolicy1SelfIssuedsubCA2Cert.crt", +- "pki/testdata/nist-pkits/certs/inhibitAnyPolicy1subCA1Cert.crt", +- "pki/testdata/nist-pkits/certs/inhibitAnyPolicy1subCA2Cert.crt", +- "pki/testdata/nist-pkits/certs/inhibitAnyPolicy1subCAIAP5Cert.crt", +- "pki/testdata/nist-pkits/certs/inhibitAnyPolicy1subsubCA2Cert.crt", +- "pki/testdata/nist-pkits/certs/inhibitAnyPolicy5CACert.crt", +- "pki/testdata/nist-pkits/certs/inhibitAnyPolicy5subCACert.crt", +- "pki/testdata/nist-pkits/certs/inhibitAnyPolicy5subsubCACert.crt", +- "pki/testdata/nist-pkits/certs/inhibitAnyPolicyTest3EE.crt", +- "pki/testdata/nist-pkits/certs/inhibitPolicyMapping0CACert.crt", +- "pki/testdata/nist-pkits/certs/inhibitPolicyMapping0subCACert.crt", +- "pki/testdata/nist-pkits/certs/inhibitPolicyMapping1P12CACert.crt", +- "pki/testdata/nist-pkits/certs/inhibitPolicyMapping1P12subCACert.crt", +- "pki/testdata/nist-pkits/certs/inhibitPolicyMapping1P12subCAIPM5Cert.crt", +- "pki/testdata/nist-pkits/certs/inhibitPolicyMapping1P12subsubCACert.crt", +- "pki/testdata/nist-pkits/certs/inhibitPolicyMapping1P12subsubCAIPM5Cert.crt", +- "pki/testdata/nist-pkits/certs/inhibitPolicyMapping1P1CACert.crt", +- "pki/testdata/nist-pkits/certs/inhibitPolicyMapping1P1SelfIssuedCACert.crt", +- "pki/testdata/nist-pkits/certs/inhibitPolicyMapping1P1SelfIssuedsubCACert.crt", +- "pki/testdata/nist-pkits/certs/inhibitPolicyMapping1P1subCACert.crt", +- "pki/testdata/nist-pkits/certs/inhibitPolicyMapping1P1subsubCACert.crt", +- "pki/testdata/nist-pkits/certs/inhibitPolicyMapping5CACert.crt", +- "pki/testdata/nist-pkits/certs/inhibitPolicyMapping5subCACert.crt", +- "pki/testdata/nist-pkits/certs/inhibitPolicyMapping5subsubCACert.crt", +- "pki/testdata/nist-pkits/certs/inhibitPolicyMapping5subsubsubCACert.crt", +- "pki/testdata/nist-pkits/certs/keyUsageCriticalcRLSignFalseCACert.crt", +- "pki/testdata/nist-pkits/certs/keyUsageCriticalkeyCertSignFalseCACert.crt", +- "pki/testdata/nist-pkits/certs/keyUsageNotCriticalCACert.crt", +- "pki/testdata/nist-pkits/certs/keyUsageNotCriticalcRLSignFalseCACert.crt", +- "pki/testdata/nist-pkits/certs/keyUsageNotCriticalkeyCertSignFalseCACert.crt", +- "pki/testdata/nist-pkits/certs/nameConstraintsDN1CACert.crt", +- "pki/testdata/nist-pkits/certs/nameConstraintsDN1SelfIssuedCACert.crt", +- "pki/testdata/nist-pkits/certs/nameConstraintsDN1subCA1Cert.crt", +- "pki/testdata/nist-pkits/certs/nameConstraintsDN1subCA2Cert.crt", +- "pki/testdata/nist-pkits/certs/nameConstraintsDN1subCA3Cert.crt", +- "pki/testdata/nist-pkits/certs/nameConstraintsDN2CACert.crt", +- "pki/testdata/nist-pkits/certs/nameConstraintsDN3CACert.crt", +- "pki/testdata/nist-pkits/certs/nameConstraintsDN3subCA1Cert.crt", +- "pki/testdata/nist-pkits/certs/nameConstraintsDN3subCA2Cert.crt", +- "pki/testdata/nist-pkits/certs/nameConstraintsDN4CACert.crt", +- "pki/testdata/nist-pkits/certs/nameConstraintsDN5CACert.crt", +- "pki/testdata/nist-pkits/certs/nameConstraintsDNS1CACert.crt", +- "pki/testdata/nist-pkits/certs/nameConstraintsDNS2CACert.crt", +- "pki/testdata/nist-pkits/certs/nameConstraintsRFC822CA1Cert.crt", +- "pki/testdata/nist-pkits/certs/nameConstraintsRFC822CA2Cert.crt", +- "pki/testdata/nist-pkits/certs/nameConstraintsRFC822CA3Cert.crt", +- "pki/testdata/nist-pkits/certs/nameConstraintsURI1CACert.crt", +- "pki/testdata/nist-pkits/certs/nameConstraintsURI2CACert.crt", +- "pki/testdata/nist-pkits/certs/onlyContainsAttributeCertsCACert.crt", +- "pki/testdata/nist-pkits/certs/onlyContainsCACertsCACert.crt", +- "pki/testdata/nist-pkits/certs/onlyContainsUserCertsCACert.crt", +- "pki/testdata/nist-pkits/certs/onlySomeReasonsCA1Cert.crt", +- "pki/testdata/nist-pkits/certs/onlySomeReasonsCA2Cert.crt", +- "pki/testdata/nist-pkits/certs/onlySomeReasonsCA3Cert.crt", +- "pki/testdata/nist-pkits/certs/onlySomeReasonsCA4Cert.crt", +- "pki/testdata/nist-pkits/certs/pathLenConstraint0CACert.crt", +- "pki/testdata/nist-pkits/certs/pathLenConstraint0SelfIssuedCACert.crt", +- "pki/testdata/nist-pkits/certs/pathLenConstraint0subCA2Cert.crt", +- "pki/testdata/nist-pkits/certs/pathLenConstraint0subCACert.crt", +- "pki/testdata/nist-pkits/certs/pathLenConstraint1CACert.crt", +- "pki/testdata/nist-pkits/certs/pathLenConstraint1SelfIssuedCACert.crt", +- "pki/testdata/nist-pkits/certs/pathLenConstraint1SelfIssuedsubCACert.crt", +- "pki/testdata/nist-pkits/certs/pathLenConstraint1subCACert.crt", +- "pki/testdata/nist-pkits/certs/pathLenConstraint6CACert.crt", +- "pki/testdata/nist-pkits/certs/pathLenConstraint6subCA0Cert.crt", +- "pki/testdata/nist-pkits/certs/pathLenConstraint6subCA1Cert.crt", +- "pki/testdata/nist-pkits/certs/pathLenConstraint6subCA4Cert.crt", +- "pki/testdata/nist-pkits/certs/pathLenConstraint6subsubCA00Cert.crt", +- "pki/testdata/nist-pkits/certs/pathLenConstraint6subsubCA11Cert.crt", +- "pki/testdata/nist-pkits/certs/pathLenConstraint6subsubCA41Cert.crt", +- "pki/testdata/nist-pkits/certs/pathLenConstraint6subsubsubCA11XCert.crt", +- "pki/testdata/nist-pkits/certs/pathLenConstraint6subsubsubCA41XCert.crt", +- "pki/testdata/nist-pkits/certs/pre2000CRLnextUpdateCACert.crt", +- "pki/testdata/nist-pkits/certs/requireExplicitPolicy0CACert.crt", +- "pki/testdata/nist-pkits/certs/requireExplicitPolicy0subCACert.crt", +- "pki/testdata/nist-pkits/certs/requireExplicitPolicy0subsubCACert.crt", +- "pki/testdata/nist-pkits/certs/requireExplicitPolicy0subsubsubCACert.crt", +- "pki/testdata/nist-pkits/certs/requireExplicitPolicy10CACert.crt", +- "pki/testdata/nist-pkits/certs/requireExplicitPolicy10subCACert.crt", +- "pki/testdata/nist-pkits/certs/requireExplicitPolicy10subsubCACert.crt", +- "pki/testdata/nist-pkits/certs/requireExplicitPolicy10subsubsubCACert.crt", +- "pki/testdata/nist-pkits/certs/requireExplicitPolicy2CACert.crt", +- "pki/testdata/nist-pkits/certs/requireExplicitPolicy2SelfIssuedCACert.crt", +- "pki/testdata/nist-pkits/certs/requireExplicitPolicy2SelfIssuedsubCACert.crt", +- "pki/testdata/nist-pkits/certs/requireExplicitPolicy2subCACert.crt", +- "pki/testdata/nist-pkits/certs/requireExplicitPolicy4CACert.crt", +- "pki/testdata/nist-pkits/certs/requireExplicitPolicy4subCACert.crt", +- "pki/testdata/nist-pkits/certs/requireExplicitPolicy4subsubCACert.crt", +- "pki/testdata/nist-pkits/certs/requireExplicitPolicy4subsubsubCACert.crt", +- "pki/testdata/nist-pkits/certs/requireExplicitPolicy5CACert.crt", +- "pki/testdata/nist-pkits/certs/requireExplicitPolicy5subCACert.crt", +- "pki/testdata/nist-pkits/certs/requireExplicitPolicy5subsubCACert.crt", +- "pki/testdata/nist-pkits/certs/requireExplicitPolicy5subsubsubCACert.crt", +- "pki/testdata/nist-pkits/certs/requireExplicitPolicy7CACert.crt", +- "pki/testdata/nist-pkits/certs/requireExplicitPolicy7subCARE2Cert.crt", +- "pki/testdata/nist-pkits/certs/requireExplicitPolicy7subsubCARE2RE4Cert.crt", +- "pki/testdata/nist-pkits/certs/requireExplicitPolicy7subsubsubCARE2RE4Cert.crt", +- "pki/testdata/nist-pkits/crls/BadCRLIssuerNameCACRL.crl", +- "pki/testdata/nist-pkits/crls/BadCRLSignatureCACRL.crl", +- "pki/testdata/nist-pkits/crls/BadSignedCACRL.crl", +- "pki/testdata/nist-pkits/crls/BadnotAfterDateCACRL.crl", +- "pki/testdata/nist-pkits/crls/BadnotBeforeDateCACRL.crl", +- "pki/testdata/nist-pkits/crls/BasicSelfIssuedCRLSigningKeyCACRL.crl", +- "pki/testdata/nist-pkits/crls/BasicSelfIssuedCRLSigningKeyCRLCertCRL.crl", +- "pki/testdata/nist-pkits/crls/BasicSelfIssuedNewKeyCACRL.crl", +- "pki/testdata/nist-pkits/crls/BasicSelfIssuedOldKeyCACRL.crl", +- "pki/testdata/nist-pkits/crls/BasicSelfIssuedOldKeySelfIssuedCertCRL.crl", +- "pki/testdata/nist-pkits/crls/DSACACRL.crl", +- "pki/testdata/nist-pkits/crls/DSAParametersInheritedCACRL.crl", +- "pki/testdata/nist-pkits/crls/GeneralizedTimeCRLnextUpdateCACRL.crl", +- "pki/testdata/nist-pkits/crls/GoodCACRL.crl", +- "pki/testdata/nist-pkits/crls/GoodsubCACRL.crl", +- "pki/testdata/nist-pkits/crls/GoodsubCAPanyPolicyMapping1to2CACRL.crl", +- "pki/testdata/nist-pkits/crls/LongSerialNumberCACRL.crl", +- "pki/testdata/nist-pkits/crls/Mapping1to2CACRL.crl", +- "pki/testdata/nist-pkits/crls/MappingFromanyPolicyCACRL.crl", +- "pki/testdata/nist-pkits/crls/MappingToanyPolicyCACRL.crl", +- "pki/testdata/nist-pkits/crls/MissingbasicConstraintsCACRL.crl", +- "pki/testdata/nist-pkits/crls/NameOrderCACRL.crl", +- "pki/testdata/nist-pkits/crls/NegativeSerialNumberCACRL.crl", +- "pki/testdata/nist-pkits/crls/NoPoliciesCACRL.crl", +- "pki/testdata/nist-pkits/crls/NoissuingDistributionPointCACRL.crl", +- "pki/testdata/nist-pkits/crls/OldCRLnextUpdateCACRL.crl", +- "pki/testdata/nist-pkits/crls/P12Mapping1to3CACRL.crl", +- "pki/testdata/nist-pkits/crls/P12Mapping1to3subCACRL.crl", +- "pki/testdata/nist-pkits/crls/P12Mapping1to3subsubCACRL.crl", +- "pki/testdata/nist-pkits/crls/P1Mapping1to234CACRL.crl", +- "pki/testdata/nist-pkits/crls/P1Mapping1to234subCACRL.crl", +- "pki/testdata/nist-pkits/crls/P1anyPolicyMapping1to2CACRL.crl", +- "pki/testdata/nist-pkits/crls/PanyPolicyMapping1to2CACRL.crl", +- "pki/testdata/nist-pkits/crls/PoliciesP1234CACRL.crl", +- "pki/testdata/nist-pkits/crls/PoliciesP1234subCAP123CRL.crl", +- "pki/testdata/nist-pkits/crls/PoliciesP1234subsubCAP123P12CRL.crl", +- "pki/testdata/nist-pkits/crls/PoliciesP123CACRL.crl", +- "pki/testdata/nist-pkits/crls/PoliciesP123subCAP12CRL.crl", +- "pki/testdata/nist-pkits/crls/PoliciesP123subsubCAP12P1CRL.crl", +- "pki/testdata/nist-pkits/crls/PoliciesP123subsubCAP2P2CRL.crl", +- "pki/testdata/nist-pkits/crls/PoliciesP123subsubsubCAP12P2P1CRL.crl", +- "pki/testdata/nist-pkits/crls/PoliciesP12CACRL.crl", +- "pki/testdata/nist-pkits/crls/PoliciesP12subCAP1CRL.crl", +- "pki/testdata/nist-pkits/crls/PoliciesP12subsubCAP1P2CRL.crl", +- "pki/testdata/nist-pkits/crls/PoliciesP2subCA2CRL.crl", +- "pki/testdata/nist-pkits/crls/PoliciesP2subCACRL.crl", +- "pki/testdata/nist-pkits/crls/PoliciesP3CACRL.crl", +- "pki/testdata/nist-pkits/crls/RFC3280MandatoryAttributeTypesCACRL.crl", +- "pki/testdata/nist-pkits/crls/RFC3280OptionalAttributeTypesCACRL.crl", +- "pki/testdata/nist-pkits/crls/RevokedsubCACRL.crl", +- "pki/testdata/nist-pkits/crls/RolloverfromPrintableStringtoUTF8StringCACRL.crl", +- "pki/testdata/nist-pkits/crls/SeparateCertificateandCRLKeysCA2CRL.crl", +- "pki/testdata/nist-pkits/crls/SeparateCertificateandCRLKeysCRL.crl", +- "pki/testdata/nist-pkits/crls/TrustAnchorRootCRL.crl", +- "pki/testdata/nist-pkits/crls/TwoCRLsCABadCRL.crl", +- "pki/testdata/nist-pkits/crls/TwoCRLsCAGoodCRL.crl", +- "pki/testdata/nist-pkits/crls/UIDCACRL.crl", +- "pki/testdata/nist-pkits/crls/UTF8StringCaseInsensitiveMatchCACRL.crl", +- "pki/testdata/nist-pkits/crls/UTF8StringEncodedNamesCACRL.crl", +- "pki/testdata/nist-pkits/crls/UnknownCRLEntryExtensionCACRL.crl", +- "pki/testdata/nist-pkits/crls/UnknownCRLExtensionCACRL.crl", +- "pki/testdata/nist-pkits/crls/WrongCRLCACRL.crl", +- "pki/testdata/nist-pkits/crls/anyPolicyCACRL.crl", +- "pki/testdata/nist-pkits/crls/basicConstraintsCriticalcAFalseCACRL.crl", +- "pki/testdata/nist-pkits/crls/basicConstraintsNotCriticalCACRL.crl", +- "pki/testdata/nist-pkits/crls/basicConstraintsNotCriticalcAFalseCACRL.crl", +- "pki/testdata/nist-pkits/crls/deltaCRLCA1CRL.crl", +- "pki/testdata/nist-pkits/crls/deltaCRLCA1deltaCRL.crl", +- "pki/testdata/nist-pkits/crls/deltaCRLCA2CRL.crl", +- "pki/testdata/nist-pkits/crls/deltaCRLCA2deltaCRL.crl", +- "pki/testdata/nist-pkits/crls/deltaCRLCA3CRL.crl", +- "pki/testdata/nist-pkits/crls/deltaCRLCA3deltaCRL.crl", +- "pki/testdata/nist-pkits/crls/deltaCRLIndicatorNoBaseCACRL.crl", +- "pki/testdata/nist-pkits/crls/distributionPoint1CACRL.crl", +- "pki/testdata/nist-pkits/crls/distributionPoint2CACRL.crl", +- "pki/testdata/nist-pkits/crls/indirectCRLCA1CRL.crl", +- "pki/testdata/nist-pkits/crls/indirectCRLCA3CRL.crl", +- "pki/testdata/nist-pkits/crls/indirectCRLCA3cRLIssuerCRL.crl", +- "pki/testdata/nist-pkits/crls/indirectCRLCA4cRLIssuerCRL.crl", +- "pki/testdata/nist-pkits/crls/indirectCRLCA5CRL.crl", +- "pki/testdata/nist-pkits/crls/inhibitAnyPolicy0CACRL.crl", +- "pki/testdata/nist-pkits/crls/inhibitAnyPolicy1CACRL.crl", +- "pki/testdata/nist-pkits/crls/inhibitAnyPolicy1subCA1CRL.crl", +- "pki/testdata/nist-pkits/crls/inhibitAnyPolicy1subCA2CRL.crl", +- "pki/testdata/nist-pkits/crls/inhibitAnyPolicy1subCAIAP5CRL.crl", +- "pki/testdata/nist-pkits/crls/inhibitAnyPolicy1subsubCA2CRL.crl", +- "pki/testdata/nist-pkits/crls/inhibitAnyPolicy5CACRL.crl", +- "pki/testdata/nist-pkits/crls/inhibitAnyPolicy5subCACRL.crl", +- "pki/testdata/nist-pkits/crls/inhibitAnyPolicy5subsubCACRL.crl", +- "pki/testdata/nist-pkits/crls/inhibitPolicyMapping0CACRL.crl", +- "pki/testdata/nist-pkits/crls/inhibitPolicyMapping0subCACRL.crl", +- "pki/testdata/nist-pkits/crls/inhibitPolicyMapping1P12CACRL.crl", +- "pki/testdata/nist-pkits/crls/inhibitPolicyMapping1P12subCACRL.crl", +- "pki/testdata/nist-pkits/crls/inhibitPolicyMapping1P12subCAIPM5CRL.crl", +- "pki/testdata/nist-pkits/crls/inhibitPolicyMapping1P12subsubCACRL.crl", +- "pki/testdata/nist-pkits/crls/inhibitPolicyMapping1P12subsubCAIPM5CRL.crl", +- "pki/testdata/nist-pkits/crls/inhibitPolicyMapping1P1CACRL.crl", +- "pki/testdata/nist-pkits/crls/inhibitPolicyMapping1P1subCACRL.crl", +- "pki/testdata/nist-pkits/crls/inhibitPolicyMapping1P1subsubCACRL.crl", +- "pki/testdata/nist-pkits/crls/inhibitPolicyMapping5CACRL.crl", +- "pki/testdata/nist-pkits/crls/inhibitPolicyMapping5subCACRL.crl", +- "pki/testdata/nist-pkits/crls/inhibitPolicyMapping5subsubCACRL.crl", +- "pki/testdata/nist-pkits/crls/inhibitPolicyMapping5subsubsubCACRL.crl", +- "pki/testdata/nist-pkits/crls/keyUsageCriticalcRLSignFalseCACRL.crl", +- "pki/testdata/nist-pkits/crls/keyUsageCriticalkeyCertSignFalseCACRL.crl", +- "pki/testdata/nist-pkits/crls/keyUsageNotCriticalCACRL.crl", +- "pki/testdata/nist-pkits/crls/keyUsageNotCriticalcRLSignFalseCACRL.crl", +- "pki/testdata/nist-pkits/crls/keyUsageNotCriticalkeyCertSignFalseCACRL.crl", +- "pki/testdata/nist-pkits/crls/nameConstraintsDN1CACRL.crl", +- "pki/testdata/nist-pkits/crls/nameConstraintsDN1subCA1CRL.crl", +- "pki/testdata/nist-pkits/crls/nameConstraintsDN1subCA2CRL.crl", +- "pki/testdata/nist-pkits/crls/nameConstraintsDN1subCA3CRL.crl", +- "pki/testdata/nist-pkits/crls/nameConstraintsDN2CACRL.crl", +- "pki/testdata/nist-pkits/crls/nameConstraintsDN3CACRL.crl", +- "pki/testdata/nist-pkits/crls/nameConstraintsDN3subCA1CRL.crl", +- "pki/testdata/nist-pkits/crls/nameConstraintsDN3subCA2CRL.crl", +- "pki/testdata/nist-pkits/crls/nameConstraintsDN4CACRL.crl", +- "pki/testdata/nist-pkits/crls/nameConstraintsDN5CACRL.crl", +- "pki/testdata/nist-pkits/crls/nameConstraintsDNS1CACRL.crl", +- "pki/testdata/nist-pkits/crls/nameConstraintsDNS2CACRL.crl", +- "pki/testdata/nist-pkits/crls/nameConstraintsRFC822CA1CRL.crl", +- "pki/testdata/nist-pkits/crls/nameConstraintsRFC822CA2CRL.crl", +- "pki/testdata/nist-pkits/crls/nameConstraintsRFC822CA3CRL.crl", +- "pki/testdata/nist-pkits/crls/nameConstraintsURI1CACRL.crl", +- "pki/testdata/nist-pkits/crls/nameConstraintsURI2CACRL.crl", +- "pki/testdata/nist-pkits/crls/onlyContainsAttributeCertsCACRL.crl", +- "pki/testdata/nist-pkits/crls/onlyContainsCACertsCACRL.crl", +- "pki/testdata/nist-pkits/crls/onlyContainsUserCertsCACRL.crl", +- "pki/testdata/nist-pkits/crls/onlySomeReasonsCA1compromiseCRL.crl", +- "pki/testdata/nist-pkits/crls/onlySomeReasonsCA1otherreasonsCRL.crl", +- "pki/testdata/nist-pkits/crls/onlySomeReasonsCA2CRL1.crl", +- "pki/testdata/nist-pkits/crls/onlySomeReasonsCA2CRL2.crl", +- "pki/testdata/nist-pkits/crls/onlySomeReasonsCA3compromiseCRL.crl", +- "pki/testdata/nist-pkits/crls/onlySomeReasonsCA3otherreasonsCRL.crl", +- "pki/testdata/nist-pkits/crls/onlySomeReasonsCA4compromiseCRL.crl", +- "pki/testdata/nist-pkits/crls/onlySomeReasonsCA4otherreasonsCRL.crl", +- "pki/testdata/nist-pkits/crls/pathLenConstraint0CACRL.crl", +- "pki/testdata/nist-pkits/crls/pathLenConstraint0subCA2CRL.crl", +- "pki/testdata/nist-pkits/crls/pathLenConstraint0subCACRL.crl", +- "pki/testdata/nist-pkits/crls/pathLenConstraint1CACRL.crl", +- "pki/testdata/nist-pkits/crls/pathLenConstraint1subCACRL.crl", +- "pki/testdata/nist-pkits/crls/pathLenConstraint6CACRL.crl", +- "pki/testdata/nist-pkits/crls/pathLenConstraint6subCA0CRL.crl", +- "pki/testdata/nist-pkits/crls/pathLenConstraint6subCA1CRL.crl", +- "pki/testdata/nist-pkits/crls/pathLenConstraint6subCA4CRL.crl", +- "pki/testdata/nist-pkits/crls/pathLenConstraint6subsubCA00CRL.crl", +- "pki/testdata/nist-pkits/crls/pathLenConstraint6subsubCA11CRL.crl", +- "pki/testdata/nist-pkits/crls/pathLenConstraint6subsubCA41CRL.crl", +- "pki/testdata/nist-pkits/crls/pathLenConstraint6subsubsubCA11XCRL.crl", +- "pki/testdata/nist-pkits/crls/pathLenConstraint6subsubsubCA41XCRL.crl", +- "pki/testdata/nist-pkits/crls/pre2000CRLnextUpdateCACRL.crl", +- "pki/testdata/nist-pkits/crls/requireExplicitPolicy0CACRL.crl", +- "pki/testdata/nist-pkits/crls/requireExplicitPolicy0subCACRL.crl", +- "pki/testdata/nist-pkits/crls/requireExplicitPolicy0subsubCACRL.crl", +- "pki/testdata/nist-pkits/crls/requireExplicitPolicy0subsubsubCACRL.crl", +- "pki/testdata/nist-pkits/crls/requireExplicitPolicy10CACRL.crl", +- "pki/testdata/nist-pkits/crls/requireExplicitPolicy10subCACRL.crl", +- "pki/testdata/nist-pkits/crls/requireExplicitPolicy10subsubCACRL.crl", +- "pki/testdata/nist-pkits/crls/requireExplicitPolicy10subsubsubCACRL.crl", +- "pki/testdata/nist-pkits/crls/requireExplicitPolicy2CACRL.crl", +- "pki/testdata/nist-pkits/crls/requireExplicitPolicy2subCACRL.crl", +- "pki/testdata/nist-pkits/crls/requireExplicitPolicy4CACRL.crl", +- "pki/testdata/nist-pkits/crls/requireExplicitPolicy4subCACRL.crl", +- "pki/testdata/nist-pkits/crls/requireExplicitPolicy4subsubCACRL.crl", +- "pki/testdata/nist-pkits/crls/requireExplicitPolicy4subsubsubCACRL.crl", +- "pki/testdata/nist-pkits/crls/requireExplicitPolicy5CACRL.crl", +- "pki/testdata/nist-pkits/crls/requireExplicitPolicy5subCACRL.crl", +- "pki/testdata/nist-pkits/crls/requireExplicitPolicy5subsubCACRL.crl", +- "pki/testdata/nist-pkits/crls/requireExplicitPolicy5subsubsubCACRL.crl", +- "pki/testdata/nist-pkits/crls/requireExplicitPolicy7CACRL.crl", +- "pki/testdata/nist-pkits/crls/requireExplicitPolicy7subCARE2CRL.crl", +- "pki/testdata/nist-pkits/crls/requireExplicitPolicy7subsubCARE2RE4CRL.crl", +- "pki/testdata/nist-pkits/crls/requireExplicitPolicy7subsubsubCARE2RE4CRL.crl", +- "pki/testdata/ocsp_unittest/bad_ocsp_type.pem", +- "pki/testdata/ocsp_unittest/bad_signature.pem", +- "pki/testdata/ocsp_unittest/bad_status.pem", +- "pki/testdata/ocsp_unittest/good_response.pem", +- "pki/testdata/ocsp_unittest/good_response_next_update.pem", +- "pki/testdata/ocsp_unittest/good_response_sha256.pem", +- "pki/testdata/ocsp_unittest/has_critical_ct_extension.pem", +- "pki/testdata/ocsp_unittest/has_critical_response_extension.pem", +- "pki/testdata/ocsp_unittest/has_critical_single_extension.pem", +- "pki/testdata/ocsp_unittest/has_extension.pem", +- "pki/testdata/ocsp_unittest/has_single_extension.pem", +- "pki/testdata/ocsp_unittest/has_version.pem", +- "pki/testdata/ocsp_unittest/malformed_request.pem", +- "pki/testdata/ocsp_unittest/missing_response.pem", +- "pki/testdata/ocsp_unittest/multiple_response.pem", +- "pki/testdata/ocsp_unittest/no_response.pem", +- "pki/testdata/ocsp_unittest/ocsp_extra_certs.pem", +- "pki/testdata/ocsp_unittest/ocsp_sign_bad_indirect.pem", +- "pki/testdata/ocsp_unittest/ocsp_sign_direct.pem", +- "pki/testdata/ocsp_unittest/ocsp_sign_indirect.pem", +- "pki/testdata/ocsp_unittest/ocsp_sign_indirect_missing.pem", +- "pki/testdata/ocsp_unittest/other_response.pem", +- "pki/testdata/ocsp_unittest/responder_id.pem", +- "pki/testdata/ocsp_unittest/responder_name.pem", +- "pki/testdata/ocsp_unittest/revoke_response.pem", +- "pki/testdata/ocsp_unittest/revoke_response_reason.pem", +- "pki/testdata/ocsp_unittest/unknown_response.pem", +- "pki/testdata/parse_certificate_unittest/authority_key_identifier/empty_sequence.pem", +- "pki/testdata/parse_certificate_unittest/authority_key_identifier/extra_contents_after_extension_sequence.pem", +- "pki/testdata/parse_certificate_unittest/authority_key_identifier/extra_contents_after_issuer_and_serial.pem", +- "pki/testdata/parse_certificate_unittest/authority_key_identifier/invalid_contents.pem", +- "pki/testdata/parse_certificate_unittest/authority_key_identifier/invalid_issuer.pem", +- "pki/testdata/parse_certificate_unittest/authority_key_identifier/invalid_key_identifier.pem", +- "pki/testdata/parse_certificate_unittest/authority_key_identifier/invalid_serial.pem", +- "pki/testdata/parse_certificate_unittest/authority_key_identifier/issuer_and_serial.pem", +- "pki/testdata/parse_certificate_unittest/authority_key_identifier/issuer_only.pem", +- "pki/testdata/parse_certificate_unittest/authority_key_identifier/key_identifier.pem", +- "pki/testdata/parse_certificate_unittest/authority_key_identifier/key_identifier_and_issuer_and_serial.pem", +- "pki/testdata/parse_certificate_unittest/authority_key_identifier/serial_only.pem", +- "pki/testdata/parse_certificate_unittest/authority_key_identifier/url_issuer_and_serial.pem", +- "pki/testdata/parse_certificate_unittest/authority_key_identifier_not_sequence.pem", +- "pki/testdata/parse_certificate_unittest/bad_key_usage.pem", +- "pki/testdata/parse_certificate_unittest/bad_policy_qualifiers.pem", +- "pki/testdata/parse_certificate_unittest/bad_signature_algorithm_oid.pem", +- "pki/testdata/parse_certificate_unittest/bad_validity.pem", +- "pki/testdata/parse_certificate_unittest/basic_constraints_ca_false.pem", +- "pki/testdata/parse_certificate_unittest/basic_constraints_ca_no_path.pem", +- "pki/testdata/parse_certificate_unittest/basic_constraints_ca_path_9.pem", +- "pki/testdata/parse_certificate_unittest/basic_constraints_negative_path.pem", +- "pki/testdata/parse_certificate_unittest/basic_constraints_not_ca.pem", +- "pki/testdata/parse_certificate_unittest/basic_constraints_path_too_large.pem", +- "pki/testdata/parse_certificate_unittest/basic_constraints_pathlen_255.pem", +- "pki/testdata/parse_certificate_unittest/basic_constraints_pathlen_256.pem", +- "pki/testdata/parse_certificate_unittest/basic_constraints_pathlen_not_ca.pem", +- "pki/testdata/parse_certificate_unittest/basic_constraints_unconsumed_data.pem", +- "pki/testdata/parse_certificate_unittest/cert_algorithm_not_sequence.pem", +- "pki/testdata/parse_certificate_unittest/cert_data_after_signature.pem", +- "pki/testdata/parse_certificate_unittest/cert_empty_sequence.pem", +- "pki/testdata/parse_certificate_unittest/cert_missing_signature.pem", +- "pki/testdata/parse_certificate_unittest/cert_not_sequence.pem", +- "pki/testdata/parse_certificate_unittest/cert_signature_not_bit_string.pem", +- "pki/testdata/parse_certificate_unittest/cert_skeleton.pem", +- "pki/testdata/parse_certificate_unittest/cert_version3.pem", +- "pki/testdata/parse_certificate_unittest/crldp_1uri_noissuer.pem", +- "pki/testdata/parse_certificate_unittest/crldp_3uri_noissuer.pem", +- "pki/testdata/parse_certificate_unittest/crldp_full_name_as_dirname.pem", +- "pki/testdata/parse_certificate_unittest/crldp_issuer_as_dirname.pem", +- "pki/testdata/parse_certificate_unittest/extended_key_usage.pem", +- "pki/testdata/parse_certificate_unittest/extension_critical.pem", +- "pki/testdata/parse_certificate_unittest/extension_critical_0.pem", +- "pki/testdata/parse_certificate_unittest/extension_critical_3.pem", +- "pki/testdata/parse_certificate_unittest/extension_not_critical.pem", +- "pki/testdata/parse_certificate_unittest/extensions_data_after_sequence.pem", +- "pki/testdata/parse_certificate_unittest/extensions_duplicate_key_usage.pem", +- "pki/testdata/parse_certificate_unittest/extensions_empty_sequence.pem", +- "pki/testdata/parse_certificate_unittest/extensions_not_sequence.pem", +- "pki/testdata/parse_certificate_unittest/extensions_real.pem", +- "pki/testdata/parse_certificate_unittest/failed_signature_algorithm.pem", +- "pki/testdata/parse_certificate_unittest/inhibit_any_policy.pem", +- "pki/testdata/parse_certificate_unittest/issuer_bad_printable_string.pem", +- "pki/testdata/parse_certificate_unittest/key_usage.pem", +- "pki/testdata/parse_certificate_unittest/name_constraints_bad_ip.pem", +- "pki/testdata/parse_certificate_unittest/policies.pem", +- "pki/testdata/parse_certificate_unittest/policy_constraints_empty.pem", +- "pki/testdata/parse_certificate_unittest/policy_constraints_inhibit.pem", +- "pki/testdata/parse_certificate_unittest/policy_constraints_inhibit_require.pem", +- "pki/testdata/parse_certificate_unittest/policy_constraints_require.pem", +- "pki/testdata/parse_certificate_unittest/policy_qualifiers_empty_sequence.pem", +- "pki/testdata/parse_certificate_unittest/serial_37_bytes.pem", +- "pki/testdata/parse_certificate_unittest/serial_negative.pem", +- "pki/testdata/parse_certificate_unittest/serial_not_minimal.pem", +- "pki/testdata/parse_certificate_unittest/serial_not_number.pem", +- "pki/testdata/parse_certificate_unittest/serial_zero.pem", +- "pki/testdata/parse_certificate_unittest/serial_zero_padded.pem", +- "pki/testdata/parse_certificate_unittest/serial_zero_padded_21_bytes.pem", +- "pki/testdata/parse_certificate_unittest/signature_algorithm_null.pem", +- "pki/testdata/parse_certificate_unittest/subject_alt_name.pem", +- "pki/testdata/parse_certificate_unittest/subject_blank_subjectaltname_not_critical.pem", +- "pki/testdata/parse_certificate_unittest/subject_key_identifier_not_octet_string.pem", +- "pki/testdata/parse_certificate_unittest/subject_not_ascii.pem", +- "pki/testdata/parse_certificate_unittest/subject_not_printable_string.pem", +- "pki/testdata/parse_certificate_unittest/subject_printable_string_containing_utf8_client_cert.pem", +- "pki/testdata/parse_certificate_unittest/subject_t61string.pem", +- "pki/testdata/parse_certificate_unittest/subject_t61string_1-32.pem", +- "pki/testdata/parse_certificate_unittest/subject_t61string_126-160.pem", +- "pki/testdata/parse_certificate_unittest/subject_t61string_actual.pem", +- "pki/testdata/parse_certificate_unittest/subjectaltname_bad_ip.pem", +- "pki/testdata/parse_certificate_unittest/subjectaltname_dns_not_ascii.pem", +- "pki/testdata/parse_certificate_unittest/subjectaltname_general_names_empty_sequence.pem", +- "pki/testdata/parse_certificate_unittest/subjectaltname_trailing_data.pem", +- "pki/testdata/parse_certificate_unittest/tbs_explicit_v1.pem", +- "pki/testdata/parse_certificate_unittest/tbs_v1.pem", +- "pki/testdata/parse_certificate_unittest/tbs_v1_extensions.pem", +- "pki/testdata/parse_certificate_unittest/tbs_v2_extensions.pem", +- "pki/testdata/parse_certificate_unittest/tbs_v2_issuer_and_subject_unique_id.pem", +- "pki/testdata/parse_certificate_unittest/tbs_v2_issuer_unique_id.pem", +- "pki/testdata/parse_certificate_unittest/tbs_v2_no_optionals.pem", +- "pki/testdata/parse_certificate_unittest/tbs_v3_all_optionals.pem", +- "pki/testdata/parse_certificate_unittest/tbs_v3_data_after_extensions.pem", +- "pki/testdata/parse_certificate_unittest/tbs_v3_extensions.pem", +- "pki/testdata/parse_certificate_unittest/tbs_v3_extensions_not_sequence.pem", +- "pki/testdata/parse_certificate_unittest/tbs_v3_no_optionals.pem", +- "pki/testdata/parse_certificate_unittest/tbs_v3_real.pem", +- "pki/testdata/parse_certificate_unittest/tbs_v4.pem", +- "pki/testdata/parse_certificate_unittest/tbs_validity_both_generalized_time.pem", +- "pki/testdata/parse_certificate_unittest/tbs_validity_both_utc_time.pem", +- "pki/testdata/parse_certificate_unittest/tbs_validity_generalized_time_and_utc_time.pem", +- "pki/testdata/parse_certificate_unittest/tbs_validity_relaxed.pem", +- "pki/testdata/parse_certificate_unittest/tbs_validity_utc_time_and_generalized_time.pem", +- "pki/testdata/parse_certificate_unittest/v1_explicit_version.pem", +- "pki/testdata/path_builder_unittest/key_id_name_and_serial_prioritization/int_match_name_only.pem", +- "pki/testdata/path_builder_unittest/key_id_name_and_serial_prioritization/int_matching.pem", +- "pki/testdata/path_builder_unittest/key_id_name_and_serial_prioritization/int_mismatch.pem", +- "pki/testdata/path_builder_unittest/key_id_name_and_serial_prioritization/root.pem", +- "pki/testdata/path_builder_unittest/key_id_name_and_serial_prioritization/root2.pem", +- "pki/testdata/path_builder_unittest/key_id_name_and_serial_prioritization/target.pem", +- "pki/testdata/path_builder_unittest/key_id_prioritization/int_different_ski_a.pem", +- "pki/testdata/path_builder_unittest/key_id_prioritization/int_different_ski_b.pem", +- "pki/testdata/path_builder_unittest/key_id_prioritization/int_different_ski_c.pem", +- "pki/testdata/path_builder_unittest/key_id_prioritization/int_matching_ski_a.pem", +- "pki/testdata/path_builder_unittest/key_id_prioritization/int_matching_ski_b.pem", +- "pki/testdata/path_builder_unittest/key_id_prioritization/int_matching_ski_c.pem", +- "pki/testdata/path_builder_unittest/key_id_prioritization/int_no_ski_a.pem", +- "pki/testdata/path_builder_unittest/key_id_prioritization/int_no_ski_b.pem", +- "pki/testdata/path_builder_unittest/key_id_prioritization/int_no_ski_c.pem", +- "pki/testdata/path_builder_unittest/key_id_prioritization/root.pem", +- "pki/testdata/path_builder_unittest/key_id_prioritization/target.pem", +- "pki/testdata/path_builder_unittest/multi-root-A-by-B.pem", +- "pki/testdata/path_builder_unittest/multi-root-B-by-C.pem", +- "pki/testdata/path_builder_unittest/multi-root-B-by-F.pem", +- "pki/testdata/path_builder_unittest/multi-root-C-by-D.pem", +- "pki/testdata/path_builder_unittest/multi-root-C-by-E.pem", +- "pki/testdata/path_builder_unittest/multi-root-D-by-D.pem", +- "pki/testdata/path_builder_unittest/multi-root-E-by-E.pem", +- "pki/testdata/path_builder_unittest/multi-root-F-by-E.pem", +- "pki/testdata/path_builder_unittest/precertificate/precertificate.pem", +- "pki/testdata/path_builder_unittest/precertificate/root.pem", +- "pki/testdata/path_builder_unittest/self_issued_prioritization/root1.pem", +- "pki/testdata/path_builder_unittest/self_issued_prioritization/root1_cross.pem", +- "pki/testdata/path_builder_unittest/self_issued_prioritization/root2.pem", +- "pki/testdata/path_builder_unittest/self_issued_prioritization/target.pem", +- "pki/testdata/path_builder_unittest/validity_date_prioritization/int_ac.pem", +- "pki/testdata/path_builder_unittest/validity_date_prioritization/int_ad.pem", +- "pki/testdata/path_builder_unittest/validity_date_prioritization/int_bc.pem", +- "pki/testdata/path_builder_unittest/validity_date_prioritization/int_bd.pem", +- "pki/testdata/path_builder_unittest/validity_date_prioritization/root.pem", +- "pki/testdata/path_builder_unittest/validity_date_prioritization/target.pem", +- "pki/testdata/verify_certificate_chain_unittest/basic-constraints-pathlen-0-self-issued/chain.pem", +- "pki/testdata/verify_certificate_chain_unittest/basic-constraints-pathlen-0-self-issued/main.test", +- "pki/testdata/verify_certificate_chain_unittest/expired-intermediate/chain.pem", +- "pki/testdata/verify_certificate_chain_unittest/expired-intermediate/not-after.test", +- "pki/testdata/verify_certificate_chain_unittest/expired-intermediate/not-before.test", +- "pki/testdata/verify_certificate_chain_unittest/expired-root/chain.pem", +- "pki/testdata/verify_certificate_chain_unittest/expired-root/not-after-ta-with-constraints.test", +- "pki/testdata/verify_certificate_chain_unittest/expired-root/not-after-ta-with-expiration-and-constraints.test", +- "pki/testdata/verify_certificate_chain_unittest/expired-root/not-after-ta-with-expiration.test", +- "pki/testdata/verify_certificate_chain_unittest/expired-root/not-after.test", +- "pki/testdata/verify_certificate_chain_unittest/expired-root/not-before-ta-with-expiration.test", +- "pki/testdata/verify_certificate_chain_unittest/expired-root/not-before.test", +- "pki/testdata/verify_certificate_chain_unittest/expired-target/chain.pem", +- "pki/testdata/verify_certificate_chain_unittest/expired-target/not-after.test", +- "pki/testdata/verify_certificate_chain_unittest/expired-target/not-before.test", +- "pki/testdata/verify_certificate_chain_unittest/incorrect-trust-anchor/chain.pem", +- "pki/testdata/verify_certificate_chain_unittest/incorrect-trust-anchor/main.test", +- "pki/testdata/verify_certificate_chain_unittest/intermediate-and-target-wrong-signature/chain.pem", +- "pki/testdata/verify_certificate_chain_unittest/intermediate-and-target-wrong-signature/main.test", +- "pki/testdata/verify_certificate_chain_unittest/intermediate-basic-constraints-ca-false/chain.pem", +- "pki/testdata/verify_certificate_chain_unittest/intermediate-basic-constraints-ca-false/main.test", +- "pki/testdata/verify_certificate_chain_unittest/intermediate-basic-constraints-not-critical/chain.pem", +- "pki/testdata/verify_certificate_chain_unittest/intermediate-basic-constraints-not-critical/main.test", +- "pki/testdata/verify_certificate_chain_unittest/intermediate-eku-any-and-clientauth/any.test", +- "pki/testdata/verify_certificate_chain_unittest/intermediate-eku-any-and-clientauth/chain.pem", +- "pki/testdata/verify_certificate_chain_unittest/intermediate-eku-any-and-clientauth/clientauth-strict-leaf.test", +- "pki/testdata/verify_certificate_chain_unittest/intermediate-eku-any-and-clientauth/clientauth-strict.test", +- "pki/testdata/verify_certificate_chain_unittest/intermediate-eku-any-and-clientauth/clientauth.test", +- "pki/testdata/verify_certificate_chain_unittest/intermediate-eku-any-and-clientauth/serverauth-strict-leaf.test", +- "pki/testdata/verify_certificate_chain_unittest/intermediate-eku-any-and-clientauth/serverauth-strict.test", +- "pki/testdata/verify_certificate_chain_unittest/intermediate-eku-any-and-clientauth/serverauth.test", +- "pki/testdata/verify_certificate_chain_unittest/intermediate-eku-clientauth/any.test", +- "pki/testdata/verify_certificate_chain_unittest/intermediate-eku-clientauth/chain.pem", +- "pki/testdata/verify_certificate_chain_unittest/intermediate-eku-clientauth/clientauth-strict-leaf.test", +- "pki/testdata/verify_certificate_chain_unittest/intermediate-eku-clientauth/clientauth-strict.test", +- "pki/testdata/verify_certificate_chain_unittest/intermediate-eku-clientauth/clientauth.test", +- "pki/testdata/verify_certificate_chain_unittest/intermediate-eku-clientauth/serverauth-strict-leaf.test", +- "pki/testdata/verify_certificate_chain_unittest/intermediate-eku-clientauth/serverauth-strict.test", +- "pki/testdata/verify_certificate_chain_unittest/intermediate-eku-clientauth/serverauth.test", +- "pki/testdata/verify_certificate_chain_unittest/intermediate-eku-server-gated-crypto/sha1-chain.pem", +- "pki/testdata/verify_certificate_chain_unittest/intermediate-eku-server-gated-crypto/sha1-eku-any.test", +- "pki/testdata/verify_certificate_chain_unittest/intermediate-eku-server-gated-crypto/sha1-eku-clientAuth-strict.test", +- "pki/testdata/verify_certificate_chain_unittest/intermediate-eku-server-gated-crypto/sha1-eku-clientAuth.test", +- "pki/testdata/verify_certificate_chain_unittest/intermediate-eku-server-gated-crypto/sha1-eku-serverAuth-strict.test", +- "pki/testdata/verify_certificate_chain_unittest/intermediate-eku-server-gated-crypto/sha1-eku-serverAuth.test", +- "pki/testdata/verify_certificate_chain_unittest/intermediate-eku-server-gated-crypto/sha256-chain.pem", +- "pki/testdata/verify_certificate_chain_unittest/intermediate-eku-server-gated-crypto/sha256-eku-any.test", +- "pki/testdata/verify_certificate_chain_unittest/intermediate-eku-server-gated-crypto/sha256-eku-clientAuth-strict.test", +- "pki/testdata/verify_certificate_chain_unittest/intermediate-eku-server-gated-crypto/sha256-eku-clientAuth.test", +- "pki/testdata/verify_certificate_chain_unittest/intermediate-eku-server-gated-crypto/sha256-eku-serverAuth-strict.test", +- "pki/testdata/verify_certificate_chain_unittest/intermediate-eku-server-gated-crypto/sha256-eku-serverAuth.test", +- "pki/testdata/verify_certificate_chain_unittest/intermediate-invalid-spki/chain.pem", +- "pki/testdata/verify_certificate_chain_unittest/intermediate-invalid-spki/main.test", +- "pki/testdata/verify_certificate_chain_unittest/intermediate-lacks-basic-constraints/chain.pem", +- "pki/testdata/verify_certificate_chain_unittest/intermediate-lacks-basic-constraints/main.test", +- "pki/testdata/verify_certificate_chain_unittest/intermediate-lacks-signing-key-usage/chain.pem", +- "pki/testdata/verify_certificate_chain_unittest/intermediate-lacks-signing-key-usage/main.test", +- "pki/testdata/verify_certificate_chain_unittest/intermediate-signed-with-sha1/chain.pem", +- "pki/testdata/verify_certificate_chain_unittest/intermediate-signed-with-sha1/main.test", +- "pki/testdata/verify_certificate_chain_unittest/intermediate-unknown-critical-extension/chain.pem", +- "pki/testdata/verify_certificate_chain_unittest/intermediate-unknown-critical-extension/main.test", +- "pki/testdata/verify_certificate_chain_unittest/intermediate-unknown-non-critical-extension/chain.pem", +- "pki/testdata/verify_certificate_chain_unittest/intermediate-unknown-non-critical-extension/main.test", +- "pki/testdata/verify_certificate_chain_unittest/intermediate-wrong-signature-no-authority-key-identifier/chain.pem", +- "pki/testdata/verify_certificate_chain_unittest/intermediate-wrong-signature-no-authority-key-identifier/main.test", +- "pki/testdata/verify_certificate_chain_unittest/issuer-and-subject-not-byte-for-byte-equal/anchor.pem", +- "pki/testdata/verify_certificate_chain_unittest/issuer-and-subject-not-byte-for-byte-equal/anchor.test", +- "pki/testdata/verify_certificate_chain_unittest/issuer-and-subject-not-byte-for-byte-equal/target.pem", +- "pki/testdata/verify_certificate_chain_unittest/issuer-and-subject-not-byte-for-byte-equal/target.test", +- "pki/testdata/verify_certificate_chain_unittest/key-rollover/longrolloverchain.pem", +- "pki/testdata/verify_certificate_chain_unittest/key-rollover/longrolloverchain.test", +- "pki/testdata/verify_certificate_chain_unittest/key-rollover/newchain.pem", +- "pki/testdata/verify_certificate_chain_unittest/key-rollover/newchain.test", +- "pki/testdata/verify_certificate_chain_unittest/key-rollover/oldchain.pem", +- "pki/testdata/verify_certificate_chain_unittest/key-rollover/oldchain.test", +- "pki/testdata/verify_certificate_chain_unittest/key-rollover/rolloverchain.pem", +- "pki/testdata/verify_certificate_chain_unittest/key-rollover/rolloverchain.test", +- "pki/testdata/verify_certificate_chain_unittest/many-names/ok-all-types.pem", +- "pki/testdata/verify_certificate_chain_unittest/many-names/ok-all-types.test", +- "pki/testdata/verify_certificate_chain_unittest/many-names/toomany-all-types.pem", +- "pki/testdata/verify_certificate_chain_unittest/many-names/toomany-all-types.test", +- "pki/testdata/verify_certificate_chain_unittest/many-names/toomany-dirnames-excluded.pem", +- "pki/testdata/verify_certificate_chain_unittest/many-names/toomany-dirnames-excluded.test", +- "pki/testdata/verify_certificate_chain_unittest/many-names/toomany-dirnames-permitted.pem", +- "pki/testdata/verify_certificate_chain_unittest/many-names/toomany-dirnames-permitted.test", +- "pki/testdata/verify_certificate_chain_unittest/many-names/toomany-dns-excluded.pem", +- "pki/testdata/verify_certificate_chain_unittest/many-names/toomany-dns-excluded.test", +- "pki/testdata/verify_certificate_chain_unittest/many-names/toomany-dns-permitted.pem", +- "pki/testdata/verify_certificate_chain_unittest/many-names/toomany-dns-permitted.test", +- "pki/testdata/verify_certificate_chain_unittest/many-names/toomany-ips-excluded.pem", +- "pki/testdata/verify_certificate_chain_unittest/many-names/toomany-ips-excluded.test", +- "pki/testdata/verify_certificate_chain_unittest/many-names/toomany-ips-permitted.pem", +- "pki/testdata/verify_certificate_chain_unittest/many-names/toomany-ips-permitted.test", +- "pki/testdata/verify_certificate_chain_unittest/non-self-signed-root/chain.pem", +- "pki/testdata/verify_certificate_chain_unittest/non-self-signed-root/main.test", +- "pki/testdata/verify_certificate_chain_unittest/non-self-signed-root/ta-with-constraints.test", +- "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.1.2.txt", +- "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.1.3.txt", +- "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.1.4.txt", +- "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.1.5.txt", +- "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.1.6.txt", +- "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.10.1.2.txt", +- "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.10.1.3.txt", +- "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.10.10.txt", +- "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.10.13.txt", +- "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.10.2.txt", +- "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.10.3.txt", +- "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.10.4.txt", +- "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.10.5.txt", +- "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.10.6.txt", +- "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.10.7.txt", +- "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.10.8.txt", +- "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.11.1.txt", +- "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.11.10.txt", +- "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.11.11.txt", +- "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.11.3.txt", +- "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.11.5.txt", +- "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.11.6.txt", +- "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.11.8.txt", +- "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.11.9.txt", +- "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.12.1.txt", +- "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.12.10.txt", +- "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.12.3.txt", +- "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.12.4.txt", +- "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.12.5.txt", +- "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.12.6.txt", +- "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.12.8.txt", +- "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.13.10.txt", +- "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.13.12.txt", +- "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.13.13.txt", +- "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.13.15.txt", +- "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.13.16.txt", +- "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.13.17.txt", +- "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.13.2.txt", +- "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.13.20.txt", +- "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.13.21.txt", +- "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.13.22.txt", +- "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.13.23.txt", +- "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.13.24.txt", +- "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.13.25.txt", +- "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.13.26.txt", +- "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.13.27.txt", +- "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.13.28.txt", +- "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.13.29.txt", +- "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.13.3.txt", +- "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.13.31.txt", +- "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.13.33.txt", +- "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.13.34.txt", +- "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.13.35.txt", +- "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.13.36.txt", +- "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.13.37.txt", +- "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.13.38.txt", +- "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.13.7.txt", +- "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.13.8.txt", +- "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.13.9.txt", +- "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.16.2.txt", +- "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.2.1.txt", +- "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.2.2.txt", +- "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.2.5.txt", +- "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.2.6.txt", +- "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.2.7.txt", +- "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.3.1.txt", +- "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.3.2.txt", +- "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.6.1.txt", +- "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.6.10.txt", +- "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.6.11.txt", +- "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.6.12.txt", +- "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.6.16.txt", +- "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.6.2.txt", +- "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.6.3.txt", +- "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.6.5.txt", +- "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.6.6.txt", +- "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.6.9.txt", +- "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.7.1.txt", +- "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.7.2.txt", +- "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.8.1.txt", +- "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.8.12.txt", +- "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.8.14.txt", +- "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.8.2.txt", +- "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.8.3.txt", +- "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.8.4.txt", +- "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.8.5.txt", +- "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.8.6.txt", +- "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.8.7.txt", +- "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.8.8.txt", +- "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.8.9.txt", +- "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.9.3.txt", +- "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.9.5.txt", +- "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.9.7.txt", +- "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.9.8.txt", +- "pki/testdata/verify_certificate_chain_unittest/policies-inhibit-anypolicy-by-root-fail/chain.pem", +- "pki/testdata/verify_certificate_chain_unittest/policies-inhibit-anypolicy-by-root-fail/main.test", +- "pki/testdata/verify_certificate_chain_unittest/policies-inhibit-anypolicy-by-root-fail/ta-with-constraints.test", +- "pki/testdata/verify_certificate_chain_unittest/policies-inhibit-anypolicy-by-root-ok/chain.pem", +- "pki/testdata/verify_certificate_chain_unittest/policies-inhibit-anypolicy-by-root-ok/main.test", +- "pki/testdata/verify_certificate_chain_unittest/policies-inhibit-anypolicy-by-root-ok/ta-with-constraints.test", +- "pki/testdata/verify_certificate_chain_unittest/policies-inhibit-mapping-by-root-fail/chain.pem", +- "pki/testdata/verify_certificate_chain_unittest/policies-inhibit-mapping-by-root-fail/main.test", +- "pki/testdata/verify_certificate_chain_unittest/policies-inhibit-mapping-by-root-fail/ta-with-constraints.test", +- "pki/testdata/verify_certificate_chain_unittest/policies-inhibit-mapping-by-root-ok/chain.pem", +- "pki/testdata/verify_certificate_chain_unittest/policies-inhibit-mapping-by-root-ok/main.test", +- "pki/testdata/verify_certificate_chain_unittest/policies-inhibit-mapping-by-root-ok/ta-with-constraints.test", +- "pki/testdata/verify_certificate_chain_unittest/policies-ok/chain.pem", +- "pki/testdata/verify_certificate_chain_unittest/policies-ok/main.test", +- "pki/testdata/verify_certificate_chain_unittest/policies-ok/ta-with-constraints.test", +- "pki/testdata/verify_certificate_chain_unittest/policies-on-root-ok/chain.pem", +- "pki/testdata/verify_certificate_chain_unittest/policies-on-root-ok/main.test", +- "pki/testdata/verify_certificate_chain_unittest/policies-on-root-ok/ta-with-constraints.test", +- "pki/testdata/verify_certificate_chain_unittest/policies-on-root-wrong/chain.pem", +- "pki/testdata/verify_certificate_chain_unittest/policies-on-root-wrong/main.test", +- "pki/testdata/verify_certificate_chain_unittest/policies-on-root-wrong/ta-with-constraints.test", +- "pki/testdata/verify_certificate_chain_unittest/policies-required-by-root-fail/chain.pem", +- "pki/testdata/verify_certificate_chain_unittest/policies-required-by-root-fail/main.test", +- "pki/testdata/verify_certificate_chain_unittest/policies-required-by-root-fail/ta-with-constraints.test", +- "pki/testdata/verify_certificate_chain_unittest/policies-required-by-root-ok/chain.pem", +- "pki/testdata/verify_certificate_chain_unittest/policies-required-by-root-ok/main.test", +- "pki/testdata/verify_certificate_chain_unittest/policies-required-by-root-ok/ta-with-constraints.test", +- "pki/testdata/verify_certificate_chain_unittest/policy-mappings-on-root-fail/chain.pem", +- "pki/testdata/verify_certificate_chain_unittest/policy-mappings-on-root-fail/main.test", +- "pki/testdata/verify_certificate_chain_unittest/policy-mappings-on-root-fail/ta-with-constraints.test", +- "pki/testdata/verify_certificate_chain_unittest/policy-mappings-on-root-ok/chain.pem", +- "pki/testdata/verify_certificate_chain_unittest/policy-mappings-on-root-ok/main.test", +- "pki/testdata/verify_certificate_chain_unittest/policy-mappings-on-root-ok/ta-with-constraints.test", +- "pki/testdata/verify_certificate_chain_unittest/root-basic-constraints-ca-false/chain.pem", +- "pki/testdata/verify_certificate_chain_unittest/root-basic-constraints-ca-false/main.test", +- "pki/testdata/verify_certificate_chain_unittest/root-basic-constraints-ca-false/ta-with-constraints.test", +- "pki/testdata/verify_certificate_chain_unittest/root-eku-clientauth/chain.pem", +- "pki/testdata/verify_certificate_chain_unittest/root-eku-clientauth/serverauth-strict.test", +- "pki/testdata/verify_certificate_chain_unittest/root-eku-clientauth/serverauth-ta-with-constraints-strict.test", +- "pki/testdata/verify_certificate_chain_unittest/root-eku-clientauth/serverauth-ta-with-constraints.test", +- "pki/testdata/verify_certificate_chain_unittest/root-eku-clientauth/serverauth-ta-with-expiration-and-constraints.test", +- "pki/testdata/verify_certificate_chain_unittest/root-eku-clientauth/serverauth-ta-with-expiration.test", +- "pki/testdata/verify_certificate_chain_unittest/root-eku-clientauth/serverauth.test", +- "pki/testdata/verify_certificate_chain_unittest/root-lacks-basic-constraints/chain.pem", +- "pki/testdata/verify_certificate_chain_unittest/root-lacks-basic-constraints/main.test", +- "pki/testdata/verify_certificate_chain_unittest/root-lacks-basic-constraints/ta-with-constraints-require-basic-constraints.test", +- "pki/testdata/verify_certificate_chain_unittest/root-lacks-basic-constraints/ta-with-constraints.test", +- "pki/testdata/verify_certificate_chain_unittest/root-lacks-basic-constraints/ta-with-require-basic-constraints.test", +- "pki/testdata/verify_certificate_chain_unittest/root-lacks-keycertsign-key-usage/chain.pem", +- "pki/testdata/verify_certificate_chain_unittest/root-lacks-keycertsign-key-usage/main.test", +- "pki/testdata/verify_certificate_chain_unittest/root-lacks-keycertsign-key-usage/ta-with-constraints.test", +- "pki/testdata/verify_certificate_chain_unittest/target-and-intermediate/chain.pem", +- "pki/testdata/verify_certificate_chain_unittest/target-and-intermediate/distrusted-root-expired.test", +- "pki/testdata/verify_certificate_chain_unittest/target-and-intermediate/distrusted-root.test", +- "pki/testdata/verify_certificate_chain_unittest/target-and-intermediate/main.test", +- "pki/testdata/verify_certificate_chain_unittest/target-and-intermediate/ta-with-constraints.test", +- "pki/testdata/verify_certificate_chain_unittest/target-and-intermediate/ta-with-expiration.test", +- "pki/testdata/verify_certificate_chain_unittest/target-and-intermediate/trusted_leaf-and-trust_anchor.test", +- "pki/testdata/verify_certificate_chain_unittest/target-and-intermediate/trusted_leaf-root.test", +- "pki/testdata/verify_certificate_chain_unittest/target-and-intermediate/unspecified-trust-root.test", +- "pki/testdata/verify_certificate_chain_unittest/target-eku-any/any.test", +- "pki/testdata/verify_certificate_chain_unittest/target-eku-any/chain.pem", +- "pki/testdata/verify_certificate_chain_unittest/target-eku-any/clientauth-strict-leaf.test", +- "pki/testdata/verify_certificate_chain_unittest/target-eku-any/clientauth-strict.test", +- "pki/testdata/verify_certificate_chain_unittest/target-eku-any/clientauth.test", +- "pki/testdata/verify_certificate_chain_unittest/target-eku-any/serverauth-strict-leaf.test", +- "pki/testdata/verify_certificate_chain_unittest/target-eku-any/serverauth-strict.test", +- "pki/testdata/verify_certificate_chain_unittest/target-eku-any/serverauth.test", +- "pki/testdata/verify_certificate_chain_unittest/target-eku-clientauth/any.test", +- "pki/testdata/verify_certificate_chain_unittest/target-eku-clientauth/chain.pem", +- "pki/testdata/verify_certificate_chain_unittest/target-eku-clientauth/clientauth-strict.test", +- "pki/testdata/verify_certificate_chain_unittest/target-eku-clientauth/clientauth.test", +- "pki/testdata/verify_certificate_chain_unittest/target-eku-clientauth/serverauth-strict.test", +- "pki/testdata/verify_certificate_chain_unittest/target-eku-clientauth/serverauth.test", +- "pki/testdata/verify_certificate_chain_unittest/target-eku-many/any.test", +- "pki/testdata/verify_certificate_chain_unittest/target-eku-many/chain.pem", +- "pki/testdata/verify_certificate_chain_unittest/target-eku-many/clientauth-strict-leaf.test", +- "pki/testdata/verify_certificate_chain_unittest/target-eku-many/clientauth-strict.test", +- "pki/testdata/verify_certificate_chain_unittest/target-eku-many/clientauth.test", +- "pki/testdata/verify_certificate_chain_unittest/target-eku-many/serverauth-strict-leaf.test", +- "pki/testdata/verify_certificate_chain_unittest/target-eku-many/serverauth-strict.test", +- "pki/testdata/verify_certificate_chain_unittest/target-eku-many/serverauth.test", +- "pki/testdata/verify_certificate_chain_unittest/target-eku-none/any.test", +- "pki/testdata/verify_certificate_chain_unittest/target-eku-none/chain.pem", +- "pki/testdata/verify_certificate_chain_unittest/target-eku-none/clientauth-strict-leaf.test", +- "pki/testdata/verify_certificate_chain_unittest/target-eku-none/clientauth-strict.test", +- "pki/testdata/verify_certificate_chain_unittest/target-eku-none/clientauth.test", +- "pki/testdata/verify_certificate_chain_unittest/target-eku-none/serverauth-strict.test", +- "pki/testdata/verify_certificate_chain_unittest/target-eku-none/serverauth.test", +- "pki/testdata/verify_certificate_chain_unittest/target-has-512bit-rsa-key/chain.pem", +- "pki/testdata/verify_certificate_chain_unittest/target-has-512bit-rsa-key/main.test", +- "pki/testdata/verify_certificate_chain_unittest/target-has-ca-basic-constraints/chain.pem", +- "pki/testdata/verify_certificate_chain_unittest/target-has-ca-basic-constraints/main.test", +- "pki/testdata/verify_certificate_chain_unittest/target-has-ca-basic-constraints/strict.test", +- "pki/testdata/verify_certificate_chain_unittest/target-has-ca-basic-constraints/target_only-trusted_leaf-strict.test", +- "pki/testdata/verify_certificate_chain_unittest/target-has-ca-basic-constraints/target_only-trusted_leaf.test", +- "pki/testdata/verify_certificate_chain_unittest/target-has-ca-basic-constraints/target_only.pem", +- "pki/testdata/verify_certificate_chain_unittest/target-has-keycertsign-but-not-ca/chain.pem", +- "pki/testdata/verify_certificate_chain_unittest/target-has-keycertsign-but-not-ca/main.test", +- "pki/testdata/verify_certificate_chain_unittest/target-has-pathlen-but-not-ca/chain.pem", +- "pki/testdata/verify_certificate_chain_unittest/target-has-pathlen-but-not-ca/main.test", +- "pki/testdata/verify_certificate_chain_unittest/target-msapplicationpolicies-and-eku/chain.pem", +- "pki/testdata/verify_certificate_chain_unittest/target-msapplicationpolicies-and-eku/main.test", +- "pki/testdata/verify_certificate_chain_unittest/target-msapplicationpolicies-no-eku/chain.pem", +- "pki/testdata/verify_certificate_chain_unittest/target-msapplicationpolicies-no-eku/main.test", +- "pki/testdata/verify_certificate_chain_unittest/target-not-end-entity/chain.pem", +- "pki/testdata/verify_certificate_chain_unittest/target-not-end-entity/main.test", +- "pki/testdata/verify_certificate_chain_unittest/target-not-end-entity/strict-leaf.test", +- "pki/testdata/verify_certificate_chain_unittest/target-not-end-entity/strict.test", +- "pki/testdata/verify_certificate_chain_unittest/target-only/chain.pem", +- "pki/testdata/verify_certificate_chain_unittest/target-only/trusted_anchor.test", +- "pki/testdata/verify_certificate_chain_unittest/target-only/trusted_leaf-and-trust_anchor.test", +- "pki/testdata/verify_certificate_chain_unittest/target-only/trusted_leaf-not_after.test", +- "pki/testdata/verify_certificate_chain_unittest/target-only/trusted_leaf-wrong_eku.test", +- "pki/testdata/verify_certificate_chain_unittest/target-only/trusted_leaf.test", +- "pki/testdata/verify_certificate_chain_unittest/target-only/trusted_leaf_require_self_signed.test", +- "pki/testdata/verify_certificate_chain_unittest/target-selfissued/chain.pem", +- "pki/testdata/verify_certificate_chain_unittest/target-selfissued/trusted_anchor.test", +- "pki/testdata/verify_certificate_chain_unittest/target-selfissued/trusted_leaf-and-trust_anchor.test", +- "pki/testdata/verify_certificate_chain_unittest/target-selfissued/trusted_leaf.test", +- "pki/testdata/verify_certificate_chain_unittest/target-selfissued/trusted_leaf_require_self_signed.test", +- "pki/testdata/verify_certificate_chain_unittest/target-selfsigned/chain.pem", +- "pki/testdata/verify_certificate_chain_unittest/target-selfsigned/trusted_leaf-and-trust_anchor.test", +- "pki/testdata/verify_certificate_chain_unittest/target-selfsigned/trusted_leaf-not_after.test", +- "pki/testdata/verify_certificate_chain_unittest/target-selfsigned/trusted_leaf-wrong_eku.test", +- "pki/testdata/verify_certificate_chain_unittest/target-selfsigned/trusted_leaf.test", +- "pki/testdata/verify_certificate_chain_unittest/target-selfsigned/trusted_leaf_require_self_signed.test", +- "pki/testdata/verify_certificate_chain_unittest/target-serverauth-various-keyusages/ec-decipherOnly.pem", +- "pki/testdata/verify_certificate_chain_unittest/target-serverauth-various-keyusages/ec-decipherOnly.test", +- "pki/testdata/verify_certificate_chain_unittest/target-serverauth-various-keyusages/ec-digitalSignature.pem", +- "pki/testdata/verify_certificate_chain_unittest/target-serverauth-various-keyusages/ec-digitalSignature.test", +- "pki/testdata/verify_certificate_chain_unittest/target-serverauth-various-keyusages/ec-keyAgreement.pem", +- "pki/testdata/verify_certificate_chain_unittest/target-serverauth-various-keyusages/ec-keyAgreement.test", +- "pki/testdata/verify_certificate_chain_unittest/target-serverauth-various-keyusages/ec-keyEncipherment.pem", +- "pki/testdata/verify_certificate_chain_unittest/target-serverauth-various-keyusages/ec-keyEncipherment.test", +- "pki/testdata/verify_certificate_chain_unittest/target-serverauth-various-keyusages/rsa-decipherOnly.pem", +- "pki/testdata/verify_certificate_chain_unittest/target-serverauth-various-keyusages/rsa-decipherOnly.test", +- "pki/testdata/verify_certificate_chain_unittest/target-serverauth-various-keyusages/rsa-digitalSignature.pem", +- "pki/testdata/verify_certificate_chain_unittest/target-serverauth-various-keyusages/rsa-digitalSignature.test", +- "pki/testdata/verify_certificate_chain_unittest/target-serverauth-various-keyusages/rsa-keyAgreement.pem", +- "pki/testdata/verify_certificate_chain_unittest/target-serverauth-various-keyusages/rsa-keyAgreement.test", +- "pki/testdata/verify_certificate_chain_unittest/target-serverauth-various-keyusages/rsa-keyEncipherment.pem", +- "pki/testdata/verify_certificate_chain_unittest/target-serverauth-various-keyusages/rsa-keyEncipherment.test", +- "pki/testdata/verify_certificate_chain_unittest/target-signed-by-512bit-rsa/chain.pem", +- "pki/testdata/verify_certificate_chain_unittest/target-signed-by-512bit-rsa/main.test", +- "pki/testdata/verify_certificate_chain_unittest/target-signed-using-ecdsa/chain.pem", +- "pki/testdata/verify_certificate_chain_unittest/target-signed-using-ecdsa/main.test", +- "pki/testdata/verify_certificate_chain_unittest/target-signed-with-sha1/chain.pem", +- "pki/testdata/verify_certificate_chain_unittest/target-signed-with-sha1/main.test", +- "pki/testdata/verify_certificate_chain_unittest/target-unknown-critical-extension/chain.pem", +- "pki/testdata/verify_certificate_chain_unittest/target-unknown-critical-extension/main.test", +- "pki/testdata/verify_certificate_chain_unittest/target-unknown-critical-extension/target_only-trusted_leaf.test", +- "pki/testdata/verify_certificate_chain_unittest/target-unknown-critical-extension/target_only.pem", +- "pki/testdata/verify_certificate_chain_unittest/target-wrong-signature-no-authority-key-identifier/chain.pem", +- "pki/testdata/verify_certificate_chain_unittest/target-wrong-signature-no-authority-key-identifier/main.test", +- "pki/testdata/verify_certificate_chain_unittest/target-wrong-signature/chain.pem", +- "pki/testdata/verify_certificate_chain_unittest/target-wrong-signature/main.test", +- "pki/testdata/verify_certificate_chain_unittest/unknown-critical-policy-qualifier/chain.pem", +- "pki/testdata/verify_certificate_chain_unittest/unknown-critical-policy-qualifier/main.test", +- "pki/testdata/verify_certificate_chain_unittest/unknown-non-critical-policy-qualifier/chain.pem", +- "pki/testdata/verify_certificate_chain_unittest/unknown-non-critical-policy-qualifier/main.test", +- "pki/testdata/verify_certificate_chain_unittest/violates-basic-constraints-pathlen-0/chain.pem", +- "pki/testdata/verify_certificate_chain_unittest/violates-basic-constraints-pathlen-0/main.test", +- "pki/testdata/verify_certificate_chain_unittest/violates-pathlen-1-from-root/chain.pem", +- "pki/testdata/verify_certificate_chain_unittest/violates-pathlen-1-from-root/main.test", +- "pki/testdata/verify_certificate_chain_unittest/violates-pathlen-1-from-root/ta-with-constraints.test", +- "pki/testdata/verify_name_match_unittest/names/ascii-BMPSTRING-case_swap-dupe_attr.pem", +- "pki/testdata/verify_name_match_unittest/names/ascii-BMPSTRING-case_swap-extra_attr.pem", +- "pki/testdata/verify_name_match_unittest/names/ascii-BMPSTRING-case_swap-extra_rdn.pem", +- "pki/testdata/verify_name_match_unittest/names/ascii-BMPSTRING-case_swap.pem", +- "pki/testdata/verify_name_match_unittest/names/ascii-BMPSTRING-extra_whitespace-dupe_attr.pem", +- "pki/testdata/verify_name_match_unittest/names/ascii-BMPSTRING-extra_whitespace-extra_attr.pem", +- "pki/testdata/verify_name_match_unittest/names/ascii-BMPSTRING-extra_whitespace-extra_rdn.pem", +- "pki/testdata/verify_name_match_unittest/names/ascii-BMPSTRING-extra_whitespace.pem", +- "pki/testdata/verify_name_match_unittest/names/ascii-BMPSTRING-unmangled-dupe_attr.pem", +- "pki/testdata/verify_name_match_unittest/names/ascii-BMPSTRING-unmangled-extra_attr.pem", +- "pki/testdata/verify_name_match_unittest/names/ascii-BMPSTRING-unmangled-extra_rdn.pem", +- "pki/testdata/verify_name_match_unittest/names/ascii-BMPSTRING-unmangled.pem", +- "pki/testdata/verify_name_match_unittest/names/ascii-PRINTABLESTRING-case_swap-dupe_attr.pem", +- "pki/testdata/verify_name_match_unittest/names/ascii-PRINTABLESTRING-case_swap-extra_attr.pem", +- "pki/testdata/verify_name_match_unittest/names/ascii-PRINTABLESTRING-case_swap-extra_rdn.pem", +- "pki/testdata/verify_name_match_unittest/names/ascii-PRINTABLESTRING-case_swap.pem", +- "pki/testdata/verify_name_match_unittest/names/ascii-PRINTABLESTRING-extra_whitespace-dupe_attr.pem", +- "pki/testdata/verify_name_match_unittest/names/ascii-PRINTABLESTRING-extra_whitespace-extra_attr.pem", +- "pki/testdata/verify_name_match_unittest/names/ascii-PRINTABLESTRING-extra_whitespace-extra_rdn.pem", +- "pki/testdata/verify_name_match_unittest/names/ascii-PRINTABLESTRING-extra_whitespace.pem", +- "pki/testdata/verify_name_match_unittest/names/ascii-PRINTABLESTRING-rdn_sorting_1.pem", +- "pki/testdata/verify_name_match_unittest/names/ascii-PRINTABLESTRING-rdn_sorting_2.pem", +- "pki/testdata/verify_name_match_unittest/names/ascii-PRINTABLESTRING-unmangled-dupe_attr.pem", +- "pki/testdata/verify_name_match_unittest/names/ascii-PRINTABLESTRING-unmangled-extra_attr.pem", +- "pki/testdata/verify_name_match_unittest/names/ascii-PRINTABLESTRING-unmangled-extra_rdn.pem", +- "pki/testdata/verify_name_match_unittest/names/ascii-PRINTABLESTRING-unmangled.pem", +- "pki/testdata/verify_name_match_unittest/names/ascii-T61STRING-case_swap-dupe_attr.pem", +- "pki/testdata/verify_name_match_unittest/names/ascii-T61STRING-case_swap-extra_attr.pem", +- "pki/testdata/verify_name_match_unittest/names/ascii-T61STRING-case_swap-extra_rdn.pem", +- "pki/testdata/verify_name_match_unittest/names/ascii-T61STRING-case_swap.pem", +- "pki/testdata/verify_name_match_unittest/names/ascii-T61STRING-extra_whitespace-dupe_attr.pem", +- "pki/testdata/verify_name_match_unittest/names/ascii-T61STRING-extra_whitespace-extra_attr.pem", +- "pki/testdata/verify_name_match_unittest/names/ascii-T61STRING-extra_whitespace-extra_rdn.pem", +- "pki/testdata/verify_name_match_unittest/names/ascii-T61STRING-extra_whitespace.pem", +- "pki/testdata/verify_name_match_unittest/names/ascii-T61STRING-unmangled-dupe_attr.pem", +- "pki/testdata/verify_name_match_unittest/names/ascii-T61STRING-unmangled-extra_attr.pem", +- "pki/testdata/verify_name_match_unittest/names/ascii-T61STRING-unmangled-extra_rdn.pem", +- "pki/testdata/verify_name_match_unittest/names/ascii-T61STRING-unmangled.pem", +- "pki/testdata/verify_name_match_unittest/names/ascii-UNIVERSALSTRING-case_swap-dupe_attr.pem", +- "pki/testdata/verify_name_match_unittest/names/ascii-UNIVERSALSTRING-case_swap-extra_attr.pem", +- "pki/testdata/verify_name_match_unittest/names/ascii-UNIVERSALSTRING-case_swap-extra_rdn.pem", +- "pki/testdata/verify_name_match_unittest/names/ascii-UNIVERSALSTRING-case_swap.pem", +- "pki/testdata/verify_name_match_unittest/names/ascii-UNIVERSALSTRING-extra_whitespace-dupe_attr.pem", +- "pki/testdata/verify_name_match_unittest/names/ascii-UNIVERSALSTRING-extra_whitespace-extra_attr.pem", +- "pki/testdata/verify_name_match_unittest/names/ascii-UNIVERSALSTRING-extra_whitespace-extra_rdn.pem", +- "pki/testdata/verify_name_match_unittest/names/ascii-UNIVERSALSTRING-extra_whitespace.pem", +- "pki/testdata/verify_name_match_unittest/names/ascii-UNIVERSALSTRING-unmangled-dupe_attr.pem", +- "pki/testdata/verify_name_match_unittest/names/ascii-UNIVERSALSTRING-unmangled-extra_attr.pem", +- "pki/testdata/verify_name_match_unittest/names/ascii-UNIVERSALSTRING-unmangled-extra_rdn.pem", +- "pki/testdata/verify_name_match_unittest/names/ascii-UNIVERSALSTRING-unmangled.pem", +- "pki/testdata/verify_name_match_unittest/names/ascii-UTF8-case_swap-dupe_attr.pem", +- "pki/testdata/verify_name_match_unittest/names/ascii-UTF8-case_swap-extra_attr.pem", +- "pki/testdata/verify_name_match_unittest/names/ascii-UTF8-case_swap-extra_rdn.pem", +- "pki/testdata/verify_name_match_unittest/names/ascii-UTF8-case_swap.pem", +- "pki/testdata/verify_name_match_unittest/names/ascii-UTF8-extra_whitespace-dupe_attr.pem", +- "pki/testdata/verify_name_match_unittest/names/ascii-UTF8-extra_whitespace-extra_attr.pem", +- "pki/testdata/verify_name_match_unittest/names/ascii-UTF8-extra_whitespace-extra_rdn.pem", +- "pki/testdata/verify_name_match_unittest/names/ascii-UTF8-extra_whitespace.pem", +- "pki/testdata/verify_name_match_unittest/names/ascii-UTF8-unmangled-dupe_attr.pem", +- "pki/testdata/verify_name_match_unittest/names/ascii-UTF8-unmangled-extra_attr.pem", +- "pki/testdata/verify_name_match_unittest/names/ascii-UTF8-unmangled-extra_rdn.pem", +- "pki/testdata/verify_name_match_unittest/names/ascii-UTF8-unmangled.pem", +- "pki/testdata/verify_name_match_unittest/names/ascii-mixed-rdn_dupetype_sorting_1.pem", +- "pki/testdata/verify_name_match_unittest/names/ascii-mixed-rdn_dupetype_sorting_2.pem", +- "pki/testdata/verify_name_match_unittest/names/custom-custom-normalized.pem", +- "pki/testdata/verify_name_match_unittest/names/invalid-AttributeTypeAndValue-badAttributeType.pem", +- "pki/testdata/verify_name_match_unittest/names/invalid-AttributeTypeAndValue-empty.pem", +- "pki/testdata/verify_name_match_unittest/names/invalid-AttributeTypeAndValue-extradata.pem", +- "pki/testdata/verify_name_match_unittest/names/invalid-AttributeTypeAndValue-onlyOneElement.pem", +- "pki/testdata/verify_name_match_unittest/names/invalid-AttributeTypeAndValue-setNotSequence.pem", +- "pki/testdata/verify_name_match_unittest/names/invalid-Name-setInsteadOfSequence.pem", +- "pki/testdata/verify_name_match_unittest/names/invalid-RDN-empty.pem", +- "pki/testdata/verify_name_match_unittest/names/invalid-RDN-sequenceInsteadOfSet.pem", +- "pki/testdata/verify_name_match_unittest/names/unicode-mixed-normalized.pem", +- "pki/testdata/verify_name_match_unittest/names/unicode-mixed-unnormalized.pem", +- "pki/testdata/verify_name_match_unittest/names/unicode_bmp-BMPSTRING-unmangled.pem", +- "pki/testdata/verify_name_match_unittest/names/unicode_bmp-UNIVERSALSTRING-unmangled.pem", +- "pki/testdata/verify_name_match_unittest/names/unicode_bmp-UTF8-unmangled.pem", +- "pki/testdata/verify_name_match_unittest/names/unicode_supplementary-UNIVERSALSTRING-unmangled.pem", +- "pki/testdata/verify_name_match_unittest/names/unicode_supplementary-UTF8-unmangled.pem", +- "pki/testdata/verify_name_match_unittest/names/valid-Name-empty.pem", +- "pki/testdata/verify_name_match_unittest/names/valid-minimal.pem", +- "pki/testdata/verify_signed_data_unittest/ecdsa-prime256v1-sha512-spki-params-null.pem", +- "pki/testdata/verify_signed_data_unittest/ecdsa-prime256v1-sha512-unused-bits-signature.pem", +- "pki/testdata/verify_signed_data_unittest/ecdsa-prime256v1-sha512-using-ecdh-key.pem", +- "pki/testdata/verify_signed_data_unittest/ecdsa-prime256v1-sha512-using-ecmqv-key.pem", +- "pki/testdata/verify_signed_data_unittest/ecdsa-prime256v1-sha512-using-rsa-algorithm.pem", +- "pki/testdata/verify_signed_data_unittest/ecdsa-prime256v1-sha512-wrong-signature-format.pem", +- "pki/testdata/verify_signed_data_unittest/ecdsa-prime256v1-sha512.pem", +- "pki/testdata/verify_signed_data_unittest/ecdsa-secp384r1-sha256-corrupted-data.pem", +- "pki/testdata/verify_signed_data_unittest/ecdsa-secp384r1-sha256.pem", +- "pki/testdata/verify_signed_data_unittest/ecdsa-using-rsa-key.pem", +- "pki/testdata/verify_signed_data_unittest/rsa-pkcs1-sha1-bad-key-der-length.pem", +- "pki/testdata/verify_signed_data_unittest/rsa-pkcs1-sha1-bad-key-der-null.pem", +- "pki/testdata/verify_signed_data_unittest/rsa-pkcs1-sha1-key-params-absent.pem", +- "pki/testdata/verify_signed_data_unittest/rsa-pkcs1-sha1-using-pss-key-no-params.pem", +- "pki/testdata/verify_signed_data_unittest/rsa-pkcs1-sha1-wrong-algorithm.pem", +- "pki/testdata/verify_signed_data_unittest/rsa-pkcs1-sha1.pem", +- "pki/testdata/verify_signed_data_unittest/rsa-pkcs1-sha256-key-encoded-ber.pem", +- "pki/testdata/verify_signed_data_unittest/rsa-pkcs1-sha256-spki-non-null-params.pem", +- "pki/testdata/verify_signed_data_unittest/rsa-pkcs1-sha256-using-ecdsa-algorithm.pem", +- "pki/testdata/verify_signed_data_unittest/rsa-pkcs1-sha256-using-id-ea-rsa.pem", +- "pki/testdata/verify_signed_data_unittest/rsa-pkcs1-sha256.pem", +- "pki/testdata/verify_signed_data_unittest/rsa-pss-sha256-using-pss-key-with-params.pem", +- "pki/testdata/verify_signed_data_unittest/rsa-pss-sha256-wrong-salt.pem", +- "pki/testdata/verify_signed_data_unittest/rsa-pss-sha256.pem", +- "pki/testdata/verify_signed_data_unittest/rsa-using-ec-key.pem", +- "pki/testdata/verify_signed_data_unittest/rsa2048-pkcs1-sha512.pem", + "pki/testdata/verify_unittest/google-intermediate1.der", + "pki/testdata/verify_unittest/google-intermediate2.der", + "pki/testdata/verify_unittest/google-leaf.der", +@@ -2758,6 +1323,7 @@ + "gen/test_support/trampoline-armv8-apple.S", + "gen/test_support/trampoline-armv8-linux.S", + "gen/test_support/trampoline-armv8-win.S", ++ "gen/test_support/trampoline-ppc-linux.S", + "gen/test_support/trampoline-x86-apple.S", + "gen/test_support/trampoline-x86-linux.S", + "gen/test_support/trampoline-x86_64-apple.S", +Index: chromium-130.0.6723.44/third_party/boringssl/src/gen/test_support/trampoline-ppc-linux.S =================================================================== --- /dev/null -+++ chromium-122.0.6261.128/third_party/boringssl/linux-ppc64le/crypto/test/trampoline-ppc-linux.S ++++ chromium-130.0.6723.44/third_party/boringssl/src/gen/test_support/trampoline-ppc-linux.S @@ -0,0 +1,1413 @@ +// This file is generated from a similarly-named Perl script in the BoringSSL +// source tree. Do not edit by hand. @@ -21390,10 +24304,10 @@ Index: chromium-122.0.6261.128/third_party/boringssl/linux-ppc64le/crypto/test/t +// See https://www.airs.com/blog/archives/518. +.section .note.GNU-stack,"",%progbits +#endif -Index: chromium-122.0.6261.128/third_party/libvpx/source/config/linux/ppc64/vp8_rtcd.h +Index: chromium-130.0.6723.44/third_party/libvpx/source/config/linux/ppc64/vp8_rtcd.h =================================================================== --- /dev/null -+++ chromium-122.0.6261.128/third_party/libvpx/source/config/linux/ppc64/vp8_rtcd.h ++++ chromium-130.0.6723.44/third_party/libvpx/source/config/linux/ppc64/vp8_rtcd.h @@ -0,0 +1,316 @@ +// This file is generated. Do not edit. +#ifndef VP8_RTCD_H_ @@ -21711,10 +24625,10 @@ Index: chromium-122.0.6261.128/third_party/libvpx/source/config/linux/ppc64/vp8_ +#endif + +#endif -Index: chromium-122.0.6261.128/third_party/libvpx/source/config/linux/ppc64/vp9_rtcd.h +Index: chromium-130.0.6723.44/third_party/libvpx/source/config/linux/ppc64/vp9_rtcd.h =================================================================== --- /dev/null -+++ chromium-122.0.6261.128/third_party/libvpx/source/config/linux/ppc64/vp9_rtcd.h ++++ chromium-130.0.6723.44/third_party/libvpx/source/config/linux/ppc64/vp9_rtcd.h @@ -0,0 +1,267 @@ +// This file is generated. Do not edit. +#ifndef VP9_RTCD_H_ @@ -21983,10 +24897,10 @@ Index: chromium-122.0.6261.128/third_party/libvpx/source/config/linux/ppc64/vp9_ +#endif + +#endif -Index: chromium-122.0.6261.128/third_party/libvpx/source/config/linux/ppc64/vpx_config.asm +Index: chromium-130.0.6723.44/third_party/libvpx/source/config/linux/ppc64/vpx_config.asm =================================================================== --- /dev/null -+++ chromium-122.0.6261.128/third_party/libvpx/source/config/linux/ppc64/vpx_config.asm ++++ chromium-130.0.6723.44/third_party/libvpx/source/config/linux/ppc64/vpx_config.asm @@ -0,0 +1,107 @@ +@ This file was created from a .asm file +@ using the ads2gas.pl script. @@ -22095,10 +25009,10 @@ Index: chromium-122.0.6261.128/third_party/libvpx/source/config/linux/ppc64/vpx_ +.equ DECODE_WIDTH_LIMIT , 16384 +.equ DECODE_HEIGHT_LIMIT , 16384 + .section .note.GNU-stack,"",%progbits -Index: chromium-122.0.6261.128/third_party/libvpx/source/config/linux/ppc64/vpx_config.c +Index: chromium-130.0.6723.44/third_party/libvpx/source/config/linux/ppc64/vpx_config.c =================================================================== --- /dev/null -+++ chromium-122.0.6261.128/third_party/libvpx/source/config/linux/ppc64/vpx_config.c ++++ chromium-130.0.6723.44/third_party/libvpx/source/config/linux/ppc64/vpx_config.c @@ -0,0 +1,10 @@ +/* Copyright (c) 2011 The WebM project authors. All Rights Reserved. */ +/* */ @@ -22110,10 +25024,10 @@ Index: chromium-122.0.6261.128/third_party/libvpx/source/config/linux/ppc64/vpx_ +#include "vpx/vpx_codec.h" +static const char* const cfg = "--target=generic-gnu --enable-vp9-highbitdepth --enable-external-build --enable-postproc --enable-multi-res-encoding --enable-temporal-denoising --enable-vp9-temporal-denoising --enable-vp9-postproc --size-limit=16384x16384 --enable-realtime-only --disable-install-docs --disable-libyuv"; +const char *vpx_codec_build_config(void) {return cfg;} -Index: chromium-122.0.6261.128/third_party/libvpx/source/config/linux/ppc64/vpx_config.h +Index: chromium-130.0.6723.44/third_party/libvpx/source/config/linux/ppc64/vpx_config.h =================================================================== --- /dev/null -+++ chromium-122.0.6261.128/third_party/libvpx/source/config/linux/ppc64/vpx_config.h ++++ chromium-130.0.6723.44/third_party/libvpx/source/config/linux/ppc64/vpx_config.h @@ -0,0 +1,116 @@ +/* Copyright (c) 2011 The WebM project authors. All Rights Reserved. */ +/* */ @@ -22231,10 +25145,10 @@ Index: chromium-122.0.6261.128/third_party/libvpx/source/config/linux/ppc64/vpx_ +#define DECODE_WIDTH_LIMIT 16384 +#define DECODE_HEIGHT_LIMIT 16384 +#endif /* VPX_CONFIG_H */ -Index: chromium-122.0.6261.128/third_party/libvpx/source/config/linux/ppc64/vpx_dsp_rtcd.h +Index: chromium-130.0.6723.44/third_party/libvpx/source/config/linux/ppc64/vpx_dsp_rtcd.h =================================================================== --- /dev/null -+++ chromium-122.0.6261.128/third_party/libvpx/source/config/linux/ppc64/vpx_dsp_rtcd.h ++++ chromium-130.0.6723.44/third_party/libvpx/source/config/linux/ppc64/vpx_dsp_rtcd.h @@ -0,0 +1,4128 @@ +// This file is generated. Do not edit. +#ifndef VPX_DSP_RTCD_H_ @@ -26364,10 +29278,10 @@ Index: chromium-122.0.6261.128/third_party/libvpx/source/config/linux/ppc64/vpx_ +#endif + +#endif -Index: chromium-122.0.6261.128/third_party/libvpx/source/config/linux/ppc64/vpx_scale_rtcd.h +Index: chromium-130.0.6723.44/third_party/libvpx/source/config/linux/ppc64/vpx_scale_rtcd.h =================================================================== --- /dev/null -+++ chromium-122.0.6261.128/third_party/libvpx/source/config/linux/ppc64/vpx_scale_rtcd.h ++++ chromium-130.0.6723.44/third_party/libvpx/source/config/linux/ppc64/vpx_scale_rtcd.h @@ -0,0 +1,96 @@ +// This file is generated. Do not edit. +#ifndef VPX_SCALE_RTCD_H_ @@ -26507,20 +29421,20 @@ This patch implements support for the PPC64 architecture on Linux hosts. util/misc/capture_context_test_util_linux.cc | 6 + 36 files changed, 932 insertions(+), 12 deletions(-) -Index: chromium-122.0.6261.128/third_party/crashpad/crashpad/CONTRIBUTORS +Index: chromium-130.0.6723.44/third_party/crashpad/crashpad/CONTRIBUTORS =================================================================== ---- chromium-122.0.6261.128.orig/third_party/crashpad/crashpad/CONTRIBUTORS -+++ chromium-122.0.6261.128/third_party/crashpad/crashpad/CONTRIBUTORS +--- chromium-130.0.6723.44.orig/third_party/crashpad/crashpad/CONTRIBUTORS ++++ chromium-130.0.6723.44/third_party/crashpad/crashpad/CONTRIBUTORS @@ -13,3 +13,5 @@ Mark Mentovai Robert Sesek Scott Graham Joshua Peraza +Shawn Anastasio +Timothy Pearson -Index: chromium-122.0.6261.128/third_party/crashpad/crashpad/minidump/minidump_context.h +Index: chromium-130.0.6723.44/third_party/crashpad/crashpad/minidump/minidump_context.h =================================================================== ---- chromium-122.0.6261.128.orig/third_party/crashpad/crashpad/minidump/minidump_context.h -+++ chromium-122.0.6261.128/third_party/crashpad/crashpad/minidump/minidump_context.h +--- chromium-130.0.6723.44.orig/third_party/crashpad/crashpad/minidump/minidump_context.h ++++ chromium-130.0.6723.44/third_party/crashpad/crashpad/minidump/minidump_context.h @@ -687,6 +687,70 @@ struct MinidumpContextRISCV64 { uint32_t fcsr; }; @@ -26592,10 +29506,10 @@ Index: chromium-122.0.6261.128/third_party/crashpad/crashpad/minidump/minidump_c } // namespace crashpad #endif // CRASHPAD_MINIDUMP_MINIDUMP_CONTEXT_H_ -Index: chromium-122.0.6261.128/third_party/crashpad/crashpad/minidump/minidump_context_writer.cc +Index: chromium-130.0.6723.44/third_party/crashpad/crashpad/minidump/minidump_context_writer.cc =================================================================== ---- chromium-122.0.6261.128.orig/third_party/crashpad/crashpad/minidump/minidump_context_writer.cc -+++ chromium-122.0.6261.128/third_party/crashpad/crashpad/minidump/minidump_context_writer.cc +--- chromium-130.0.6723.44.orig/third_party/crashpad/crashpad/minidump/minidump_context_writer.cc ++++ chromium-130.0.6723.44/third_party/crashpad/crashpad/minidump/minidump_context_writer.cc @@ -110,6 +110,13 @@ MinidumpContextWriter::CreateFromSnapsho break; } @@ -26610,7 +29524,7 @@ Index: chromium-122.0.6261.128/third_party/crashpad/crashpad/minidump/minidump_c default: { LOG(ERROR) << "unknown context architecture " << context_snapshot->architecture; -@@ -601,5 +608,48 @@ size_t MinidumpContextRISCV64Writer::Con +@@ -605,5 +612,48 @@ size_t MinidumpContextRISCV64Writer::Con DCHECK_GE(state(), kStateFrozen); return sizeof(context_); } @@ -26659,10 +29573,10 @@ Index: chromium-122.0.6261.128/third_party/crashpad/crashpad/minidump/minidump_c +} } // namespace crashpad -Index: chromium-122.0.6261.128/third_party/crashpad/crashpad/minidump/minidump_context_writer.h +Index: chromium-130.0.6723.44/third_party/crashpad/crashpad/minidump/minidump_context_writer.h =================================================================== ---- chromium-122.0.6261.128.orig/third_party/crashpad/crashpad/minidump/minidump_context_writer.h -+++ chromium-122.0.6261.128/third_party/crashpad/crashpad/minidump/minidump_context_writer.h +--- chromium-130.0.6723.44.orig/third_party/crashpad/crashpad/minidump/minidump_context_writer.h ++++ chromium-130.0.6723.44/third_party/crashpad/crashpad/minidump/minidump_context_writer.h @@ -413,6 +413,49 @@ class MinidumpContextRISCV64Writer final MinidumpContextRISCV64 context_; }; @@ -26713,11 +29627,11 @@ Index: chromium-122.0.6261.128/third_party/crashpad/crashpad/minidump/minidump_c } // namespace crashpad #endif // CRASHPAD_MINIDUMP_MINIDUMP_CONTEXT_WRITER_H_ -Index: chromium-122.0.6261.128/third_party/crashpad/crashpad/minidump/minidump_context_writer_test.cc +Index: chromium-130.0.6723.44/third_party/crashpad/crashpad/minidump/minidump_context_writer_test.cc =================================================================== ---- chromium-122.0.6261.128.orig/third_party/crashpad/crashpad/minidump/minidump_context_writer_test.cc -+++ chromium-122.0.6261.128/third_party/crashpad/crashpad/minidump/minidump_context_writer_test.cc -@@ -328,6 +328,21 @@ TYPED_TEST(MinidumpContextWriter, RISCV6 +--- chromium-130.0.6723.44.orig/third_party/crashpad/crashpad/minidump/minidump_context_writer_test.cc ++++ chromium-130.0.6723.44/third_party/crashpad/crashpad/minidump/minidump_context_writer_test.cc +@@ -322,6 +322,21 @@ TYPED_TEST(MinidumpContextWriter, RISCV6 TypeParam>(context, ExpectMinidumpContextRISCV64, kSeed); } @@ -26739,10 +29653,10 @@ Index: chromium-122.0.6261.128/third_party/crashpad/crashpad/minidump/minidump_c } // namespace } // namespace test } // namespace crashpad -Index: chromium-122.0.6261.128/third_party/crashpad/crashpad/minidump/minidump_misc_info_writer.cc +Index: chromium-130.0.6723.44/third_party/crashpad/crashpad/minidump/minidump_misc_info_writer.cc =================================================================== ---- chromium-122.0.6261.128.orig/third_party/crashpad/crashpad/minidump/minidump_misc_info_writer.cc -+++ chromium-122.0.6261.128/third_party/crashpad/crashpad/minidump/minidump_misc_info_writer.cc +--- chromium-130.0.6723.44.orig/third_party/crashpad/crashpad/minidump/minidump_misc_info_writer.cc ++++ chromium-130.0.6723.44/third_party/crashpad/crashpad/minidump/minidump_misc_info_writer.cc @@ -177,6 +177,8 @@ std::string MinidumpMiscInfoDebugBuildSt static constexpr char kCPU[] = "mips64"; #elif defined(ARCH_CPU_RISCV64) @@ -26752,11 +29666,11 @@ Index: chromium-122.0.6261.128/third_party/crashpad/crashpad/minidump/minidump_m #else #error define kCPU for this CPU #endif -Index: chromium-122.0.6261.128/third_party/crashpad/crashpad/snapshot/capture_memory.cc +Index: chromium-130.0.6723.44/third_party/crashpad/crashpad/snapshot/capture_memory.cc =================================================================== ---- chromium-122.0.6261.128.orig/third_party/crashpad/crashpad/snapshot/capture_memory.cc -+++ chromium-122.0.6261.128/third_party/crashpad/crashpad/snapshot/capture_memory.cc -@@ -122,6 +122,11 @@ void CaptureMemory::PointedToByContext(c +--- chromium-130.0.6723.44.orig/third_party/crashpad/crashpad/snapshot/capture_memory.cc ++++ chromium-130.0.6723.44/third_party/crashpad/crashpad/snapshot/capture_memory.cc +@@ -123,6 +123,11 @@ void CaptureMemory::PointedToByContext(c for (size_t i = 0; i < std::size(context.riscv64->regs); ++i) { MaybeCaptureMemoryAround(delegate, context.riscv64->regs[i]); } @@ -26768,10 +29682,10 @@ Index: chromium-122.0.6261.128/third_party/crashpad/crashpad/snapshot/capture_me #else #error Port. #endif -Index: chromium-122.0.6261.128/third_party/crashpad/crashpad/snapshot/cpu_architecture.h +Index: chromium-130.0.6723.44/third_party/crashpad/crashpad/snapshot/cpu_architecture.h =================================================================== ---- chromium-122.0.6261.128.orig/third_party/crashpad/crashpad/snapshot/cpu_architecture.h -+++ chromium-122.0.6261.128/third_party/crashpad/crashpad/snapshot/cpu_architecture.h +--- chromium-130.0.6723.44.orig/third_party/crashpad/crashpad/snapshot/cpu_architecture.h ++++ chromium-130.0.6723.44/third_party/crashpad/crashpad/snapshot/cpu_architecture.h @@ -47,6 +47,9 @@ enum CPUArchitecture { //! \brief 64-bit RISC-V. @@ -26782,10 +29696,10 @@ Index: chromium-122.0.6261.128/third_party/crashpad/crashpad/snapshot/cpu_archit }; } // namespace crashpad -Index: chromium-122.0.6261.128/third_party/crashpad/crashpad/snapshot/cpu_context.cc +Index: chromium-130.0.6723.44/third_party/crashpad/crashpad/snapshot/cpu_context.cc =================================================================== ---- chromium-122.0.6261.128.orig/third_party/crashpad/crashpad/snapshot/cpu_context.cc -+++ chromium-122.0.6261.128/third_party/crashpad/crashpad/snapshot/cpu_context.cc +--- chromium-130.0.6723.44.orig/third_party/crashpad/crashpad/snapshot/cpu_context.cc ++++ chromium-130.0.6723.44/third_party/crashpad/crashpad/snapshot/cpu_context.cc @@ -173,6 +173,8 @@ uint64_t CPUContext::InstructionPointer( return arm64->pc; case kCPUArchitectureRISCV64: @@ -26794,8 +29708,8 @@ Index: chromium-122.0.6261.128/third_party/crashpad/crashpad/snapshot/cpu_contex + return ppc64->nip; default: NOTREACHED(); - return ~0ull; -@@ -191,6 +193,8 @@ uint64_t CPUContext::StackPointer() cons + } +@@ -190,6 +192,8 @@ uint64_t CPUContext::StackPointer() cons return arm64->sp; case kCPUArchitectureRISCV64: return riscv64->regs[1]; @@ -26803,8 +29717,8 @@ Index: chromium-122.0.6261.128/third_party/crashpad/crashpad/snapshot/cpu_contex + return ppc64->regs[1]; default: NOTREACHED(); - return ~0ull; -@@ -231,6 +235,7 @@ bool CPUContext::Is64Bit() const { + } +@@ -226,6 +230,7 @@ bool CPUContext::Is64Bit() const { case kCPUArchitectureX86_64: case kCPUArchitectureARM64: case kCPUArchitectureMIPS64EL: @@ -26812,10 +29726,10 @@ Index: chromium-122.0.6261.128/third_party/crashpad/crashpad/snapshot/cpu_contex case kCPUArchitectureRISCV64: return true; case kCPUArchitectureX86: -Index: chromium-122.0.6261.128/third_party/crashpad/crashpad/snapshot/cpu_context.h +Index: chromium-130.0.6723.44/third_party/crashpad/crashpad/snapshot/cpu_context.h =================================================================== ---- chromium-122.0.6261.128.orig/third_party/crashpad/crashpad/snapshot/cpu_context.h -+++ chromium-122.0.6261.128/third_party/crashpad/crashpad/snapshot/cpu_context.h +--- chromium-130.0.6723.44.orig/third_party/crashpad/crashpad/snapshot/cpu_context.h ++++ chromium-130.0.6723.44/third_party/crashpad/crashpad/snapshot/cpu_context.h @@ -371,6 +371,24 @@ struct CPUContextRISCV64 { uint32_t fcsr; }; @@ -26849,10 +29763,10 @@ Index: chromium-122.0.6261.128/third_party/crashpad/crashpad/snapshot/cpu_contex }; }; -Index: chromium-122.0.6261.128/third_party/crashpad/crashpad/snapshot/linux/cpu_context_linux.h +Index: chromium-130.0.6723.44/third_party/crashpad/crashpad/snapshot/linux/cpu_context_linux.h =================================================================== ---- chromium-122.0.6261.128.orig/third_party/crashpad/crashpad/snapshot/linux/cpu_context_linux.h -+++ chromium-122.0.6261.128/third_party/crashpad/crashpad/snapshot/linux/cpu_context_linux.h +--- chromium-130.0.6723.44.orig/third_party/crashpad/crashpad/snapshot/linux/cpu_context_linux.h ++++ chromium-130.0.6723.44/third_party/crashpad/crashpad/snapshot/linux/cpu_context_linux.h @@ -15,6 +15,7 @@ #ifndef CRASHPAD_SNAPSHOT_LINUX_CPU_CONTEXT_LINUX_H_ #define CRASHPAD_SNAPSHOT_LINUX_CPU_CONTEXT_LINUX_H_ @@ -26940,11 +29854,11 @@ Index: chromium-122.0.6261.128/third_party/crashpad/crashpad/snapshot/linux/cpu_ } // namespace internal } // namespace crashpad -Index: chromium-122.0.6261.128/third_party/crashpad/crashpad/snapshot/linux/debug_rendezvous_test.cc +Index: chromium-130.0.6723.44/third_party/crashpad/crashpad/snapshot/linux/debug_rendezvous_test.cc =================================================================== ---- chromium-122.0.6261.128.orig/third_party/crashpad/crashpad/snapshot/linux/debug_rendezvous_test.cc -+++ chromium-122.0.6261.128/third_party/crashpad/crashpad/snapshot/linux/debug_rendezvous_test.cc -@@ -195,12 +195,15 @@ void TestAgainstTarget(PtraceConnection* +--- chromium-130.0.6723.44.orig/third_party/crashpad/crashpad/snapshot/linux/debug_rendezvous_test.cc ++++ chromium-130.0.6723.44/third_party/crashpad/crashpad/snapshot/linux/debug_rendezvous_test.cc +@@ -194,12 +194,15 @@ void TestAgainstTarget(PtraceConnection* device == 0 && inode == 0 && mapping_name == "[vdso]"; #if defined(ARCH_CPU_X86) static constexpr char kPrefix[] = "linux-gate.so."; @@ -26961,10 +29875,10 @@ Index: chromium-122.0.6261.128/third_party/crashpad/crashpad/snapshot/linux/debu }, module_mapping->name, module_mapping->device, -Index: chromium-122.0.6261.128/third_party/crashpad/crashpad/snapshot/linux/exception_snapshot_linux.cc +Index: chromium-130.0.6723.44/third_party/crashpad/crashpad/snapshot/linux/exception_snapshot_linux.cc =================================================================== ---- chromium-122.0.6261.128.orig/third_party/crashpad/crashpad/snapshot/linux/exception_snapshot_linux.cc -+++ chromium-122.0.6261.128/third_party/crashpad/crashpad/snapshot/linux/exception_snapshot_linux.cc +--- chromium-130.0.6723.44.orig/third_party/crashpad/crashpad/snapshot/linux/exception_snapshot_linux.cc ++++ chromium-130.0.6723.44/third_party/crashpad/crashpad/snapshot/linux/exception_snapshot_linux.cc @@ -367,6 +367,69 @@ bool ExceptionSnapshotLinux::ReadContext return internal::ReadContext(reader, context_address, context_.riscv64); } @@ -27035,10 +29949,10 @@ Index: chromium-122.0.6261.128/third_party/crashpad/crashpad/snapshot/linux/exce #endif // ARCH_CPU_X86_FAMILY bool ExceptionSnapshotLinux::Initialize( -Index: chromium-122.0.6261.128/third_party/crashpad/crashpad/snapshot/linux/exception_snapshot_linux.h +Index: chromium-130.0.6723.44/third_party/crashpad/crashpad/snapshot/linux/exception_snapshot_linux.h =================================================================== ---- chromium-122.0.6261.128.orig/third_party/crashpad/crashpad/snapshot/linux/exception_snapshot_linux.h -+++ chromium-122.0.6261.128/third_party/crashpad/crashpad/snapshot/linux/exception_snapshot_linux.h +--- chromium-130.0.6723.44.orig/third_party/crashpad/crashpad/snapshot/linux/exception_snapshot_linux.h ++++ chromium-130.0.6723.44/third_party/crashpad/crashpad/snapshot/linux/exception_snapshot_linux.h @@ -91,6 +91,8 @@ class ExceptionSnapshotLinux final : pub CPUContextMIPS64 mips64; #elif defined(ARCH_CPU_RISCV64) @@ -27048,10 +29962,10 @@ Index: chromium-122.0.6261.128/third_party/crashpad/crashpad/snapshot/linux/exce #endif } context_union_; CPUContext context_; -Index: chromium-122.0.6261.128/third_party/crashpad/crashpad/snapshot/linux/exception_snapshot_linux_test.cc +Index: chromium-130.0.6723.44/third_party/crashpad/crashpad/snapshot/linux/exception_snapshot_linux_test.cc =================================================================== ---- chromium-122.0.6261.128.orig/third_party/crashpad/crashpad/snapshot/linux/exception_snapshot_linux_test.cc -+++ chromium-122.0.6261.128/third_party/crashpad/crashpad/snapshot/linux/exception_snapshot_linux_test.cc +--- chromium-130.0.6723.44.orig/third_party/crashpad/crashpad/snapshot/linux/exception_snapshot_linux_test.cc ++++ chromium-130.0.6723.44/third_party/crashpad/crashpad/snapshot/linux/exception_snapshot_linux_test.cc @@ -325,7 +325,28 @@ void ExpectContext(const CPUContext& act sizeof(actual.riscv64->fpregs)), 0); @@ -27081,10 +29995,10 @@ Index: chromium-122.0.6261.128/third_party/crashpad/crashpad/snapshot/linux/exce #else #error Port. #endif -Index: chromium-122.0.6261.128/third_party/crashpad/crashpad/snapshot/linux/process_reader_linux.cc +Index: chromium-130.0.6723.44/third_party/crashpad/crashpad/snapshot/linux/process_reader_linux.cc =================================================================== ---- chromium-122.0.6261.128.orig/third_party/crashpad/crashpad/snapshot/linux/process_reader_linux.cc -+++ chromium-122.0.6261.128/third_party/crashpad/crashpad/snapshot/linux/process_reader_linux.cc +--- chromium-130.0.6723.44.orig/third_party/crashpad/crashpad/snapshot/linux/process_reader_linux.cc ++++ chromium-130.0.6723.44/third_party/crashpad/crashpad/snapshot/linux/process_reader_linux.cc @@ -129,6 +129,8 @@ void ProcessReaderLinux::Thread::Initial : thread_info.thread_context.t32.regs[29]; #elif defined(ARCH_CPU_RISCV64) @@ -27094,10 +30008,10 @@ Index: chromium-122.0.6261.128/third_party/crashpad/crashpad/snapshot/linux/proc #else #error Port. #endif -Index: chromium-122.0.6261.128/third_party/crashpad/crashpad/snapshot/linux/signal_context.h +Index: chromium-130.0.6723.44/third_party/crashpad/crashpad/snapshot/linux/signal_context.h =================================================================== ---- chromium-122.0.6261.128.orig/third_party/crashpad/crashpad/snapshot/linux/signal_context.h -+++ chromium-122.0.6261.128/third_party/crashpad/crashpad/snapshot/linux/signal_context.h +--- chromium-130.0.6723.44.orig/third_party/crashpad/crashpad/snapshot/linux/signal_context.h ++++ chromium-130.0.6723.44/third_party/crashpad/crashpad/snapshot/linux/signal_context.h @@ -456,6 +456,89 @@ static_assert(offsetof(UContextthread_context, &info->thread_specific_data_address, -Index: chromium-122.0.6261.128/third_party/crashpad/crashpad/util/linux/thread_info.h +Index: chromium-130.0.6723.44/third_party/crashpad/crashpad/util/linux/thread_info.h =================================================================== ---- chromium-122.0.6261.128.orig/third_party/crashpad/crashpad/util/linux/thread_info.h -+++ chromium-122.0.6261.128/third_party/crashpad/crashpad/util/linux/thread_info.h +--- chromium-130.0.6723.44.orig/third_party/crashpad/crashpad/util/linux/thread_info.h ++++ chromium-130.0.6723.44/third_party/crashpad/crashpad/util/linux/thread_info.h @@ -34,6 +34,10 @@ #include #endif @@ -27480,10 +30394,10 @@ Index: chromium-122.0.6261.128/third_party/crashpad/crashpad/util/linux/thread_i //! \brief The thread-local storage address for the thread. LinuxVMAddress thread_specific_data_address; }; -Index: chromium-122.0.6261.128/third_party/crashpad/crashpad/util/misc/capture_context.h +Index: chromium-130.0.6723.44/third_party/crashpad/crashpad/util/misc/capture_context.h =================================================================== ---- chromium-122.0.6261.128.orig/third_party/crashpad/crashpad/util/misc/capture_context.h -+++ chromium-122.0.6261.128/third_party/crashpad/crashpad/util/misc/capture_context.h +--- chromium-130.0.6723.44.orig/third_party/crashpad/crashpad/util/misc/capture_context.h ++++ chromium-130.0.6723.44/third_party/crashpad/crashpad/util/misc/capture_context.h @@ -70,6 +70,7 @@ using NativeCPUContext = ucontext_t; //! Linux | ARM/ARM64 | `r0`/`x0` //! Linux | MIPS/MIPS64 | `$a0` @@ -27492,10 +30406,10 @@ Index: chromium-122.0.6261.128/third_party/crashpad/crashpad/util/misc/capture_c //! //! Additionally, the value `LR` on ARM/ARM64 will be the return address of //! this function. -Index: chromium-122.0.6261.128/third_party/crashpad/crashpad/util/misc/capture_context_linux.S +Index: chromium-130.0.6723.44/third_party/crashpad/crashpad/util/misc/capture_context_linux.S =================================================================== ---- chromium-122.0.6261.128.orig/third_party/crashpad/crashpad/util/misc/capture_context_linux.S -+++ chromium-122.0.6261.128/third_party/crashpad/crashpad/util/misc/capture_context_linux.S +--- chromium-130.0.6723.44.orig/third_party/crashpad/crashpad/util/misc/capture_context_linux.S ++++ chromium-130.0.6723.44/third_party/crashpad/crashpad/util/misc/capture_context_linux.S @@ -30,7 +30,7 @@ .globl CAPTURECONTEXT_SYMBOL2 #if defined(__i386__) || defined(__x86_64__) @@ -27722,10 +30636,10 @@ Index: chromium-122.0.6261.128/third_party/crashpad/crashpad/util/misc/capture_c #elif defined(__riscv) #define MCONTEXT_GREGS_OFFSET 176 -Index: chromium-122.0.6261.128/third_party/crashpad/crashpad/util/misc/capture_context_test.cc +Index: chromium-130.0.6723.44/third_party/crashpad/crashpad/util/misc/capture_context_test.cc =================================================================== ---- chromium-122.0.6261.128.orig/third_party/crashpad/crashpad/util/misc/capture_context_test.cc -+++ chromium-122.0.6261.128/third_party/crashpad/crashpad/util/misc/capture_context_test.cc +--- chromium-130.0.6723.44.orig/third_party/crashpad/crashpad/util/misc/capture_context_test.cc ++++ chromium-130.0.6723.44/third_party/crashpad/crashpad/util/misc/capture_context_test.cc @@ -48,7 +48,7 @@ void TestCaptureContext() { uintptr_t pc = ProgramCounterFromContext(context_1); @@ -27735,10 +30649,10 @@ Index: chromium-122.0.6261.128/third_party/crashpad/crashpad/util/misc/capture_c // Sanitizers can cause enough code bloat that the “nearby” check would // likely fail. const uintptr_t kReferencePC = -Index: chromium-122.0.6261.128/third_party/crashpad/crashpad/util/misc/capture_context_test_util_linux.cc +Index: chromium-130.0.6723.44/third_party/crashpad/crashpad/util/misc/capture_context_test_util_linux.cc =================================================================== ---- chromium-122.0.6261.128.orig/third_party/crashpad/crashpad/util/misc/capture_context_test_util_linux.cc -+++ chromium-122.0.6261.128/third_party/crashpad/crashpad/util/misc/capture_context_test_util_linux.cc +--- chromium-130.0.6723.44.orig/third_party/crashpad/crashpad/util/misc/capture_context_test_util_linux.cc ++++ chromium-130.0.6723.44/third_party/crashpad/crashpad/util/misc/capture_context_test_util_linux.cc @@ -38,6 +38,8 @@ void SanityCheckContext(const NativeCPUC #elif defined(ARCH_CPU_RISCV64) EXPECT_EQ(context.uc_mcontext.__gregs[10], @@ -27768,11 +30682,11 @@ Index: chromium-122.0.6261.128/third_party/crashpad/crashpad/util/misc/capture_c kIndex: chromium-114.0.5735.45/base/allocator/partition_allocator/partition_alloc.gni =================================================================== -Index: chromium-122.0.6261.128/base/allocator/partition_allocator/partition_alloc.gni +Index: chromium-130.0.6723.44/base/allocator/partition_allocator/partition_alloc.gni =================================================================== ---- chromium-122.0.6261.128.orig/base/allocator/partition_allocator/partition_alloc.gni -+++ chromium-122.0.6261.128/base/allocator/partition_allocator/partition_alloc.gni -@@ -21,7 +21,8 @@ if (is_nacl) { +--- chromium-130.0.6723.44.orig/base/allocator/partition_allocator/partition_alloc.gni ++++ chromium-130.0.6723.44/base/allocator/partition_allocator/partition_alloc.gni +@@ -19,7 +19,8 @@ if (is_nacl) { # NaCl targets don't use 64-bit pointers. has_64_bit_pointers = false } else if (current_cpu == "x64" || current_cpu == "arm64" || @@ -27782,117 +30696,27 @@ Index: chromium-122.0.6261.128/base/allocator/partition_allocator/partition_allo has_64_bit_pointers = true } else if (current_cpu == "x86" || current_cpu == "arm") { has_64_bit_pointers = false -Index: chromium-122.0.6261.128/third_party/highway/BUILD.gn +Index: chromium-130.0.6723.44/base/allocator/partition_allocator/src/partition_alloc/page_allocator_constants.h =================================================================== ---- chromium-122.0.6261.128.orig/third_party/highway/BUILD.gn -+++ chromium-122.0.6261.128/third_party/highway/BUILD.gn -@@ -13,6 +13,9 @@ config("libhwy_external_config") { - # explicitly disabling AVX2 and AVX3 targets. - defines += [ "HWY_BROKEN_TARGETS=(HWY_AVX2|HWY_AVX3)" ] - } -+ if (target_cpu == "ppc64") { -+ defines += [ "TOOLCHAIN_MISS_ASM_HWCAP_H" ] -+ } - } - - source_set("libhwy") { -Index: chromium-122.0.6261.128/base/allocator/partition_allocator/src/partition_alloc/page_allocator_constants.h -=================================================================== ---- chromium-122.0.6261.128.orig/base/allocator/partition_allocator/src/partition_alloc/page_allocator_constants.h -+++ chromium-122.0.6261.128/base/allocator/partition_allocator/src/partition_alloc/page_allocator_constants.h -@@ -173,7 +173,11 @@ SystemPageBaseMask() { +--- chromium-130.0.6723.44.orig/base/allocator/partition_allocator/src/partition_alloc/page_allocator_constants.h ++++ chromium-130.0.6723.44/base/allocator/partition_allocator/src/partition_alloc/page_allocator_constants.h +@@ -187,7 +187,11 @@ SystemPageBaseMask() { return ~SystemPageOffsetMask(); } -+#if defined(ARCH_CPU_PPC64) ++#if PA_BUILDFLAG(PA_ARCH_CPU_PPC64_FAMILY) +constexpr size_t kPageMetadataShift = 6; // 64 bytes per partition page. +#else constexpr size_t kPageMetadataShift = 5; // 32 bytes per partition page. +#endif constexpr size_t kPageMetadataSize = 1 << kPageMetadataShift; - } // namespace partition_alloc::internal -Index: chromium-122.0.6261.128/base/allocator/partition_allocator/src/partition_alloc/partition_page.h + } // namespace internal +Index: chromium-130.0.6723.44/third_party/dawn/src/dawn/common/Platform.h =================================================================== ---- chromium-122.0.6261.128.orig/base/allocator/partition_allocator/src/partition_alloc/partition_page.h -+++ chromium-122.0.6261.128/base/allocator/partition_allocator/src/partition_alloc/partition_page.h -@@ -86,7 +86,11 @@ struct SlotSpanMetadata { - - // CHECK()ed in AllocNewSlotSpan(). - // The maximum number of bits needed to cover all currently supported OSes. -+#if defined(ARCH_CPU_PPC64) -+ static constexpr size_t kMaxSlotsPerSlotSpanBits = 15; -+#else - static constexpr size_t kMaxSlotsPerSlotSpanBits = 13; -+#endif - static_assert(kMaxSlotsPerSlotSpan < (1 << kMaxSlotsPerSlotSpanBits), ""); - - // |marked_full| isn't equivalent to being full. Slot span is marked as full -@@ -100,7 +104,11 @@ struct SlotSpanMetadata { - private: - const uint32_t can_store_raw_size_ : 1; - uint32_t freelist_is_sorted_ : 1; -+#if defined(ARCH_CPU_PPC64) -+ uint32_t unused1_ : (64 - 1 - 2 * kMaxSlotsPerSlotSpanBits - 1 - 1); -+#else - uint32_t unused1_ : (32 - 1 - 2 * kMaxSlotsPerSlotSpanBits - 1 - 1); -+#endif - // If |in_empty_cache_|==1, |empty_cache_index| is undefined and mustn't be - // used. - uint16_t in_empty_cache_ : 1; -Index: chromium-122.0.6261.128/base/allocator/partition_allocator/src/partition_alloc/partition_page_constants.h -=================================================================== ---- chromium-122.0.6261.128.orig/base/allocator/partition_allocator/src/partition_alloc/partition_page_constants.h -+++ chromium-122.0.6261.128/base/allocator/partition_allocator/src/partition_alloc/partition_page_constants.h -@@ -21,6 +21,11 @@ static constexpr size_t kMaxSlotsPerSlot - // currently (kMaxSlotsPerSlotSpanBits == 13) not supported by the code, - // so we use the 16 kiB maximum (64 kiB will crash). - static constexpr size_t kMaxSlotsPerSlotSpan = 4 * (1 << 14) / kSmallestBucket; -+#elif BUILDFLAG(IS_LINUX) && defined(ARCH_CPU_PPC64) -+// System page size is not a constant on OpenPOWER systems, but is either 4kiB -+// or 64kiB (1 << 12 or 1 << 16) -+// And PartitionPageSize() is 4 times the OS page size. -+static constexpr size_t kMaxSlotsPerSlotSpan = 4 * (1 << 16) / kSmallestBucket; - #else - // A slot span can "span" multiple PartitionPages, but then its slot size is - // larger, so it doesn't have as many slots. -Index: chromium-122.0.6261.128/third_party/dawn/src/dawn/common/Platform.h -=================================================================== ---- chromium-122.0.6261.128.orig/third_party/dawn/src/dawn/common/Platform.h -+++ chromium-122.0.6261.128/third_party/dawn/src/dawn/common/Platform.h -@@ -153,9 +153,9 @@ - #define DAWN_PLATFORM_IS_MIPS64 1 - #endif - --#elif defiend(__s390__) -+#elif defined(__s390__) - #define DAWN_PLATFORM_IS_S390 1 --#elif defiend(__s390x__) -+#elif defined(__s390x__) - #define DAWN_PLATFORM_IS_S390X 1 - - #elif defined(__PPC__) -Index: chromium-122.0.6261.128/third_party/dawn/src/dawn/common/Assert.cpp -=================================================================== ---- chromium-122.0.6261.128.orig/third_party/dawn/src/dawn/common/Assert.cpp -+++ chromium-122.0.6261.128/third_party/dawn/src/dawn/common/Assert.cpp -@@ -52,9 +52,9 @@ void BreakPoint() { - __asm__ __volatile__("ebreak"); - #elif DAWN_PLATFORM_IS(MIPS) - __asm__ __volatile__("break"); --#elif DAWN_PLATFORM_IS(S390) || DAWN_PLATFORM_IS_(S390X) -+#elif DAWN_PLATFORM_IS(S390) || DAWN_PLATFORM_IS(S390X) - __asm__ __volatile__(".word 0x0001"); --#elif DAWN_PLATFORM_IS(PPC) || DAWN_PLATFORM_IS_(PPC64) -+#elif DAWN_PLATFORM_IS(PPC) || DAWN_PLATFORM_IS(PPC64) - __asm__ __volatile__("twge 2,2"); - #else - #error "Unsupported platform" -Index: chromium-122.0.6261.128/third_party/dawn/src/dawn/common/Platform.h -=================================================================== ---- chromium-122.0.6261.128.orig/third_party/dawn/src/dawn/common/Platform.h -+++ chromium-122.0.6261.128/third_party/dawn/src/dawn/common/Platform.h -@@ -158,10 +158,12 @@ +--- chromium-130.0.6723.44.orig/third_party/dawn/src/dawn/common/Platform.h ++++ chromium-130.0.6723.44/third_party/dawn/src/dawn/common/Platform.h +@@ -159,10 +159,12 @@ #elif defined(__s390x__) #define DAWN_PLATFORM_IS_S390X 1 @@ -27905,5 +30729,5 @@ Index: chromium-122.0.6261.128/third_party/dawn/src/dawn/common/Platform.h +#elif defined(__PPC__) +#define DAWN_PLATFORM_IS_PPC 1 - #else - #error "Unsupported platform." + #elif defined(__wasm32__) + #define DAWN_PLATFORM_IS_WASM32 1 diff --git a/qtwebengine-fix-arm-build.patch b/qtwebengine-fix-arm-build.patch index 123ddac..7f30e1a 100644 --- a/qtwebengine-fix-arm-build.patch +++ b/qtwebengine-fix-arm-build.patch @@ -1,9 +1,9 @@ diff --git a/src/core/CMakeLists.txt b/src/core/CMakeLists.txt -index fe4f2c3f1..729d4d3e9 100644 +index cc992b4d2..ae1fba849 100644 --- a/src/core/CMakeLists.txt +++ b/src/core/CMakeLists.txt -@@ -544,6 +544,10 @@ foreach(arch ${archs}) - ) +@@ -566,6 +566,10 @@ foreach(arch ${archs}) + list(APPEND gnArgArg libyuv_use_sve=false) endif() endif() + if(cpu MATCHES "arm.*") @@ -12,3 +12,4 @@ index fe4f2c3f1..729d4d3e9 100644 + endif() unset(cpu) endif() + diff --git a/qtwebengine-fix-build.patch b/qtwebengine-fix-build.patch index 20233bc..192a202 100644 --- a/qtwebengine-fix-build.patch +++ b/qtwebengine-fix-build.patch @@ -1,5 +1,5 @@ diff --git a/src/3rdparty/chromium/base/debug/profiler.h b/src/3rdparty/chromium/base/debug/profiler.h -index 035affc..d8e1a53 100644 +index 035affc7c..d8e1a5346 100644 --- a/src/3rdparty/chromium/base/debug/profiler.h +++ b/src/3rdparty/chromium/base/debug/profiler.h @@ -5,6 +5,7 @@ @@ -11,7 +11,7 @@ index 035affc..d8e1a53 100644 #include diff --git a/src/3rdparty/chromium/cc/trees/target_property.cc b/src/3rdparty/chromium/cc/trees/target_property.cc -index 7d73467..be4febd 100644 +index 7d73467a9..be4febd9a 100644 --- a/src/3rdparty/chromium/cc/trees/target_property.cc +++ b/src/3rdparty/chromium/cc/trees/target_property.cc @@ -8,6 +8,8 @@ @@ -24,7 +24,7 @@ index 7d73467..be4febd 100644 static_assert(TargetProperty::LAST_TARGET_PROPERTY < diff --git a/src/3rdparty/chromium/device/base/synchronization/one_writer_seqlock.cc b/src/3rdparty/chromium/device/base/synchronization/one_writer_seqlock.cc -index c62a00e..af54520 100644 +index c62a00ee0..af54520b7 100644 --- a/src/3rdparty/chromium/device/base/synchronization/one_writer_seqlock.cc +++ b/src/3rdparty/chromium/device/base/synchronization/one_writer_seqlock.cc @@ -6,6 +6,8 @@ @@ -37,7 +37,7 @@ index c62a00e..af54520 100644 OneWriterSeqLock::OneWriterSeqLock() : sequence_(0) {} diff --git a/src/3rdparty/chromium/extensions/common/constants.h b/src/3rdparty/chromium/extensions/common/constants.h -index b5823c7..c152482 100644 +index 63af22b65..916d45a36 100644 --- a/src/3rdparty/chromium/extensions/common/constants.h +++ b/src/3rdparty/chromium/extensions/common/constants.h @@ -13,6 +13,8 @@ @@ -50,7 +50,7 @@ index b5823c7..c152482 100644 // Scheme we serve extension content from. diff --git a/src/3rdparty/chromium/gpu/config/gpu_util.h b/src/3rdparty/chromium/gpu/config/gpu_util.h -index 8edbfbe..467ebd6 100644 +index 64d531be0..cc370a4bf 100644 --- a/src/3rdparty/chromium/gpu/config/gpu_util.h +++ b/src/3rdparty/chromium/gpu/config/gpu_util.h @@ -5,6 +5,8 @@ @@ -63,7 +63,7 @@ index 8edbfbe..467ebd6 100644 #include "gpu/config/gpu_feature_info.h" #include "gpu/gpu_export.h" diff --git a/src/3rdparty/chromium/net/base/parse_number.h b/src/3rdparty/chromium/net/base/parse_number.h -index f70619a..5c4eee7 100644 +index f70619a75..5c4eee7f6 100644 --- a/src/3rdparty/chromium/net/base/parse_number.h +++ b/src/3rdparty/chromium/net/base/parse_number.h @@ -10,6 +10,8 @@ @@ -76,7 +76,7 @@ index f70619a..5c4eee7 100644 // network protocols. // diff --git a/src/3rdparty/chromium/ppapi/utility/completion_callback_factory_thread_traits.h b/src/3rdparty/chromium/ppapi/utility/completion_callback_factory_thread_traits.h -index 7c0dcde..97054d4 100644 +index 7c0dcdecb..97054d476 100644 --- a/src/3rdparty/chromium/ppapi/utility/completion_callback_factory_thread_traits.h +++ b/src/3rdparty/chromium/ppapi/utility/completion_callback_factory_thread_traits.h @@ -38,6 +38,10 @@ namespace pp { @@ -100,7 +100,7 @@ index 7c0dcde..97054d4 100644 /// The non-thread-safe version of thread traits. Using this class as the diff --git a/src/3rdparty/chromium/third_party/dawn/src/dawn/native/CacheKey.h b/src/3rdparty/chromium/third_party/dawn/src/dawn/native/CacheKey.h -index a65ea9a..ba967c0 100644 +index a65ea9a2a..ba967c018 100644 --- a/src/3rdparty/chromium/third_party/dawn/src/dawn/native/CacheKey.h +++ b/src/3rdparty/chromium/third_party/dawn/src/dawn/native/CacheKey.h @@ -28,6 +28,7 @@ @@ -112,7 +112,7 @@ index a65ea9a..ba967c0 100644 #include "dawn/native/stream/ByteVectorSink.h" diff --git a/src/3rdparty/chromium/third_party/libgav1/src/src/utils/threadpool.cc b/src/3rdparty/chromium/third_party/libgav1/src/src/utils/threadpool.cc -index 6fa2e88..6b942ab 100644 +index 6fa2e8864..6b942abdf 100644 --- a/src/3rdparty/chromium/third_party/libgav1/src/src/utils/threadpool.cc +++ b/src/3rdparty/chromium/third_party/libgav1/src/src/utils/threadpool.cc @@ -31,6 +31,7 @@ @@ -124,20 +124,20 @@ index 6fa2e88..6b942ab 100644 #include diff --git a/src/3rdparty/chromium/third_party/perfetto/src/trace_processor/importers/proto/proto_importer_module.h b/src/3rdparty/chromium/third_party/perfetto/src/trace_processor/importers/proto/proto_importer_module.h -index cc2c3a2..8eb694e 100644 +index c8375dc69..8f290c302 100644 --- a/src/3rdparty/chromium/third_party/perfetto/src/trace_processor/importers/proto/proto_importer_module.h +++ b/src/3rdparty/chromium/third_party/perfetto/src/trace_processor/importers/proto/proto_importer_module.h -@@ -22,6 +22,8 @@ - #include "perfetto/base/status.h" +@@ -27,6 +27,8 @@ #include "src/trace_processor/importers/common/trace_parser.h" + #include "src/trace_processor/importers/proto/packet_sequence_state_generation.h" +#include + namespace perfetto { - namespace protos { + namespace protos::pbzero { diff --git a/src/3rdparty/chromium/third_party/skia/src/utils/SkParseColor.cpp b/src/3rdparty/chromium/third_party/skia/src/utils/SkParseColor.cpp -index ae6a412..5fe0370 100644 +index ae6a412fd..5fe0370ec 100644 --- a/src/3rdparty/chromium/third_party/skia/src/utils/SkParseColor.cpp +++ b/src/3rdparty/chromium/third_party/skia/src/utils/SkParseColor.cpp @@ -15,6 +15,10 @@ @@ -152,7 +152,7 @@ index ae6a412..5fe0370 100644 "aliceblue", "antiquewhite", diff --git a/src/3rdparty/chromium/third_party/vulkan_memory_allocator/include/vk_mem_alloc.h b/src/3rdparty/chromium/third_party/vulkan_memory_allocator/include/vk_mem_alloc.h -index 0bbfeed..91f19f8 100644 +index 0bbfeedb1..91f19f83e 100644 --- a/src/3rdparty/chromium/third_party/vulkan_memory_allocator/include/vk_mem_alloc.h +++ b/src/3rdparty/chromium/third_party/vulkan_memory_allocator/include/vk_mem_alloc.h @@ -122,6 +122,8 @@ See documentation chapter: \ref statistics. @@ -165,7 +165,7 @@ index 0bbfeed..91f19f8 100644 extern "C" { #endif diff --git a/src/3rdparty/chromium/third_party/webrtc/modules/portal/xdg_session_details.h b/src/3rdparty/chromium/third_party/webrtc/modules/portal/xdg_session_details.h -index ab52508..050229a 100644 +index ab52508c2..050229a2f 100644 --- a/src/3rdparty/chromium/third_party/webrtc/modules/portal/xdg_session_details.h +++ b/src/3rdparty/chromium/third_party/webrtc/modules/portal/xdg_session_details.h @@ -13,6 +13,7 @@ @@ -177,7 +177,7 @@ index ab52508..050229a 100644 namespace webrtc { diff --git a/src/3rdparty/chromium/ui/events/gesture_event_details.h b/src/3rdparty/chromium/ui/events/gesture_event_details.h -index 857da97..e48e24d 100644 +index b4f797bca..95b144fd1 100644 --- a/src/3rdparty/chromium/ui/events/gesture_event_details.h +++ b/src/3rdparty/chromium/ui/events/gesture_event_details.h @@ -5,6 +5,7 @@ @@ -189,7 +189,7 @@ index 857da97..e48e24d 100644 #include "base/check_op.h" diff --git a/src/3rdparty/chromium/ui/gfx/geometry/linear_gradient.h b/src/3rdparty/chromium/ui/gfx/geometry/linear_gradient.h -index 7239ed5..975b88c 100644 +index 7239ed516..975b88c51 100644 --- a/src/3rdparty/chromium/ui/gfx/geometry/linear_gradient.h +++ b/src/3rdparty/chromium/ui/gfx/geometry/linear_gradient.h @@ -7,6 +7,7 @@ @@ -201,7 +201,7 @@ index 7239ed5..975b88c 100644 #include #include diff --git a/src/3rdparty/chromium/v8/src/base/macros.h b/src/3rdparty/chromium/v8/src/base/macros.h -index 93a99ec..f6ddfe7 100644 +index 488729dd5..d497f123d 100644 --- a/src/3rdparty/chromium/v8/src/base/macros.h +++ b/src/3rdparty/chromium/v8/src/base/macros.h @@ -5,6 +5,7 @@ @@ -213,7 +213,7 @@ index 93a99ec..f6ddfe7 100644 #include diff --git a/src/core/browsing_data_remover_delegate_qt.h b/src/core/browsing_data_remover_delegate_qt.h -index d33af4a..ce864b6 100644 +index d33af4acb..ce864b6bd 100644 --- a/src/core/browsing_data_remover_delegate_qt.h +++ b/src/core/browsing_data_remover_delegate_qt.h @@ -8,6 +8,8 @@ diff --git a/qtwebengine-fix-building-system-ffmpeg.patch b/qtwebengine-fix-building-system-ffmpeg.patch deleted file mode 100644 index 40e2e97..0000000 --- a/qtwebengine-fix-building-system-ffmpeg.patch +++ /dev/null @@ -1,214 +0,0 @@ -From 24e9ff7caa6aa78c1c73e7329cf1230a455d0c1b Mon Sep 17 00:00:00 2001 -From: Martin Negyokru -Date: Fri, 17 Jan 2025 15:40:37 +0100 -Subject: [PATCH] [fixup][ffmpeg] Fix building with system ffmpeg - -Refactor workaround for codec selection issues. -Introduce FindDecoder which meant to replace avcodec_find_decoder. -Imporove codec detection in format context. - -Fixes: QTBUG-132762 -Task-number: QTBUG-130273 -Change-Id: I6d520633ebebbb9bdb7aa71b8247066c2a662be3 -Reviewed-on: https://codereview.qt-project.org/c/qt/qtwebengine-chromium/+/617873 -Reviewed-by: Moss Heim -Reviewed-by: Allan Sandfeld Jensen -(cherry picked from commit 54a756b84e0b7a1104f9b336a1253fe36c573f56) -Reviewed-on: https://codereview.qt-project.org/c/qt/qtwebengine-chromium/+/624054 ---- - -diff --git a/src/3rdparty/chromium/media/cdm/library_cdm/clear_key_cdm/ffmpeg_cdm_audio_decoder.cc b/src/3rdparty/chromium/media/cdm/library_cdm/clear_key_cdm/ffmpeg_cdm_audio_decoder.cc -index 9646e70..5b9a02e 100644 ---- a/src/3rdparty/chromium/media/cdm/library_cdm/clear_key_cdm/ffmpeg_cdm_audio_decoder.cc -+++ b/src/3rdparty/chromium/media/cdm/library_cdm/clear_key_cdm/ffmpeg_cdm_audio_decoder.cc -@@ -177,7 +177,12 @@ - if (codec_context_->sample_fmt == AV_SAMPLE_FMT_S16P) - codec_context_->request_sample_fmt = AV_SAMPLE_FMT_S16; - -+#if BUILDFLAG(IS_QTWEBENGINE) && BUILDFLAG(USE_SYSTEM_FFMPEG) -+ const AVCodec* codec = -+ FindDecoder(codec_context_->codec_id, codec_context_->codec_whitelist); -+#else - const AVCodec* codec = avcodec_find_decoder(codec_context_->codec_id); -+#endif - if (!codec || avcodec_open2(codec_context_.get(), codec, NULL) < 0) { - DLOG(ERROR) << "Could not initialize audio decoder: " - << codec_context_->codec_id; -diff --git a/src/3rdparty/chromium/media/ffmpeg/ffmpeg_common.cc b/src/3rdparty/chromium/media/ffmpeg/ffmpeg_common.cc -index 63159ef..f872a8e 100644 ---- a/src/3rdparty/chromium/media/ffmpeg/ffmpeg_common.cc -+++ b/src/3rdparty/chromium/media/ffmpeg/ffmpeg_common.cc -@@ -29,6 +29,11 @@ - #endif - #endif - -+#if BUILDFLAG(IS_QTWEBENGINE) && BUILDFLAG(USE_SYSTEM_FFMPEG) -+extern "C" { -+#include -+} -+#endif - namespace media { - - namespace { -@@ -67,6 +72,24 @@ - VideoFrame::kFrameAddressAlignment % kFFmpegBufferAddressAlignment == 0, - "VideoFrame frame address alignment does not fit ffmpeg requirement"); - -+#if BUILDFLAG(IS_QTWEBENGINE) && BUILDFLAG(USE_SYSTEM_FFMPEG) -+const AVCodec* FindDecoder(AVCodecID id, const char* whitelist) { -+ if (!whitelist) { -+ return avcodec_find_decoder(id); -+ } -+ -+ void* i = 0; -+ const AVCodec* codec; -+ while (codec = av_codec_iterate(&i)) { -+ if (av_codec_is_decoder(codec) && codec->id == id && -+ av_match_list(codec->name, whitelist, ',')) { -+ return codec; -+ } -+ } -+ return nullptr; -+} -+#endif -+ - static const AVRational kMicrosBase = { 1, base::Time::kMicrosecondsPerSecond }; - - base::TimeDelta ConvertFromTimeBase(const AVRational& time_base, -diff --git a/src/3rdparty/chromium/media/ffmpeg/ffmpeg_common.h b/src/3rdparty/chromium/media/ffmpeg/ffmpeg_common.h -index 9993d34..2332722 100644 ---- a/src/3rdparty/chromium/media/ffmpeg/ffmpeg_common.h -+++ b/src/3rdparty/chromium/media/ffmpeg/ffmpeg_common.h -@@ -79,6 +79,12 @@ - av_frame_free(&frame); - } - -+#if BUILDFLAG(IS_QTWEBENGINE) && BUILDFLAG(USE_SYSTEM_FFMPEG) -+// Systemlib friendly version of avcodec_find_decoder that respects the -+// whitelisted codecs. -+MEDIA_EXPORT const AVCodec* FindDecoder(AVCodecID id, const char* whitelist); -+#endif -+ - // Converts an int64_t timestamp in |time_base| units to a base::TimeDelta. - // For example if |timestamp| equals 11025 and |time_base| equals {1, 44100} - // then the return value will be a base::TimeDelta for 0.25 seconds since that -diff --git a/src/3rdparty/chromium/media/filters/audio_file_reader.cc b/src/3rdparty/chromium/media/filters/audio_file_reader.cc -index dd4f3b5..172bd9a 100644 ---- a/src/3rdparty/chromium/media/filters/audio_file_reader.cc -+++ b/src/3rdparty/chromium/media/filters/audio_file_reader.cc -@@ -95,7 +95,12 @@ - } - - bool AudioFileReader::OpenDecoder() { -+#if BUILDFLAG(IS_QTWEBENGINE) && BUILDFLAG(USE_SYSTEM_FFMPEG) -+ const AVCodec* codec = -+ FindDecoder(codec_context_->codec_id, codec_context_->codec_whitelist); -+#else - const AVCodec* codec = avcodec_find_decoder(codec_context_->codec_id); -+#endif - if (codec) { - // MP3 decodes to S16P which we don't support, tell it to use S16 instead. - if (codec_context_->sample_fmt == AV_SAMPLE_FMT_S16P) -diff --git a/src/3rdparty/chromium/media/filters/ffmpeg_audio_decoder.cc b/src/3rdparty/chromium/media/filters/ffmpeg_audio_decoder.cc -index 22fa4d48..5d94b76 100644 ---- a/src/3rdparty/chromium/media/filters/ffmpeg_audio_decoder.cc -+++ b/src/3rdparty/chromium/media/filters/ffmpeg_audio_decoder.cc -@@ -360,19 +360,8 @@ - } - - #if BUILDFLAG(IS_QTWEBENGINE) && BUILDFLAG(USE_SYSTEM_FFMPEG) -- // Workaround http://crbug.com/41492567 -- // Chromium only supports the 'libopus' decoder. -- // 'avcodec_find_decoder' finds the experimental 'opus' decoder first -- // because the lookup is based on codec_id and both have the same id. -- // Bundled ffmpeg only have libopus but the system usually have both. -- const AVCodec* codec = [&config, this]() { -- if (config.codec() == AudioCodec::kOpus) -- return avcodec_find_decoder_by_name("libopus"); -- if (config.codec() == AudioCodec::kMP3) { -- return avcodec_find_decoder_by_name("mp3"); -- } -- return avcodec_find_decoder(codec_context_->codec_id); -- }(); -+ AVCodecID id = AudioCodecToCodecID(config.codec(), config.sample_format()); -+ const AVCodec* codec = FindDecoder(id, codec_context_->codec_whitelist); - #else - const AVCodec* codec = avcodec_find_decoder(codec_context_->codec_id); - #endif -diff --git a/src/3rdparty/chromium/media/filters/ffmpeg_glue.cc b/src/3rdparty/chromium/media/filters/ffmpeg_glue.cc -index 6407b5b..e9bd44b 100644 ---- a/src/3rdparty/chromium/media/filters/ffmpeg_glue.cc -+++ b/src/3rdparty/chromium/media/filters/ffmpeg_glue.cc -@@ -242,20 +242,27 @@ - LogContainer(is_local_file, container_); - - #if BUILDFLAG(IS_QTWEBENGINE) && BUILDFLAG(USE_SYSTEM_FFMPEG) -- // Sometimes FFmpeg is not aware of the whitelisted codecs and -- // configures streams and demuxers with unsupported codecs/params. -- // Force the correct codecs to avoid problems later. -+ // 'avformat_find_stream_info' is not aware of the whitelisted codecs. -+ // However it respects the codecs set in the format_context. -+ // Try to force the correct codecs here at context creation. - // https://ffmpeg.org/doxygen/7.0/structAVFormatContext.html#a52f39351b15890ef57cc6ff0ec9ab42d - // https://ffmpeg.org/doxygen/7.0/structAVFormatContext.html#ae5e087f4623b907517c0f7dd8327387d - -- // Note: don't forget to update FFmpeg[Audio|Video]Decoder::ConfigureDecoder -- -- if (strcmp(format_context_->iformat->name, "mp3") == 0) { -- const AVCodec* mp3_codec = avcodec_find_decoder_by_name("mp3"); -- if (mp3_codec) { -- format_context_->audio_codec = mp3_codec; -- } else { -- LOG(ERROR) << "No supported codec for mp3"; -+ for (int i = 0; i < format_context_->nb_streams; i++) { -+ AVCodecParameters *params = format_context_->streams[i]->codecpar; -+ if (!params) -+ continue; -+ const AVCodec* audio_codec = -+ FindDecoder(params->codec_id, GetAllowedAudioDecoders()); -+ if (audio_codec) { -+ if (format_context_->audio_codec && -+ format_context_->audio_codec != audio_codec) { -+ LOG(INFO) << "Conflicting codecs " << format_context_->audio_codec->name -+ << ", " << audio_codec->name; -+ format_context_->audio_codec = nullptr; -+ break; -+ } -+ format_context_->audio_codec = audio_codec; - } - } - #endif -diff --git a/src/3rdparty/chromium/media/filters/ffmpeg_video_decoder.cc b/src/3rdparty/chromium/media/filters/ffmpeg_video_decoder.cc -index d08ee1d..832a3fa 100644 ---- a/src/3rdparty/chromium/media/filters/ffmpeg_video_decoder.cc -+++ b/src/3rdparty/chromium/media/filters/ffmpeg_video_decoder.cc -@@ -524,7 +524,12 @@ - codec_context_->flags2 |= AV_CODEC_FLAG2_CHUNKS; - } - -+#if BUILDFLAG(IS_QTWEBENGINE) && BUILDFLAG(USE_SYSTEM_FFMPEG) -+ const AVCodec* codec = -+ FindDecoder(codec_context_->codec_id, codec_context_->codec_whitelist); -+#else - const AVCodec* codec = avcodec_find_decoder(codec_context_->codec_id); -+#endif - if (!codec || avcodec_open2(codec_context_.get(), codec, NULL) < 0) { - ReleaseFFmpegResources(); - return false; -diff --git a/src/3rdparty/chromium/media/filters/media_file_checker.cc b/src/3rdparty/chromium/media/filters/media_file_checker.cc -index a2d4757..afe40e4 100644 ---- a/src/3rdparty/chromium/media/filters/media_file_checker.cc -+++ b/src/3rdparty/chromium/media/filters/media_file_checker.cc -@@ -68,7 +68,12 @@ - auto context = AVStreamToAVCodecContext(format_context->streams[i]); - if (!context) - continue; -+#if BUILDFLAG(IS_QTWEBENGINE) && BUILDFLAG(USE_SYSTEM_FFMPEG) -+ const AVCodec* codec = -+ FindDecoder(cp->codec_id, context->codec_whitelist); -+#else - const AVCodec* codec = avcodec_find_decoder(cp->codec_id); -+#endif - if (codec && avcodec_open2(context.get(), codec, nullptr) >= 0) { - auto loop = std::make_unique(context.get()); - stream_contexts[i] = {std::move(context), std::move(loop)}; diff --git a/qtwebengine-fix-building-with-system-ffmpeg.patch b/qtwebengine-fix-building-with-system-ffmpeg.patch deleted file mode 100644 index 79a4b71..0000000 --- a/qtwebengine-fix-building-with-system-ffmpeg.patch +++ /dev/null @@ -1,574 +0,0 @@ -From 6e554a30893150793c2638e3689cf208ffc8e375 Mon Sep 17 00:00:00 2001 -From: Dale Curtis -Date: Sat, 2 Apr 2022 05:13:53 +0000 -Subject: [PATCH] Roll src/third_party/ffmpeg/ 574c39cce..32b2d1d526 (1125 - commits) - -https://chromium.googlesource.com/chromium/third_party/ffmpeg.git/+log/574c39cce323..32b2d1d526 - -Created with: - roll-dep src/third_party/ffmpeg - -Fixed: 1293918 -Cq-Include-Trybots: luci.chromium.try:mac_chromium_asan_rel_ng,linux_chromium_asan_rel_ng,linux_chromium_chromeos_asan_rel_ng -Change-Id: I41945d0f963e3d1f65940067bac22f63b68e37d2 -Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/3565647 -Auto-Submit: Dale Curtis -Reviewed-by: Dan Sanders -Commit-Queue: Dale Curtis -Cr-Commit-Position: refs/heads/main@{#988253} ---- - .../clear_key_cdm/ffmpeg_cdm_audio_decoder.cc | 29 ++++++++++--------- - media/ffmpeg/ffmpeg_common.cc | 11 +++---- - media/filters/audio_file_reader.cc | 9 +++--- - media/filters/audio_file_reader_unittest.cc | 6 ++-- - .../filters/audio_video_metadata_extractor.cc | 11 +++++-- - .../filters/ffmpeg_aac_bitstream_converter.cc | 7 +++-- - ...ffmpeg_aac_bitstream_converter_unittest.cc | 2 +- - media/filters/ffmpeg_audio_decoder.cc | 13 +++++---- - 8 files changed, 51 insertions(+), 37 deletions(-) - -diff --git a/src/3rdparty/chromium/media/cdm/library_cdm/clear_key_cdm/ffmpeg_cdm_audio_decoder.cc b/src/3rdparty/chromium/media/cdm/library_cdm/clear_key_cdm/ffmpeg_cdm_audio_decoder.cc -index c535d2b..62ddbc8 100644 ---- a/src/3rdparty/chromium/media/cdm/library_cdm/clear_key_cdm/ffmpeg_cdm_audio_decoder.cc -+++ b/src/3rdparty/chromium/media/cdm/library_cdm/clear_key_cdm/ffmpeg_cdm_audio_decoder.cc -@@ -74,7 +74,7 @@ void CdmAudioDecoderConfigToAVCodecContext( - codec_context->sample_fmt = AV_SAMPLE_FMT_NONE; - } - -- codec_context->channels = config.channel_count; -+ codec_context->ch_layout.nb_channels = config.channel_count; - codec_context->sample_rate = config.samples_per_second; - - if (config.extra_data) { -@@ -124,8 +124,8 @@ void CopySamples(cdm::AudioFormat cdm_format, - case cdm::kAudioFormatPlanarS16: - case cdm::kAudioFormatPlanarF32: { - const int decoded_size_per_channel = -- decoded_audio_size / av_frame.channels; -- for (int i = 0; i < av_frame.channels; ++i) { -+ decoded_audio_size / av_frame.ch_layout.nb_channels; -+ for (int i = 0; i < av_frame.ch_layout.nb_channels; ++i) { - memcpy(output_buffer, av_frame.extended_data[i], - decoded_size_per_channel); - output_buffer += decoded_size_per_channel; -@@ -185,13 +185,14 @@ bool FFmpegCdmAudioDecoder::Initialize( - // Success! - decoding_loop_ = std::make_unique(codec_context_.get()); - samples_per_second_ = config.samples_per_second; -- bytes_per_frame_ = codec_context_->channels * config.bits_per_channel / 8; -+ bytes_per_frame_ = -+ codec_context_->ch_layout.nb_channels * config.bits_per_channel / 8; - output_timestamp_helper_ = - std::make_unique(config.samples_per_second); - is_initialized_ = true; - - // Store initial values to guard against midstream configuration changes. -- channels_ = codec_context_->channels; -+ channels_ = codec_context_->ch_layout.nb_channels; - av_sample_format_ = codec_context_->sample_fmt; - - return true; -@@ -291,7 +292,8 @@ cdm::Status FFmpegCdmAudioDecoder::DecodeBuffer( - for (auto& frame : audio_frames) { - int decoded_audio_size = 0; - if (frame->sample_rate != samples_per_second_ || -- frame->channels != channels_ || frame->format != av_sample_format_) { -+ frame->ch_layout.nb_channels != channels_ || -+ frame->format != av_sample_format_) { - DLOG(ERROR) << "Unsupported midstream configuration change!" - << " Sample Rate: " << frame->sample_rate << " vs " - << samples_per_second_ -@@ -302,7 +304,7 @@ cdm::Status FFmpegCdmAudioDecoder::DecodeBuffer( - } - - decoded_audio_size = av_samples_get_buffer_size( -- nullptr, codec_context_->channels, frame->nb_samples, -+ nullptr, codec_context_->ch_layout.nb_channels, frame->nb_samples, - codec_context_->sample_fmt, 1); - if (!decoded_audio_size) - continue; -@@ -322,7 +324,7 @@ bool FFmpegCdmAudioDecoder::OnNewFrame( - std::vector>* audio_frames, - AVFrame* frame) { - *total_size += av_samples_get_buffer_size( -- nullptr, codec_context_->channels, frame->nb_samples, -+ nullptr, codec_context_->ch_layout.nb_channels, frame->nb_samples, - codec_context_->sample_fmt, 1); - audio_frames->emplace_back(av_frame_clone(frame)); - return true; -diff --git a/src/3rdparty/chromium/media/ffmpeg/ffmpeg_common.cc b/src/3rdparty/chromium/media/ffmpeg/ffmpeg_common.cc -index 2665355..910f9ad 100644 ---- a/src/3rdparty/chromium/media/ffmpeg/ffmpeg_common.cc -+++ b/src/3rdparty/chromium/media/ffmpeg/ffmpeg_common.cc -@@ -336,10 +336,11 @@ bool AVCodecContextToAudioDecoderConfig(const AVCodecContext* codec_context, - codec_context->sample_fmt, codec_context->codec_id); - - ChannelLayout channel_layout = -- codec_context->channels > 8 -+ codec_context->ch_layout.nb_channels > 8 - ? CHANNEL_LAYOUT_DISCRETE -- : ChannelLayoutToChromeChannelLayout(codec_context->channel_layout, -- codec_context->channels); -+ : ChannelLayoutToChromeChannelLayout( -+ codec_context->ch_layout.u.mask, -+ codec_context->ch_layout.nb_channels); - - switch (codec) { - // For AC3/EAC3 we enable only demuxing, but not decoding, so FFmpeg does -@@ -391,7 +392,7 @@ bool AVCodecContextToAudioDecoderConfig(const AVCodecContext* codec_context, - extra_data, encryption_scheme, seek_preroll, - codec_context->delay); - if (channel_layout == CHANNEL_LAYOUT_DISCRETE) -- config->SetChannelsForDiscrete(codec_context->channels); -+ config->SetChannelsForDiscrete(codec_context->ch_layout.nb_channels); - - #if BUILDFLAG(ENABLE_PLATFORM_AC3_EAC3_AUDIO) - // These are bitstream formats unknown to ffmpeg, so they don't have -@@ -460,7 +461,7 @@ void AudioDecoderConfigToAVCodecContext(const AudioDecoderConfig& config, - - // TODO(scherkus): should we set |channel_layout|? I'm not sure if FFmpeg uses - // said information to decode. -- codec_context->channels = config.channels(); -+ codec_context->ch_layout.nb_channels = config.channels(); - codec_context->sample_rate = config.samples_per_second(); - - if (config.extra_data().empty()) { -diff --git a/src/3rdparty/chromium/media/filters/audio_file_reader.cc b/src/3rdparty/chromium/media/filters/audio_file_reader.cc -index 777eabc..2b58dd7 100644 ---- a/src/3rdparty/chromium/media/filters/audio_file_reader.cc -+++ b/src/3rdparty/chromium/media/filters/audio_file_reader.cc -@@ -113,14 +113,15 @@ bool AudioFileReader::OpenDecoder() { - - // Verify the channel layout is supported by Chrome. Acts as a sanity check - // against invalid files. See http://crbug.com/171962 -- if (ChannelLayoutToChromeChannelLayout(codec_context_->channel_layout, -- codec_context_->channels) == -+ if (ChannelLayoutToChromeChannelLayout( -+ codec_context_->ch_layout.u.mask, -+ codec_context_->ch_layout.nb_channels) == - CHANNEL_LAYOUT_UNSUPPORTED) { - return false; - } - - // Store initial values to guard against midstream configuration changes. -- channels_ = codec_context_->channels; -+ channels_ = codec_context_->ch_layout.nb_channels; - audio_codec_ = CodecIDToAudioCodec(codec_context_->codec_id); - sample_rate_ = codec_context_->sample_rate; - av_sample_format_ = codec_context_->sample_fmt; -@@ -223,7 +224,7 @@ bool AudioFileReader::OnNewFrame( - if (frames_read < 0) - return false; - -- const int channels = frame->channels; -+ const int channels = frame->ch_layout.nb_channels; - if (frame->sample_rate != sample_rate_ || channels != channels_ || - frame->format != av_sample_format_) { - DLOG(ERROR) << "Unsupported midstream configuration change!" -diff --git a/src/3rdparty/chromium/media/filters/ffmpeg_aac_bitstream_converter.cc b/src/3rdparty/chromium/media/filters/ffmpeg_aac_bitstream_converter.cc -index 76b41aa..e26b6cd 100644 ---- a/src/3rdparty/chromium/media/filters/ffmpeg_aac_bitstream_converter.cc -+++ b/src/3rdparty/chromium/media/filters/ffmpeg_aac_bitstream_converter.cc -@@ -195,14 +195,15 @@ bool FFmpegAACBitstreamConverter::ConvertPacket(AVPacket* packet) { - if (!header_generated_ || codec_ != stream_codec_parameters_->codec_id || - audio_profile_ != stream_codec_parameters_->profile || - sample_rate_index_ != sample_rate_index || -- channel_configuration_ != stream_codec_parameters_->channels || -+ channel_configuration_ != -+ stream_codec_parameters_->ch_layout.nb_channels || - frame_length_ != header_plus_packet_size) { - header_generated_ = - GenerateAdtsHeader(stream_codec_parameters_->codec_id, - 0, // layer - stream_codec_parameters_->profile, sample_rate_index, - 0, // private stream -- stream_codec_parameters_->channels, -+ stream_codec_parameters_->ch_layout.nb_channels, - 0, // originality - 0, // home - 0, // copyrighted_stream -@@ -214,7 +215,7 @@ bool FFmpegAACBitstreamConverter::ConvertPacket(AVPacket* packet) { - codec_ = stream_codec_parameters_->codec_id; - audio_profile_ = stream_codec_parameters_->profile; - sample_rate_index_ = sample_rate_index; -- channel_configuration_ = stream_codec_parameters_->channels; -+ channel_configuration_ = stream_codec_parameters_->ch_layout.nb_channels; - frame_length_ = header_plus_packet_size; - } - -diff --git a/src/3rdparty/chromium/media/filters/ffmpeg_aac_bitstream_converter_unittest.cc b/src/3rdparty/chromium/media/filters/ffmpeg_aac_bitstream_converter_unittest.cc -index 3b46f7f..1897eb0 100644 ---- a/src/3rdparty/chromium/media/filters/ffmpeg_aac_bitstream_converter_unittest.cc -+++ b/src/3rdparty/chromium/media/filters/ffmpeg_aac_bitstream_converter_unittest.cc -@@ -34,7 +34,7 @@ class FFmpegAACBitstreamConverterTest : public testing::Test { - memset(&test_parameters_, 0, sizeof(AVCodecParameters)); - test_parameters_.codec_id = AV_CODEC_ID_AAC; - test_parameters_.profile = FF_PROFILE_AAC_MAIN; -- test_parameters_.channels = 2; -+ test_parameters_.ch_layout.nb_channels = 2; - test_parameters_.extradata = extradata_header_; - test_parameters_.extradata_size = sizeof(extradata_header_); - } -diff --git a/src/3rdparty/chromium/media/filters/ffmpeg_audio_decoder.cc b/src/3rdparty/chromium/media/filters/ffmpeg_audio_decoder.cc -index bf3ed00..d564ee9 100644 ---- a/src/3rdparty/chromium/media/filters/ffmpeg_audio_decoder.cc -+++ b/src/3rdparty/chromium/media/filters/ffmpeg_audio_decoder.cc -@@ -29,7 +29,7 @@ namespace media { - - // Return the number of channels from the data in |frame|. - static inline int DetermineChannels(AVFrame* frame) { -- return frame->channels; -+ return frame->ch_layout.nb_channels; - } - - // Called by FFmpeg's allocation routine to allocate a buffer. Uses -@@ -243,7 +243,7 @@ bool FFmpegAudioDecoder::OnNewFrame(const DecoderBuffer& buffer, - // Translate unsupported into discrete layouts for discrete configurations; - // ffmpeg does not have a labeled discrete configuration internally. - ChannelLayout channel_layout = ChannelLayoutToChromeChannelLayout( -- codec_context_->channel_layout, codec_context_->channels); -+ codec_context_->ch_layout.u.mask, codec_context_->ch_layout.nb_channels); - if (channel_layout == CHANNEL_LAYOUT_UNSUPPORTED && - config_.channel_layout() == CHANNEL_LAYOUT_DISCRETE) { - channel_layout = CHANNEL_LAYOUT_DISCRETE; -@@ -360,11 +360,11 @@ bool FFmpegAudioDecoder::ConfigureDecoder(const AudioDecoderConfig& config) { - // Success! - av_sample_format_ = codec_context_->sample_fmt; - -- if (codec_context_->channels != config.channels()) { -+ if (codec_context_->ch_layout.nb_channels != config.channels()) { - MEDIA_LOG(ERROR, media_log_) - << "Audio configuration specified " << config.channels() - << " channels, but FFmpeg thinks the file contains " -- << codec_context_->channels << " channels"; -+ << codec_context_->ch_layout.nb_channels << " channels"; - ReleaseFFmpegResources(); - state_ = DecoderState::kUninitialized; - return false; -@@ -415,7 +415,7 @@ int FFmpegAudioDecoder::GetAudioBuffer(struct AVCodecContext* s, - if (frame->nb_samples <= 0) - return AVERROR(EINVAL); - -- if (s->channels != channels) { -+ if (s->ch_layout.nb_channels != channels) { - DLOG(ERROR) << "AVCodecContext and AVFrame disagree on channel count."; - return AVERROR(EINVAL); - } -@@ -448,7 +448,8 @@ int FFmpegAudioDecoder::GetAudioBuffer(struct AVCodecContext* s, - ChannelLayout channel_layout = - config_.channel_layout() == CHANNEL_LAYOUT_DISCRETE - ? CHANNEL_LAYOUT_DISCRETE -- : ChannelLayoutToChromeChannelLayout(s->channel_layout, s->channels); -+ : ChannelLayoutToChromeChannelLayout(s->ch_layout.u.mask, -+ s->ch_layout.nb_channels); - - if (channel_layout == CHANNEL_LAYOUT_UNSUPPORTED) { - DLOG(ERROR) << "Unsupported channel layout."; -commit 62274859104bd828373ae406aa9309e610449ac5 -Author: Ted Meyer -Date: Fri Mar 22 19:56:55 2024 +0000 - - Replace deprecated use of AVCodecContext::reordered_opaque - - We can use the AV_CODEC_FLAG_COPY_OPAQUE flag on the codec context - now to trigger timestamp propagation. - - Bug: 330573128 - Change-Id: I6bc57241a35ab5283742aad8d42acb4dc5e85858 - Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/5384308 - Commit-Queue: Ted (Chromium) Meyer - Reviewed-by: Dan Sanders - Cr-Commit-Position: refs/heads/main@{#1277051} - -diff --git a/src/3rdparty/chromium/media/ffmpeg/ffmpeg_common.cc b/src/3rdparty/chromium/media/ffmpeg/ffmpeg_common.cc -index 910f9ad..8be165c 100644 ---- a/src/3rdparty/chromium/media/ffmpeg/ffmpeg_common.cc -+++ b/src/3rdparty/chromium/media/ffmpeg/ffmpeg_common.cc -@@ -411,7 +411,9 @@ bool AVCodecContextToAudioDecoderConfig(const AVCodecContext* codec_context, - - // TODO(dalecurtis): Just use the profile from the codec context if ffmpeg - // ever starts supporting xHE-AAC. -- if (codec_context->profile == FF_PROFILE_UNKNOWN) { -+ constexpr uint8_t kXHEAAc = 41; -+ if (codec_context->profile == FF_PROFILE_UNKNOWN || -+ codec_context->profile == kXHEAAc) { - // Errors aren't fatal here, so just drop any MediaLog messages. - NullMediaLog media_log; - mp4::AAC aac_parser; -diff --git a/src/3rdparty/chromium/media/ffmpeg/ffmpeg_regression_tests.cc b/src/3rdparty/chromium/media/ffmpeg/ffmpeg_regression_tests.cc -index 05dcb1c..866f446 100644 ---- a/src/3rdparty/chromium/media/ffmpeg/ffmpeg_regression_tests.cc -+++ b/src/3rdparty/chromium/media/ffmpeg/ffmpeg_regression_tests.cc -@@ -90,16 +90,16 @@ FFMPEG_TEST_CASE(Cr62127, - PIPELINE_ERROR_DECODE, - PIPELINE_ERROR_DECODE); - FFMPEG_TEST_CASE(Cr93620, "security/93620.ogg", PIPELINE_OK, PIPELINE_OK); --FFMPEG_TEST_CASE(Cr100492, -- "security/100492.webm", -- DECODER_ERROR_NOT_SUPPORTED, -- DECODER_ERROR_NOT_SUPPORTED); -+FFMPEG_TEST_CASE(Cr100492, "security/100492.webm", PIPELINE_OK, PIPELINE_OK); - FFMPEG_TEST_CASE(Cr100543, "security/100543.webm", PIPELINE_OK, PIPELINE_OK); - FFMPEG_TEST_CASE(Cr101458, - "security/101458.webm", - PIPELINE_ERROR_DECODE, - PIPELINE_ERROR_DECODE); --FFMPEG_TEST_CASE(Cr108416, "security/108416.webm", PIPELINE_OK, PIPELINE_OK); -+FFMPEG_TEST_CASE(Cr108416, -+ "security/108416.webm", -+ PIPELINE_ERROR_DECODE, -+ PIPELINE_ERROR_DECODE); - FFMPEG_TEST_CASE(Cr110849, - "security/110849.mkv", - DEMUXER_ERROR_COULD_NOT_OPEN, -@@ -154,7 +154,10 @@ FFMPEG_TEST_CASE(Cr234630b, - "security/234630b.mov", - DEMUXER_ERROR_NO_SUPPORTED_STREAMS, - DEMUXER_ERROR_NO_SUPPORTED_STREAMS); --FFMPEG_TEST_CASE(Cr242786, "security/242786.webm", PIPELINE_OK, PIPELINE_OK); -+FFMPEG_TEST_CASE(Cr242786, -+ "security/242786.webm", -+ PIPELINE_OK, -+ PIPELINE_ERROR_DECODE); - // Test for out-of-bounds access with slightly corrupt file (detection logic - // thinks it's a MONO file, but actually contains STEREO audio). - FFMPEG_TEST_CASE(Cr275590, -@@ -372,8 +375,8 @@ FFMPEG_TEST_CASE(WEBM_2, - DEMUXER_ERROR_NO_SUPPORTED_STREAMS); - FFMPEG_TEST_CASE(WEBM_4, - "security/out.webm.68798.1929", -- DECODER_ERROR_NOT_SUPPORTED, -- DECODER_ERROR_NOT_SUPPORTED); -+ PIPELINE_OK, -+ PIPELINE_OK); - FFMPEG_TEST_CASE(WEBM_5, "frame_size_change.webm", PIPELINE_OK, PIPELINE_OK); - - // General MKV test cases. -diff --git a/src/3rdparty/chromium/media/filters/audio_decoder_unittest.cc b/src/3rdparty/chromium/media/filters/audio_decoder_unittest.cc -index a7b2533..ba3c308 100644 ---- a/src/3rdparty/chromium/media/filters/audio_decoder_unittest.cc -+++ b/src/3rdparty/chromium/media/filters/audio_decoder_unittest.cc -@@ -484,7 +484,7 @@ constexpr TestParams kXheAacTestParams[] = { - }}, - 0, - 29400, -- CHANNEL_LAYOUT_MONO, -+ CHANNEL_LAYOUT_UNSUPPORTED, - AudioCodecProfile::kXHE_AAC}, - #endif - {AudioCodec::kAAC, -diff --git a/src/3rdparty/chromium/media/filters/audio_file_reader.cc b/src/3rdparty/chromium/media/filters/audio_file_reader.cc -index 2b58dd7..9d37f32 100644 ---- a/src/3rdparty/chromium/media/filters/audio_file_reader.cc -+++ b/src/3rdparty/chromium/media/filters/audio_file_reader.cc -@@ -243,18 +243,10 @@ bool AudioFileReader::OnNewFrame( - // silence from being output. In the case where we are also discarding some - // portion of the packet (as indicated by a negative pts), we further want to - // adjust the duration downward by however much exists before zero. --#if BUILDFLAG(USE_SYSTEM_FFMPEG) -- if (audio_codec_ == AudioCodec::kAAC && frame->pkt_duration) { --#else - if (audio_codec_ == AudioCodec::kAAC && frame->duration) { --#endif // BUILDFLAG(USE_SYSTEM_FFMPEG) - const base::TimeDelta pkt_duration = ConvertFromTimeBase( - glue_->format_context()->streams[stream_index_]->time_base, --#if BUILDFLAG(USE_SYSTEM_FFMPEG) -- frame->pkt_duration + std::min(static_cast(0), frame->pts)); --#else - frame->duration + std::min(static_cast(0), frame->pts)); --#endif // BUILDFLAG(USE_SYSTEM_FFMPEG) - const base::TimeDelta frame_duration = - base::Seconds(frames_read / static_cast(sample_rate_)); - -diff --git a/src/3rdparty/chromium/media/filters/audio_file_reader_unittest.cc b/src/3rdparty/chromium/media/filters/audio_file_reader_unittest.cc -index a1c633d..5784fe1 100644 ---- a/src/3rdparty/chromium/media/filters/audio_file_reader_unittest.cc -+++ b/src/3rdparty/chromium/media/filters/audio_file_reader_unittest.cc -@@ -61,15 +61,14 @@ class AudioFileReaderTest : public testing::Test { - // Verify packets are consistent across demuxer runs. Reads the first few - // packets and then seeks back to the start timestamp and verifies that the - // hashes match on the packets just read. -- void VerifyPackets() { -- const int kReads = 3; -+ void VerifyPackets(int packet_reads) { - const int kTestPasses = 2; - - AVPacket packet; - base::TimeDelta start_timestamp; - std::vector packet_md5_hashes_; - for (int i = 0; i < kTestPasses; ++i) { -- for (int j = 0; j < kReads; ++j) { -+ for (int j = 0; j < packet_reads; ++j) { - ASSERT_TRUE(reader_->ReadPacketForTesting(&packet)); - - // On the first pass save the MD5 hash of each packet, on subsequent -@@ -98,7 +97,8 @@ class AudioFileReaderTest : public testing::Test { - int sample_rate, - base::TimeDelta duration, - int frames, -- int expected_frames) { -+ int expected_frames, -+ int packet_reads = 3) { - Initialize(fn); - ASSERT_TRUE(reader_->Open()); - EXPECT_EQ(channels, reader_->channels()); -@@ -112,7 +112,7 @@ class AudioFileReaderTest : public testing::Test { - EXPECT_EQ(reader_->HasKnownDuration(), false); - } - if (!packet_verification_disabled_) -- ASSERT_NO_FATAL_FAILURE(VerifyPackets()); -+ ASSERT_NO_FATAL_FAILURE(VerifyPackets(packet_reads)); - ReadAndVerify(hash, expected_frames); - } - -@@ -219,7 +219,7 @@ TEST_F(AudioFileReaderTest, AAC_ADTS) { - } - - TEST_F(AudioFileReaderTest, MidStreamConfigChangesFail) { -- RunTestFailingDecode("midstream_config_change.mp3", 42624); -+ RunTestFailingDecode("midstream_config_change.mp3", 0); - } - #endif - -@@ -229,7 +229,7 @@ TEST_F(AudioFileReaderTest, VorbisInvalidChannelLayout) { - - TEST_F(AudioFileReaderTest, WaveValidFourChannelLayout) { - RunTest("4ch.wav", "131.71,38.02,130.31,44.89,135.98,42.52,", 4, 44100, -- base::Microseconds(100001), 4411, 4410); -+ base::Microseconds(100001), 4411, 4410, /*packet_reads=*/2); - } - - TEST_F(AudioFileReaderTest, ReadPartialMP3) { -diff --git a/src/3rdparty/chromium/media/filters/ffmpeg_video_decoder.cc b/src/3rdparty/chromium/media/filters/ffmpeg_video_decoder.cc -index e62b2af..ab39796 100644 ---- a/src/3rdparty/chromium/media/filters/ffmpeg_video_decoder.cc -+++ b/src/3rdparty/chromium/media/filters/ffmpeg_video_decoder.cc -@@ -125,7 +125,7 @@ bool FFmpegVideoDecoder::IsCodecSupported(VideoCodec codec) { - } - - FFmpegVideoDecoder::FFmpegVideoDecoder(MediaLog* media_log) -- : media_log_(media_log) { -+ : media_log_(media_log), timestamp_map_(128) { - DVLOG(1) << __func__; - DETACH_FROM_SEQUENCE(sequence_checker_); - } -@@ -204,10 +204,6 @@ int FFmpegVideoDecoder::GetVideoBuffer(struct AVCodecContext* codec_context, - frame->linesize[plane] = layout->planes()[plane].stride; - } - -- // This seems unsafe, given threaded decoding. However, `reordered_opaque` is -- // also going away upstream, so we need a whole new mechanism either way. -- frame->reordered_opaque = codec_context->reordered_opaque; -- - // This will be freed by `ReleaseVideoBufferImpl`. - auto* opaque = new OpaqueData(fb_priv, frame_pool_, data, allocation_size, - std::move(*layout)); -@@ -354,8 +350,10 @@ bool FFmpegVideoDecoder::FFmpegDecode(const DecoderBuffer& buffer) { - DCHECK(packet->data); - DCHECK_GT(packet->size, 0); - -- // Let FFmpeg handle presentation timestamp reordering. -- codec_context_->reordered_opaque = buffer.timestamp().InMicroseconds(); -+ const int64_t timestamp = buffer.timestamp().InMicroseconds(); -+ const TimestampId timestamp_id = timestamp_id_generator_.GenerateNextId(); -+ timestamp_map_.Put(std::make_pair(timestamp_id, timestamp)); -+ packet->opaque = reinterpret_cast(timestamp_id.GetUnsafeValue()); - } - FFmpegDecodingLoop::DecodeStatus decode_status = decoding_loop_->DecodePacket( - packet, base::BindRepeating(&FFmpegVideoDecoder::OnNewFrame, -@@ -414,7 +412,12 @@ bool FFmpegVideoDecoder::OnNewFrame(AVFrame* frame) { - } - gfx::Size natural_size = aspect_ratio.GetNaturalSize(visible_rect); - -- const auto pts = base::Microseconds(frame->reordered_opaque); -+ const auto ts_id = TimestampId(reinterpret_cast(frame->opaque)); -+ const auto ts_lookup = timestamp_map_.Get(ts_id); -+ if (ts_lookup == timestamp_map_.end()) { -+ return false; -+ } -+ const auto pts = base::Microseconds(std::get<1>(*ts_lookup)); - auto video_frame = VideoFrame::WrapExternalDataWithLayout( - opaque->layout, visible_rect, natural_size, opaque->data, opaque->size, - pts); -@@ -489,8 +492,10 @@ bool FFmpegVideoDecoder::ConfigureDecoder(const VideoDecoderConfig& config, - codec_context_->thread_count = GetFFmpegVideoDecoderThreadCount(config); - codec_context_->thread_type = - FF_THREAD_SLICE | (low_delay ? 0 : FF_THREAD_FRAME); -+ - codec_context_->opaque = this; - codec_context_->get_buffer2 = GetVideoBufferImpl; -+ codec_context_->flags |= AV_CODEC_FLAG_COPY_OPAQUE; - - if (decode_nalus_) - codec_context_->flags2 |= AV_CODEC_FLAG2_CHUNKS; -diff --git a/src/3rdparty/chromium/media/filters/ffmpeg_video_decoder.h b/src/3rdparty/chromium/media/filters/ffmpeg_video_decoder.h -index 60cb9d5..4fa8628 100644 ---- a/src/3rdparty/chromium/media/filters/ffmpeg_video_decoder.h -+++ b/src/3rdparty/chromium/media/filters/ffmpeg_video_decoder.h -@@ -7,10 +7,12 @@ - - #include - -+#include "base/containers/lru_cache.h" - #include "base/functional/callback.h" - #include "base/memory/raw_ptr.h" - #include "base/memory/scoped_refptr.h" - #include "base/sequence_checker.h" -+#include "base/types/id_type.h" - #include "media/base/supported_video_decoder_config.h" - #include "media/base/video_decoder.h" - #include "media/base/video_decoder_config.h" -@@ -87,6 +89,20 @@ class MEDIA_EXPORT FFmpegVideoDecoder : public VideoDecoder { - // FFmpeg structures owned by this object. - std::unique_ptr codec_context_; - -+ // The gist here is that timestamps need to be 64 bits to store microsecond -+ // precision. A 32 bit integer would overflow at ~35 minutes at this level of -+ // precision. We can't cast the timestamp to the void ptr object used by the -+ // opaque field in ffmpeg then, because it would lose data on a 32 bit build. -+ // However, we don't actually have 2^31 timestamped frames in a single -+ // playback, so it's fine to use the 32 bit value as a key in a map which -+ // contains the actual timestamps. Additionally, we've in the past set 128 -+ // outstanding frames for re-ordering as a limit for cross-thread decoding -+ // tasks, so we'll do that here too with the LRU cache. -+ using TimestampId = base::IdType; -+ -+ TimestampId::Generator timestamp_id_generator_; -+ base::LRUCache timestamp_map_; -+ - VideoDecoderConfig config_; - - scoped_refptr frame_pool_; -diff --git a/src/3rdparty/chromium/third_party/webrtc/modules/video_coding/codecs/h264/h264_decoder_impl.cc b/src/3rdparty/chromium/third_party/webrtc/modules/video_coding/codecs/h264/h264_decoder_impl.cc -index f67718c..fe42aef 100644 ---- a/src/3rdparty/chromium/third_party/webrtc/modules/video_coding/codecs/h264/h264_decoder_impl.cc -+++ b/src/3rdparty/chromium/third_party/webrtc/modules/video_coding/codecs/h264/h264_decoder_impl.cc -@@ -229,7 +229,6 @@ int H264DecoderImpl::AVGetBuffer2(AVCodecContext* context, - int total_size = y_size + 2 * uv_size; - - av_frame->format = context->pix_fmt; -- av_frame->reordered_opaque = context->reordered_opaque; - - // Create a VideoFrame object, to keep a reference to the buffer. - // TODO(nisse): The VideoFrame's timestamp and rotation info is not used. -@@ -377,8 +376,6 @@ int32_t H264DecoderImpl::Decode(const EncodedImage& input_image, - return WEBRTC_VIDEO_CODEC_ERROR; - } - packet->size = static_cast(input_image.size()); -- int64_t frame_timestamp_us = input_image.ntp_time_ms_ * 1000; // ms -> μs -- av_context_->reordered_opaque = frame_timestamp_us; - - int result = avcodec_send_packet(av_context_.get(), packet.get()); - -@@ -395,10 +392,6 @@ int32_t H264DecoderImpl::Decode(const EncodedImage& input_image, - return WEBRTC_VIDEO_CODEC_ERROR; - } - -- // We don't expect reordering. Decoded frame timestamp should match -- // the input one. -- RTC_DCHECK_EQ(av_frame_->reordered_opaque, frame_timestamp_us); -- - // TODO(sakal): Maybe it is possible to get QP directly from FFmpeg. - h264_bitstream_parser_.ParseBitstream(input_image); - absl::optional qp = h264_bitstream_parser_.GetLastSliceQp(); diff --git a/qtwebengine-use-openh264.patch b/qtwebengine-use-openh264.patch index cdf68f4..c3541e2 100644 --- a/qtwebengine-use-openh264.patch +++ b/qtwebengine-use-openh264.patch @@ -1,9 +1,9 @@ diff --git a/src/core/CMakeLists.txt b/src/core/CMakeLists.txt -index de5222645..eb27e8b4e 100644 +index cc992b4..7b6326f 100644 --- a/src/core/CMakeLists.txt +++ b/src/core/CMakeLists.txt -@@ -448,6 +448,8 @@ foreach(arch ${archs}) - use_udev=true +@@ -449,6 +449,8 @@ foreach(arch ${archs}) + use_bluez=false is_cfi=false use_ozone=true + media_use_openh264=true diff --git a/qtwebengine-webrtc-fix-build-with-pipewire.patch b/qtwebengine-webrtc-fix-build-with-pipewire.patch new file mode 100644 index 0000000..4a3b5f3 --- /dev/null +++ b/qtwebengine-webrtc-fix-build-with-pipewire.patch @@ -0,0 +1,34 @@ +diff --git a/src/3rdparty/chromium/third_party/webrtc/AUTHORS b/src/3rdparty/chromium/third_party/webrtc/AUTHORS +index 064e12611..0543ba699 100644 +--- a/src/3rdparty/chromium/third_party/webrtc/AUTHORS ++++ b/src/3rdparty/chromium/third_party/webrtc/AUTHORS +@@ -60,6 +60,7 @@ Hans Knoechel + Helmut Januschka + Hugues Ekra + Hyungjoo Na ++Ilya Katsnelson + Jake Hilton + James H. Brown + Jan Grulich +diff --git a/src/3rdparty/chromium/third_party/webrtc/modules/video_capture/linux/pipewire_session.cc b/src/3rdparty/chromium/third_party/webrtc/modules/video_capture/linux/pipewire_session.cc +index e9f7f765a..358cf3d7e 100644 +--- a/src/3rdparty/chromium/third_party/webrtc/modules/video_capture/linux/pipewire_session.cc ++++ b/src/3rdparty/chromium/third_party/webrtc/modules/video_capture/linux/pipewire_session.cc +@@ -85,7 +85,7 @@ PipeWireNode::PipeWireNode(PipeWireSession* session, + .param = OnNodeParam, + }; + +- pw_node_add_listener(proxy_, &node_listener_, &node_events, this); ++ pw_node_add_listener(reinterpret_cast(proxy_), &node_listener_, &node_events, this); + } + + // static +@@ -117,7 +117,7 @@ void PipeWireNode::OnNodeInfo(void* data, const pw_node_info* info) { + uint32_t id = info->params[i].id; + if (id == SPA_PARAM_EnumFormat && + info->params[i].flags & SPA_PARAM_INFO_READ) { +- pw_node_enum_params(that->proxy_, 0, id, 0, UINT32_MAX, nullptr); ++ pw_node_enum_params(reinterpret_cast(that->proxy_), 0, id, 0, UINT32_MAX, nullptr); + break; + } + } diff --git a/series.ppc64 b/series.ppc64 index dc1fa95..3b39d8d 100644 --- a/series.ppc64 +++ b/series.ppc64 @@ -1,4 +1,4 @@ -# from chromium-122.0.6261.128 patchset on quickbuild.io +# from chromium-130 branch at https://gitlab.raptorengineering.com/raptor-engineering-public/chromium/openpower-patches.git # do following edits to the patches: # - third_party/0001-Add-PPC64-support-for-boringssl.patch # - remove third_party/boringssl/src/crypto/test/abi_test.h @@ -34,11 +34,9 @@ ppc64le/third_party/0002-third_party-lss-kernel-structs.patch ppc64le/libaom/0001-Add-ppc64-target-to-libaom.patch ppc64le/libaom/0001-Add-pregenerated-config-for-libaom-on-ppc64.patch ppc64le/third_party/0002-third_party-libvpx-Remove-bad-ppc64-config.patch -ppc64le/third_party/0002-third-party-boringssl-add-generated-files.patch +ppc64le/third_party/0002-Add-PPC64-generated-files-for-boringssl.patch ppc64le/third_party/0003-third_party-libvpx-Add-ppc64-generated-config.patch ppc64le/crashpad/0001-Implement-support-for-PPC64-on-Linux.patch ppc64le/fixes/fix-partition-alloc-compile.patch -ppc64le/third_party/0001-Fix-highway-ppc-hwcap.patch ppc64le/third_party/use-sysconf-page-size-on-ppc64.patch -ppc64le/third_party/dawn-fix-typos.patch ppc64le/third_party/dawn-fix-ppc64le-detection.patch diff --git a/sources b/sources index b5e54a6..2649114 100644 --- a/sources +++ b/sources @@ -1,2 +1,2 @@ -SHA512 (qtwebengine-everywhere-src-6.8.2-clean.tar.xz) = 815e632075a7c5bd8950d887f56c66eac280dc02fed976907b8c377544563d19d1bef632336c2d170fdfb55cb271c8982dae3dffce2c2c44646d212125ebb3b3 +SHA512 (qtwebengine-everywhere-src-6.9.0-clean.tar.xz) = 24559401f39401b8b13959762c08beeb0fd334b5947a63ffd43a4dc7d65a8178dc819d6b917bdc18faed196ae75bfcac46e85f88cb15c5fb0e0b1a3f3dcc5739 SHA512 (pulseaudio-12.2-headers.tar.gz) = a5a9bcbb16030b3bc83cc0cc8f5e7f90e0723d3e83258a5c77eacb32eaa267118a73fa7814fbcc99a24e4907916a2b371ebb6dedc4f45541c3acf6c834fd35be From 79e1887050f43bead37c4df474616a6c68e56cf4 Mon Sep 17 00:00:00 2001 From: Jan Grulich Date: Wed, 2 Apr 2025 14:50:20 +0200 Subject: [PATCH 45/76] 6.9.0 --- qt6-qtwebengine.spec | 7 +++++-- sources | 2 +- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/qt6-qtwebengine.spec b/qt6-qtwebengine.spec index 9ab6426..d251557 100644 --- a/qt6-qtwebengine.spec +++ b/qt6-qtwebengine.spec @@ -55,8 +55,8 @@ Summary: Qt6 - QtWebEngine components Name: qt6-qtwebengine -Version: 6.9.0%{?unstable:~%{prerelease}} -Release: 0.1%{?dist} +Version: 6.9.0 +Release: 1%{?dist} # See LICENSE.GPL LICENSE.LGPL LGPL_EXCEPTION.txt, for details # See also http://qt-project.org/doc/qt-5.0/qtdoc/licensing.html @@ -737,6 +737,9 @@ done %endif %changelog +* Wed Apr 02 2025 Jan Grulich - 6.9.0-1 +- 6.9.0 + * Mon Mar 24 2025 Jan Grulich - 6.9.0-0.1 - 6.9.0 RC diff --git a/sources b/sources index 2649114..9b4d189 100644 --- a/sources +++ b/sources @@ -1,2 +1,2 @@ -SHA512 (qtwebengine-everywhere-src-6.9.0-clean.tar.xz) = 24559401f39401b8b13959762c08beeb0fd334b5947a63ffd43a4dc7d65a8178dc819d6b917bdc18faed196ae75bfcac46e85f88cb15c5fb0e0b1a3f3dcc5739 +SHA512 (qtwebengine-everywhere-src-6.9.0-clean.tar.xz) = 003c4372dddc112bf0e48ee644301e948729e9fc119ada4d420410ad04ac78a1665af6023e99d73516316e8298e5f19e59e4c1f37c91607d66b401b8a688b7e7 SHA512 (pulseaudio-12.2-headers.tar.gz) = a5a9bcbb16030b3bc83cc0cc8f5e7f90e0723d3e83258a5c77eacb32eaa267118a73fa7814fbcc99a24e4907916a2b371ebb6dedc4f45541c3acf6c834fd35be From 6c0aac45378a897c5b80c7bd18f1194a433c1fe6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dan=20Hor=C3=A1k?= Date: Wed, 2 Apr 2025 17:07:14 +0000 Subject: [PATCH 46/76] fix build on ppc64le with gcc-15.0.1-0.11+ --- qtwebengine-chromium-ppc64.patch | 13 +++++++++++++ series.ppc64 | 1 + 2 files changed, 14 insertions(+) diff --git a/qtwebengine-chromium-ppc64.patch b/qtwebengine-chromium-ppc64.patch index b9e6eb2..4b5d07f 100644 --- a/qtwebengine-chromium-ppc64.patch +++ b/qtwebengine-chromium-ppc64.patch @@ -30731,3 +30731,16 @@ Index: chromium-130.0.6723.44/third_party/dawn/src/dawn/common/Platform.h #elif defined(__wasm32__) #define DAWN_PLATFORM_IS_WASM32 1 +Index: chromium-130.0.6723.44/third_party/skia/src/core/SkRasterPipeline.h +=================================================================== +--- chromium-130.0.6723.44.orig/third_party/skia/src/core/SkRasterPipeline.h ++++ chromium-130.0.6723.44/third_party/skia/src/core/SkRasterPipeline.h +@@ -27,7 +27,7 @@ struct SkImageInfo; + struct skcms_TransferFunction; + + #if __has_cpp_attribute(clang::musttail) && !defined(__EMSCRIPTEN__) && !defined(SK_CPU_ARM32) && \ +- !defined(SK_CPU_LOONGARCH) && !(defined(_WIN32) && defined(SK_BUILD_FOR_ANDROID_FRAMEWORK)) ++ !defined(SK_CPU_LOONGARCH) && !(defined(_WIN32) && defined(SK_BUILD_FOR_ANDROID_FRAMEWORK)) && !defined(__powerpc64__) + // [[clang::musttail]] is disabled for the Android version of Skia running on Windows as it + // causes crashes (This is probably related to http://crbug.com/1505442). + #define SK_HAS_MUSTTAIL 1 diff --git a/series.ppc64 b/series.ppc64 index 3b39d8d..a5731a0 100644 --- a/series.ppc64 +++ b/series.ppc64 @@ -40,3 +40,4 @@ ppc64le/crashpad/0001-Implement-support-for-PPC64-on-Linux.patch ppc64le/fixes/fix-partition-alloc-compile.patch ppc64le/third_party/use-sysconf-page-size-on-ppc64.patch ppc64le/third_party/dawn-fix-ppc64le-detection.patch +ppc64le/workarounds/HACK-debian-clang-disable-skia-musttail.patch From 08ba518990759852218475511b322f6eff109fd3 Mon Sep 17 00:00:00 2001 From: Marie Loise Nolden Date: Sat, 19 Apr 2025 15:48:33 +0000 Subject: [PATCH 47/76] libva only for fedora --- qt6-qtwebengine.spec | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/qt6-qtwebengine.spec b/qt6-qtwebengine.spec index d251557..ed6694e 100644 --- a/qt6-qtwebengine.spec +++ b/qt6-qtwebengine.spec @@ -221,8 +221,9 @@ BuildRequires: pkgconfig(libavcodec) BuildRequires: pkgconfig(libavformat) BuildRequires: pkgconfig(libavutil) BuildRequires: pkgconfig(openh264) +%if 0%{?fedora} && 0%{?fedora} >= 39 BuildRequires: pkgconfig(libva) - +%endif %if 0%{?fedora} && 0%{?fedora} >= 39 BuildRequires: python3-zombie-imp %endif From b90081532bae65537769926c6bedc82a59ca448e Mon Sep 17 00:00:00 2001 From: Marie Loise Nolden Date: Sat, 19 Apr 2025 15:50:54 +0000 Subject: [PATCH 48/76] undo last commit --- qt6-qtwebengine.spec | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/qt6-qtwebengine.spec b/qt6-qtwebengine.spec index ed6694e..d251557 100644 --- a/qt6-qtwebengine.spec +++ b/qt6-qtwebengine.spec @@ -221,9 +221,8 @@ BuildRequires: pkgconfig(libavcodec) BuildRequires: pkgconfig(libavformat) BuildRequires: pkgconfig(libavutil) BuildRequires: pkgconfig(openh264) -%if 0%{?fedora} && 0%{?fedora} >= 39 BuildRequires: pkgconfig(libva) -%endif + %if 0%{?fedora} && 0%{?fedora} >= 39 BuildRequires: python3-zombie-imp %endif From 1b504add43c2002a2f3ed6d7053a73b8f992795d Mon Sep 17 00:00:00 2001 From: Marie Loise Nolden Date: Sun, 20 Apr 2025 17:17:19 +0200 Subject: [PATCH 49/76] global define all optional system libs, enable XFA --- qt6-qtwebengine.spec | 250 ++++++++++++++++++++++++++++++------------- 1 file changed, 174 insertions(+), 76 deletions(-) diff --git a/qt6-qtwebengine.spec b/qt6-qtwebengine.spec index d251557..d3f9174 100644 --- a/qt6-qtwebengine.spec +++ b/qt6-qtwebengine.spec @@ -5,14 +5,42 @@ # package-notes causes FTBFS (#2043178) %undefine _package_note_file -%global use_system_libxslt 1 -%global use_system_libxml 1 -%global use_system_libwebp 1 -%global use_system_jsoncpp 1 -%if 0%{?rhel} && 0%{?rhel} == 9 -%global use_system_libicu 0 -%else +# defines for Optional system libraries: +%global use_system_re2 1 %global use_system_libicu 1 +%global use_system_libwebp 1 +%global use_system_opus 1 +%global use_system_ffmpeg 1 +# libvpx is exclusive with VA-API support (libva) which is enabled by default +%global use_system_libvpx 0 +%global use_system_snappy 1 +%global use_system_glib 1 +%global use_system_zlib 1 +%global use_system_minizip 1 +%global use_system_libevent 1 +%global use_system_libxml 1 +%global use_system_lcms2 1 +%global use_system_libpng 1 +%global use_system_libtiff 1 +%global use_system_libjpeg 1 +%global use_system_libopenjpeg2 1 +%global use_system_harfbuzz 1 +%global use_system_freetype 1 +%global use_system_libpci 1 +%global use_system_libudev 1 + +%if 0%{?rhel} && 0%{?rhel} == 9 +%global use_system_re2 0 +%global use_system_libicu 0 +%global use_system_minizip 0 +%global use_system_harfbuzz 0 +%endif + +# ppc64le builds currently fail with V8/XFA enabled (qt 6.9.0) +%ifarch ppc64le +%global enable_pdf_v8 0 +%else +%global enable_pdf_v8 1 %endif %if 0%{?fedora} && 0%{?fedora} >= 39 @@ -20,8 +48,6 @@ %global use_system_py_six 1 %endif -%global use_system_re2 0 - # NEON support on ARM (detected at runtime) - disable this if you are hitting # FTBFS due to e.g. GCC bug https://bugzilla.redhat.com/show_bug.cgi?id=1282495 #global arm_neon 1 @@ -56,7 +82,7 @@ Summary: Qt6 - QtWebEngine components Name: qt6-qtwebengine Version: 6.9.0 -Release: 1%{?dist} +Release: 2%{?dist} # See LICENSE.GPL LICENSE.LGPL LGPL_EXCEPTION.txt, for details # See also http://qt-project.org/doc/qt-5.0/qtdoc/licensing.html @@ -131,6 +157,7 @@ BuildRequires: qt6-qttools-static BuildRequires: qt6-qtquickcontrols2-devel BuildRequires: qt6-qtwebchannel-devel BuildRequires: qt6-qtwebsockets-devel +BuildRequires: qt6-qthttpserver-devel # for examples? BuildRequires: ninja-build BuildRequires: cmake @@ -146,49 +173,103 @@ BuildRequires: libstdc++-static BuildRequires: git-core BuildRequires: gperf BuildRequires: krb5-devel -%if 0%{?use_system_libicu} -BuildRequires: libicu-devel >= 68 -%endif BuildRequires: libatomic -BuildRequires: libjpeg-devel BuildRequires: nodejs + +# optional system libraries in the order of the -- Configure summary: listing %if 0%{?use_system_re2} -BuildRequires: re2-devel +BuildRequires: pkgconfig(re2) +%else Provides: bundled(re2) %endif -BuildRequires: snappy-devel -BuildConflicts: minizip-devel +%if 0%{?use_system_libicu} +BuildRequires: libicu-devel >= 70 +%endif +%if 0%{?use_system_libwebp} +BuildRequires: pkgconfig(libwebp) >= 0.6.0 +%endif +%if 0%{?use_system_opus} +BuildRequires: pkgconfig(opus) +%endif +%if %{?use_system_ffmpeg} +BuildRequires: pkgconfig(libavcodec) +BuildRequires: pkgconfig(libavformat) +BuildRequires: pkgconfig(libavutil) +BuildRequires: pkgconfig(openh264) +%endif +%if %{?use_system_libvpx} +BuildRequires: pkgconfig(vpx) >= 1.8.0 +%endif +%if 0%{?use_system_snappy} +BuildRequires: pkgconfig(snappy) +%endif +%if 0%{?use_system_glib} +BuildRequires: pkgconfig(glib-2.0) +BuildRequires: pkgconfig(gobject-2.0) +BuildRequires: pkgconfig(gio-2.0) +%endif +%if %{?use_system_zlib} +BuildRequires: pkgconfig(zlib) +%endif +%if 0%{?use_system_minizip} +BuildRequires: pkgconfig(minizip) +%else Provides: bundled(minizip) = 2.8.1 +%endif +%if 0%{?use_system_libevent} +BuildRequires: pkgconfig(libevent) +%endif +%if %{?use_system_libxml} +BuildRequires: pkgconfig(libxml-2.0) +BuildRequires: pkgconfig(libxslt) +%else +# bundled as "libxml" +# see src/3rdparty/chromium/third_party/libxml/linux/include/libxml/xmlversion.h +Provides: bundled(libxml2) = 2.9.13 +# see src/3rdparty/chromium/third_party/libxslt/linux/config.h for version +Provides: bundled(libxslt) = 1.1.3 +%endif +%if 0%{?use_system_lcms2} +BuildRequires: pkgconfig(lcms2) +%endif +%if 0%{?use_system_libpng} +BuildRequires: pkgconfig(libpng) +%endif +%if 0%{?use_system_libtiff} +BuildRequires: pkgconfig(libtiff-4) +%endif +%if 0%{?use_system_libjpeg} +BuildRequires: pkgconfig(libjpeg) +%endif +%if 0%{?use_system_libopenjpeg2} +BuildRequires: pkgconfig(libopenjp2) +%endif +%if 0%{?use_system_harfbuzz} +BuildRequires: pkgconfig(harfbuzz) +%endif +%if 0%{?use_system_freetype} +BuildRequires: pkgconfig(fontconfig) +BuildRequires: pkgconfig(freetype2) +%endif +%if 0%{?use_system_libpci} +BuildRequires: pkgconfig(libpci) +%endif +%if 0%{?use_system_libudev} +BuildRequires: pkgconfig(libudev) +%endif + BuildRequires: pkgconfig(alsa) +BuildRequires: pkgconfig(libpulse) BuildRequires: pkgconfig(dbus-1) BuildRequires: pkgconfig(egl) BuildRequires: pkgconfig(epoxy) BuildRequires: pkgconfig(expat) -BuildRequires: pkgconfig(fontconfig) -BuildRequires: pkgconfig(freetype2) BuildRequires: pkgconfig(gbm) -BuildRequires: pkgconfig(gio-2.0) BuildRequires: pkgconfig(gl) -BuildRequires: pkgconfig(glib-2.0) -BuildRequires: pkgconfig(gobject-2.0) -BuildRequires: pkgconfig(harfbuzz) -%if 0%{?use_system_jsoncpp} -BuildRequires: pkgconfig(jsoncpp) -%endif -BuildRequires: pkgconfig(lcms2) BuildRequires: pkgconfig(libcap) BuildRequires: pkgconfig(libdrm) -BuildRequires: pkgconfig(libevent) -BuildRequires: pkgconfig(libpci) BuildRequires: pkgconfig(libpipewire-0.3) -BuildRequires: pkgconfig(libpng) -BuildRequires: pkgconfig(libpulse) -BuildRequires: pkgconfig(libudev) -%if 0%{?use_system_libwebp} -BuildRequires: pkgconfig(libwebp) >= 0.6.0 -%endif BuildRequires: pkgconfig(nss) -BuildRequires: pkgconfig(opus) BuildRequires: pkgconfig(poppler-cpp) BuildRequires: pkgconfig(x11) BuildRequires: pkgconfig(xcomposite) @@ -206,21 +287,9 @@ BuildRequires: pkgconfig(xscrnsaver) %endif BuildRequires: pkgconfig(xshmfence) BuildRequires: pkgconfig(xtst) -BuildRequires: pkgconfig(zlib) -%if %{?use_system_libxslt} -BuildRequires: pkgconfig(libxslt) -%endif -%if %{?use_system_libxml} -BuildRequires: pkgconfig(libxml-2.0) -%endif BuildRequires: perl-interpreter BuildRequires: %{__python3} BuildRequires: python3-html5lib -BuildRequires: pkgconfig(vpx) >= 1.8.0 -BuildRequires: pkgconfig(libavcodec) -BuildRequires: pkgconfig(libavformat) -BuildRequires: pkgconfig(libavutil) -BuildRequires: pkgconfig(openh264) BuildRequires: pkgconfig(libva) %if 0%{?fedora} && 0%{?fedora} >= 39 @@ -285,19 +354,9 @@ Provides: bundled(leveldb) = 1.23 Provides: bundled(libjingle) # see src/3rdparty/chromium/third_party/libsrtp/CHANGES for the version number Provides: bundled(libsrtp) = 2.4.0 -%if ! %{?use_system_libxml} -# bundled as "libxml" -# see src/3rdparty/chromium/third_party/libxml/linux/include/libxml/xmlversion.h -Provides: bundled(libxml2) = 2.9.13 -%endif -%if ! %{?use_system_libxslt} -# see src/3rdparty/chromium/third_party/libxslt/linux/config.h for version -Provides: bundled(libxslt) = 1.1.3 -%endif Provides: bundled(libyuv) = 1819 Provides: bundled(modp_b64) Provides: bundled(ots) -Provides: bundled(re2) # see src/3rdparty/chromium/third_party/protobuf/CHANGES.txt for the version Provides: bundled(protobuf) = 3.13.0.1 Provides: bundled(qcms) = 4 @@ -439,27 +498,22 @@ ln -s /usr/lib/python%{python3_version}/site-packages/six.py src/3rdparty/chromi ln -s /usr/lib/python%{python3_version}/site-packages/six.py src/3rdparty/chromium/third_party/wpt_tools/wpt/tools/third_party/six/six.py %endif -%if 0%{?use_system_re2} +#%%if 0%{?use_system_re2} # http://bugzilla.redhat.com/1337585 # can't just delete, but we'll overwrite with system headers to be on the safe side -cp -bv /usr/include/re2/*.h src/3rdparty/chromium/third_party/re2/src/re2/ -%endif +#cp -bv /usr/include/re2/*.h src/3rdparty/chromium/third_party/re2/src/re2/ +#%%endif # copy the Chromium license so it is installed with the appropriate name cp -p src/3rdparty/chromium/LICENSE LICENSE.Chromium -# use system libraries +# use system libraries not handled by cmake options correctly system_libs=() -%if %{?use_system_libxml} - system_libs+=(libxml) -%endif -%if %{?use_system_libxslt} - system_libs+=(libxslt) -%endif +%if %{?use_system_ffmpeg} system_libs+=(ffmpeg) system_libs+=(openh264) - +%endif # Use system libraries src/3rdparty/chromium/build/linux/unbundle/replace_gn_files.py --system-libraries ${system_libs[@]} @@ -482,21 +536,61 @@ export STRIP=strip export NINJAFLAGS="%{__ninja_common_opts}" export NINJA_PATH=%{__ninja} +# this follows the logic of the Configure summary to turn on and off %cmake_qt6 \ -DCMAKE_TOOLCHAIN_FILE:STRING="%{_libdir}/cmake/Qt6/qt.toolchain.cmake" \ - -DFEATURE_qtpdf_build:BOOL=ON \ + -DFEATURE_webengine_build_gn:BOOL=ON \ + -DFEATURE_webengine_jumbo_build:BOOL=ON \ -DFEATURE_webengine_developer_build:BOOL=OFF \ + -DFEATURE_qtwebengine_build:BOOL=ON \ + -DFEATURE_qtwebengine_core_build:BOOL=ON \ + -DFEATURE_qtwebengine_widgets_build:BOOL=ON \ + -DFEATURE_qtwebengine_quick_build:BOOL=ON \ + -DFEATURE_qtpdf_build:BOOL=ON \ + -DFEATURE_qtpdf_widgets_build:BOOL=ON \ + -DFEATURE_qtpdf_quick_build:BOOL=ON \ + -DFEATURE_webengine_system_re2:BOOL=%{?use_system_re2} \ + -DFEATURE_webengine_system_icu:BOOL=%{?use_system_libicu} \ + -DFEATURE_webengine_system_libwebp:BOOL=%{?use_system_libwebp} \ + -DFEATURE_webengine_system_opus:BOOL=%{?use_system_opus} \ + -DFEATURE_webengine_system_ffmpeg:BOOL=%{?use_system_ffmpeg} \ + -DFEATURE_webengine_system_libvpx:BOOL=%{?use_system_libvpx} \ + -DFEATURE_webengine_system_snappy:BOOL=%{?use_system_snappy} \ + -DFEATURE_webengine_system_glib:BOOL=%{?use_system_glib} \ + -DFEATURE_webengine_system_zlib:BOOL=%{?use_system_zlib} \ + -DFEATURE_webengine_system_minizip:BOOL=%{?use_system_minizip} \ + -DFEATURE_webengine_system_libevent:BOOL=%{?use_system_libevent} \ + -DFEATURE_webengine_system_libxml:BOOL=%{?use_system_libxml} \ + -DFEATURE_webengine_system_lcms2:BOOL=%{?use_system_lcms2} \ + -DFEATURE_webengine_system_libpng:BOOL=%{?use_system_libpng} \ + -DFEATURE_webengine_system_libtiff:BOOL=%{?use_system_libtiff} \ + -DFEATURE_webengine_system_libjpeg:BOOL=%{?use_system_libjpeg} \ + -DFEATURE_webengine_system_libopenjpeg2:BOOL=%{?use_system_libopenjpeg2} \ + -DFEATURE_webengine_system_harfbuzz:BOOL=%{?use_system_harfbuzz} \ + -DFEATURE_webengine_system_freetype:BOOL=%{?use_system_freetype} \ + -DFEATURE_webengine_system_libpci:BOOL=%{?use_system_libpci} \ + -DFEATURE_webengine_system_libudev:BOOL=%{?use_system_libudev} \ -DFEATURE_webengine_embedded_build:BOOL=OFF \ - -DFEATURE_webengine_extensions:BOOL=ON \ - -DFEATURE_webengine_kerberos:BOOL=ON \ - -DFEATURE_webengine_native_spellchecker:BOOL=OFF \ + -DFEATURE_webengine_pepper_plugins:BOOL=ON \ -DFEATURE_webengine_printing_and_pdf:BOOL=ON \ -DFEATURE_webengine_proprietary_codecs:BOOL=ON \ - -DFEATURE_webengine_system_icu:BOOL=%{?use_system_libicu} \ - -DFEATURE_webengine_system_libevent:BOOL=ON \ - -DFEATURE_webengine_system_ffmpeg:BOOL=ON \ + -DFEATURE_webengine_spellchecker:BOOL=ON \ + -DFEATURE_webengine_native_spellchecker:BOOL=OFF \ -DFEATURE_webengine_webrtc:BOOL=ON \ -DFEATURE_webengine_webrtc_pipewire:BOOL=ON \ + -DFEATURE_webengine_geolocation:BOOL=ON \ + -DFEATURE_webengine_webchannel:BOOL=ON \ + -DFEATURE_webengine_kerberos:BOOL=ON \ + -DFEATURE_webengine_extensions:BOOL=ON \ + -DFEATURE_webengine_ozone_x11:BOOL=ON \ + -DFEATURE_webengine_vulkan:BOOL=ON \ + -DFEATURE_webengine_vaapi:BOOL=ON \ + -DFEATURE_webengine_system_alsa:BOOL=ON \ + -DFEATURE_webengine_system_pulseaudio:BOOL=ON \ + -DFEATURE_webengine_system_gbm:BOOL=ON \ + -DFEATURE_webengine_v8_context_snapshot:BOOL=ON \ + -DFEATURE_webenginedriver:BOOL=ON \ + -DFEATURE_pdf_v8:BOOL=%{?enable_pdf_v8} \ -DQT_BUILD_EXAMPLES:BOOL=%{?examples:ON}%{!?examples:OFF} \ -DQT_INSTALL_EXAMPLES_SOURCES=%{?examples:ON}%{!?examples:OFF} @@ -737,6 +831,10 @@ done %endif %changelog +* Tue Apr 22 2025 Marie Loise Nolden - 6.9.0-2 +- global define all optional system libs, enable XFA +- cleanup spec + * Wed Apr 02 2025 Jan Grulich - 6.9.0-1 - 6.9.0 From 1729aaf5cff0515c711ce85c5f8eec250ffd43b6 Mon Sep 17 00:00:00 2001 From: Marie Loise Nolden Date: Thu, 24 Apr 2025 06:32:00 +0000 Subject: [PATCH 50/76] more cleanup --- qt6-qtwebengine.spec | 115 +++++++++++++++++++++++-------------------- 1 file changed, 62 insertions(+), 53 deletions(-) diff --git a/qt6-qtwebengine.spec b/qt6-qtwebengine.spec index d3f9174..e01aa60 100644 --- a/qt6-qtwebengine.spec +++ b/qt6-qtwebengine.spec @@ -143,10 +143,35 @@ Patch202: chromium-130-size-assertions.patch ExclusiveArch: aarch64 x86_64 ppc64le BuildRequires: cmake +BuildRequires: ninja-build >= 1.7.2 BuildRequires: make +%if 0%{?rhel} && 0%{?rhel} < 10 +BuildRequires: gcc-toolset-13 +BuildRequires: gcc-toolset-13-libatomic-devel +%else +BuildRequires: gcc-c++ +%endif + +# gn links statically (for now) +BuildRequires: libstdc++-static +BuildRequires: libatomic + +BuildRequires: %{__python3} +BuildRequires: python3-html5lib +BuildRequires: gperf +BuildRequires: bison +BuildRequires: flex +BuildRequires: perl-interpreter + +BuildRequires: nodejs >= 14.9 +BuildRequires: krb5-devel +BuildRequires: git-core + BuildRequires: qt6-srpm-macros BuildRequires: qt6-qtbase-devel BuildRequires: qt6-qtbase-private-devel +%{?_qt6_version:Requires: qt6-qtbase%{?_isa} = %{_qt6_version}} + # TODO: check of = is really needed or if >= would be good enough -- rex %{?_qt6:Requires: %{_qt6}%{?_isa} = %{_qt6_version}} BuildRequires: qt6-qtdeclarative-devel @@ -158,27 +183,10 @@ BuildRequires: qt6-qtquickcontrols2-devel BuildRequires: qt6-qtwebchannel-devel BuildRequires: qt6-qtwebsockets-devel BuildRequires: qt6-qthttpserver-devel -# for examples? -BuildRequires: ninja-build -BuildRequires: cmake -BuildRequires: bison -BuildRequires: flex -BuildRequires: gcc-c++ -%if 0%{?rhel} && 0%{?rhel} < 10 -BuildRequires: gcc-toolset-13 -BuildRequires: gcc-toolset-13-libatomic-devel -%endif -# gn links statically (for now) -BuildRequires: libstdc++-static -BuildRequires: git-core -BuildRequires: gperf -BuildRequires: krb5-devel -BuildRequires: libatomic -BuildRequires: nodejs # optional system libraries in the order of the -- Configure summary: listing %if 0%{?use_system_re2} -BuildRequires: pkgconfig(re2) +BuildRequires: pkgconfig(re2) >= 11.0.0 %else Provides: bundled(re2) %endif @@ -189,16 +197,16 @@ BuildRequires: libicu-devel >= 70 BuildRequires: pkgconfig(libwebp) >= 0.6.0 %endif %if 0%{?use_system_opus} -BuildRequires: pkgconfig(opus) +BuildRequires: pkgconfig(opus) >= 1.3.1 %endif %if %{?use_system_ffmpeg} -BuildRequires: pkgconfig(libavcodec) -BuildRequires: pkgconfig(libavformat) -BuildRequires: pkgconfig(libavutil) +BuildRequires: pkgconfig(libavutil) >= 58.29.100 +BuildRequires: pkgconfig(libavcodec) >= 60.31.102 +BuildRequires: pkgconfig(libavformat) >= 60.16.100 BuildRequires: pkgconfig(openh264) %endif %if %{?use_system_libvpx} -BuildRequires: pkgconfig(vpx) >= 1.8.0 +BuildRequires: pkgconfig(vpx) >= 1.10.0 %endif %if 0%{?use_system_snappy} BuildRequires: pkgconfig(snappy) @@ -233,10 +241,10 @@ Provides: bundled(libxslt) = 1.1.3 BuildRequires: pkgconfig(lcms2) %endif %if 0%{?use_system_libpng} -BuildRequires: pkgconfig(libpng) +BuildRequires: pkgconfig(libpng) >= 1.6.0 %endif %if 0%{?use_system_libtiff} -BuildRequires: pkgconfig(libtiff-4) +BuildRequires: pkgconfig(libtiff-4) >= 4.2.0 %endif %if 0%{?use_system_libjpeg} BuildRequires: pkgconfig(libjpeg) @@ -245,11 +253,11 @@ BuildRequires: pkgconfig(libjpeg) BuildRequires: pkgconfig(libopenjp2) %endif %if 0%{?use_system_harfbuzz} -BuildRequires: pkgconfig(harfbuzz) +BuildRequires: pkgconfig(harfbuzz) >= 4.3.0 %endif %if 0%{?use_system_freetype} +BuildRequires: pkgconfig(freetype2) >= 2.4.2 BuildRequires: pkgconfig(fontconfig) -BuildRequires: pkgconfig(freetype2) %endif %if 0%{?use_system_libpci} BuildRequires: pkgconfig(libpci) @@ -258,8 +266,32 @@ BuildRequires: pkgconfig(libpci) BuildRequires: pkgconfig(libudev) %endif +# qpa-xcb support libraries +BuildRequires: pkgconfig(x11) +BuildRequires: pkgconfig(libdrm) +BuildRequires: pkgconfig(xcomposite) +BuildRequires: pkgconfig(xcursor) +BuildRequires: pkgconfig(xrandr) +BuildRequires: pkgconfig(xi) +BuildRequires: pkgconfig(xproto) +BuildRequires: pkgconfig(xshmfence) +BuildRequires: pkgconfig(xtst) +BuildRequires: pkgconfig(xkbcommon) +BuildRequires: pkgconfig(xkbfile) +BuildRequires: pkgconfig(xcb) + +# required for webrtc +BuildRequires: pkgconfig(xdamage) + +# required for alsa BuildRequires: pkgconfig(alsa) +# required for pulseaudio BuildRequires: pkgconfig(libpulse) +# required for vaapi +BuildRequires: pkgconfig(libva) +# required for pipewire +BuildRequires: pkgconfig(libpipewire-0.3) + BuildRequires: pkgconfig(dbus-1) BuildRequires: pkgconfig(egl) BuildRequires: pkgconfig(epoxy) @@ -267,30 +299,9 @@ BuildRequires: pkgconfig(expat) BuildRequires: pkgconfig(gbm) BuildRequires: pkgconfig(gl) BuildRequires: pkgconfig(libcap) -BuildRequires: pkgconfig(libdrm) -BuildRequires: pkgconfig(libpipewire-0.3) -BuildRequires: pkgconfig(nss) +BuildRequires: pkgconfig(nss) >= 3.26 BuildRequires: pkgconfig(poppler-cpp) -BuildRequires: pkgconfig(x11) -BuildRequires: pkgconfig(xcomposite) -BuildRequires: pkgconfig(xcursor) -BuildRequires: pkgconfig(xdamage) -BuildRequires: pkgconfig(xext) -BuildRequires: pkgconfig(xfixes) -BuildRequires: pkgconfig(xi) -BuildRequires: pkgconfig(xkbcommon) -BuildRequires: pkgconfig(xkbfile) -BuildRequires: pkgconfig(xrandr) -BuildRequires: pkgconfig(xrender) -%if ! (0%{?rhel} >= 10) -BuildRequires: pkgconfig(xscrnsaver) -%endif -BuildRequires: pkgconfig(xshmfence) -BuildRequires: pkgconfig(xtst) -BuildRequires: perl-interpreter -BuildRequires: %{__python3} -BuildRequires: python3-html5lib -BuildRequires: pkgconfig(libva) + %if 0%{?fedora} && 0%{?fedora} >= 39 BuildRequires: python3-zombie-imp @@ -406,8 +417,6 @@ Provides: bundled(v8) = 11.8.172.18 # http://www.netlib.org/fdlibm/readme Provides: bundled(fdlibm) = 5.3 -%{?_qt6_version:Requires: qt6-qtbase%{?_isa} = %{_qt6_version}} - %description %{summary}. @@ -450,7 +459,7 @@ Requires: qt6-qtdeclarative-devel%{?_isa} %package -n qt6-qtpdf-examples Summary: Example files for qt6-qtpdf - +Requires: qt6-qtsvg%{?_isa} %description -n qt6-qtpdf-examples %{summary}. From fe1af83b4e42f7313de40c776cc065eb016200f5 Mon Sep 17 00:00:00 2001 From: Jan Grulich Date: Wed, 4 Jun 2025 22:27:51 +0200 Subject: [PATCH 51/76] 6.9.1 --- .gitignore | 1 + qt6-qtwebengine.spec | 11 +++--- qtwebengine-6.7-ppc64.patch | 12 ------- qtwebengine-6.9-ppc64.patch | 13 +++++++ qtwebengine-fix-arm-build.patch | 4 +-- ...ngine-webrtc-fix-build-with-pipewire.patch | 34 ------------------- sources | 2 +- 7 files changed, 23 insertions(+), 54 deletions(-) delete mode 100644 qtwebengine-6.7-ppc64.patch create mode 100644 qtwebengine-6.9-ppc64.patch delete mode 100644 qtwebengine-webrtc-fix-build-with-pipewire.patch diff --git a/.gitignore b/.gitignore index f247021..0dcd0ae 100644 --- a/.gitignore +++ b/.gitignore @@ -16,3 +16,4 @@ /qtwebengine-everywhere-src-6.8.2-clean.tar.xz /qtwebengine-everywhere-src-6.9.0-rc-clean.tar.xz /qtwebengine-everywhere-src-6.9.0-clean.tar.xz +/qtwebengine-everywhere-src-6.9.1-clean.tar.xz diff --git a/qt6-qtwebengine.spec b/qt6-qtwebengine.spec index e01aa60..00ca0e3 100644 --- a/qt6-qtwebengine.spec +++ b/qt6-qtwebengine.spec @@ -81,8 +81,8 @@ Summary: Qt6 - QtWebEngine components Name: qt6-qtwebengine -Version: 6.9.0 -Release: 2%{?dist} +Version: 6.9.1 +Release: 1%{?dist} # See LICENSE.GPL LICENSE.LGPL LGPL_EXCEPTION.txt, for details # See also http://qt-project.org/doc/qt-5.0/qtdoc/licensing.html @@ -127,12 +127,11 @@ Patch50: qtwebengine-fix-build.patch ## Upstream patches: # https://bugreports.qt.io/browse/QTBUG-129985 Patch80: qtwebengine-fix-arm-build.patch -Patch81: qtwebengine-webrtc-fix-build-with-pipewire.patch ## Upstreamable patches: ## ppc64le port -Patch200: qtwebengine-6.7-ppc64.patch +Patch200: qtwebengine-6.9-ppc64.patch Patch201: qtwebengine-chromium-ppc64.patch # https://src.fedoraproject.org/rpms/chromium/c/c675db4ac0623d2d97344be0b3b2d9f1ac931446?branch=rawhide Patch202: chromium-130-size-assertions.patch @@ -480,7 +479,6 @@ popd ## upstream patches %patch -P80 -p1 -b .fix-arm-build -%patch -P81 -p1 -b .webrtc-fix-build-with-pipewire ## upstreamable patches @@ -840,6 +838,9 @@ done %endif %changelog +* Tue Jun 03 2025 Jan Grulich - 6.9.1-1 +- 6.9.1 + * Tue Apr 22 2025 Marie Loise Nolden - 6.9.0-2 - global define all optional system libs, enable XFA - cleanup spec diff --git a/qtwebengine-6.7-ppc64.patch b/qtwebengine-6.7-ppc64.patch deleted file mode 100644 index 4079f06..0000000 --- a/qtwebengine-6.7-ppc64.patch +++ /dev/null @@ -1,12 +0,0 @@ -diff -up qtwebengine-everywhere-src-6.7.2/cmake/Functions.cmake.orig qtwebengine-everywhere-src-6.7.2/cmake/Functions.cmake ---- qtwebengine-everywhere-src-6.7.2/cmake/Functions.cmake.orig 2024-09-19 16:19:27.740234419 +0200 -+++ qtwebengine-everywhere-src-6.7.2/cmake/Functions.cmake 2024-09-19 16:28:30.744377245 +0200 -@@ -635,6 +635,8 @@ function(get_gn_arch result arch) - set(${result} "mips64el" PARENT_SCOPE) - elseif(arch STREQUAL "riscv64") - set(${result} "riscv64" PARENT_SCOPE) -+ elseif(arch STREQUAL "power64") -+ set(${result} "ppc64" PARENT_SCOPE) - else() - message(FATAL_ERROR "Unknown architecture: ${arch}") - endif() diff --git a/qtwebengine-6.9-ppc64.patch b/qtwebengine-6.9-ppc64.patch new file mode 100644 index 0000000..8b58211 --- /dev/null +++ b/qtwebengine-6.9-ppc64.patch @@ -0,0 +1,13 @@ +diff --git a/cmake/QtToolchainHelpers.cmake b/cmake/QtToolchainHelpers.cmake +index eaa3a4339..5693c4cc4 100644 +--- a/cmake/QtToolchainHelpers.cmake ++++ b/cmake/QtToolchainHelpers.cmake +@@ -55,6 +55,8 @@ function(get_gn_arch result arch) + set(${result} "mips64el" PARENT_SCOPE) + elseif(arch STREQUAL "riscv64") + set(${result} "riscv64" PARENT_SCOPE) ++ elseif(arch STREQUAL "power64") ++ set(${result} "ppc64" PARENT_SCOPE) + else() + message(FATAL_ERROR "Unknown architecture: ${arch}") + endif() diff --git a/qtwebengine-fix-arm-build.patch b/qtwebengine-fix-arm-build.patch index 7f30e1a..5013750 100644 --- a/qtwebengine-fix-arm-build.patch +++ b/qtwebengine-fix-arm-build.patch @@ -1,8 +1,8 @@ diff --git a/src/core/CMakeLists.txt b/src/core/CMakeLists.txt -index cc992b4d2..ae1fba849 100644 +index d5e9b715e..af4c046c4 100644 --- a/src/core/CMakeLists.txt +++ b/src/core/CMakeLists.txt -@@ -566,6 +566,10 @@ foreach(arch ${archs}) +@@ -570,6 +570,10 @@ foreach(arch ${archs}) list(APPEND gnArgArg libyuv_use_sve=false) endif() endif() diff --git a/qtwebengine-webrtc-fix-build-with-pipewire.patch b/qtwebengine-webrtc-fix-build-with-pipewire.patch deleted file mode 100644 index 4a3b5f3..0000000 --- a/qtwebengine-webrtc-fix-build-with-pipewire.patch +++ /dev/null @@ -1,34 +0,0 @@ -diff --git a/src/3rdparty/chromium/third_party/webrtc/AUTHORS b/src/3rdparty/chromium/third_party/webrtc/AUTHORS -index 064e12611..0543ba699 100644 ---- a/src/3rdparty/chromium/third_party/webrtc/AUTHORS -+++ b/src/3rdparty/chromium/third_party/webrtc/AUTHORS -@@ -60,6 +60,7 @@ Hans Knoechel - Helmut Januschka - Hugues Ekra - Hyungjoo Na -+Ilya Katsnelson - Jake Hilton - James H. Brown - Jan Grulich -diff --git a/src/3rdparty/chromium/third_party/webrtc/modules/video_capture/linux/pipewire_session.cc b/src/3rdparty/chromium/third_party/webrtc/modules/video_capture/linux/pipewire_session.cc -index e9f7f765a..358cf3d7e 100644 ---- a/src/3rdparty/chromium/third_party/webrtc/modules/video_capture/linux/pipewire_session.cc -+++ b/src/3rdparty/chromium/third_party/webrtc/modules/video_capture/linux/pipewire_session.cc -@@ -85,7 +85,7 @@ PipeWireNode::PipeWireNode(PipeWireSession* session, - .param = OnNodeParam, - }; - -- pw_node_add_listener(proxy_, &node_listener_, &node_events, this); -+ pw_node_add_listener(reinterpret_cast(proxy_), &node_listener_, &node_events, this); - } - - // static -@@ -117,7 +117,7 @@ void PipeWireNode::OnNodeInfo(void* data, const pw_node_info* info) { - uint32_t id = info->params[i].id; - if (id == SPA_PARAM_EnumFormat && - info->params[i].flags & SPA_PARAM_INFO_READ) { -- pw_node_enum_params(that->proxy_, 0, id, 0, UINT32_MAX, nullptr); -+ pw_node_enum_params(reinterpret_cast(that->proxy_), 0, id, 0, UINT32_MAX, nullptr); - break; - } - } diff --git a/sources b/sources index 9b4d189..c263b96 100644 --- a/sources +++ b/sources @@ -1,2 +1,2 @@ -SHA512 (qtwebengine-everywhere-src-6.9.0-clean.tar.xz) = 003c4372dddc112bf0e48ee644301e948729e9fc119ada4d420410ad04ac78a1665af6023e99d73516316e8298e5f19e59e4c1f37c91607d66b401b8a688b7e7 +SHA512 (qtwebengine-everywhere-src-6.9.1-clean.tar.xz) = f83a7c9c18971b543c4ebf6d5083687450a28a6f6f0148c7a10c4eb1ba0af47f3c7c29d78b98329b9912f54664f381250c3d8c60b8baf56a82eb0686c9d07661 SHA512 (pulseaudio-12.2-headers.tar.gz) = a5a9bcbb16030b3bc83cc0cc8f5e7f90e0723d3e83258a5c77eacb32eaa267118a73fa7814fbcc99a24e4907916a2b371ebb6dedc4f45541c3acf6c834fd35be From 4d8326672ecf0d6ccd53fcb9b97f938af650a853 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dan=20Hor=C3=A1k?= Date: Thu, 5 Jun 2025 06:20:37 +0000 Subject: [PATCH 52/76] update ppc64le chromium patchset to qtwebengine specific change --- qtwebengine-chromium-ppc64.patch | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/qtwebengine-chromium-ppc64.patch b/qtwebengine-chromium-ppc64.patch index 4b5d07f..5496e4b 100644 --- a/qtwebengine-chromium-ppc64.patch +++ b/qtwebengine-chromium-ppc64.patch @@ -274,7 +274,7 @@ Index: chromium-130.0.6723.44/sandbox/linux/seccomp-bpf-helpers/syscall_paramete --- chromium-130.0.6723.44.orig/sandbox/linux/seccomp-bpf-helpers/syscall_parameters_restrictions.cc +++ chromium-130.0.6723.44/sandbox/linux/seccomp-bpf-helpers/syscall_parameters_restrictions.cc @@ -36,7 +36,7 @@ - #include "sandbox/linux/system_headers/linux_time.h" + #endif #if (BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)) && \ - !defined(__arm__) && !defined(__aarch64__) && \ From bdd79b9a00500481e0c209ca41b8bb93299d62ea Mon Sep 17 00:00:00 2001 From: Marie Loise Nolden Date: Sat, 7 Jun 2025 05:52:10 +0000 Subject: [PATCH 53/76] rhel10 build fix MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit To build on RHEL 10, using system zlib-ng must currently be disabled (or the error patched out) Error message on RHEL 10 build: [13653/22150] /usr/bin/g++ -MD -MF obj/third_party/zlib/google/zip/zip_internal.o.d -DUSE_UDEV -DUSE_AURA=1 -DUSE_OZONE=1 -DOFFICIAL_BUILD -DTOOLKIT_QT -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -DNO_UNWIND_TABLES -D_LIBCPP_HARDENING_MODE=_LIBCPP_HARDENING_MODE_NONE -D_GLIBCXX_ASSERTIONS=1 -DNDEBUG -DNVALGRIND -DDYNAMIC_ANNOTATIONS_ENABLED=0 -DUSING_SYSTEM_ICU=1 -DICU_UTIL_DATA_IMPL=ICU_UTIL_DATA_STATIC -Igen -I../../../../../src/3rdparty/chromium -I../../../../../src/3rdparty/chromium/third_party/perfetto/include -Igen/third_party/perfetto/build_config -Igen/third_party/perfetto -I../../../../../src/3rdparty/chromium/base/allocator/partition_allocator/src -Igen/base/allocator/partition_allocator/src -I../../../../../src/3rdparty/chromium/third_party/abseil-cpp -I../../../../../src/3rdparty/chromium/third_party/boringssl/src/include -I../../../../../src/3rdparty/chromium/third_party/protobuf/src -Igen/protoc_out -I../../../../../src/3rdparty/chromium/third_party/ced/src -Wall -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 -Wno-unused-local-typedefs -Wno-maybe-uninitialized -Wno-deprecated-declarations -fno-delete-null-pointer-checks -Wno-comments -Wno-packed-not-aligned -Wno-misleading-indentation -Wno-dangling-else -Wno-missing-field-initializers -Wno-unused-parameter -Wno-psabi -fno-ident -fno-strict-aliasing -fstack-protector -Wno-unknown-pragmas -Wno-address -Wno-parentheses -Wno-sign-compare -Wno-stringop-overflow -Wno-stringop-overread -Wno-psabi -Wno-multichar -Wno-format-zero-length -fno-unwind-tables -fno-asynchronous-unwind-tables -fPIC -pipe -pthread -m64 -msse3 -O2 -fdata-sections -ffunction-sections -fno-math-errno -fno-omit-frame-pointer -gdwarf-4 -g1 -fvisibility=hidden -Wno-narrowing -Wno-class-memaccess -Wno-attributes -Wno-class-memaccess -Wno-subobject-linkage -Wno-invalid-offsetof -Wno-return-type -Wno-deprecated-copy -Wno-invalid-offsetof -Wno-deprecated-copy -Wno-expansion-to-defined -std=gnu++20 -fno-exceptions -fno-rtti -fvisibility-inlines-hidden -c ../../../../../src/3rdparty/chromium/third_party/zlib/google/zip_internal.cc -o obj/third_party/zlib/google/zip/zip_internal.o FAILED: obj/third_party/zlib/google/zip/zip_internal.o /usr/bin/g++ -MD -MF obj/third_party/zlib/google/zip/zip_internal.o.d -DUSE_UDEV -DUSE_AURA=1 -DUSE_OZONE=1 -DOFFICIAL_BUILD -DTOOLKIT_QT -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -DNO_UNWIND_TABLES -D_LIBCPP_HARDENING_MODE=_LIBCPP_HARDENING_MODE_NONE -D_GLIBCXX_ASSERTIONS=1 -DNDEBUG -DNVALGRIND -DDYNAMIC_ANNOTATIONS_ENABLED=0 -DUSING_SYSTEM_ICU=1 -DICU_UTIL_DATA_IMPL=ICU_UTIL_DATA_STATIC -Igen -I../../../../../src/3rdparty/chromium -I../../../../../src/3rdparty/chromium/third_party/perfetto/include -Igen/third_party/perfetto/build_config -Igen/third_party/perfetto -I../../../../../src/3rdparty/chromium/base/allocator/partition_allocator/src -Igen/base/allocator/partition_allocator/src -I../../../../../src/3rdparty/chromium/third_party/abseil-cpp -I../../../../../src/3rdparty/chromium/third_party/boringssl/src/include -I../../../../../src/3rdparty/chromium/third_party/protobuf/src -Igen/protoc_out -I../../../../../src/3rdparty/chromium/third_party/ced/src -Wall -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 -Wno-unused-local-typedefs -Wno-maybe-uninitialized -Wno-deprecated-declarations -fno-delete-null-pointer-checks -Wno-comments -Wno-packed-not-aligned -Wno-misleading-indentation -Wno-dangling-else -Wno-missing-field-initializers -Wno-unused-parameter -Wno-psabi -fno-ident -fno-strict-aliasing -fstack-protector -Wno-unknown-pragmas -Wno-address -Wno-parentheses -Wno-sign-compare -Wno-stringop-overflow -Wno-stringop-overread -Wno-psabi -Wno-multichar -Wno-format-zero-length -fno-unwind-tables -fno-asynchronous-unwind-tables -fPIC -pipe -pthread -m64 -msse3 -O2 -fdata-sections -ffunction-sections -fno-math-errno -fno-omit-frame-pointer -gdwarf-4 -g1 -fvisibility=hidden -Wno-narrowing -Wno-class-memaccess -Wno-attributes -Wno-class-memaccess -Wno-subobject-linkage -Wno-invalid-offsetof -Wno-return-type -Wno-deprecated-copy -Wno-invalid-offsetof -Wno-deprecated-copy -Wno-expansion-to-defined -std=gnu++20 -fno-exceptions -fno-rtti -fvisibility-inlines-hidden -c ../../../../../src/3rdparty/chromium/third_party/zlib/google/zip_internal.cc -o obj/third_party/zlib/google/zip/zip_internal.o ../../../../../src/3rdparty/chromium/third_party/zlib/google/zip_internal.cc:180:1: error: ‘uLong’ does not name a type; did you mean ‘ulong’? 180 | uLong ReadZipBuffer(void* opaque, void* /*stream*/, void* buf, uLong size) { | ^~~~~ | ulong ../../../../../src/3rdparty/chromium/third_party/zlib/google/zip_internal.cc:195:1: error: ‘uLong’ does not name a type; did you mean ‘ulong’? 195 | uLong WriteZipBuffer(void* /*opaque*/, | ^~~~~ | ulong ../../../../../src/3rdparty/chromium/third_party/zlib/google/zip_internal.cc: In function ‘void* zip::internal::PrepareMemoryForUnzipping(const std::string&)’: ../../../../../src/3rdparty/chromium/third_party/zlib/google/zip_internal.cc:323:30: error: ‘ReadZipBuffer’ was not declared in this scope 323 | zip_functions.zread_file = ReadZipBuffer; | ^~~~~~~~~~~~~ ../../../../../src/3rdparty/chromium/third_party/zlib/google/zip_internal.cc:324:31: error: ‘WriteZipBuffer’ was not declared in this scope 324 | zip_functions.zwrite_file = WriteZipBuffer; | ^~~~~~~~~~~~~~ ../../../../../src/3rdparty/chromium/third_party/zlib/google/zip_internal.cc: In function ‘bool zip::internal::ZipOpenNewFileInZip(zipFile, const std::string&, base::Time, Compression)’: ../../../../../src/3rdparty/chromium/third_party/zlib/google/zip_internal.cc:360:9: error: ‘uLong’ does not name a type; did you mean ‘ulong’? 360 | const uLong LANGUAGE_ENCODING_FLAG = 0x1 << 11; | ^~~~~ | ulong ../../../../../src/3rdparty/chromium/third_party/zlib/google/zip_internal.cc:373:17: error: ‘Z_DEFAULT_COMPRESSION’ was not declared in this scope 373 | /*level=*/Z_DEFAULT_COMPRESSION, | ^~~~~~~~~~~~~~~~~~~~~ ../../../../../src/3rdparty/chromium/third_party/zlib/google/zip_internal.cc:377:20: error: ‘Z_DEFAULT_STRATEGY’ was not declared in this scope 377 | /*strategy=*/Z_DEFAULT_STRATEGY, | ^~~~~~~~~~~~~~~~~~ ../../../../../src/3rdparty/chromium/third_party/zlib/google/zip_internal.cc:381:20: error: ‘LANGUAGE_ENCODING_FLAG’ was not declared in this scope 381 | /*flagBase=*/LANGUAGE_ENCODING_FLAG, | --- qt6-qtwebengine.spec | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/qt6-qtwebengine.spec b/qt6-qtwebengine.spec index 00ca0e3..d4c8037 100644 --- a/qt6-qtwebengine.spec +++ b/qt6-qtwebengine.spec @@ -36,6 +36,10 @@ %global use_system_harfbuzz 0 %endif +%if 0%{?rhel} && 0%{?rhel} == 10 +%global use_system_zlib 0 +%endif + # ppc64le builds currently fail with V8/XFA enabled (qt 6.9.0) %ifarch ppc64le %global enable_pdf_v8 0 From cfe1645245569d680499b484b9d0989b72cc76b9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dan=20Hor=C3=A1k?= Date: Mon, 30 Jun 2025 09:15:01 +0200 Subject: [PATCH 54/76] add pthread stack patch and refresh the generated patchset --- qtwebengine-chromium-ppc64.patch | 14 +++++++++++++- series.ppc64 | 1 + 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/qtwebengine-chromium-ppc64.patch b/qtwebengine-chromium-ppc64.patch index 5496e4b..4f88c36 100644 --- a/qtwebengine-chromium-ppc64.patch +++ b/qtwebengine-chromium-ppc64.patch @@ -30737,10 +30737,22 @@ Index: chromium-130.0.6723.44/third_party/skia/src/core/SkRasterPipeline.h +++ chromium-130.0.6723.44/third_party/skia/src/core/SkRasterPipeline.h @@ -27,7 +27,7 @@ struct SkImageInfo; struct skcms_TransferFunction; - + #if __has_cpp_attribute(clang::musttail) && !defined(__EMSCRIPTEN__) && !defined(SK_CPU_ARM32) && \ - !defined(SK_CPU_LOONGARCH) && !(defined(_WIN32) && defined(SK_BUILD_FOR_ANDROID_FRAMEWORK)) + !defined(SK_CPU_LOONGARCH) && !(defined(_WIN32) && defined(SK_BUILD_FOR_ANDROID_FRAMEWORK)) && !defined(__powerpc64__) // [[clang::musttail]] is disabled for the Android version of Skia running on Windows as it // causes crashes (This is probably related to http://crbug.com/1505442). #define SK_HAS_MUSTTAIL 1 +--- a/base/process/launch.h ++++ b/base/process/launch.h +@@ -54,6 +54,9 @@ + #if defined(ARCH_CPU_ARM64) + #define PTHREAD_STACK_MIN_CONST \ + (__builtin_constant_p(PTHREAD_STACK_MIN) ? PTHREAD_STACK_MIN : 131072) ++#elif defined(ARCH_CPU_PPC64) ++#define PTHREAD_STACK_MIN_CONST \ ++ (__builtin_constant_p(PTHREAD_STACK_MIN) ? PTHREAD_STACK_MIN : 131072) + #else + #define PTHREAD_STACK_MIN_CONST \ + (__builtin_constant_p(PTHREAD_STACK_MIN) ? PTHREAD_STACK_MIN : 16384) diff --git a/series.ppc64 b/series.ppc64 index a5731a0..b8c87d2 100644 --- a/series.ppc64 +++ b/series.ppc64 @@ -41,3 +41,4 @@ ppc64le/fixes/fix-partition-alloc-compile.patch ppc64le/third_party/use-sysconf-page-size-on-ppc64.patch ppc64le/third_party/dawn-fix-ppc64le-detection.patch ppc64le/workarounds/HACK-debian-clang-disable-skia-musttail.patch +ppc64le/core/add-ppc64-pthread-stack-size.patch From 725e7ac366b331bdb834c0308c4041dcb2c2fdce Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Fri, 25 Jul 2025 11:37:09 +0000 Subject: [PATCH 55/76] Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild --- qt6-qtwebengine.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/qt6-qtwebengine.spec b/qt6-qtwebengine.spec index d4c8037..e552421 100644 --- a/qt6-qtwebengine.spec +++ b/qt6-qtwebengine.spec @@ -86,7 +86,7 @@ Summary: Qt6 - QtWebEngine components Name: qt6-qtwebengine Version: 6.9.1 -Release: 1%{?dist} +Release: 2%{?dist} # See LICENSE.GPL LICENSE.LGPL LGPL_EXCEPTION.txt, for details # See also http://qt-project.org/doc/qt-5.0/qtdoc/licensing.html @@ -842,6 +842,9 @@ done %endif %changelog +* Fri Jul 25 2025 Fedora Release Engineering - 6.9.1-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild + * Tue Jun 03 2025 Jan Grulich - 6.9.1-1 - 6.9.1 From cd9aef0eb38b91f01c895ab2a21f4b6e38d8ec32 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Franti=C5=A1ek=20Zatloukal?= Date: Wed, 6 Aug 2025 09:57:34 +0200 Subject: [PATCH 56/76] Rebuilt for icu 77.1 --- qt6-qtwebengine.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/qt6-qtwebengine.spec b/qt6-qtwebengine.spec index e552421..211e766 100644 --- a/qt6-qtwebengine.spec +++ b/qt6-qtwebengine.spec @@ -86,7 +86,7 @@ Summary: Qt6 - QtWebEngine components Name: qt6-qtwebengine Version: 6.9.1 -Release: 2%{?dist} +Release: 3%{?dist} # See LICENSE.GPL LICENSE.LGPL LGPL_EXCEPTION.txt, for details # See also http://qt-project.org/doc/qt-5.0/qtdoc/licensing.html @@ -842,6 +842,9 @@ done %endif %changelog +* Wed Aug 06 2025 František Zatloukal - 6.9.1-3 +- Rebuilt for icu 77.1 + * Fri Jul 25 2025 Fedora Release Engineering - 6.9.1-2 - Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild From 7b9f8de56a5294f5805b7e3e1d5222faaea00599 Mon Sep 17 00:00:00 2001 From: Jan Grulich Date: Fri, 29 Aug 2025 08:51:34 +0200 Subject: [PATCH 57/76] 6.9.2 --- .gitignore | 1 + qt6-qtwebengine.spec | 7 +++++-- sources | 2 +- 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/.gitignore b/.gitignore index 0dcd0ae..11326d2 100644 --- a/.gitignore +++ b/.gitignore @@ -17,3 +17,4 @@ /qtwebengine-everywhere-src-6.9.0-rc-clean.tar.xz /qtwebengine-everywhere-src-6.9.0-clean.tar.xz /qtwebengine-everywhere-src-6.9.1-clean.tar.xz +/qtwebengine-everywhere-src-6.9.2-clean.tar.xz diff --git a/qt6-qtwebengine.spec b/qt6-qtwebengine.spec index 211e766..81ff8c1 100644 --- a/qt6-qtwebengine.spec +++ b/qt6-qtwebengine.spec @@ -85,8 +85,8 @@ Summary: Qt6 - QtWebEngine components Name: qt6-qtwebengine -Version: 6.9.1 -Release: 3%{?dist} +Version: 6.9.2 +Release: 1%{?dist} # See LICENSE.GPL LICENSE.LGPL LGPL_EXCEPTION.txt, for details # See also http://qt-project.org/doc/qt-5.0/qtdoc/licensing.html @@ -842,6 +842,9 @@ done %endif %changelog +* Fri Aug 29 2025 Jan Grulich - 6.9.2-1 +- 6.9.2 + * Wed Aug 06 2025 František Zatloukal - 6.9.1-3 - Rebuilt for icu 77.1 diff --git a/sources b/sources index c263b96..92e53a4 100644 --- a/sources +++ b/sources @@ -1,2 +1,2 @@ -SHA512 (qtwebengine-everywhere-src-6.9.1-clean.tar.xz) = f83a7c9c18971b543c4ebf6d5083687450a28a6f6f0148c7a10c4eb1ba0af47f3c7c29d78b98329b9912f54664f381250c3d8c60b8baf56a82eb0686c9d07661 +SHA512 (qtwebengine-everywhere-src-6.9.2-clean.tar.xz) = ae31f6b057629b2690c81e1920c8ee4dab0b44262f087c42716b2a5cbece884873bb89c2f3a5f8ffa9de6501febea85c360d29f0d98d2eded5893d213ba317c9 SHA512 (pulseaudio-12.2-headers.tar.gz) = a5a9bcbb16030b3bc83cc0cc8f5e7f90e0723d3e83258a5c77eacb32eaa267118a73fa7814fbcc99a24e4907916a2b371ebb6dedc4f45541c3acf6c834fd35be From c0ac8d3ecb88fe6fa1bda202b33a998cd3819bae Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dan=20Hor=C3=A1k?= Date: Fri, 29 Aug 2025 10:54:02 +0200 Subject: [PATCH 58/76] update chromium ppc64 patch --- qtwebengine-chromium-ppc64.patch | 77 +++++++++++++++++--------------- 1 file changed, 42 insertions(+), 35 deletions(-) diff --git a/qtwebengine-chromium-ppc64.patch b/qtwebengine-chromium-ppc64.patch index 4f88c36..c1a17e1 100644 --- a/qtwebengine-chromium-ppc64.patch +++ b/qtwebengine-chromium-ppc64.patch @@ -591,41 +591,6 @@ Index: chromium-130.0.6723.44/sandbox/linux/seccomp-bpf-helpers/syscall_sets.cc case __NR__llseek: #endif #if !defined(__aarch64__) -@@ -604,26 +619,28 @@ bool SyscallSets::IsAllowedGeneralIo(int - case __NR_readv: - case __NR_pread64: - #if defined(__arm__) || \ -- (defined(ARCH_CPU_MIPS_FAMILY) && defined(ARCH_CPU_32_BITS)) -+ (defined(ARCH_CPU_MIPS_FAMILY) && defined(ARCH_CPU_32_BITS)) || \ -+ defined(__powerpc64__) - case __NR_recv: - #endif - #if defined(__x86_64__) || defined(__arm__) || defined(__mips__) || \ -- defined(__aarch64__) -+ defined(__aarch64__) || defined(__powerpc64__) - case __NR_recvfrom: // Could specify source. - case __NR_recvmsg: // Could specify source. - #endif --#if defined(__i386__) || defined(__x86_64__) -+#if defined(__i386__) || defined(__x86_64__) || defined(__powerpc64__) - case __NR_select: - #endif --#if defined(__i386__) || defined(__arm__) || defined(__mips__) -+#if defined(__i386__) || defined(__arm__) || defined(__mips__) || defined(__powerpc64__) - case __NR__newselect: - #endif - #if defined(__arm__) || \ -- (defined(ARCH_CPU_MIPS_FAMILY) && defined(ARCH_CPU_32_BITS)) -+ (defined(ARCH_CPU_MIPS_FAMILY) && defined(ARCH_CPU_32_BITS)) || \ -+ defined(__powerpc64__) - case __NR_send: - #endif - #if defined(__x86_64__) || defined(__arm__) || defined(__mips__) || \ -- defined(__aarch64__) -+ defined(__aarch64__) || defined(__powerpc64__) - case __NR_sendmsg: // Could specify destination. - case __NR_sendto: // Could specify destination. - #endif @@ -679,7 +696,8 @@ bool SyscallSets::IsAllowedBasicSchedule return true; case __NR_getpriority: @@ -30756,3 +30721,45 @@ Index: chromium-130.0.6723.44/third_party/skia/src/core/SkRasterPipeline.h #else #define PTHREAD_STACK_MIN_CONST \ (__builtin_constant_p(PTHREAD_STACK_MIN) ? PTHREAD_STACK_MIN : 16384) +diff -up chromium/sandbox/linux/seccomp-bpf-helpers/syscall_sets.cc.orig chromium/sandbox/linux/seccomp-bpf-helpers/syscall_sets.cc +--- chromium/sandbox/linux/seccomp-bpf-helpers/syscall_sets.cc.orig 2025-08-29 10:24:11.982676966 +0200 ++++ chromium/sandbox/linux/seccomp-bpf-helpers/syscall_sets.cc 2025-08-29 10:26:04.859133616 +0200 +@@ -621,18 +621,19 @@ bool SyscallSets::IsAllowedGeneralIo(int + case __NR_readv: + case __NR_pread64: + #if defined(__arm__) || \ +- (defined(ARCH_CPU_MIPS_FAMILY) && defined(ARCH_CPU_32_BITS)) ++ (defined(ARCH_CPU_MIPS_FAMILY) && defined(ARCH_CPU_32_BITS)) || \ ++ defined(__powerpc64__) + case __NR_recv: + #endif + #if defined(__x86_64__) || defined(__arm__) || defined(__mips__) || \ +- defined(__aarch64__) ++ defined(__aarch64__) || defined(__powerpc64__) + case __NR_recvfrom: // Could specify source. + case __NR_recvmsg: // Could specify source. + #endif +-#if defined(__i386__) || defined(__x86_64__) ++#if defined(__i386__) || defined(__x86_64__) || defined(__powerpc64__) + case __NR_select: + #endif +-#if defined(__i386__) || defined(__arm__) || defined(__mips__) ++#if defined(__i386__) || defined(__arm__) || defined(__mips__) || defined(__powerpc64__) + case __NR__newselect: + #endif + case __NR_write: +@@ -649,11 +650,12 @@ bool SyscallSets::IsAllowedGeneralIo(int + #endif + // send* syscalls need their flags filtered. + #if defined(__arm__) || \ +- (defined(ARCH_CPU_MIPS_FAMILY) && defined(ARCH_CPU_32_BITS)) ++ (defined(ARCH_CPU_MIPS_FAMILY) && defined(ARCH_CPU_32_BITS)) || \ ++ defined(__powerpc64__) + case __NR_send: + #endif + #if defined(__i386__) || defined(__x86_64__) || defined(__arm__) || \ +- defined(__mips__) || defined(__aarch64__) ++ defined(__mips__) || defined(__aarch64__) || defined(__powerpc64__) + case __NR_sendmsg: // Could specify destination. + case __NR_sendto: // Could specify destination. + #endif From 46ec64d60cfa0269c50c205b30e2a134d0dd7795 Mon Sep 17 00:00:00 2001 From: Sandro Mani Date: Tue, 9 Sep 2025 07:53:14 +0200 Subject: [PATCH 59/76] Fix broken GPU rendering --- qt6-qtwebengine.spec | 10 +- qtwebengine-revert-create-eglimage.patch | 153 +++++++++++++++++++++++ 2 files changed, 162 insertions(+), 1 deletion(-) create mode 100644 qtwebengine-revert-create-eglimage.patch diff --git a/qt6-qtwebengine.spec b/qt6-qtwebengine.spec index 81ff8c1..342f0cd 100644 --- a/qt6-qtwebengine.spec +++ b/qt6-qtwebengine.spec @@ -86,7 +86,7 @@ Summary: Qt6 - QtWebEngine components Name: qt6-qtwebengine Version: 6.9.2 -Release: 1%{?dist} +Release: 2%{?dist} # See LICENSE.GPL LICENSE.LGPL LGPL_EXCEPTION.txt, for details # See also http://qt-project.org/doc/qt-5.0/qtdoc/licensing.html @@ -127,6 +127,10 @@ Patch4: qtwebengine-use-openh264.patch # FTBS warning: elaborated-type-specifier for a scoped enum must not # use the 'class' keyword Patch50: qtwebengine-fix-build.patch +# https://bugreports.qt.io/browse/QTBUG-139424 +# Revert commit bcee2dbf412cc655c1b467091b581c696d234e3f +# See also https://gitlab.archlinux.org/archlinux/packaging/packages/qt6-webengine/-/commit/74473e03e9d77895d22659914aa4ae91324a1f0a +Patch51: qtwebengine-revert-create-eglimage.patch ## Upstream patches: # https://bugreports.qt.io/browse/QTBUG-129985 @@ -480,6 +484,7 @@ popd %patch -P4 -p1 -b .use-openh264 %patch -P50 -p1 -b .fix-build.patch +%patch -P51 -p1 -b .eglimage ## upstream patches %patch -P80 -p1 -b .fix-arm-build @@ -842,6 +847,9 @@ done %endif %changelog +* Mon Sep 08 2025 Sandro Mani - 6.9.2-2 +- Revert commit bcee2dbf412cc655c1b467091b581c696d234e3f + * Fri Aug 29 2025 Jan Grulich - 6.9.2-1 - 6.9.2 diff --git a/qtwebengine-revert-create-eglimage.patch b/qtwebengine-revert-create-eglimage.patch new file mode 100644 index 0000000..2d4d6f9 --- /dev/null +++ b/qtwebengine-revert-create-eglimage.patch @@ -0,0 +1,153 @@ +diff -rupN qtwebengine-everywhere-src-6.9.2/src/core/ozone/egl_helper.cpp qtwebengine-everywhere-src-6.9.2-new/src/core/ozone/egl_helper.cpp +--- qtwebengine-everywhere-src-6.9.2/src/core/ozone/egl_helper.cpp 2025-08-18 02:53:11.000000000 +0200 ++++ qtwebengine-everywhere-src-6.9.2-new/src/core/ozone/egl_helper.cpp 2025-09-08 22:20:02.398760647 +0200 +@@ -58,14 +58,90 @@ static const char *getEGLErrorString(uin + + QT_BEGIN_NAMESPACE + ++class ScopedGLContext ++{ ++public: ++ ScopedGLContext(QOffscreenSurface *surface, EGLHelper::EGLFunctions *eglFun) ++ : m_context(new QOpenGLContext()), m_eglFun(eglFun) ++ { ++ if ((m_previousEGLContext = m_eglFun->eglGetCurrentContext())) { ++ m_previousEGLDrawSurface = m_eglFun->eglGetCurrentSurface(EGL_DRAW); ++ m_previousEGLReadSurface = m_eglFun->eglGetCurrentSurface(EGL_READ); ++ m_previousEGLDisplay = m_eglFun->eglGetCurrentDisplay(); ++ } ++ ++ if (!m_context->create()) { ++ qWarning("Failed to create OpenGL context."); ++ return; ++ } ++ ++ Q_ASSERT(surface->isValid()); ++ if (!m_context->makeCurrent(surface)) { ++ qWarning("Failed to make OpenGL context current."); ++ return; ++ } ++ } ++ ++ ~ScopedGLContext() ++ { ++ if (!m_textures.empty()) { ++ auto *glFun = m_context->functions(); ++ glFun->glDeleteTextures(m_textures.size(), m_textures.data()); ++ } ++ ++ if (m_previousEGLContext) { ++ // Make sure the scoped context is not current when restoring the previous ++ // EGL context otherwise the QOpenGLContext destructor resets the restored ++ // current context. ++ m_context->doneCurrent(); ++ ++ m_eglFun->eglMakeCurrent(m_previousEGLDisplay, m_previousEGLDrawSurface, ++ m_previousEGLReadSurface, m_previousEGLContext); ++ if (m_eglFun->eglGetError() != EGL_SUCCESS) ++ qWarning("Failed to restore EGL context."); ++ } ++ } ++ ++ bool isValid() const { return m_context->isValid() && (m_context->surface() != nullptr); } ++ ++ EGLContext eglContext() const ++ { ++ QNativeInterface::QEGLContext *nativeInterface = ++ m_context->nativeInterface(); ++ return nativeInterface->nativeContext(); ++ } ++ ++ uint createTexture(int width, int height) ++ { ++ auto *glFun = m_context->functions(); ++ ++ uint glTexture; ++ glFun->glGenTextures(1, &glTexture); ++ glFun->glBindTexture(GL_TEXTURE_2D, glTexture); ++ glFun->glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, width, height, 0, GL_RGBA, GL_UNSIGNED_BYTE, ++ NULL); ++ glFun->glBindTexture(GL_TEXTURE_2D, 0); ++ ++ m_textures.push_back(glTexture); ++ return glTexture; ++ } ++ ++private: ++ QScopedPointer m_context; ++ EGLHelper::EGLFunctions *m_eglFun; ++ EGLContext m_previousEGLContext = nullptr; ++ EGLSurface m_previousEGLDrawSurface = nullptr; ++ EGLSurface m_previousEGLReadSurface = nullptr; ++ EGLDisplay m_previousEGLDisplay = nullptr; ++ std::vector m_textures; ++}; ++ + EGLHelper::EGLFunctions::EGLFunctions() + { + QOpenGLContext *context = OzoneUtilQt::getQOpenGLContext(); + + eglCreateImage = + reinterpret_cast(context->getProcAddress("eglCreateImage")); +- eglCreateDRMImageMESA = reinterpret_cast( +- context->getProcAddress("eglCreateDRMImageMESA")); + eglDestroyImage = + reinterpret_cast(context->getProcAddress("eglDestroyImage")); + eglExportDMABUFImageMESA = reinterpret_cast( +@@ -122,7 +198,6 @@ EGLHelper::EGLHelper() + const char *displayExtensions = m_functions->eglQueryString(m_eglDisplay, EGL_EXTENSIONS); + m_isDmaBufSupported = strstr(displayExtensions, "EGL_EXT_image_dma_buf_import") + && strstr(displayExtensions, "EGL_EXT_image_dma_buf_import_modifiers") +- && strstr(displayExtensions, "EGL_MESA_drm_image") + && strstr(displayExtensions, "EGL_MESA_image_dma_buf_export"); + } + +@@ -143,17 +218,19 @@ void EGLHelper::queryDmaBuf(const int wi + if (!m_isDmaBufSupported) + return; + +- // clang-format off +- EGLint attribs[] = { +- EGL_WIDTH, width, +- EGL_HEIGHT, height, +- EGL_DRM_BUFFER_FORMAT_MESA, EGL_DRM_BUFFER_FORMAT_ARGB32_MESA, +- EGL_DRM_BUFFER_USE_MESA, EGL_DRM_BUFFER_USE_SHARE_MESA, +- EGL_NONE +- }; +- // clang-format on ++ ScopedGLContext context(m_offscreenSurface.get(), m_functions.get()); ++ if (!context.isValid()) ++ return; ++ ++ EGLContext eglContext = context.eglContext(); ++ if (!eglContext) { ++ qWarning("EGL: No EGLContext."); ++ return; ++ } + +- EGLImage eglImage = m_functions->eglCreateDRMImageMESA(m_eglDisplay, attribs); ++ uint64_t textureId = context.createTexture(width, height); ++ EGLImage eglImage = m_functions->eglCreateImage(m_eglDisplay, eglContext, EGL_GL_TEXTURE_2D, ++ (EGLClientBuffer)textureId, NULL); + if (eglImage == EGL_NO_IMAGE) { + qWarning("EGL: Failed to create EGLImage: %s", getLastEGLErrorString()); + return; +diff -rupN qtwebengine-everywhere-src-6.9.2/src/core/ozone/egl_helper.h qtwebengine-everywhere-src-6.9.2-new/src/core/ozone/egl_helper.h +--- qtwebengine-everywhere-src-6.9.2/src/core/ozone/egl_helper.h 2025-08-18 02:53:11.000000000 +0200 ++++ qtwebengine-everywhere-src-6.9.2-new/src/core/ozone/egl_helper.h 2025-09-08 22:20:02.399018856 +0200 +@@ -11,7 +11,6 @@ + #include + + #undef eglCreateImage +-#undef eglCreateDRMImageMESA + #undef eglDestroyImage + #undef eglExportDMABUFImageMESA + #undef eglExportDMABUFImageQueryMESA +@@ -34,7 +33,6 @@ public: + EGLFunctions(); + + PFNEGLCREATEIMAGEPROC eglCreateImage; +- PFNEGLCREATEDRMIMAGEMESAPROC eglCreateDRMImageMESA; + PFNEGLDESTROYIMAGEPROC eglDestroyImage; + PFNEGLEXPORTDMABUFIMAGEMESAPROC eglExportDMABUFImageMESA; + PFNEGLEXPORTDMABUFIMAGEQUERYMESAPROC eglExportDMABUFImageQueryMESA; From 386d409055d07136fe62d08abca8d32f5692dec3 Mon Sep 17 00:00:00 2001 From: Jan Grulich Date: Fri, 26 Sep 2025 15:01:07 +0200 Subject: [PATCH 60/76] 6.10.0 RC --- .gitignore | 1 + clean_qtwebengine.sh | 2 +- qt6-qtwebengine.spec | 9 ++++++--- sources | 2 +- 4 files changed, 9 insertions(+), 5 deletions(-) diff --git a/.gitignore b/.gitignore index 11326d2..64ef03a 100644 --- a/.gitignore +++ b/.gitignore @@ -18,3 +18,4 @@ /qtwebengine-everywhere-src-6.9.0-clean.tar.xz /qtwebengine-everywhere-src-6.9.1-clean.tar.xz /qtwebengine-everywhere-src-6.9.2-clean.tar.xz +/qtwebengine-everywhere-src-6.10.0-rc-clean.tar.xz diff --git a/clean_qtwebengine.sh b/clean_qtwebengine.sh index 0453321..5189a83 100755 --- a/clean_qtwebengine.sh +++ b/clean_qtwebengine.sh @@ -21,7 +21,7 @@ if [ -z "$1" ] ; then echo "usage: ./clean_qtwebengine.sh VERSION" - echo "e.g.: ./clean_qtwebengine.sh 6.8.0" + echo "e.g.: ./clean_qtwebengine.sh 6.10.0" exit 1 fi diff --git a/qt6-qtwebengine.spec b/qt6-qtwebengine.spec index 342f0cd..06cbade 100644 --- a/qt6-qtwebengine.spec +++ b/qt6-qtwebengine.spec @@ -76,7 +76,7 @@ # and designer plugins %global __provides_exclude_from ^%{_qt6_plugindir}/.*\\.so$ -#global unstable 1 +%global unstable 1 %if 0%{?unstable} %global prerelease rc %endif @@ -85,8 +85,8 @@ Summary: Qt6 - QtWebEngine components Name: qt6-qtwebengine -Version: 6.9.2 -Release: 2%{?dist} +Version: 6.10.0%{?unstable:~%{prerelease}} +Release: 1%{?dist} # See LICENSE.GPL LICENSE.LGPL LGPL_EXCEPTION.txt, for details # See also http://qt-project.org/doc/qt-5.0/qtdoc/licensing.html @@ -847,6 +847,9 @@ done %endif %changelog +* Thu Sep 25 2025 Jan Grulich - 6.10.0~rc-1 +- 6.10.0 RC + * Mon Sep 08 2025 Sandro Mani - 6.9.2-2 - Revert commit bcee2dbf412cc655c1b467091b581c696d234e3f diff --git a/sources b/sources index 92e53a4..35d49ed 100644 --- a/sources +++ b/sources @@ -1,2 +1,2 @@ -SHA512 (qtwebengine-everywhere-src-6.9.2-clean.tar.xz) = ae31f6b057629b2690c81e1920c8ee4dab0b44262f087c42716b2a5cbece884873bb89c2f3a5f8ffa9de6501febea85c360d29f0d98d2eded5893d213ba317c9 +SHA512 (qtwebengine-everywhere-src-6.10.0-rc-clean.tar.xz) = e22e59137525124deb112534cbf6447cfd9a07977593187489e21f452576f2614ee19c4137eef26a0f3a4d4382124417e089d22e9da40650e22456e3f00c34f3 SHA512 (pulseaudio-12.2-headers.tar.gz) = a5a9bcbb16030b3bc83cc0cc8f5e7f90e0723d3e83258a5c77eacb32eaa267118a73fa7814fbcc99a24e4907916a2b371ebb6dedc4f45541c3acf6c834fd35be From 3fd432b7b3eaceb899cd3552f3cf7a6c92295f63 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dan=20Hor=C3=A1k?= Date: Sun, 28 Sep 2025 17:40:01 +0200 Subject: [PATCH 61/76] rebased to 6.10 - WIP --- chromium-130-size-assertions.patch | 90 - qt6-qtwebengine.spec | 6 +- qtwebengine-chromium-ppc64-highway.patch | 258 ++ qtwebengine-chromium-ppc64.patch | 3953 +++------------------- series.ppc64 | 2 +- 5 files changed, 803 insertions(+), 3506 deletions(-) delete mode 100644 chromium-130-size-assertions.patch create mode 100644 qtwebengine-chromium-ppc64-highway.patch diff --git a/chromium-130-size-assertions.patch b/chromium-130-size-assertions.patch deleted file mode 100644 index cc75fb3..0000000 --- a/chromium-130-size-assertions.patch +++ /dev/null @@ -1,90 +0,0 @@ -commit f457e3c32b8170a39ead84ceaf9f0fdbe0696649 -Author: Michael Lippautz -Date: Tue Oct 15 19:27:32 2024 +0000 - - Fix size assertions across Blink - - The ASSERT_SIZE() macro is used to check that certain object sizes do - not grow unexpectedly. Fix a few occurrences that assumed that Member - is always the same size as debug builds may blow up the pointer size - to allow verifying some conditions. - - Bug: 373485798 - Change-Id: I243dd7d75810e2cfda0141817986a6c4a03c6392 - Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/5934877 - Commit-Queue: Michael Lippautz - Reviewed-by: Steinar H Gunderson - Cr-Commit-Position: refs/heads/main@{#1368939} - -diff --git a/third_party/blink/renderer/core/css/css_selector.cc b/third_party/blink/renderer/core/css/css_selector.cc -index e9cd483e0ce13..3d99eab57489e 100644 ---- a/third_party/blink/renderer/core/css/css_selector.cc -+++ b/third_party/blink/renderer/core/css/css_selector.cc -@@ -88,7 +88,11 @@ unsigned MaximumSpecificity( - - struct SameSizeAsCSSSelector { - unsigned bitfields; -- void* pointers[1]; -+ union { -+ AtomicString value_; -+ QualifiedName tag_q_name_or_attribute_; -+ Member rare_data_; -+ } pointers; - }; - - ASSERT_SIZE(CSSSelector, SameSizeAsCSSSelector); -diff --git a/third_party/blink/renderer/core/css/resolver/match_result.h b/third_party/blink/renderer/core/css/resolver/match_result.h -index c99bae9777094..210ef8610b808 100644 ---- a/third_party/blink/renderer/core/css/resolver/match_result.h -+++ b/third_party/blink/renderer/core/css/resolver/match_result.h -@@ -34,6 +34,7 @@ - #include "third_party/blink/renderer/core/dom/tree_scope.h" - #include "third_party/blink/renderer/platform/heap/collection_support/heap_vector.h" - #include "third_party/blink/renderer/platform/heap/garbage_collected.h" -+#include "third_party/blink/renderer/platform/wtf/size_assertions.h" - #include "third_party/blink/renderer/platform/wtf/vector.h" - - namespace blink { -@@ -88,8 +89,13 @@ struct CORE_EXPORT MatchedProperties { - Member properties; - Data data_; - }; --static_assert(sizeof(MatchedProperties) <= 12, -- "MatchedProperties should not grow without thinking"); -+ -+struct SameSizeAsMatchedProperties { -+ Member properties; -+ uint8_t data_[8]; -+}; -+ -+ASSERT_SIZE(MatchedProperties, SameSizeAsMatchedProperties); - - } // namespace blink - -diff --git a/third_party/blink/renderer/core/dom/element_data.cc b/third_party/blink/renderer/core/dom/element_data.cc -index 0e616444cbf92..6f3592bfa907b 100644 ---- a/third_party/blink/renderer/core/dom/element_data.cc -+++ b/third_party/blink/renderer/core/dom/element_data.cc -@@ -46,7 +46,8 @@ struct SameSizeAsElementData final - : public GarbageCollected { - unsigned bitfield; - Member willbe_member; -- void* pointers[2]; -+ SpaceSplitString class_names_; -+ void* pointers[1]; - }; - - ASSERT_SIZE(ElementData, SameSizeAsElementData); -diff --git a/third_party/blink/renderer/platform/fonts/shaping/shape_result.cc b/third_party/blink/renderer/platform/fonts/shaping/shape_result.cc -index 98a9f6988ae3d..68b3c922cb362 100644 ---- a/third_party/blink/renderer/platform/fonts/shaping/shape_result.cc -+++ b/third_party/blink/renderer/platform/fonts/shaping/shape_result.cc -@@ -75,7 +75,7 @@ struct SameSizeAsRunInfo { - void* pointers[2]; - unsigned integer; - } glyph_data; -- void* pointer; -+ Member pointer; - Vector vector; - int integers[6]; - }; diff --git a/qt6-qtwebengine.spec b/qt6-qtwebengine.spec index 06cbade..a8e90ee 100644 --- a/qt6-qtwebengine.spec +++ b/qt6-qtwebengine.spec @@ -141,8 +141,8 @@ Patch80: qtwebengine-fix-arm-build.patch ## ppc64le port Patch200: qtwebengine-6.9-ppc64.patch Patch201: qtwebengine-chromium-ppc64.patch -# https://src.fedoraproject.org/rpms/chromium/c/c675db4ac0623d2d97344be0b3b2d9f1ac931446?branch=rawhide -Patch202: chromium-130-size-assertions.patch +# https://github.com/google/highway/commit/dcc0ca1cd4245ecff9e5ba50818e47d5e2ccf699 +Patch202: qtwebengine-chromium-ppc64-highway.patch # handled by qt6-srpm-macros, which defines %%qt6_qtwebengine_arches # FIXME use/update qt6_qtwebengine_arches @@ -495,8 +495,10 @@ popd %patch -P200 -p1 pushd src/3rdparty/chromium %patch -P201 -p1 +pushd third_party/highway/src %patch -P202 -p1 popd +popd # delete all "toolprefix = " lines from build/toolchain/linux/BUILD.gn, as we diff --git a/qtwebengine-chromium-ppc64-highway.patch b/qtwebengine-chromium-ppc64-highway.patch new file mode 100644 index 0000000..7bc3e06 --- /dev/null +++ b/qtwebengine-chromium-ppc64-highway.patch @@ -0,0 +1,258 @@ +commit dcc0ca1cd4245ecff9e5ba50818e47d5e2ccf699 +Author: John Platts +Date: Fri Jan 17 12:16:49 2025 -0600 + + Fix for GCC 15 compiler error on PPC8/PPC9/PPC10 + +diff --git a/hwy/ops/ppc_vsx-inl.h b/hwy/ops/ppc_vsx-inl.h +index 86d6d98c..3564ae0b 100644 +--- a/hwy/ops/ppc_vsx-inl.h ++++ b/hwy/ops/ppc_vsx-inl.h +@@ -3744,16 +3744,73 @@ static HWY_INLINE V VsxF2INormalizeSrcVals(V v) { + #endif + } + ++template ++static HWY_INLINE HWY_MAYBE_UNUSED VFromD>> ++VsxXvcvspsxds(VF32 vf32) { ++ using VI64 = VFromD>>; ++#if (HWY_COMPILER_GCC_ACTUAL && HWY_COMPILER_GCC_ACTUAL < 1500) || \ ++ HWY_HAS_BUILTIN(__builtin_vsx_xvcvspsxds) ++ // Use __builtin_vsx_xvcvspsxds if it is available (which is the case with ++ // GCC 4.8 through GCC 14 or Clang 13 or later on PPC8/PPC9/PPC10) ++ return VI64{__builtin_vsx_xvcvspsxds(vf32.raw)}; ++#elif HWY_COMPILER_GCC_ACTUAL >= 1500 && HWY_IS_LITTLE_ENDIAN ++ // On little-endian PPC8/PPC9/PPC10 with GCC 15 or later, use the F32->I64 ++ // vec_signedo intrinsic as the __builtin_vsx_xvcvspsxds intrinsic has been ++ // removed from GCC in GCC 15 ++ return VI64{vec_signedo(vf32.raw)}; ++#elif HWY_COMPILER_GCC_ACTUAL >= 1500 && HWY_IS_BIG_ENDIAN ++ // On big-endian PPC8/PPC9/PPC10 with GCC 15 or later, use the F32->I64 ++ // vec_signede intrinsic as the __builtin_vsx_xvcvspsxds intrinsic has been ++ // removed from GCC in GCC 15 ++ return VI64{vec_signede(vf32.raw)}; ++#else ++ // Inline assembly fallback for older versions of Clang that do not have the ++ // __builtin_vsx_xvcvspsxds intrinsic ++ __vector signed long long raw_result; ++ __asm__("xvcvspsxds %x0, %x1" : "=wa"(raw_result) : "wa"(vf32.raw) :); ++ return VI64{raw_result}; ++#endif ++} ++ ++template ++static HWY_INLINE HWY_MAYBE_UNUSED VFromD>> ++VsxXvcvspuxds(VF32 vf32) { ++ using VU64 = VFromD>>; ++#if (HWY_COMPILER_GCC_ACTUAL && HWY_COMPILER_GCC_ACTUAL < 1500) || \ ++ HWY_HAS_BUILTIN(__builtin_vsx_xvcvspuxds) ++ // Use __builtin_vsx_xvcvspuxds if it is available (which is the case with ++ // GCC 4.8 through GCC 14 or Clang 13 or later on PPC8/PPC9/PPC10) ++ return VU64{reinterpret_cast<__vector unsigned long long>( ++ __builtin_vsx_xvcvspuxds(vf32.raw))}; ++#elif HWY_COMPILER_GCC_ACTUAL >= 1500 && HWY_IS_LITTLE_ENDIAN ++ // On little-endian PPC8/PPC9/PPC10 with GCC 15 or later, use the F32->U64 ++ // vec_unsignedo intrinsic as the __builtin_vsx_xvcvspuxds intrinsic has been ++ // removed from GCC in GCC 15 ++ return VU64{vec_unsignedo(vf32.raw)}; ++#elif HWY_COMPILER_GCC_ACTUAL >= 1500 && HWY_IS_BIG_ENDIAN ++ // On big-endian PPC8/PPC9/PPC10 with GCC 15 or later, use the F32->U64 ++ // vec_unsignedo intrinsic as the __builtin_vsx_xvcvspuxds intrinsic has been ++ // removed from GCC in GCC 15 ++ return VU64{vec_unsignede(vf32.raw)}; ++#else ++ // Inline assembly fallback for older versions of Clang that do not have the ++ // __builtin_vsx_xvcvspuxds intrinsic ++ __vector unsigned long long raw_result; ++ __asm__("xvcvspuxds %x0, %x1" : "=wa"(raw_result) : "wa"(vf32.raw) :); ++ return VU64{raw_result}; ++#endif ++} ++ + } // namespace detail + #endif // !HWY_S390X_HAVE_Z14 + + template + HWY_API VFromD PromoteTo(D di64, VFromD> v) { +-#if !HWY_S390X_HAVE_Z14 && \ +- (HWY_COMPILER_GCC_ACTUAL || HWY_HAS_BUILTIN(__builtin_vsx_xvcvspsxds)) +- const __vector float raw_v = +- detail::VsxF2INormalizeSrcVals(InterleaveLower(v, v)).raw; +- return VFromD{__builtin_vsx_xvcvspsxds(raw_v)}; ++#if !HWY_S390X_HAVE_Z14 ++ const Repartition dt_f32; ++ const auto vt_f32 = ResizeBitCast(dt_f32, v); ++ return detail::VsxXvcvspsxds( ++ detail::VsxF2INormalizeSrcVals(InterleaveLower(vt_f32, vt_f32))); + #else + const RebindToFloat df64; + return ConvertTo(di64, PromoteTo(df64, v)); +@@ -3762,12 +3819,11 @@ HWY_API VFromD PromoteTo(D di64, VFromD> v) { + + template + HWY_API VFromD PromoteTo(D du64, VFromD> v) { +-#if !HWY_S390X_HAVE_Z14 && \ +- (HWY_COMPILER_GCC_ACTUAL || HWY_HAS_BUILTIN(__builtin_vsx_xvcvspuxds)) +- const __vector float raw_v = +- detail::VsxF2INormalizeSrcVals(InterleaveLower(v, v)).raw; +- return VFromD{reinterpret_cast<__vector unsigned long long>( +- __builtin_vsx_xvcvspuxds(raw_v))}; ++#if !HWY_S390X_HAVE_Z14 ++ const Repartition dt_f32; ++ const auto vt_f32 = ResizeBitCast(dt_f32, v); ++ return detail::VsxXvcvspuxds( ++ detail::VsxF2INormalizeSrcVals(InterleaveLower(vt_f32, vt_f32))); + #else + const RebindToFloat df64; + return ConvertTo(du64, PromoteTo(df64, v)); +@@ -3876,12 +3932,10 @@ HWY_API VFromD PromoteUpperTo(D df64, Vec128 v) { + + template + HWY_API VFromD PromoteUpperTo(D di64, Vec128 v) { +-#if !HWY_S390X_HAVE_Z14 && \ +- (HWY_COMPILER_GCC_ACTUAL || HWY_HAS_BUILTIN(__builtin_vsx_xvcvspsxds)) +- const __vector float raw_v = +- detail::VsxF2INormalizeSrcVals(InterleaveUpper(Full128(), v, v)) +- .raw; +- return VFromD{__builtin_vsx_xvcvspsxds(raw_v)}; ++#if !HWY_S390X_HAVE_Z14 ++ (void)di64; ++ return detail::VsxXvcvspsxds( ++ detail::VsxF2INormalizeSrcVals(InterleaveUpper(Full128(), v, v))); + #else + const RebindToFloat df64; + return ConvertTo(di64, PromoteUpperTo(df64, v)); +@@ -3890,13 +3944,10 @@ HWY_API VFromD PromoteUpperTo(D di64, Vec128 v) { + + template + HWY_API VFromD PromoteUpperTo(D du64, Vec128 v) { +-#if !HWY_S390X_HAVE_Z14 && \ +- (HWY_COMPILER_GCC_ACTUAL || HWY_HAS_BUILTIN(__builtin_vsx_xvcvspuxds)) +- const __vector float raw_v = +- detail::VsxF2INormalizeSrcVals(InterleaveUpper(Full128(), v, v)) +- .raw; +- return VFromD{reinterpret_cast<__vector unsigned long long>( +- __builtin_vsx_xvcvspuxds(raw_v))}; ++#if !HWY_S390X_HAVE_Z14 ++ (void)du64; ++ return detail::VsxXvcvspuxds( ++ detail::VsxF2INormalizeSrcVals(InterleaveUpper(Full128(), v, v))); + #else + const RebindToFloat df64; + return ConvertTo(du64, PromoteUpperTo(df64, v)); +@@ -3984,20 +4035,18 @@ HWY_INLINE VFromD PromoteEvenTo(hwy::SignedTag /*to_type_tag*/, + hwy::SizeTag<8> /*to_lane_size_tag*/, + hwy::FloatTag /*from_type_tag*/, D d_to, + V v) { +-#if !HWY_S390X_HAVE_Z14 && \ +- (HWY_COMPILER_GCC_ACTUAL || HWY_HAS_BUILTIN(__builtin_vsx_xvcvspsxds)) ++#if !HWY_S390X_HAVE_Z14 + (void)d_to; + const auto normalized_v = detail::VsxF2INormalizeSrcVals(v); + #if HWY_IS_LITTLE_ENDIAN +- // __builtin_vsx_xvcvspsxds expects the source values to be in the odd lanes +- // on little-endian PPC, and the vec_sld operation below will shift the even ++ // VsxXvcvspsxds expects the source values to be in the odd lanes on ++ // little-endian PPC, and the Shuffle2103 operation below will shift the even + // lanes of normalized_v into the odd lanes. +- return VFromD{ +- __builtin_vsx_xvcvspsxds(vec_sld(normalized_v.raw, normalized_v.raw, 4))}; ++ return VsxXvcvspsxds(Shuffle2103(normalized_v)); + #else +- // __builtin_vsx_xvcvspsxds expects the source values to be in the even lanes +- // on big-endian PPC. +- return VFromD{__builtin_vsx_xvcvspsxds(normalized_v.raw)}; ++ // VsxXvcvspsxds expects the source values to be in the even lanes on ++ // big-endian PPC. ++ return VsxXvcvspsxds(normalized_v); + #endif + #else + const RebindToFloat df64; +@@ -4012,22 +4061,18 @@ HWY_INLINE VFromD PromoteEvenTo(hwy::UnsignedTag /*to_type_tag*/, + hwy::SizeTag<8> /*to_lane_size_tag*/, + hwy::FloatTag /*from_type_tag*/, D d_to, + V v) { +-#if !HWY_S390X_HAVE_Z14 && \ +- (HWY_COMPILER_GCC_ACTUAL || HWY_HAS_BUILTIN(__builtin_vsx_xvcvspuxds)) ++#if !HWY_S390X_HAVE_Z14 + (void)d_to; + const auto normalized_v = detail::VsxF2INormalizeSrcVals(v); + #if HWY_IS_LITTLE_ENDIAN +- // __builtin_vsx_xvcvspuxds expects the source values to be in the odd lanes +- // on little-endian PPC, and the vec_sld operation below will shift the even +- // lanes of normalized_v into the odd lanes. +- return VFromD{ +- reinterpret_cast<__vector unsigned long long>(__builtin_vsx_xvcvspuxds( +- vec_sld(normalized_v.raw, normalized_v.raw, 4)))}; ++ // VsxXvcvspuxds expects the source values to be in the odd lanes ++ // on little-endian PPC, and the Shuffle2103 operation below will shift the ++ // even lanes of normalized_v into the odd lanes. ++ return VsxXvcvspuxds(Shuffle2103(normalized_v)); + #else +- // __builtin_vsx_xvcvspuxds expects the source values to be in the even lanes ++ // VsxXvcvspuxds expects the source values to be in the even lanes + // on big-endian PPC. +- return VFromD{reinterpret_cast<__vector unsigned long long>( +- __builtin_vsx_xvcvspuxds(normalized_v.raw))}; ++ return VsxXvcvspuxds(normalized_v); + #endif + #else + const RebindToFloat df64; +@@ -4069,20 +4114,18 @@ HWY_INLINE VFromD PromoteOddTo(hwy::SignedTag /*to_type_tag*/, + hwy::SizeTag<8> /*to_lane_size_tag*/, + hwy::FloatTag /*from_type_tag*/, D d_to, + V v) { +-#if !HWY_S390X_HAVE_Z14 && \ +- (HWY_COMPILER_GCC_ACTUAL || HWY_HAS_BUILTIN(__builtin_vsx_xvcvspsxds)) ++#if !HWY_S390X_HAVE_Z14 + (void)d_to; + const auto normalized_v = detail::VsxF2INormalizeSrcVals(v); + #if HWY_IS_LITTLE_ENDIAN +- // __builtin_vsx_xvcvspsxds expects the source values to be in the odd lanes ++ // VsxXvcvspsxds expects the source values to be in the odd lanes + // on little-endian PPC +- return VFromD{__builtin_vsx_xvcvspsxds(normalized_v.raw)}; ++ return VsxXvcvspsxds(normalized_v); + #else +- // __builtin_vsx_xvcvspsxds expects the source values to be in the even lanes +- // on big-endian PPC, and the vec_sld operation below will shift the odd lanes +- // of normalized_v into the even lanes. +- return VFromD{ +- __builtin_vsx_xvcvspsxds(vec_sld(normalized_v.raw, normalized_v.raw, 4))}; ++ // VsxXvcvspsxds expects the source values to be in the even lanes ++ // on big-endian PPC, and the Shuffle0321 operation below will shift the odd ++ // lanes of normalized_v into the even lanes. ++ return VsxXvcvspsxds(Shuffle0321(normalized_v)); + #endif + #else + const RebindToFloat df64; +@@ -4097,22 +4140,18 @@ HWY_INLINE VFromD PromoteOddTo(hwy::UnsignedTag /*to_type_tag*/, + hwy::SizeTag<8> /*to_lane_size_tag*/, + hwy::FloatTag /*from_type_tag*/, D d_to, + V v) { +-#if !HWY_S390X_HAVE_Z14 && \ +- (HWY_COMPILER_GCC_ACTUAL || HWY_HAS_BUILTIN(__builtin_vsx_xvcvspuxds)) ++#if !HWY_S390X_HAVE_Z14 + (void)d_to; + const auto normalized_v = detail::VsxF2INormalizeSrcVals(v); + #if HWY_IS_LITTLE_ENDIAN +- // __builtin_vsx_xvcvspuxds expects the source values to be in the odd lanes ++ // VsxXvcvspuxds expects the source values to be in the odd lanes + // on little-endian PPC +- return VFromD{reinterpret_cast<__vector unsigned long long>( +- __builtin_vsx_xvcvspuxds(normalized_v.raw))}; ++ return VsxXvcvspuxds(normalized_v); + #else +- // __builtin_vsx_xvcvspuxds expects the source values to be in the even lanes +- // on big-endian PPC, and the vec_sld operation below will shift the odd lanes +- // of normalized_v into the even lanes. +- return VFromD{ +- reinterpret_cast<__vector unsigned long long>(__builtin_vsx_xvcvspuxds( +- vec_sld(normalized_v.raw, normalized_v.raw, 4)))}; ++ // VsxXvcvspuxds expects the source values to be in the even lanes ++ // on big-endian PPC, and the Shuffle0321 operation below will shift the odd ++ // lanes of normalized_v into the even lanes. ++ return VsxXvcvspuxds(Shuffle0321(normalized_v)); + #endif + #else + const RebindToFloat df64; diff --git a/qtwebengine-chromium-ppc64.patch b/qtwebengine-chromium-ppc64.patch index c1a17e1..623447f 100644 --- a/qtwebengine-chromium-ppc64.patch +++ b/qtwebengine-chromium-ppc64.patch @@ -10,10 +10,10 @@ More investigation required. sandbox/linux/seccomp-bpf/trap.cc | 14 ++++++++++++++ 1 file changed, 14 insertions(+) -Index: chromium-130.0.6723.44/sandbox/linux/seccomp-bpf/trap.cc +Index: chromium-134.0.6998.35/sandbox/linux/seccomp-bpf/trap.cc =================================================================== ---- chromium-130.0.6723.44.orig/sandbox/linux/seccomp-bpf/trap.cc -+++ chromium-130.0.6723.44/sandbox/linux/seccomp-bpf/trap.cc +--- chromium-134.0.6998.35.orig/sandbox/linux/seccomp-bpf/trap.cc ++++ chromium-134.0.6998.35/sandbox/linux/seccomp-bpf/trap.cc @@ -236,6 +236,20 @@ void Trap::SigSys(int nr, LinuxSigInfo* SetIsInSigHandler(); } @@ -44,10 +44,10 @@ Subject: [PATCH 1/1] sandbox: Enable seccomp_bpf for ppc64 sandbox/features.gni | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) -Index: chromium-130.0.6723.44/sandbox/features.gni +Index: chromium-134.0.6998.35/sandbox/features.gni =================================================================== ---- chromium-130.0.6723.44.orig/sandbox/features.gni -+++ chromium-130.0.6723.44/sandbox/features.gni +--- chromium-134.0.6998.35.orig/sandbox/features.gni ++++ chromium-134.0.6998.35/sandbox/features.gni @@ -9,7 +9,8 @@ use_seccomp_bpf = (is_linux || is_chromeos || is_android) && (current_cpu == "x86" || current_cpu == "x64" || @@ -68,11 +68,11 @@ Subject: [PATCH] services/service_manager/sandbox/linux: Fix TCGETS .../sandbox/linux/bpf_renderer_policy_linux.cc | 5 +++++ 1 file changed, 5 insertions(+) -Index: chromium-130.0.6723.44/sandbox/policy/linux/bpf_renderer_policy_linux.cc +Index: chromium-134.0.6998.35/sandbox/policy/linux/bpf_renderer_policy_linux.cc =================================================================== ---- chromium-130.0.6723.44.orig/sandbox/policy/linux/bpf_renderer_policy_linux.cc -+++ chromium-130.0.6723.44/sandbox/policy/linux/bpf_renderer_policy_linux.cc -@@ -15,6 +15,11 @@ +--- chromium-134.0.6998.35.orig/sandbox/policy/linux/bpf_renderer_policy_linux.cc ++++ chromium-134.0.6998.35/sandbox/policy/linux/bpf_renderer_policy_linux.cc +@@ -17,6 +17,11 @@ #include "sandbox/linux/system_headers/linux_syscalls.h" #include "sandbox/policy/linux/sandbox_linux.h" @@ -93,10 +93,10 @@ Subject: [PATCH 1/4] sandbox/linux/bpf_dsl: Update syscall ranges for ppc64 sandbox/linux/bpf_dsl/linux_syscall_ranges.h | 7 +++++++ 1 file changed, 7 insertions(+) -Index: chromium-130.0.6723.44/sandbox/linux/bpf_dsl/linux_syscall_ranges.h +Index: chromium-134.0.6998.35/sandbox/linux/bpf_dsl/linux_syscall_ranges.h =================================================================== ---- chromium-130.0.6723.44.orig/sandbox/linux/bpf_dsl/linux_syscall_ranges.h -+++ chromium-130.0.6723.44/sandbox/linux/bpf_dsl/linux_syscall_ranges.h +--- chromium-134.0.6998.35.orig/sandbox/linux/bpf_dsl/linux_syscall_ranges.h ++++ chromium-134.0.6998.35/sandbox/linux/bpf_dsl/linux_syscall_ranges.h @@ -56,6 +56,13 @@ #define MAX_PUBLIC_SYSCALL __NR_syscalls #define MAX_SYSCALL MAX_PUBLIC_SYSCALL @@ -130,11 +130,11 @@ GNU/Linux environments, but may require expansion elsewhere. create mode 100644 sandbox/linux/system_headers/ppc64_linux_syscalls.h create mode 100644 sandbox/linux/system_headers/ppc64_linux_ucontext.h -Index: chromium-130.0.6723.44/sandbox/linux/BUILD.gn +Index: chromium-134.0.6998.35/sandbox/linux/BUILD.gn =================================================================== ---- chromium-130.0.6723.44.orig/sandbox/linux/BUILD.gn -+++ chromium-130.0.6723.44/sandbox/linux/BUILD.gn -@@ -383,6 +383,8 @@ component("sandbox_services") { +--- chromium-134.0.6998.35.orig/sandbox/linux/BUILD.gn ++++ chromium-134.0.6998.35/sandbox/linux/BUILD.gn +@@ -384,6 +384,8 @@ component("sandbox_services") { source_set("sandbox_services_headers") { sources = [ @@ -143,10 +143,10 @@ Index: chromium-130.0.6723.44/sandbox/linux/BUILD.gn "system_headers/arm64_linux_syscalls.h", "system_headers/arm_linux_syscalls.h", "system_headers/arm_linux_ucontext.h", -Index: chromium-130.0.6723.44/sandbox/linux/system_headers/linux_syscalls.h +Index: chromium-134.0.6998.35/sandbox/linux/system_headers/linux_syscalls.h =================================================================== ---- chromium-130.0.6723.44.orig/sandbox/linux/system_headers/linux_syscalls.h -+++ chromium-130.0.6723.44/sandbox/linux/system_headers/linux_syscalls.h +--- chromium-134.0.6998.35.orig/sandbox/linux/system_headers/linux_syscalls.h ++++ chromium-134.0.6998.35/sandbox/linux/system_headers/linux_syscalls.h @@ -35,5 +35,9 @@ #include "sandbox/linux/system_headers/arm64_linux_syscalls.h" #endif @@ -157,10 +157,10 @@ Index: chromium-130.0.6723.44/sandbox/linux/system_headers/linux_syscalls.h + #endif // SANDBOX_LINUX_SYSTEM_HEADERS_LINUX_SYSCALLS_H_ -Index: chromium-130.0.6723.44/sandbox/linux/system_headers/ppc64_linux_syscalls.h +Index: chromium-134.0.6998.35/sandbox/linux/system_headers/ppc64_linux_syscalls.h =================================================================== --- /dev/null -+++ chromium-130.0.6723.44/sandbox/linux/system_headers/ppc64_linux_syscalls.h ++++ chromium-134.0.6998.35/sandbox/linux/system_headers/ppc64_linux_syscalls.h @@ -0,0 +1,12 @@ +// Copyright 2014 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be @@ -174,10 +174,10 @@ Index: chromium-130.0.6723.44/sandbox/linux/system_headers/ppc64_linux_syscalls. +//TODO: is it necessary to redefine syscall numbers for PPC64? + +#endif // SANDBOX_LINUX_SYSTEM_HEADERS_PPC64_LINUX_SYSCALLS_H_ -Index: chromium-130.0.6723.44/sandbox/linux/system_headers/ppc64_linux_ucontext.h +Index: chromium-134.0.6998.35/sandbox/linux/system_headers/ppc64_linux_ucontext.h =================================================================== --- /dev/null -+++ chromium-130.0.6723.44/sandbox/linux/system_headers/ppc64_linux_ucontext.h ++++ chromium-134.0.6998.35/sandbox/linux/system_headers/ppc64_linux_ucontext.h @@ -0,0 +1,12 @@ +// Copyright 2014 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be @@ -200,11 +200,11 @@ Subject: [PATCH] sandbox/linux: Update IsSyscallAllowed in broker_process.cc sandbox/linux/syscall_broker/broker_process.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) -Index: chromium-130.0.6723.44/sandbox/linux/syscall_broker/broker_process.cc +Index: chromium-134.0.6998.35/sandbox/linux/syscall_broker/broker_process.cc =================================================================== ---- chromium-130.0.6723.44.orig/sandbox/linux/syscall_broker/broker_process.cc -+++ chromium-130.0.6723.44/sandbox/linux/syscall_broker/broker_process.cc -@@ -169,7 +169,7 @@ bool BrokerProcess::IsSyscallBrokerable( +--- chromium-134.0.6998.35.orig/sandbox/linux/syscall_broker/broker_process.cc ++++ chromium-134.0.6998.35/sandbox/linux/syscall_broker/broker_process.cc +@@ -168,7 +168,7 @@ bool BrokerProcess::IsSyscallBrokerable( #if defined(__NR_fstatat64) case __NR_fstatat64: #endif @@ -227,10 +227,10 @@ Subject: [PATCH] sandbox/linux: Update syscall helpers/lists for ppc64 sandbox/linux/services/syscall_wrappers.cc | 2 +- 6 files changed, 73 insertions(+), 55 deletions(-) -Index: chromium-130.0.6723.44/sandbox/linux/seccomp-bpf-helpers/baseline_policy.cc +Index: chromium-134.0.6998.35/sandbox/linux/seccomp-bpf-helpers/baseline_policy.cc =================================================================== ---- chromium-130.0.6723.44.orig/sandbox/linux/seccomp-bpf-helpers/baseline_policy.cc -+++ chromium-130.0.6723.44/sandbox/linux/seccomp-bpf-helpers/baseline_policy.cc +--- chromium-134.0.6998.35.orig/sandbox/linux/seccomp-bpf-helpers/baseline_policy.cc ++++ chromium-134.0.6998.35/sandbox/linux/seccomp-bpf-helpers/baseline_policy.cc @@ -90,7 +90,8 @@ bool IsBaselinePolicyWatched(int sysno) SyscallSets::IsPrctl(sysno) || SyscallSets::IsProcessGroupOrSession(sysno) || @@ -269,19 +269,10 @@ Index: chromium-130.0.6723.44/sandbox/linux/seccomp-bpf-helpers/baseline_policy. if (SyscallSets::IsSocketCall(sysno)) return RestrictSocketcallCommand(); #endif -Index: chromium-130.0.6723.44/sandbox/linux/seccomp-bpf-helpers/syscall_parameters_restrictions.cc +Index: chromium-134.0.6998.35/sandbox/linux/seccomp-bpf-helpers/syscall_parameters_restrictions.cc =================================================================== ---- chromium-130.0.6723.44.orig/sandbox/linux/seccomp-bpf-helpers/syscall_parameters_restrictions.cc -+++ chromium-130.0.6723.44/sandbox/linux/seccomp-bpf-helpers/syscall_parameters_restrictions.cc -@@ -36,7 +36,7 @@ - #endif - - #if (BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)) && \ -- !defined(__arm__) && !defined(__aarch64__) && \ -+ !defined(__arm__) && !defined(__aarch64__) && !defined(__powerpc64__) && \ - !defined(PTRACE_GET_THREAD_AREA) - // Also include asm/ptrace-abi.h since ptrace.h in older libc (for instance - // the one in Ubuntu 16.04 LTS) is missing PTRACE_GET_THREAD_AREA. +--- chromium-134.0.6998.35.orig/sandbox/linux/seccomp-bpf-helpers/syscall_parameters_restrictions.cc ++++ chromium-134.0.6998.35/sandbox/linux/seccomp-bpf-helpers/syscall_parameters_restrictions.cc @@ -45,6 +45,11 @@ #include #endif @@ -352,7 +343,7 @@ Index: chromium-130.0.6723.44/sandbox/linux/seccomp-bpf-helpers/syscall_paramete ResultExpr RestrictSocketcallCommand() { // Unfortunately, we are unable to restrict the first parameter to // socketpair(2). Whilst initially sounding bad, it's noteworthy that very -@@ -463,7 +488,7 @@ ResultExpr RestrictPtrace() { +@@ -461,7 +486,7 @@ ResultExpr RestrictPtrace() { #endif return Switch(request) .Cases({ @@ -361,10 +352,10 @@ Index: chromium-130.0.6723.44/sandbox/linux/seccomp-bpf-helpers/syscall_paramete PTRACE_GETREGS, PTRACE_GETFPREGS, PTRACE_GET_THREAD_AREA, PTRACE_GETREGSET, #endif -Index: chromium-130.0.6723.44/sandbox/linux/seccomp-bpf-helpers/syscall_parameters_restrictions.h +Index: chromium-134.0.6998.35/sandbox/linux/seccomp-bpf-helpers/syscall_parameters_restrictions.h =================================================================== ---- chromium-130.0.6723.44.orig/sandbox/linux/seccomp-bpf-helpers/syscall_parameters_restrictions.h -+++ chromium-130.0.6723.44/sandbox/linux/seccomp-bpf-helpers/syscall_parameters_restrictions.h +--- chromium-134.0.6998.35.orig/sandbox/linux/seccomp-bpf-helpers/syscall_parameters_restrictions.h ++++ chromium-134.0.6998.35/sandbox/linux/seccomp-bpf-helpers/syscall_parameters_restrictions.h @@ -52,7 +52,7 @@ SANDBOX_EXPORT bpf_dsl::ResultExpr Restr // O_NONBLOCK | O_SYNC | O_LARGEFILE | O_CLOEXEC | O_NOATIME. SANDBOX_EXPORT bpf_dsl::ResultExpr RestrictFcntlCommands(); @@ -374,10 +365,10 @@ Index: chromium-130.0.6723.44/sandbox/linux/seccomp-bpf-helpers/syscall_paramete // Restrict socketcall(2) to only allow socketpair(2), send(2), recv(2), // sendto(2), recvfrom(2), shutdown(2), sendmsg(2) and recvmsg(2). SANDBOX_EXPORT bpf_dsl::ResultExpr RestrictSocketcallCommand(); -Index: chromium-130.0.6723.44/sandbox/linux/seccomp-bpf-helpers/syscall_sets.cc +Index: chromium-134.0.6998.35/sandbox/linux/seccomp-bpf-helpers/syscall_sets.cc =================================================================== ---- chromium-130.0.6723.44.orig/sandbox/linux/seccomp-bpf-helpers/syscall_sets.cc -+++ chromium-130.0.6723.44/sandbox/linux/seccomp-bpf-helpers/syscall_sets.cc +--- chromium-134.0.6998.35.orig/sandbox/linux/seccomp-bpf-helpers/syscall_sets.cc ++++ chromium-134.0.6998.35/sandbox/linux/seccomp-bpf-helpers/syscall_sets.cc @@ -29,7 +29,8 @@ bool SyscallSets::IsAllowedGettime(int s switch (sysno) { case __NR_gettimeofday: @@ -762,10 +753,10 @@ Index: chromium-130.0.6723.44/sandbox/linux/seccomp-bpf-helpers/syscall_sets.cc case __NR_vserver: #endif return true; -Index: chromium-130.0.6723.44/sandbox/linux/seccomp-bpf-helpers/syscall_sets.h +Index: chromium-134.0.6998.35/sandbox/linux/seccomp-bpf-helpers/syscall_sets.h =================================================================== ---- chromium-130.0.6723.44.orig/sandbox/linux/seccomp-bpf-helpers/syscall_sets.h -+++ chromium-130.0.6723.44/sandbox/linux/seccomp-bpf-helpers/syscall_sets.h +--- chromium-134.0.6998.35.orig/sandbox/linux/seccomp-bpf-helpers/syscall_sets.h ++++ chromium-134.0.6998.35/sandbox/linux/seccomp-bpf-helpers/syscall_sets.h @@ -46,13 +46,14 @@ class SANDBOX_EXPORT SyscallSets { static bool IsDeniedGetOrModifySocket(int sysno); @@ -803,11 +794,11 @@ Index: chromium-130.0.6723.44/sandbox/linux/seccomp-bpf-helpers/syscall_sets.h // Big system V multiplexing system call. static bool IsSystemVIpc(int sysno); #endif -Index: chromium-130.0.6723.44/sandbox/linux/services/syscall_wrappers.cc +Index: chromium-134.0.6998.35/sandbox/linux/services/syscall_wrappers.cc =================================================================== ---- chromium-130.0.6723.44.orig/sandbox/linux/services/syscall_wrappers.cc -+++ chromium-130.0.6723.44/sandbox/linux/services/syscall_wrappers.cc -@@ -61,7 +61,7 @@ long sys_clone(unsigned long flags, +--- chromium-134.0.6998.35.orig/sandbox/linux/services/syscall_wrappers.cc ++++ chromium-134.0.6998.35/sandbox/linux/services/syscall_wrappers.cc +@@ -66,7 +66,7 @@ long sys_clone(unsigned long flags, #if defined(ARCH_CPU_X86_64) return syscall(__NR_clone, flags, child_stack, ptid, ctid, tls); #elif defined(ARCH_CPU_X86) || defined(ARCH_CPU_ARM_FAMILY) || \ @@ -826,10 +817,10 @@ Subject: [PATCH 1/4] sandbox/linux/bpf_dsl: Modify seccomp_macros to add sandbox/linux/bpf_dsl/seccomp_macros.h | 43 ++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) -Index: chromium-130.0.6723.44/sandbox/linux/bpf_dsl/seccomp_macros.h +Index: chromium-134.0.6998.35/sandbox/linux/bpf_dsl/seccomp_macros.h =================================================================== ---- chromium-130.0.6723.44.orig/sandbox/linux/bpf_dsl/seccomp_macros.h -+++ chromium-130.0.6723.44/sandbox/linux/bpf_dsl/seccomp_macros.h +--- chromium-134.0.6998.35.orig/sandbox/linux/bpf_dsl/seccomp_macros.h ++++ chromium-134.0.6998.35/sandbox/linux/bpf_dsl/seccomp_macros.h @@ -14,6 +14,9 @@ #if defined(__mips__) // sys/user.h in eglibc misses size_t definition @@ -902,10 +893,10 @@ Subject: [PATCH 3/4] sandbox/linux/system_headers: Update linux seccomp header sandbox/linux/system_headers/linux_seccomp.h | 10 ++++++++++ 1 file changed, 10 insertions(+) -Index: chromium-130.0.6723.44/sandbox/linux/system_headers/linux_seccomp.h +Index: chromium-134.0.6998.35/sandbox/linux/system_headers/linux_seccomp.h =================================================================== ---- chromium-130.0.6723.44.orig/sandbox/linux/system_headers/linux_seccomp.h -+++ chromium-130.0.6723.44/sandbox/linux/system_headers/linux_seccomp.h +--- chromium-134.0.6998.35.orig/sandbox/linux/system_headers/linux_seccomp.h ++++ chromium-134.0.6998.35/sandbox/linux/system_headers/linux_seccomp.h @@ -38,6 +38,9 @@ #ifndef EM_AARCH64 #define EM_AARCH64 183 @@ -939,10 +930,10 @@ Subject: [PATCH 4/4] sandbox/linux/system_headers: Update linux signal header sandbox/linux/system_headers/linux_signal.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) -Index: chromium-130.0.6723.44/sandbox/linux/system_headers/linux_signal.h +Index: chromium-134.0.6998.35/sandbox/linux/system_headers/linux_signal.h =================================================================== ---- chromium-130.0.6723.44.orig/sandbox/linux/system_headers/linux_signal.h -+++ chromium-130.0.6723.44/sandbox/linux/system_headers/linux_signal.h +--- chromium-134.0.6998.35.orig/sandbox/linux/system_headers/linux_signal.h ++++ chromium-134.0.6998.35/sandbox/linux/system_headers/linux_signal.h @@ -13,7 +13,7 @@ // (not undefined, but defined different values and in different memory // layouts). So, fill the gap here. @@ -961,10 +952,10 @@ Subject: [PATCH] sandbox/linux/seccomp-bpf: Add ppc64 syscall stub sandbox/linux/seccomp-bpf/syscall.cc | 53 ++++++++++++++++++++++++++-- 1 file changed, 51 insertions(+), 2 deletions(-) -Index: chromium-130.0.6723.44/sandbox/linux/seccomp-bpf/syscall.cc +Index: chromium-134.0.6998.35/sandbox/linux/seccomp-bpf/syscall.cc =================================================================== ---- chromium-130.0.6723.44.orig/sandbox/linux/seccomp-bpf/syscall.cc -+++ chromium-130.0.6723.44/sandbox/linux/seccomp-bpf/syscall.cc +--- chromium-134.0.6998.35.orig/sandbox/linux/seccomp-bpf/syscall.cc ++++ chromium-134.0.6998.35/sandbox/linux/seccomp-bpf/syscall.cc @@ -23,7 +23,7 @@ namespace sandbox { namespace { @@ -1068,10 +1059,10 @@ Subject: [PATCH 5/6] sandbox/linux: update unit test for ppc64 sandbox/linux/seccomp-bpf-helpers/baseline_policy_unittest.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) -Index: chromium-130.0.6723.44/sandbox/linux/seccomp-bpf-helpers/baseline_policy_unittest.cc +Index: chromium-134.0.6998.35/sandbox/linux/seccomp-bpf-helpers/baseline_policy_unittest.cc =================================================================== ---- chromium-130.0.6723.44.orig/sandbox/linux/seccomp-bpf-helpers/baseline_policy_unittest.cc -+++ chromium-130.0.6723.44/sandbox/linux/seccomp-bpf-helpers/baseline_policy_unittest.cc +--- chromium-134.0.6998.35.orig/sandbox/linux/seccomp-bpf-helpers/baseline_policy_unittest.cc ++++ chromium-134.0.6998.35/sandbox/linux/seccomp-bpf-helpers/baseline_policy_unittest.cc @@ -350,8 +350,10 @@ TEST_BASELINE_SIGSYS(__NR_timer_create) #if !defined(__aarch64__) @@ -1083,10 +1074,10 @@ Index: chromium-130.0.6723.44/sandbox/linux/seccomp-bpf-helpers/baseline_policy_ #if defined(LIBC_GLIBC) && !BUILDFLAG(IS_CHROMEOS_ASH) BPF_TEST_C(BaselinePolicy, FutexEINVAL, BaselinePolicy) { -Index: chromium-130.0.6723.44/sandbox/linux/seccomp-bpf-helpers/syscall_sets.cc +Index: chromium-134.0.6998.35/sandbox/linux/seccomp-bpf-helpers/syscall_sets.cc =================================================================== ---- chromium-130.0.6723.44.orig/sandbox/linux/seccomp-bpf-helpers/syscall_sets.cc -+++ chromium-130.0.6723.44/sandbox/linux/seccomp-bpf-helpers/syscall_sets.cc +--- chromium-134.0.6998.35.orig/sandbox/linux/seccomp-bpf-helpers/syscall_sets.cc ++++ chromium-134.0.6998.35/sandbox/linux/seccomp-bpf-helpers/syscall_sets.cc @@ -374,7 +374,9 @@ bool SyscallSets::IsAllowedSignalHandlin #if defined(__i386__) || defined(__arm__) || \ (defined(ARCH_CPU_MIPS_FAMILY) && defined(ARCH_CPU_32_BITS)) || \ @@ -1097,10 +1088,10 @@ Index: chromium-130.0.6723.44/sandbox/linux/seccomp-bpf-helpers/syscall_sets.cc case __NR_sigaction: case __NR_sigprocmask: case __NR_sigreturn: -Index: chromium-130.0.6723.44/sandbox/linux/system_headers/linux_stat.h +Index: chromium-134.0.6998.35/sandbox/linux/system_headers/linux_stat.h =================================================================== ---- chromium-130.0.6723.44.orig/sandbox/linux/system_headers/linux_stat.h -+++ chromium-130.0.6723.44/sandbox/linux/system_headers/linux_stat.h +--- chromium-134.0.6998.35.orig/sandbox/linux/system_headers/linux_stat.h ++++ chromium-134.0.6998.35/sandbox/linux/system_headers/linux_stat.h @@ -173,6 +173,28 @@ struct kernel_stat { unsigned int __unused4; unsigned int __unused5; @@ -1130,10 +1121,10 @@ Index: chromium-130.0.6723.44/sandbox/linux/system_headers/linux_stat.h #endif #if !defined(AT_EMPTY_PATH) -Index: chromium-130.0.6723.44/sandbox/linux/services/credentials.cc +Index: chromium-134.0.6998.35/sandbox/linux/services/credentials.cc =================================================================== ---- chromium-130.0.6723.44.orig/sandbox/linux/services/credentials.cc -+++ chromium-130.0.6723.44/sandbox/linux/services/credentials.cc +--- chromium-134.0.6998.35.orig/sandbox/linux/services/credentials.cc ++++ chromium-134.0.6998.35/sandbox/linux/services/credentials.cc @@ -87,7 +87,7 @@ bool ChrootToSafeEmptyDir() { alignas(16) char stack_buf[PTHREAD_STACK_MIN_CONST]; @@ -1143,10 +1134,10 @@ Index: chromium-130.0.6723.44/sandbox/linux/services/credentials.cc // The stack grows downward. void* stack = stack_buf + sizeof(stack_buf); #else -Index: chromium-130.0.6723.44/sandbox/policy/linux/bpf_utility_policy_linux.cc +Index: chromium-134.0.6998.35/sandbox/policy/linux/bpf_utility_policy_linux.cc =================================================================== ---- chromium-130.0.6723.44.orig/sandbox/policy/linux/bpf_utility_policy_linux.cc -+++ chromium-130.0.6723.44/sandbox/policy/linux/bpf_utility_policy_linux.cc +--- chromium-134.0.6998.35.orig/sandbox/policy/linux/bpf_utility_policy_linux.cc ++++ chromium-134.0.6998.35/sandbox/policy/linux/bpf_utility_policy_linux.cc @@ -34,7 +34,7 @@ ResultExpr UtilityProcessPolicy::Evaluat case __NR_fdatasync: case __NR_fsync: @@ -1156,11 +1147,11 @@ Index: chromium-130.0.6723.44/sandbox/policy/linux/bpf_utility_policy_linux.cc case __NR_getrlimit: #endif #if defined(__i386__) || defined(__arm__) -Index: chromium-130.0.6723.44/sandbox/policy/linux/bpf_renderer_policy_linux.cc +Index: chromium-134.0.6998.35/sandbox/policy/linux/bpf_renderer_policy_linux.cc =================================================================== ---- chromium-130.0.6723.44.orig/sandbox/policy/linux/bpf_renderer_policy_linux.cc -+++ chromium-130.0.6723.44/sandbox/policy/linux/bpf_renderer_policy_linux.cc -@@ -87,7 +87,7 @@ ResultExpr RendererProcessPolicy::Evalua +--- chromium-134.0.6998.35.orig/sandbox/policy/linux/bpf_renderer_policy_linux.cc ++++ chromium-134.0.6998.35/sandbox/policy/linux/bpf_renderer_policy_linux.cc +@@ -90,7 +90,7 @@ ResultExpr RendererProcessPolicy::Evalua case __NR_ftruncate64: #endif #if defined(__i386__) || defined(__x86_64__) || defined(__mips__) || \ @@ -1169,10 +1160,10 @@ Index: chromium-130.0.6723.44/sandbox/policy/linux/bpf_renderer_policy_linux.cc case __NR_getrlimit: case __NR_setrlimit: // We allow setrlimit to dynamically adjust the address space limit as -Index: chromium-130.0.6723.44/sandbox/linux/bpf_dsl/linux_syscall_ranges.h +Index: chromium-134.0.6998.35/sandbox/linux/bpf_dsl/linux_syscall_ranges.h =================================================================== ---- chromium-130.0.6723.44.orig/sandbox/linux/bpf_dsl/linux_syscall_ranges.h -+++ chromium-130.0.6723.44/sandbox/linux/bpf_dsl/linux_syscall_ranges.h +--- chromium-134.0.6998.35.orig/sandbox/linux/bpf_dsl/linux_syscall_ranges.h ++++ chromium-134.0.6998.35/sandbox/linux/bpf_dsl/linux_syscall_ranges.h @@ -58,9 +58,9 @@ #elif defined(__powerpc64__) @@ -1185,10 +1176,10 @@ Index: chromium-130.0.6723.44/sandbox/linux/bpf_dsl/linux_syscall_ranges.h #define MAX_SYSCALL MAX_PUBLIC_SYSCALL #else -Index: chromium-130.0.6723.44/sandbox/linux/services/credentials.cc +Index: chromium-134.0.6998.35/sandbox/linux/services/credentials.cc =================================================================== ---- chromium-130.0.6723.44.orig/sandbox/linux/services/credentials.cc -+++ chromium-130.0.6723.44/sandbox/linux/services/credentials.cc +--- chromium-134.0.6998.35.orig/sandbox/linux/services/credentials.cc ++++ chromium-134.0.6998.35/sandbox/linux/services/credentials.cc @@ -96,7 +96,8 @@ bool ChrootToSafeEmptyDir() { int clone_flags = CLONE_FS | LINUX_SIGCHLD; @@ -1210,11 +1201,11 @@ Index: chromium-130.0.6723.44/sandbox/linux/services/credentials.cc + // configuration loading failures and no fonts will be displayed! clone_flags |= CLONE_VM | CLONE_VFORK | CLONE_SETTLS; - char tls_buf[PTHREAD_STACK_MIN_CONST] = {0}; -Index: chromium-130.0.6723.44/sandbox/linux/seccomp-bpf-helpers/sigsys_handlers.cc + char tls_buf[PTHREAD_STACK_MIN_CONST] = {}; +Index: chromium-134.0.6998.35/sandbox/linux/seccomp-bpf-helpers/sigsys_handlers.cc =================================================================== ---- chromium-130.0.6723.44.orig/sandbox/linux/seccomp-bpf-helpers/sigsys_handlers.cc -+++ chromium-130.0.6723.44/sandbox/linux/seccomp-bpf-helpers/sigsys_handlers.cc +--- chromium-134.0.6998.35.orig/sandbox/linux/seccomp-bpf-helpers/sigsys_handlers.cc ++++ chromium-134.0.6998.35/sandbox/linux/seccomp-bpf-helpers/sigsys_handlers.cc @@ -362,7 +362,16 @@ intptr_t SIGSYSFstatatHandler(const stru if (args.nr == __NR_fstatat_default) { if (*reinterpret_cast(args.args[1]) == '\0' && @@ -1233,10 +1224,10 @@ Index: chromium-130.0.6723.44/sandbox/linux/seccomp-bpf-helpers/sigsys_handlers. reinterpret_cast(args.args[2])); } return -reinterpret_cast(fs_denied_errno); -Index: chromium-130.0.6723.44/third_party/angle/src/libANGLE/Constants.h +Index: chromium-134.0.6998.35/third_party/angle/src/libANGLE/Constants.h =================================================================== ---- chromium-130.0.6723.44.orig/third_party/angle/src/libANGLE/Constants.h -+++ chromium-130.0.6723.44/third_party/angle/src/libANGLE/Constants.h +--- chromium-134.0.6998.35.orig/third_party/angle/src/libANGLE/Constants.h ++++ chromium-134.0.6998.35/third_party/angle/src/libANGLE/Constants.h @@ -9,6 +9,7 @@ #ifndef LIBANGLE_CONSTANTS_H_ #define LIBANGLE_CONSTANTS_H_ @@ -1245,10 +1236,10 @@ Index: chromium-130.0.6723.44/third_party/angle/src/libANGLE/Constants.h #include "common/platform.h" #include -Index: chromium-130.0.6723.44/third_party/boringssl/src/crypto/abi_self_test.cc +Index: chromium-134.0.6998.35/third_party/boringssl/src/crypto/abi_self_test.cc =================================================================== ---- chromium-130.0.6723.44.orig/third_party/boringssl/src/crypto/abi_self_test.cc -+++ chromium-130.0.6723.44/third_party/boringssl/src/crypto/abi_self_test.cc +--- chromium-134.0.6998.35.orig/third_party/boringssl/src/crypto/abi_self_test.cc ++++ chromium-134.0.6998.35/third_party/boringssl/src/crypto/abi_self_test.cc @@ -521,3 +521,289 @@ TEST(ABITest, AArch64) { CHECK_ABI_NO_UNWIND(abi_test_clobber_v15_upper); } @@ -1539,10 +1530,10 @@ Index: chromium-130.0.6723.44/third_party/boringssl/src/crypto/abi_self_test.cc + CHECK_ABI_NO_UNWIND(abi_test_clobber_lr); +} +#endif // OPENSSL_PPC64LE && SUPPORTS_ABI_TEST -Index: chromium-130.0.6723.44/third_party/boringssl/src/crypto/cpu_ppc64le.c +Index: chromium-134.0.6998.35/third_party/boringssl/src/crypto/cpu_ppc64le.cc =================================================================== --- /dev/null -+++ chromium-130.0.6723.44/third_party/boringssl/src/crypto/cpu_ppc64le.c ++++ chromium-134.0.6998.35/third_party/boringssl/src/crypto/cpu_ppc64le.cc @@ -0,0 +1,38 @@ +/* Copyright (c) 2016, Google Inc. + * @@ -1582,11 +1573,11 @@ Index: chromium-130.0.6723.44/third_party/boringssl/src/crypto/cpu_ppc64le.c +} + +#endif // OPENSSL_PPC64LE -Index: chromium-130.0.6723.44/third_party/boringssl/src/crypto/crypto.c +Index: chromium-134.0.6998.35/third_party/boringssl/src/crypto/crypto.cc =================================================================== ---- chromium-130.0.6723.44.orig/third_party/boringssl/src/crypto/crypto.c -+++ chromium-130.0.6723.44/third_party/boringssl/src/crypto/crypto.c -@@ -66,6 +66,10 @@ uint32_t OPENSSL_get_ia32cap(int idx) { +--- chromium-134.0.6998.35.orig/third_party/boringssl/src/crypto/crypto.cc ++++ chromium-134.0.6998.35/third_party/boringssl/src/crypto/crypto.cc +@@ -67,6 +67,10 @@ uint32_t OPENSSL_get_ia32cap(int idx) { return OPENSSL_ia32cap_P[idx]; } @@ -1597,10 +1588,10 @@ Index: chromium-130.0.6723.44/third_party/boringssl/src/crypto/crypto.c #elif defined(OPENSSL_ARM) || defined(OPENSSL_AARCH64) #include -Index: chromium-130.0.6723.44/third_party/boringssl/src/crypto/fipsmodule/aes/asm/aesp8-ppc.pl +Index: chromium-134.0.6998.35/third_party/boringssl/src/crypto/fipsmodule/aes/asm/aesp8-ppc.pl =================================================================== --- /dev/null -+++ chromium-130.0.6723.44/third_party/boringssl/src/crypto/fipsmodule/aes/asm/aesp8-ppc.pl ++++ chromium-134.0.6998.35/third_party/boringssl/src/crypto/fipsmodule/aes/asm/aesp8-ppc.pl @@ -0,0 +1,3809 @@ +#! /usr/bin/env perl +# Copyright 2014-2018 The OpenSSL Project Authors. All Rights Reserved. @@ -5411,12 +5402,12 @@ Index: chromium-130.0.6723.44/third_party/boringssl/src/crypto/fipsmodule/aes/as +} + +close STDOUT or die "error closing STDOUT: $!"; -Index: chromium-130.0.6723.44/third_party/boringssl/src/crypto/fipsmodule/aes/internal.h +Index: chromium-134.0.6998.35/third_party/boringssl/src/crypto/fipsmodule/aes/internal.h =================================================================== ---- chromium-130.0.6723.44.orig/third_party/boringssl/src/crypto/fipsmodule/aes/internal.h -+++ chromium-130.0.6723.44/third_party/boringssl/src/crypto/fipsmodule/aes/internal.h -@@ -61,6 +61,12 @@ OPENSSL_INLINE int vpaes_capable(void) { - OPENSSL_INLINE int vpaes_capable(void) { return CRYPTO_is_NEON_capable(); } +--- chromium-134.0.6998.35.orig/third_party/boringssl/src/crypto/fipsmodule/aes/internal.h ++++ chromium-134.0.6998.35/third_party/boringssl/src/crypto/fipsmodule/aes/internal.h +@@ -82,6 +82,12 @@ inline int vpaes_capable(void) { return + inline int vpaes_capable(void) { return CRYPTO_is_NEON_capable(); } #endif +#elif defined(OPENSSL_PPC64LE) @@ -5428,23 +5419,37 @@ Index: chromium-130.0.6723.44/third_party/boringssl/src/crypto/fipsmodule/aes/in #endif #endif // !NO_ASM -Index: chromium-130.0.6723.44/third_party/boringssl/src/crypto/fipsmodule/bcm.c +@@ -504,6 +510,13 @@ void aes_gcm_dec_kernel(const uint8_t *i + const u128 Htable[16]); + #endif + ++#elif defined(OPENSSL_PPC64LE) ++#define GHASH_ASM_PPC64LE ++#define GCM_FUNCREF ++void gcm_init_p8(u128 Htable[16], const uint64_t Xi[2]); ++void gcm_gmult_p8(uint8_t Xi[16], const u128 Htable[16]); ++void gcm_ghash_p8(uint8_t Xi[16], const u128 Htable[16], const uint8_t *inp, ++ size_t len); + #endif + #endif // OPENSSL_NO_ASM + +Index: chromium-134.0.6998.35/third_party/boringssl/src/crypto/fipsmodule/bcm.cc =================================================================== ---- chromium-130.0.6723.44.orig/third_party/boringssl/src/crypto/fipsmodule/bcm.c -+++ chromium-130.0.6723.44/third_party/boringssl/src/crypto/fipsmodule/bcm.c -@@ -101,6 +101,7 @@ - #include "self_check/fips.c.inc" - #include "self_check/self_check.c.inc" - #include "service_indicator/service_indicator.c.inc" -+#include "sha/sha1-altivec.c.inc" - #include "sha/sha1.c.inc" - #include "sha/sha256.c.inc" - #include "sha/sha512.c.inc" -Index: chromium-130.0.6723.44/third_party/boringssl/src/crypto/fipsmodule/bn/bn.c.inc +--- chromium-134.0.6998.35.orig/third_party/boringssl/src/crypto/fipsmodule/bcm.cc ++++ chromium-134.0.6998.35/third_party/boringssl/src/crypto/fipsmodule/bcm.cc +@@ -105,6 +105,7 @@ + #include "self_check/fips.cc.inc" + #include "self_check/self_check.cc.inc" + #include "service_indicator/service_indicator.cc.inc" ++#include "sha/sha1-altivec.cc.inc" + #include "sha/sha1.cc.inc" + #include "sha/sha256.cc.inc" + #include "sha/sha512.cc.inc" +Index: chromium-134.0.6998.35/third_party/boringssl/src/crypto/fipsmodule/bn/bn.cc.inc =================================================================== ---- chromium-130.0.6723.44.orig/third_party/boringssl/src/crypto/fipsmodule/bn/bn.c.inc -+++ chromium-130.0.6723.44/third_party/boringssl/src/crypto/fipsmodule/bn/bn.c.inc -@@ -384,6 +384,23 @@ int bn_expand(BIGNUM *bn, size_t bits) { +--- chromium-134.0.6998.35.orig/third_party/boringssl/src/crypto/fipsmodule/bn/bn.cc.inc ++++ chromium-134.0.6998.35/third_party/boringssl/src/crypto/fipsmodule/bn/bn.cc.inc +@@ -330,6 +330,23 @@ int bn_expand(BIGNUM *bn, size_t bits) { } int bn_resize_words(BIGNUM *bn, size_t words) { @@ -5468,11 +5473,11 @@ Index: chromium-130.0.6723.44/third_party/boringssl/src/crypto/fipsmodule/bn/bn. if ((size_t)bn->width <= words) { if (!bn_wexpand(bn, words)) { return 0; -Index: chromium-130.0.6723.44/third_party/boringssl/src/crypto/fipsmodule/cipher/e_aes.c.inc +Index: chromium-134.0.6998.35/third_party/boringssl/src/crypto/fipsmodule/cipher/e_aes.cc.inc =================================================================== ---- chromium-130.0.6723.44.orig/third_party/boringssl/src/crypto/fipsmodule/cipher/e_aes.c.inc -+++ chromium-130.0.6723.44/third_party/boringssl/src/crypto/fipsmodule/cipher/e_aes.c.inc -@@ -1456,6 +1456,8 @@ int EVP_has_aes_hardware(void) { +--- chromium-134.0.6998.35.orig/third_party/boringssl/src/crypto/fipsmodule/cipher/e_aes.cc.inc ++++ chromium-134.0.6998.35/third_party/boringssl/src/crypto/fipsmodule/cipher/e_aes.cc.inc +@@ -1234,6 +1234,8 @@ int EVP_has_aes_hardware(void) { return hwaes_capable() && crypto_gcm_clmul_enabled(); #elif defined(OPENSSL_ARM) || defined(OPENSSL_AARCH64) return hwaes_capable() && CRYPTO_is_ARMv8_PMULL_capable(); @@ -5481,10 +5486,10 @@ Index: chromium-130.0.6723.44/third_party/boringssl/src/crypto/fipsmodule/cipher #else return 0; #endif -Index: chromium-130.0.6723.44/third_party/boringssl/src/crypto/fipsmodule/modes/asm/ghashp8-ppc.pl +Index: chromium-134.0.6998.35/third_party/boringssl/src/crypto/fipsmodule/aes/asm/ghashp8-ppc.pl =================================================================== --- /dev/null -+++ chromium-130.0.6723.44/third_party/boringssl/src/crypto/fipsmodule/modes/asm/ghashp8-ppc.pl ++++ chromium-134.0.6998.35/third_party/boringssl/src/crypto/fipsmodule/aes/asm/ghashp8-ppc.pl @@ -0,0 +1,671 @@ +#! /usr/bin/env perl +# Copyright 2014-2016 The OpenSSL Project Authors. All Rights Reserved. @@ -6157,11 +6162,11 @@ Index: chromium-130.0.6723.44/third_party/boringssl/src/crypto/fipsmodule/modes/ +} + +close STDOUT or die "error closing STDOUT: $!"; # enforce flush -Index: chromium-130.0.6723.44/third_party/boringssl/src/crypto/fipsmodule/modes/gcm.c.inc +Index: chromium-134.0.6998.35/third_party/boringssl/src/crypto/fipsmodule/aes/gcm.cc.inc =================================================================== ---- chromium-130.0.6723.44.orig/third_party/boringssl/src/crypto/fipsmodule/modes/gcm.c.inc -+++ chromium-130.0.6723.44/third_party/boringssl/src/crypto/fipsmodule/modes/gcm.c.inc -@@ -228,6 +228,13 @@ void CRYPTO_ghash_init(gmult_func *out_m +--- chromium-134.0.6998.35.orig/third_party/boringssl/src/crypto/fipsmodule/aes/gcm.cc.inc ++++ chromium-134.0.6998.35/third_party/boringssl/src/crypto/fipsmodule/aes/gcm.cc.inc +@@ -233,6 +233,13 @@ void CRYPTO_ghash_init(gmult_func *out_m *out_hash = gcm_ghash_neon; return; } @@ -6175,11 +6180,11 @@ Index: chromium-130.0.6723.44/third_party/boringssl/src/crypto/fipsmodule/modes/ #endif gcm_init_nohw(out_table, H); -Index: chromium-130.0.6723.44/third_party/boringssl/src/crypto/fipsmodule/modes/gcm_test.cc +Index: chromium-134.0.6998.35/third_party/boringssl/src/crypto/fipsmodule/aes/gcm_test.cc =================================================================== ---- chromium-130.0.6723.44.orig/third_party/boringssl/src/crypto/fipsmodule/modes/gcm_test.cc -+++ chromium-130.0.6723.44/third_party/boringssl/src/crypto/fipsmodule/modes/gcm_test.cc -@@ -209,5 +209,15 @@ TEST(GCMTest, ABI) { +--- chromium-134.0.6998.35.orig/third_party/boringssl/src/crypto/fipsmodule/aes/gcm_test.cc ++++ chromium-134.0.6998.35/third_party/boringssl/src/crypto/fipsmodule/aes/gcm_test.cc +@@ -170,5 +170,15 @@ TEST(GCMTest, ABI) { } } #endif @@ -6195,28 +6200,10 @@ Index: chromium-130.0.6723.44/third_party/boringssl/src/crypto/fipsmodule/modes/ +#endif // GHASH_ASM_PPC64LE } #endif // SUPPORTS_ABI_TEST && !OPENSSL_NO_ASM -Index: chromium-130.0.6723.44/third_party/boringssl/src/crypto/fipsmodule/modes/internal.h +Index: chromium-134.0.6998.35/third_party/boringssl/src/crypto/rand/getrandom_fillin.h =================================================================== ---- chromium-130.0.6723.44.orig/third_party/boringssl/src/crypto/fipsmodule/modes/internal.h -+++ chromium-130.0.6723.44/third_party/boringssl/src/crypto/fipsmodule/modes/internal.h -@@ -325,6 +325,13 @@ void aes_gcm_dec_kernel(const uint8_t *i - const u128 Htable[16]); - #endif - -+#elif defined(OPENSSL_PPC64LE) -+#define GHASH_ASM_PPC64LE -+#define GCM_FUNCREF -+void gcm_init_p8(u128 Htable[16], const uint64_t Xi[2]); -+void gcm_gmult_p8(uint8_t Xi[16], const u128 Htable[16]); -+void gcm_ghash_p8(uint8_t Xi[16], const u128 Htable[16], const uint8_t *inp, -+ size_t len); - #endif - #endif // OPENSSL_NO_ASM - -Index: chromium-130.0.6723.44/third_party/boringssl/src/crypto/rand_extra/getrandom_fillin.h -=================================================================== ---- chromium-130.0.6723.44.orig/third_party/boringssl/src/crypto/rand_extra/getrandom_fillin.h -+++ chromium-130.0.6723.44/third_party/boringssl/src/crypto/rand_extra/getrandom_fillin.h +--- chromium-134.0.6998.35.orig/third_party/boringssl/src/crypto/rand/getrandom_fillin.h ++++ chromium-134.0.6998.35/third_party/boringssl/src/crypto/rand/getrandom_fillin.h @@ -30,6 +30,8 @@ #define EXPECTED_NR_getrandom 278 #elif defined(OPENSSL_ARM) @@ -6226,11 +6213,11 @@ Index: chromium-130.0.6723.44/third_party/boringssl/src/crypto/rand_extra/getran #elif defined(OPENSSL_RISCV64) #define EXPECTED_NR_getrandom 278 #endif -Index: chromium-130.0.6723.44/third_party/boringssl/src/crypto/fipsmodule/rand/rand.c.inc +Index: chromium-134.0.6998.35/third_party/boringssl/src/crypto/fipsmodule/rand/rand.cc.inc =================================================================== ---- chromium-130.0.6723.44.orig/third_party/boringssl/src/crypto/fipsmodule/rand/rand.c.inc -+++ chromium-130.0.6723.44/third_party/boringssl/src/crypto/fipsmodule/rand/rand.c.inc -@@ -427,6 +427,11 @@ bcm_infallible BCM_rand_bytes_with_addit +--- chromium-134.0.6998.35.orig/third_party/boringssl/src/crypto/fipsmodule/rand/rand.cc.inc ++++ chromium-134.0.6998.35/third_party/boringssl/src/crypto/fipsmodule/rand/rand.cc.inc +@@ -431,6 +431,11 @@ bcm_infallible BCM_rand_bytes_with_addit // Take a read lock around accesses to |state->drbg|. This is needed to // avoid returning bad entropy if we race with // |rand_thread_state_clear_all|. @@ -6242,10 +6229,10 @@ Index: chromium-130.0.6723.44/third_party/boringssl/src/crypto/fipsmodule/rand/r CRYPTO_MUTEX_lock_read(&state->clear_drbg_lock); #endif if (!CTR_DRBG_reseed(&state->drbg, seed, reseed_additional_data, -Index: chromium-130.0.6723.44/third_party/boringssl/src/crypto/fipsmodule/sha/internal.h +Index: chromium-134.0.6998.35/third_party/boringssl/src/crypto/fipsmodule/sha/internal.h =================================================================== ---- chromium-130.0.6723.44.orig/third_party/boringssl/src/crypto/fipsmodule/sha/internal.h -+++ chromium-130.0.6723.44/third_party/boringssl/src/crypto/fipsmodule/sha/internal.h +--- chromium-134.0.6998.35.orig/third_party/boringssl/src/crypto/fipsmodule/sha/internal.h ++++ chromium-134.0.6998.35/third_party/boringssl/src/crypto/fipsmodule/sha/internal.h @@ -23,6 +23,16 @@ extern "C" { #endif @@ -6263,16 +6250,16 @@ Index: chromium-130.0.6723.44/third_party/boringssl/src/crypto/fipsmodule/sha/in // Define SHA{n}[_{variant}]_ASM if sha{n}_block_data_order[_{variant}] is // defined in assembly. -Index: chromium-130.0.6723.44/third_party/boringssl/src/crypto/fipsmodule/sha/sha1-altivec.c.inc +Index: chromium-134.0.6998.35/third_party/boringssl/src/crypto/fipsmodule/sha/sha1-altivec.cc.inc =================================================================== --- /dev/null -+++ chromium-130.0.6723.44/third_party/boringssl/src/crypto/fipsmodule/sha/sha1-altivec.c.inc -@@ -0,0 +1,361 @@ -+/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) ++++ chromium-134.0.6998.35/third_party/boringssl/src/crypto/fipsmodule/sha/sha1-altivec.cc.inc +@@ -0,0 +1,369 @@ ++/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.ccom) + * All rights reserved. + * + * This package is an SSL implementation written -+ * by Eric Young (eay@cryptsoft.com). ++ * by Eric Young (eay@cryptsoft.ccom). + * The implementation was written so as to conform with Netscapes SSL. + * + * This library is free for commercial and non-commercial use as long as @@ -6280,7 +6267,7 @@ Index: chromium-130.0.6723.44/third_party/boringssl/src/crypto/fipsmodule/sha/sh + * apply to all code found in this distribution, be it the RC4, RSA, + * lhash, DES, etc., code; not just the SSL code. The SSL documentation + * included with this distribution is covered by the same copyright terms -+ * except that the holder is Tim Hudson (tjh@cryptsoft.com). ++ * except that the holder is Tim Hudson (tjh@cryptsoft.ccom). + * + * Copyright remains Eric Young's, and as such any Copyright notices in + * the code are not to be removed. @@ -6300,12 +6287,12 @@ Index: chromium-130.0.6723.44/third_party/boringssl/src/crypto/fipsmodule/sha/sh + * 3. All advertising materials mentioning features or use of this software + * must display the following acknowledgement: + * "This product includes cryptographic software written by -+ * Eric Young (eay@cryptsoft.com)" ++ * Eric Young (eay@cryptsoft.ccom)" + * The word 'cryptographic' can be left out if the rouines from the library + * being used are not cryptographic related :-). + * 4. If you include any Windows specific code (or a derivative thereof) from + * the apps directory (application code) you must include an acknowledgement: -+ * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" ++ * "This product includes software written by Tim Hudson (tjh@cryptsoft.ccom)" + * + * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE @@ -6327,7 +6314,7 @@ Index: chromium-130.0.6723.44/third_party/boringssl/src/crypto/fipsmodule/sha/sh +// Altivec-optimized SHA1 in C. This is tested on ppc64le only. +// +// References: -+// https://software.intel.com/en-us/articles/improving-the-performance-of-the-secure-hash-algorithm-1 ++// https://software.intel.ccom/en-us/articles/improving-the-performance-of-the-secure-hash-algorithm-1 +// http://arctic.org/~dean/crypto/sha1.html +// +// This code used the generic SHA-1 from OpenSSL as a basis and AltiVec @@ -6337,6 +6324,10 @@ Index: chromium-130.0.6723.44/third_party/boringssl/src/crypto/fipsmodule/sha/sh + +#if defined(OPENSSL_PPC64LE) + ++#if defined(__cplusplus) ++extern "C" { ++#endif ++ +#include + +void sha1_block_data_order_ppc64(uint32_t *state, const uint8_t *data, size_t num); @@ -6422,7 +6413,7 @@ Index: chromium-130.0.6723.44/third_party/boringssl/src/crypto/fipsmodule/sha/sh + return w; +} + -+// As pointed out by Wei Dai , F() below can be simplified ++// As pointed out by Wei Dai , F() below can be simplified +// to the code in F_00_19. Wei attributes these optimisations to Peter +// Gutmann's SHS code, and he attributes it to Rich Schroeppel. #define +// F(x,y,z) (((x) & (y)) | ((~(x)) & (z))) I've just become aware of another @@ -6615,6 +6606,10 @@ Index: chromium-130.0.6723.44/third_party/boringssl/src/crypto/fipsmodule/sha/sh + } +} + ++#if defined(__cplusplus) ++} ++#endif ++ +#endif // OPENSSL_PPC64LE + +#undef K_00_19 @@ -6629,11 +6624,11 @@ Index: chromium-130.0.6723.44/third_party/boringssl/src/crypto/fipsmodule/sha/sh +#undef BODY_20_39 +#undef BODY_40_59 +#undef BODY_60_79 -Index: chromium-130.0.6723.44/third_party/boringssl/src/crypto/internal.h +Index: chromium-134.0.6998.35/third_party/boringssl/src/crypto/internal.h =================================================================== ---- chromium-130.0.6723.44.orig/third_party/boringssl/src/crypto/internal.h -+++ chromium-130.0.6723.44/third_party/boringssl/src/crypto/internal.h -@@ -183,8 +183,9 @@ extern "C" { +--- chromium-134.0.6998.35.orig/third_party/boringssl/src/crypto/internal.h ++++ chromium-134.0.6998.35/third_party/boringssl/src/crypto/internal.h +@@ -61,8 +61,9 @@ extern "C" { #if !defined(OPENSSL_NO_ASM) && !defined(OPENSSL_STATIC_ARMCAP) && \ (defined(OPENSSL_X86) || defined(OPENSSL_X86_64) || \ defined(OPENSSL_ARM) || defined(OPENSSL_AARCH64)) @@ -6645,7 +6640,7 @@ Index: chromium-130.0.6723.44/third_party/boringssl/src/crypto/internal.h #define NEED_CPUID // OPENSSL_cpuid_setup initializes the platform-specific feature cache. This -@@ -1723,6 +1724,16 @@ OPENSSL_INLINE int CRYPTO_is_ARMv8_SHA51 +@@ -1402,6 +1403,16 @@ inline int CRYPTO_is_ARMv8_SHA512_capabl #endif // OPENSSL_ARM || OPENSSL_AARCH64 @@ -6662,10 +6657,10 @@ Index: chromium-130.0.6723.44/third_party/boringssl/src/crypto/internal.h #if defined(BORINGSSL_DISPATCH_TEST) // Runtime CPU dispatch testing support -Index: chromium-130.0.6723.44/third_party/boringssl/src/crypto/perlasm/ppc-xlate.pl +Index: chromium-134.0.6998.35/third_party/boringssl/src/crypto/perlasm/ppc-xlate.pl =================================================================== --- /dev/null -+++ chromium-130.0.6723.44/third_party/boringssl/src/crypto/perlasm/ppc-xlate.pl ++++ chromium-134.0.6998.35/third_party/boringssl/src/crypto/perlasm/ppc-xlate.pl @@ -0,0 +1,320 @@ +#! /usr/bin/env perl +# Copyright 2006-2016 The OpenSSL Project Authors. All Rights Reserved. @@ -6748,7 +6743,7 @@ Index: chromium-130.0.6723.44/third_party/boringssl/src/crypto/perlasm/ppc-xlate + $ret; +}; +my $text = sub { -+ my $ret = ($flavour =~ /aix/) ? ".csect\t.text[PR],7" : ".text"; ++ my $ret = ($flavour =~ /aix/) ? ".ccsect\t.text[PR],7" : ".text"; + $ret = ".abiversion 2\n".$ret if ($flavour =~ /linux.*64le/); + $ret; +}; @@ -6981,16 +6976,16 @@ Index: chromium-130.0.6723.44/third_party/boringssl/src/crypto/perlasm/ppc-xlate +print <<___; +#endif // !OPENSSL_NO_ASM && __powerpc64__ && __ELF__ +#if defined(__ELF__) -+// See https://www.airs.com/blog/archives/518. ++// See https://www.airs.ccom/blog/archives/518. +.section .note.GNU-stack,"",\%progbits +#endif +___ + +close STDOUT or die "error closing STDOUT: $!"; -Index: chromium-130.0.6723.44/third_party/boringssl/src/crypto/test/asm/trampoline-ppc.pl +Index: chromium-134.0.6998.35/third_party/boringssl/src/crypto/test/asm/trampoline-ppc.pl =================================================================== --- /dev/null -+++ chromium-130.0.6723.44/third_party/boringssl/src/crypto/test/asm/trampoline-ppc.pl ++++ chromium-134.0.6998.35/third_party/boringssl/src/crypto/test/asm/trampoline-ppc.pl @@ -0,0 +1,262 @@ +#!/usr/bin/env perl +# Copyright (c) 2019, Google Inc. @@ -7254,10 +7249,10 @@ Index: chromium-130.0.6723.44/third_party/boringssl/src/crypto/test/asm/trampoli + +print $code; +close STDOUT or die "error closing STDOUT: $!"; -Index: chromium-130.0.6723.44/third_party/boringssl/src/include/openssl/target.h +Index: chromium-134.0.6998.35/third_party/boringssl/src/include/openssl/target.h =================================================================== ---- chromium-130.0.6723.44.orig/third_party/boringssl/src/include/openssl/target.h -+++ chromium-130.0.6723.44/third_party/boringssl/src/include/openssl/target.h +--- chromium-134.0.6998.35.orig/third_party/boringssl/src/include/openssl/target.h ++++ chromium-134.0.6998.35/third_party/boringssl/src/include/openssl/target.h @@ -34,6 +34,9 @@ #elif defined(__ARMEL__) || defined(_M_ARM) #define OPENSSL_32_BIT @@ -7268,11 +7263,11 @@ Index: chromium-130.0.6723.44/third_party/boringssl/src/include/openssl/target.h #elif defined(__MIPSEL__) && !defined(__LP64__) #define OPENSSL_32_BIT #define OPENSSL_MIPS -Index: chromium-130.0.6723.44/third_party/boringssl/src/util/fipstools/acvp/modulewrapper/main.cc +Index: chromium-134.0.6998.35/third_party/boringssl/src/util/fipstools/acvp/modulewrapper/main.cc =================================================================== ---- chromium-130.0.6723.44.orig/third_party/boringssl/src/util/fipstools/acvp/modulewrapper/main.cc -+++ chromium-130.0.6723.44/third_party/boringssl/src/util/fipstools/acvp/modulewrapper/main.cc -@@ -37,6 +37,8 @@ int main(int argc, char **argv) { +--- chromium-134.0.6998.35.orig/third_party/boringssl/src/util/fipstools/acvp/modulewrapper/main.cc ++++ chromium-134.0.6998.35/third_party/boringssl/src/util/fipstools/acvp/modulewrapper/main.cc +@@ -35,6 +35,8 @@ int main(int argc, char **argv) { puts("ARM (32-bit)"); #elif defined(OPENSSL_AARCH64) puts("aarch64 (64-bit)"); @@ -7281,10 +7276,10 @@ Index: chromium-130.0.6723.44/third_party/boringssl/src/util/fipstools/acvp/modu #else #error "FIPS build not supported on this architecture" #endif -Index: chromium-130.0.6723.44/third_party/boringssl/src/util/fipstools/delocate/delocate.go +Index: chromium-134.0.6998.35/third_party/boringssl/src/util/fipstools/delocate/delocate.go =================================================================== ---- chromium-130.0.6723.44.orig/third_party/boringssl/src/util/fipstools/delocate/delocate.go -+++ chromium-130.0.6723.44/third_party/boringssl/src/util/fipstools/delocate/delocate.go +--- chromium-134.0.6998.35.orig/third_party/boringssl/src/util/fipstools/delocate/delocate.go ++++ chromium-134.0.6998.35/third_party/boringssl/src/util/fipstools/delocate/delocate.go @@ -54,7 +54,8 @@ type stringWriter interface { type processorType int @@ -7443,13 +7438,13 @@ Index: chromium-130.0.6723.44/third_party/boringssl/src/util/fipstools/delocate/ +func (d *delocation) isPPC64LEAPair(statement *node32) (target, source, relative string, ok bool) { + instruction := skipWS(statement.up).up + assertNodeType(instruction, ruleInstructionName) -+ name1 := d.contents(instruction) ++ name1 := d.ccontents(instruction) + args1 := instructionArgs(instruction.next) + + statement = statement.next + instruction = skipWS(statement.up).up + assertNodeType(instruction, ruleInstructionName) -+ name2 := d.contents(instruction) ++ name2 := d.ccontents(instruction) + args2 := instructionArgs(instruction.next) + + if name1 != "addis" || @@ -7459,16 +7454,16 @@ Index: chromium-130.0.6723.44/third_party/boringssl/src/util/fipstools/delocate/ + return "", "", "", false + } + -+ target = d.contents(args1[0]) -+ relative = d.contents(args1[1]) -+ source1 := d.contents(args1[2]) -+ source2 := d.contents(args2[2]) ++ target = d.ccontents(args1[0]) ++ relative = d.ccontents(args1[1]) ++ source1 := d.ccontents(args1[2]) ++ source2 := d.ccontents(args2[2]) + + if !strings.HasSuffix(source1, "@ha") || + !strings.HasSuffix(source2, "@l") || + source1[:len(source1)-3] != source2[:len(source2)-2] || -+ d.contents(args2[0]) != target || -+ d.contents(args2[1]) != target { ++ d.ccontents(args2[0]) != target || ++ d.ccontents(args2[1]) != target { + return "", "", "", false + } + @@ -7541,7 +7536,7 @@ Index: chromium-130.0.6723.44/third_party/boringssl/src/util/fipstools/delocate/ +func (d *delocation) processPPCInstruction(statement, instruction *node32) (*node32, error) { + assertNodeType(instruction, ruleInstructionName) -+ instructionName := d.contents(instruction) ++ instructionName := d.ccontents(instruction) + isBranch := instructionName[0] == 'b' + + argNodes := instructionArgs(instruction.next) @@ -7562,7 +7557,7 @@ Index: chromium-130.0.6723.44/third_party/boringssl/src/util/fipstools/delocate/ + + switch arg.pegRule { + case ruleRegisterOrConstant, ruleLocalLabelRef: -+ args = append(args, d.contents(fullArg)) ++ args = append(args, d.ccontents(fullArg)) + + case ruleTOCRefLow: + return nil, errors.New("Found low TOC reference outside preamble pattern") @@ -7720,7 +7715,7 @@ Index: chromium-130.0.6723.44/third_party/boringssl/src/util/fipstools/delocate/ + } + + for ; memRef != nil; memRef = memRef.next { -+ argStr += d.contents(memRef) ++ argStr += d.ccontents(memRef) + } + + args = append(args, argStr) @@ -7766,7 +7761,7 @@ Index: chromium-130.0.6723.44/third_party/boringssl/src/util/fipstools/delocate/ forEachPath(input.ast.up, func(node *node32) { + node = node.up + assertNodeType(node, ruleLabelContainingDirectiveName) -+ directive := input.contents[node.begin:node.end] ++ directive := input.ccontents[node.begin:node.end] + if directive != ".localentry" { + return + } @@ -7775,7 +7770,7 @@ Index: chromium-130.0.6723.44/third_party/boringssl/src/util/fipstools/delocate/ + assertNodeType(node, ruleSymbolArgs) + node = node.up + assertNodeType(node, ruleSymbolArg) -+ symbol := input.contents[node.begin:node.end] ++ symbol := input.ccontents[node.begin:node.end] + if _, ok := localEntrySymbols[symbol]; ok { + panic(fmt.Sprintf("Duplicate .localentry directive found: %q in %q", symbol, input.path)) + } @@ -7875,7 +7870,7 @@ Index: chromium-130.0.6723.44/third_party/boringssl/src/util/fipstools/delocate/ func isSynthesized(symbol string) bool { return strings.HasSuffix(symbol, "_bss_get") || symbol == "OPENSSL_ia32cap_get" || -@@ -1858,6 +2334,8 @@ func detectProcessor(input inputFile) pr +@@ -1894,6 +2370,8 @@ func detectProcessor(input inputFile) pr switch instructionName { case "movq", "call", "leaq": return x86_64 @@ -7884,23 +7879,27 @@ Index: chromium-130.0.6723.44/third_party/boringssl/src/util/fipstools/delocate/ case "str", "bl", "ldr", "st1": return aarch64 } -Index: chromium-130.0.6723.44/third_party/boringssl/src/util/fipstools/delocate/delocate.peg +Index: chromium-134.0.6998.35/third_party/boringssl/src/util/fipstools/delocate/delocate.peg =================================================================== ---- chromium-130.0.6723.44.orig/third_party/boringssl/src/util/fipstools/delocate/delocate.peg -+++ chromium-130.0.6723.44/third_party/boringssl/src/util/fipstools/delocate/delocate.peg -@@ -12,7 +12,7 @@ - # OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN - # CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ +--- chromium-134.0.6998.35.orig/third_party/boringssl/src/util/fipstools/delocate/delocate.peg ++++ chromium-134.0.6998.35/third_party/boringssl/src/util/fipstools/delocate/delocate.peg +@@ -12,9 +12,9 @@ + # See the License for the specific language governing permissions and + # limitations under the License. -# This is a rough parser for x86-64 and aarch64 assembly designed to work with -+# This is a rough parser for x86-64 and ppc64le assembly designed to work with - # https://github.com/pointlander/peg. delocate.go has a go:generate line for - # rebuilding delocate.peg.go from this file. +-# https://github.com/pointlander/peg. delocate.go has a go:generate line for +-# rebuilding delocate.peg.go from this file. ++# This is a rough parser for x86-64, ppc64el, and aarch64 assembly designed ++# to work with https://github.com/pointlander/peg. delocate.go has a ++# go:generate line for rebuilding delocate.peg.go from this file. -Index: chromium-130.0.6723.44/third_party/boringssl/src/util/fipstools/delocate/delocate_test.go + # To regenerate delocate.peg.go: + # +Index: chromium-134.0.6998.35/third_party/boringssl/src/util/fipstools/delocate/delocate_test.go =================================================================== ---- chromium-130.0.6723.44.orig/third_party/boringssl/src/util/fipstools/delocate/delocate_test.go -+++ chromium-130.0.6723.44/third_party/boringssl/src/util/fipstools/delocate/delocate_test.go +--- chromium-134.0.6998.35.orig/third_party/boringssl/src/util/fipstools/delocate/delocate_test.go ++++ chromium-134.0.6998.35/third_party/boringssl/src/util/fipstools/delocate/delocate_test.go @@ -39,6 +39,11 @@ func (test *delocateTest) Path(file stri var delocateTests = []delocateTest{ @@ -7913,10 +7912,10 @@ Index: chromium-130.0.6723.44/third_party/boringssl/src/util/fipstools/delocate/ {"x86_64-Basic", []string{"in.s"}, "out.s"}, {"x86_64-BSS", []string{"in.s"}, "out.s"}, {"x86_64-GOTRewrite", []string{"in.s"}, "out.s"}, -Index: chromium-130.0.6723.44/third_party/boringssl/src/util/fipstools/delocate/testdata/ppc64le-GlobalEntry/in.s +Index: chromium-134.0.6998.35/third_party/boringssl/src/util/fipstools/delocate/testdata/ppc64le-GlobalEntry/in.s =================================================================== --- /dev/null -+++ chromium-130.0.6723.44/third_party/boringssl/src/util/fipstools/delocate/testdata/ppc64le-GlobalEntry/in.s ++++ chromium-134.0.6998.35/third_party/boringssl/src/util/fipstools/delocate/testdata/ppc64le-GlobalEntry/in.s @@ -0,0 +1,9 @@ + .text +foo: @@ -7927,13 +7926,13 @@ Index: chromium-130.0.6723.44/third_party/boringssl/src/util/fipstools/delocate/ + .localentry foo,.-foo +.LVL0: + bl -Index: chromium-130.0.6723.44/third_party/boringssl/src/util/fipstools/delocate/testdata/ppc64le-GlobalEntry/out.s +Index: chromium-134.0.6998.35/third_party/boringssl/src/util/fipstools/delocate/testdata/ppc64le-GlobalEntry/out.s =================================================================== --- /dev/null -+++ chromium-130.0.6723.44/third_party/boringssl/src/util/fipstools/delocate/testdata/ppc64le-GlobalEntry/out.s ++++ chromium-134.0.6998.35/third_party/boringssl/src/util/fipstools/delocate/testdata/ppc64le-GlobalEntry/out.s @@ -0,0 +1,62 @@ +.text -+.file 1 "inserted_by_delocate.c" ++.file 1 "inserted_by_delocate.cc" +.loc 1 1 0 +BORINGSSL_bcm_text_start: + .text @@ -7994,22 +7993,22 @@ Index: chromium-130.0.6723.44/third_party/boringssl/src/util/fipstools/delocate/ +.byte 0xff +.byte 0x31 +.byte 0x80 -Index: chromium-130.0.6723.44/third_party/boringssl/src/util/fipstools/delocate/testdata/ppc64le-LoadToR0/in.s +Index: chromium-134.0.6998.35/third_party/boringssl/src/util/fipstools/delocate/testdata/ppc64le-LoadToR0/in.s =================================================================== --- /dev/null -+++ chromium-130.0.6723.44/third_party/boringssl/src/util/fipstools/delocate/testdata/ppc64le-LoadToR0/in.s ++++ chromium-134.0.6998.35/third_party/boringssl/src/util/fipstools/delocate/testdata/ppc64le-LoadToR0/in.s @@ -0,0 +1,4 @@ + .text +foo: + addis 22,2,bar@toc@ha + ld 0,bar@toc@l(22) -Index: chromium-130.0.6723.44/third_party/boringssl/src/util/fipstools/delocate/testdata/ppc64le-LoadToR0/out.s +Index: chromium-134.0.6998.35/third_party/boringssl/src/util/fipstools/delocate/testdata/ppc64le-LoadToR0/out.s =================================================================== --- /dev/null -+++ chromium-130.0.6723.44/third_party/boringssl/src/util/fipstools/delocate/testdata/ppc64le-LoadToR0/out.s ++++ chromium-134.0.6998.35/third_party/boringssl/src/util/fipstools/delocate/testdata/ppc64le-LoadToR0/out.s @@ -0,0 +1,72 @@ +.text -+.file 1 "inserted_by_delocate.c" ++.file 1 "inserted_by_delocate.cc" +.loc 1 1 0 +BORINGSSL_bcm_text_start: + .text @@ -8080,12 +8079,12 @@ Index: chromium-130.0.6723.44/third_party/boringssl/src/util/fipstools/delocate/ +.byte 0xff +.byte 0x31 +.byte 0x80 -Index: chromium-130.0.6723.44/third_party/boringssl/src/util/fipstools/delocate/testdata/ppc64le-Sample/in.s +Index: chromium-134.0.6998.35/third_party/boringssl/src/util/fipstools/delocate/testdata/ppc64le-Sample/in.s =================================================================== --- /dev/null -+++ chromium-130.0.6723.44/third_party/boringssl/src/util/fipstools/delocate/testdata/ppc64le-Sample/in.s ++++ chromium-134.0.6998.35/third_party/boringssl/src/util/fipstools/delocate/testdata/ppc64le-Sample/in.s @@ -0,0 +1,161 @@ -+ .file "foo.c" ++ .file "foo.cc" + .abiversion 2 + .section ".toc","aw" + .section ".text" @@ -8246,16 +8245,16 @@ Index: chromium-130.0.6723.44/third_party/boringssl/src/util/fipstools/delocate/ + .size exported_function,.-exported_function + .ident "GCC: (Ubuntu 4.9.2-10ubuntu13) 4.9.2" + .section .note.GNU-stack,"",@progbits -Index: chromium-130.0.6723.44/third_party/boringssl/src/util/fipstools/delocate/testdata/ppc64le-Sample/out.s +Index: chromium-134.0.6998.35/third_party/boringssl/src/util/fipstools/delocate/testdata/ppc64le-Sample/out.s =================================================================== --- /dev/null -+++ chromium-130.0.6723.44/third_party/boringssl/src/util/fipstools/delocate/testdata/ppc64le-Sample/out.s ++++ chromium-134.0.6998.35/third_party/boringssl/src/util/fipstools/delocate/testdata/ppc64le-Sample/out.s @@ -0,0 +1,552 @@ +.text -+.file 1 "inserted_by_delocate.c" ++.file 1 "inserted_by_delocate.cc" +.loc 1 1 0 +BORINGSSL_bcm_text_start: -+ .file "foo.c" ++ .file "foo.cc" + .abiversion 2 + .section ".toc","aw" +# WAS .section ".text" @@ -8803,12 +8802,12 @@ Index: chromium-130.0.6723.44/third_party/boringssl/src/util/fipstools/delocate/ +.byte 0xff +.byte 0x31 +.byte 0x80 -Index: chromium-130.0.6723.44/third_party/boringssl/src/util/fipstools/delocate/testdata/ppc64le-Sample2/in.s +Index: chromium-134.0.6998.35/third_party/boringssl/src/util/fipstools/delocate/testdata/ppc64le-Sample2/in.s =================================================================== --- /dev/null -+++ chromium-130.0.6723.44/third_party/boringssl/src/util/fipstools/delocate/testdata/ppc64le-Sample2/in.s ++++ chromium-134.0.6998.35/third_party/boringssl/src/util/fipstools/delocate/testdata/ppc64le-Sample2/in.s @@ -0,0 +1,226 @@ -+ .file "foo.c" ++ .file "foo.cc" + .abiversion 2 + .section ".toc","aw" + .section ".text" @@ -9034,16 +9033,16 @@ Index: chromium-130.0.6723.44/third_party/boringssl/src/util/fipstools/delocate/ + .zero 20 + .ident "GCC: (Ubuntu 4.9.2-10ubuntu13) 4.9.2" + .section .note.GNU-stack,"",@progbits -Index: chromium-130.0.6723.44/third_party/boringssl/src/util/fipstools/delocate/testdata/ppc64le-Sample2/out.s +Index: chromium-134.0.6998.35/third_party/boringssl/src/util/fipstools/delocate/testdata/ppc64le-Sample2/out.s =================================================================== --- /dev/null -+++ chromium-130.0.6723.44/third_party/boringssl/src/util/fipstools/delocate/testdata/ppc64le-Sample2/out.s ++++ chromium-134.0.6998.35/third_party/boringssl/src/util/fipstools/delocate/testdata/ppc64le-Sample2/out.s @@ -0,0 +1,677 @@ +.text -+.file 1 "inserted_by_delocate.c" ++.file 1 "inserted_by_delocate.cc" +.loc 1 1 0 +BORINGSSL_bcm_text_start: -+ .file "foo.c" ++ .file "foo.cc" + .abiversion 2 + .section ".toc","aw" +# WAS .section ".text" @@ -9716,10 +9715,10 @@ Index: chromium-130.0.6723.44/third_party/boringssl/src/util/fipstools/delocate/ +.byte 0xff +.byte 0x31 +.byte 0x80 -Index: chromium-130.0.6723.44/third_party/boringssl/src/util/fipstools/delocate/testdata/ppc64le-TOCWithOffset/in.s +Index: chromium-134.0.6998.35/third_party/boringssl/src/util/fipstools/delocate/testdata/ppc64le-TOCWithOffset/in.s =================================================================== --- /dev/null -+++ chromium-130.0.6723.44/third_party/boringssl/src/util/fipstools/delocate/testdata/ppc64le-TOCWithOffset/in.s ++++ chromium-134.0.6998.35/third_party/boringssl/src/util/fipstools/delocate/testdata/ppc64le-TOCWithOffset/in.s @@ -0,0 +1,23 @@ + .text +foo: @@ -9744,13 +9743,13 @@ Index: chromium-130.0.6723.44/third_party/boringssl/src/util/fipstools/delocate/ + + addis 4, 2, 1+foo-2@toc@ha+3 + addi 4, 4, 1+foo-2@toc@l+3 -Index: chromium-130.0.6723.44/third_party/boringssl/src/util/fipstools/delocate/testdata/ppc64le-TOCWithOffset/out.s +Index: chromium-134.0.6998.35/third_party/boringssl/src/util/fipstools/delocate/testdata/ppc64le-TOCWithOffset/out.s =================================================================== --- /dev/null -+++ chromium-130.0.6723.44/third_party/boringssl/src/util/fipstools/delocate/testdata/ppc64le-TOCWithOffset/out.s ++++ chromium-134.0.6998.35/third_party/boringssl/src/util/fipstools/delocate/testdata/ppc64le-TOCWithOffset/out.s @@ -0,0 +1,178 @@ +.text -+.file 1 "inserted_by_delocate.c" ++.file 1 "inserted_by_delocate.cc" +.loc 1 1 0 +BORINGSSL_bcm_text_start: + .text @@ -9927,11 +9926,11 @@ Index: chromium-130.0.6723.44/third_party/boringssl/src/util/fipstools/delocate/ +.byte 0xff +.byte 0x31 +.byte 0x80 -Index: chromium-130.0.6723.44/third_party/boringssl/src/crypto/fipsmodule/sha/sha1.c.inc +Index: chromium-134.0.6998.35/third_party/boringssl/src/crypto/fipsmodule/sha/sha1.cc.inc =================================================================== ---- chromium-130.0.6723.44.orig/third_party/boringssl/src/crypto/fipsmodule/sha/sha1.c.inc -+++ chromium-130.0.6723.44/third_party/boringssl/src/crypto/fipsmodule/sha/sha1.c.inc -@@ -408,6 +408,10 @@ static void sha1_block_data_order(uint32 +--- chromium-134.0.6998.35.orig/third_party/boringssl/src/crypto/fipsmodule/sha/sha1.cc.inc ++++ chromium-134.0.6998.35/third_party/boringssl/src/crypto/fipsmodule/sha/sha1.cc.inc +@@ -367,6 +367,10 @@ static void sha1_block_data_order(uint32 return; } #endif @@ -9942,30 +9941,30 @@ Index: chromium-130.0.6723.44/third_party/boringssl/src/crypto/fipsmodule/sha/sh sha1_block_data_order_nohw(state, data, num); } -Index: chromium-130.0.6723.44/third_party/boringssl/src/build.json +Index: chromium-134.0.6998.35/third_party/boringssl/src/build.json =================================================================== ---- chromium-130.0.6723.44.orig/third_party/boringssl/src/build.json -+++ chromium-130.0.6723.44/third_party/boringssl/src/build.json -@@ -118,6 +118,10 @@ +--- chromium-134.0.6998.35.orig/third_party/boringssl/src/build.json ++++ chromium-134.0.6998.35/third_party/boringssl/src/build.json +@@ -126,6 +126,10 @@ {"src": "crypto/fipsmodule/sha/asm/sha512-armv4.pl"}, {"src": "crypto/fipsmodule/aes/asm/vpaes-armv7.pl"} ], + "perlasm_ppc64le": [ + {"src": "crypto/fipsmodule/aes/asm/aesp8-ppc.pl"}, -+ {"src": "crypto/fipsmodule/modes/asm/ghashp8-ppc.pl"} ++ {"src": "crypto/fipsmodule/aes/asm/ghashp8-ppc.pl"} + ], "perlasm_x86": [ {"src": "crypto/fipsmodule/aes/asm/aesni-x86.pl"}, {"src": "crypto/fipsmodule/bn/asm/bn-586.pl"}, -@@ -219,6 +223,7 @@ - "crypto/cpu_arm_freebsd.c", - "crypto/cpu_arm_linux.c", - "crypto/cpu_intel.c", -+ "crypto/cpu_ppc64le.c", - "crypto/crypto.c", - "crypto/curve25519/curve25519.c", - "crypto/curve25519/curve25519_64_adx.c", -@@ -799,6 +804,9 @@ +@@ -229,6 +233,7 @@ + "crypto/cpu_arm_freebsd.cc", + "crypto/cpu_arm_linux.cc", + "crypto/cpu_intel.cc", ++ "crypto/cpu_ppc64le.cc", + "crypto/crypto.cc", + "crypto/curve25519/curve25519.cc", + "crypto/curve25519/curve25519_64_adx.cc", +@@ -787,6 +792,9 @@ "perlasm_arm": [ {"src": "crypto/test/asm/trampoline-armv4.pl"} ], @@ -9975,10 +9974,10 @@ Index: chromium-130.0.6723.44/third_party/boringssl/src/build.json "perlasm_x86": [ {"src": "crypto/test/asm/trampoline-x86.pl"} ], -Index: chromium-130.0.6723.44/third_party/boringssl/src/util/pregenerate/build.go +Index: chromium-134.0.6998.35/third_party/boringssl/src/util/pregenerate/build.go =================================================================== ---- chromium-130.0.6723.44.orig/third_party/boringssl/src/util/pregenerate/build.go -+++ chromium-130.0.6723.44/third_party/boringssl/src/util/pregenerate/build.go +--- chromium-134.0.6998.35.orig/third_party/boringssl/src/util/pregenerate/build.go ++++ chromium-134.0.6998.35/third_party/boringssl/src/util/pregenerate/build.go @@ -38,6 +38,7 @@ type InputTarget struct { // architecture. PerlasmAarch64 []PerlasmSource `json:"perlasm_aarch64,omitempty"` @@ -9997,10 +9996,10 @@ Index: chromium-130.0.6723.44/third_party/boringssl/src/util/pregenerate/build.g for _, p := range in.PerlasmX86 { addPerlasmTask(&out.Asm, &p, "-apple.S", []string{"macosx", "-fPIC"}) addPerlasmTask(&out.Asm, &p, "-linux.S", []string{"elf", "-fPIC"}) -Index: chromium-130.0.6723.44/third_party/boringssl/README.ppc64le +Index: chromium-134.0.6998.35/third_party/boringssl/README.ppc64le =================================================================== --- /dev/null -+++ chromium-130.0.6723.44/third_party/boringssl/README.ppc64le ++++ chromium-134.0.6998.35/third_party/boringssl/README.ppc64le @@ -0,0 +1,8 @@ +============================================================== +To recreate boringssl pregenerated files patch for ppc64le: @@ -10010,11 +10009,11 @@ Index: chromium-130.0.6723.44/third_party/boringssl/README.ppc64le +go run ./util/pregenerate +cd ../../../../ +diff -urN chromium-*/third_party/boringssl/src/gen.orig chromium-*/third_party/boringssl/src/gen -Index: chromium-130.0.6723.44/third_party/boringssl/src/gen/sources.gni +Index: chromium-134.0.6998.35/third_party/boringssl/src/gen/sources.gni =================================================================== ---- chromium-130.0.6723.44.orig/third_party/boringssl/src/gen/sources.gni -+++ chromium-130.0.6723.44/third_party/boringssl/src/gen/sources.gni -@@ -107,6 +107,7 @@ bcm_sources_asm = [ +--- chromium-134.0.6998.35.orig/third_party/boringssl/src/gen/sources.gni ++++ chromium-134.0.6998.35/third_party/boringssl/src/gen/sources.gni +@@ -119,6 +119,7 @@ bcm_sources_asm = [ "gen/bcm/aesv8-gcm-armv8-apple.S", "gen/bcm/aesv8-gcm-armv8-linux.S", "gen/bcm/aesv8-gcm-armv8-win.S", @@ -10022,7 +10021,7 @@ Index: chromium-130.0.6723.44/third_party/boringssl/src/gen/sources.gni "gen/bcm/armv4-mont-linux.S", "gen/bcm/armv8-mont-apple.S", "gen/bcm/armv8-mont-linux.S", -@@ -123,6 +124,7 @@ bcm_sources_asm = [ +@@ -135,6 +136,7 @@ bcm_sources_asm = [ "gen/bcm/ghash-neon-armv8-apple.S", "gen/bcm/ghash-neon-armv8-linux.S", "gen/bcm/ghash-neon-armv8-win.S", @@ -10030,18 +10029,18 @@ Index: chromium-130.0.6723.44/third_party/boringssl/src/gen/sources.gni "gen/bcm/ghash-ssse3-x86-apple.S", "gen/bcm/ghash-ssse3-x86-linux.S", "gen/bcm/ghash-ssse3-x86_64-apple.S", -@@ -314,6 +316,7 @@ crypto_sources = [ - "crypto/cpu_arm_freebsd.c", - "crypto/cpu_arm_linux.c", - "crypto/cpu_intel.c", -+ "crypto/cpu_ppc64le.c", - "crypto/crypto.c", - "crypto/curve25519/curve25519.c", - "crypto/curve25519/curve25519_64_adx.c", -Index: chromium-130.0.6723.44/third_party/lss/linux_syscall_support.h +@@ -328,6 +330,7 @@ crypto_sources = [ + "crypto/cpu_arm_freebsd.cc", + "crypto/cpu_arm_linux.cc", + "crypto/cpu_intel.cc", ++ "crypto/cpu_ppc64le.cc", + "crypto/crypto.cc", + "crypto/curve25519/curve25519.cc", + "crypto/curve25519/curve25519_64_adx.cc", +Index: chromium-134.0.6998.35/third_party/lss/linux_syscall_support.h =================================================================== ---- chromium-130.0.6723.44.orig/third_party/lss/linux_syscall_support.h -+++ chromium-130.0.6723.44/third_party/lss/linux_syscall_support.h +--- chromium-134.0.6998.35.orig/third_party/lss/linux_syscall_support.h ++++ chromium-134.0.6998.35/third_party/lss/linux_syscall_support.h @@ -4638,7 +4638,7 @@ struct kernel_statx { LSS_REG(2, buf); LSS_BODY(void*, mmap2, "0"(__r2)); @@ -10060,10 +10059,10 @@ Index: chromium-130.0.6723.44/third_party/lss/linux_syscall_support.h (defined(__s390__) && !defined(__s390x__)) /* On these architectures, implement mmap() with mmap2(). */ LSS_INLINE void* LSS_NAME(mmap)(void *s, size_t l, int p, int f, int d, -Index: chromium-130.0.6723.44/third_party/lss/linux_syscall_support.h +Index: chromium-134.0.6998.35/third_party/lss/linux_syscall_support.h =================================================================== ---- chromium-130.0.6723.44.orig/third_party/lss/linux_syscall_support.h -+++ chromium-130.0.6723.44/third_party/lss/linux_syscall_support.h +--- chromium-134.0.6998.35.orig/third_party/lss/linux_syscall_support.h ++++ chromium-134.0.6998.35/third_party/lss/linux_syscall_support.h @@ -87,7 +87,7 @@ * Porting to other related platforms should not be difficult. */ @@ -10238,11 +10237,11 @@ Subject: [PATCH] Add ppc64 target to libaom third_party/libaom/cmake_update.sh | 3 +++ 2 files changed, 15 insertions(+) -Index: chromium-130.0.6723.44/third_party/libaom/BUILD.gn +Index: chromium-134.0.6998.35/third_party/libaom/BUILD.gn =================================================================== ---- chromium-130.0.6723.44.orig/third_party/libaom/BUILD.gn -+++ chromium-130.0.6723.44/third_party/libaom/BUILD.gn -@@ -279,6 +279,18 @@ if (current_cpu == "arm64") { +--- chromium-134.0.6998.35.orig/third_party/libaom/BUILD.gn ++++ chromium-134.0.6998.35/third_party/libaom/BUILD.gn +@@ -303,6 +303,18 @@ if (current_cpu == "arm64") { } } @@ -10261,7 +10260,7 @@ Index: chromium-130.0.6723.44/third_party/libaom/BUILD.gn static_library("libaom") { check_includes = false if (!is_debug && is_win) { -@@ -342,6 +354,9 @@ static_library("libaom") { +@@ -372,6 +384,9 @@ static_library("libaom") { # This is needed by all arm boards due to aom_arm_cpu_caps() sources += [ "source/libaom/aom_ports/aarch32_cpudetect.c" ] } @@ -10271,24 +10270,24 @@ Index: chromium-130.0.6723.44/third_party/libaom/BUILD.gn if (is_android) { deps += [ "//third_party/cpu_features:ndk_compat" ] } -Index: chromium-130.0.6723.44/third_party/libaom/cmake_update.sh +Index: chromium-134.0.6998.35/third_party/libaom/cmake_update.sh =================================================================== ---- chromium-130.0.6723.44.orig/third_party/libaom/cmake_update.sh -+++ chromium-130.0.6723.44/third_party/libaom/cmake_update.sh -@@ -189,6 +189,9 @@ reset_dirs linux/arm64-cpu-detect - gen_config_files linux/arm64-cpu-detect \ - "${toolchain}/arm64-linux-gcc.cmake ${all_platforms}" +--- chromium-134.0.6998.35.orig/third_party/libaom/cmake_update.sh ++++ chromium-134.0.6998.35/third_party/libaom/cmake_update.sh +@@ -164,6 +164,9 @@ egrep \ + "#define [A-Z0-9_]+[[:space:]]+[01]" "${CFG}/win/ia32/config/aom_config.h" \ + | awk '{print "%define " $2 " " $3}' > "${CFG}/win/ia32/config/aom_config.asm" +reset_dirs linux/ppc64 +gen_config_files linux/ppc64 "${toolchain}/ppc-linux-gcc.cmake ${all_platforms}" + # Copy linux configurations and modify for Windows. - reset_dirs win/arm64-cpu-detect - cp "${CFG}/linux/arm64-cpu-detect/config"/* \ -Index: chromium-130.0.6723.44/third_party/libaom/source/config/linux/ppc64/config/aom_config.asm + reset_dirs win/x64 + cp "${CFG}/linux/x64/config"/* "${CFG}/win/x64/config/" +Index: chromium-134.0.6998.35/third_party/libaom/source/config/linux/ppc64/config/aom_config.asm =================================================================== --- /dev/null -+++ chromium-130.0.6723.44/third_party/libaom/source/config/linux/ppc64/config/aom_config.asm ++++ chromium-134.0.6998.35/third_party/libaom/source/config/linux/ppc64/config/aom_config.asm @@ -0,0 +1,95 @@ +; +; Copyright (c) 2024, Alliance for Open Media. All rights reserved. @@ -10385,10 +10384,10 @@ Index: chromium-130.0.6723.44/third_party/libaom/source/config/linux/ppc64/confi +HAVE_VSX equ 1 +HAVE_WXWIDGETS equ 0 +STATIC_LINK_JXL equ 0 -Index: chromium-130.0.6723.44/third_party/libaom/source/config/linux/ppc64/config/aom_config.c +Index: chromium-134.0.6998.35/third_party/libaom/source/config/linux/ppc64/config/aom_config.c =================================================================== --- /dev/null -+++ chromium-130.0.6723.44/third_party/libaom/source/config/linux/ppc64/config/aom_config.c ++++ chromium-134.0.6998.35/third_party/libaom/source/config/linux/ppc64/config/aom_config.c @@ -0,0 +1,13 @@ +/* + * Copyright (c) 2024, Alliance for Open Media. All rights reserved. @@ -10403,10 +10402,10 @@ Index: chromium-130.0.6723.44/third_party/libaom/source/config/linux/ppc64/confi +#include "aom/aom_codec.h" +static const char* const cfg = "cmake ../source/libaom -G \"Unix Makefiles\" -DCMAKE_TOOLCHAIN_FILE=\"../source/libaom/build/cmake/toolchains/ppc-linux-gcc.cmake\" -DCONFIG_AV1_DECODER=0 -DCONFIG_AV1_ENCODER=1 -DCONFIG_LIBYUV=0 -DCONFIG_AV1_HIGHBITDEPTH=0 -DCONFIG_AV1_TEMPORAL_DENOISING=1 -DCONFIG_QUANT_MATRIX=0 -DCONFIG_REALTIME_ONLY=1 -DCONFIG_SIZE_LIMIT=1 -DDECODE_HEIGHT_LIMIT=16384 -DDECODE_WIDTH_LIMIT=16384"; +const char *aom_codec_build_config(void) {return cfg;} -Index: chromium-130.0.6723.44/third_party/libaom/source/config/linux/ppc64/config/aom_config.h +Index: chromium-134.0.6998.35/third_party/libaom/source/config/linux/ppc64/config/aom_config.h =================================================================== --- /dev/null -+++ chromium-130.0.6723.44/third_party/libaom/source/config/linux/ppc64/config/aom_config.h ++++ chromium-134.0.6998.35/third_party/libaom/source/config/linux/ppc64/config/aom_config.h @@ -0,0 +1,98 @@ +/* + * Copyright (c) 2024, Alliance for Open Media. All rights reserved. @@ -10506,10 +10505,10 @@ Index: chromium-130.0.6723.44/third_party/libaom/source/config/linux/ppc64/confi +#define HAVE_WXWIDGETS 0 +#define STATIC_LINK_JXL 0 +#endif // AOM_CONFIG_H_ -Index: chromium-130.0.6723.44/third_party/libaom/source/config/linux/ppc64/config/aom_dsp_rtcd.h +Index: chromium-134.0.6998.35/third_party/libaom/source/config/linux/ppc64/config/aom_dsp_rtcd.h =================================================================== --- /dev/null -+++ chromium-130.0.6723.44/third_party/libaom/source/config/linux/ppc64/config/aom_dsp_rtcd.h ++++ chromium-134.0.6998.35/third_party/libaom/source/config/linux/ppc64/config/aom_dsp_rtcd.h @@ -0,0 +1,1501 @@ +/* + * Copyright (c) 2024, Alliance for Open Media. All rights reserved. @@ -12012,10 +12011,10 @@ Index: chromium-130.0.6723.44/third_party/libaom/source/config/linux/ppc64/confi +#endif + +#endif -Index: chromium-130.0.6723.44/third_party/libaom/source/config/linux/ppc64/config/aom_scale_rtcd.h +Index: chromium-134.0.6998.35/third_party/libaom/source/config/linux/ppc64/config/aom_scale_rtcd.h =================================================================== --- /dev/null -+++ chromium-130.0.6723.44/third_party/libaom/source/config/linux/ppc64/config/aom_scale_rtcd.h ++++ chromium-134.0.6998.35/third_party/libaom/source/config/linux/ppc64/config/aom_scale_rtcd.h @@ -0,0 +1,91 @@ +/* + * Copyright (c) 2024, Alliance for Open Media. All rights reserved. @@ -12108,10 +12107,10 @@ Index: chromium-130.0.6723.44/third_party/libaom/source/config/linux/ppc64/confi +#endif + +#endif -Index: chromium-130.0.6723.44/third_party/libaom/source/config/linux/ppc64/config/av1_rtcd.h +Index: chromium-134.0.6998.35/third_party/libaom/source/config/linux/ppc64/config/av1_rtcd.h =================================================================== --- /dev/null -+++ chromium-130.0.6723.44/third_party/libaom/source/config/linux/ppc64/config/av1_rtcd.h ++++ chromium-134.0.6998.35/third_party/libaom/source/config/linux/ppc64/config/av1_rtcd.h @@ -0,0 +1,438 @@ +/* + * Copyright (c) 2024, Alliance for Open Media. All rights reserved. @@ -12551,13 +12550,13 @@ Index: chromium-130.0.6723.44/third_party/libaom/source/config/linux/ppc64/confi +#endif + +#endif -Index: chromium-130.0.6723.44/third_party/libvpx/source/config/linux/ppc64/vp8_rtcd.h +Index: chromium-134.0.6998.35/third_party/libvpx/source/config/linux/ppc64/vp8_rtcd.h =================================================================== ---- chromium-130.0.6723.44.orig/third_party/libvpx/source/config/linux/ppc64/vp8_rtcd.h +--- chromium-134.0.6998.35.orig/third_party/libvpx/source/config/linux/ppc64/vp8_rtcd.h +++ /dev/null @@ -1,330 +0,0 @@ -/* -- * Copyright (c) 2024 The WebM project authors. All Rights Reserved. +- * Copyright (c) 2025 The WebM project authors. All Rights Reserved. - * - * Use of this source code is governed by a BSD-style license - * that can be found in the LICENSE file in the root of the source @@ -12886,13 +12885,13 @@ Index: chromium-130.0.6723.44/third_party/libvpx/source/config/linux/ppc64/vp8_r -#endif - -#endif // VP8_RTCD_H_ -Index: chromium-130.0.6723.44/third_party/libvpx/source/config/linux/ppc64/vp9_rtcd.h +Index: chromium-134.0.6998.35/third_party/libvpx/source/config/linux/ppc64/vp9_rtcd.h =================================================================== ---- chromium-130.0.6723.44.orig/third_party/libvpx/source/config/linux/ppc64/vp9_rtcd.h +--- chromium-134.0.6998.35.orig/third_party/libvpx/source/config/linux/ppc64/vp9_rtcd.h +++ /dev/null -@@ -1,203 +0,0 @@ +@@ -1,206 +0,0 @@ -/* -- * Copyright (c) 2024 The WebM project authors. All Rights Reserved. +- * Copyright (c) 2025 The WebM project authors. All Rights Reserved. - * - * Use of this source code is governed by a BSD-style license - * that can be found in the LICENSE file in the root of the source @@ -12919,6 +12918,9 @@ Index: chromium-130.0.6723.44/third_party/libvpx/source/config/linux/ppc64/vp9_r -#include "vp9/common/vp9_enums.h" -#include "vp9/common/vp9_filter.h" -#include "vpx/vpx_integer.h" +-#if !CONFIG_REALTIME_ONLY && CONFIG_VP9_ENCODER +-#include "vp9/encoder/vp9_temporal_filter.h" +-#endif - -struct macroblockd; - @@ -13094,9 +13096,9 @@ Index: chromium-130.0.6723.44/third_party/libvpx/source/config/linux/ppc64/vp9_r -#endif - -#endif // VP9_RTCD_H_ -Index: chromium-130.0.6723.44/third_party/libvpx/source/config/linux/ppc64/vpx_config.asm +Index: chromium-134.0.6998.35/third_party/libvpx/source/config/linux/ppc64/vpx_config.asm =================================================================== ---- chromium-130.0.6723.44.orig/third_party/libvpx/source/config/linux/ppc64/vpx_config.asm +--- chromium-134.0.6998.35.orig/third_party/libvpx/source/config/linux/ppc64/vpx_config.asm +++ /dev/null @@ -1,108 +0,0 @@ -@ This file was created from a .asm file @@ -13207,9 +13209,9 @@ Index: chromium-130.0.6723.44/third_party/libvpx/source/config/linux/ppc64/vpx_c -.equ DECODE_WIDTH_LIMIT , 16384 -.equ DECODE_HEIGHT_LIMIT , 16384 - .section .note.GNU-stack,"",%progbits -Index: chromium-130.0.6723.44/third_party/libvpx/source/config/linux/ppc64/vpx_config.c +Index: chromium-134.0.6998.35/third_party/libvpx/source/config/linux/ppc64/vpx_config.c =================================================================== ---- chromium-130.0.6723.44.orig/third_party/libvpx/source/config/linux/ppc64/vpx_config.c +--- chromium-134.0.6998.35.orig/third_party/libvpx/source/config/linux/ppc64/vpx_config.c +++ /dev/null @@ -1,10 +0,0 @@ -/* Copyright (c) 2011 The WebM project authors. All Rights Reserved. */ @@ -13222,9 +13224,9 @@ Index: chromium-130.0.6723.44/third_party/libvpx/source/config/linux/ppc64/vpx_c -#include "vpx/vpx_codec.h" -static const char* const cfg = "--target=ppc64le-linux-gcc --enable-external-build --enable-postproc --enable-multi-res-encoding --enable-temporal-denoising --enable-vp9-temporal-denoising --enable-vp9-postproc --size-limit=16384x16384 --enable-realtime-only --disable-install-docs --disable-libyuv --enable-unit-tests"; -const char *vpx_codec_build_config(void) {return cfg;} -Index: chromium-130.0.6723.44/third_party/libvpx/source/config/linux/ppc64/vpx_config.h +Index: chromium-134.0.6998.35/third_party/libvpx/source/config/linux/ppc64/vpx_config.h =================================================================== ---- chromium-130.0.6723.44.orig/third_party/libvpx/source/config/linux/ppc64/vpx_config.h +--- chromium-134.0.6998.35.orig/third_party/libvpx/source/config/linux/ppc64/vpx_config.h +++ /dev/null @@ -1,117 +0,0 @@ -/* Copyright (c) 2011 The WebM project authors. All Rights Reserved. */ @@ -13344,13 +13346,13 @@ Index: chromium-130.0.6723.44/third_party/libvpx/source/config/linux/ppc64/vpx_c -#define DECODE_WIDTH_LIMIT 16384 -#define DECODE_HEIGHT_LIMIT 16384 -#endif /* VPX_CONFIG_H */ -Index: chromium-130.0.6723.44/third_party/libvpx/source/config/linux/ppc64/vpx_dsp_rtcd.h +Index: chromium-134.0.6998.35/third_party/libvpx/source/config/linux/ppc64/vpx_dsp_rtcd.h =================================================================== ---- chromium-130.0.6723.44.orig/third_party/libvpx/source/config/linux/ppc64/vpx_dsp_rtcd.h +--- chromium-134.0.6998.35.orig/third_party/libvpx/source/config/linux/ppc64/vpx_dsp_rtcd.h +++ /dev/null @@ -1,2138 +0,0 @@ -/* -- * Copyright (c) 2024 The WebM project authors. All Rights Reserved. +- * Copyright (c) 2025 The WebM project authors. All Rights Reserved. - * - * Use of this source code is governed by a BSD-style license - * that can be found in the LICENSE file in the root of the source @@ -15487,13 +15489,13 @@ Index: chromium-130.0.6723.44/third_party/libvpx/source/config/linux/ppc64/vpx_d -#endif - -#endif // VPX_DSP_RTCD_H_ -Index: chromium-130.0.6723.44/third_party/libvpx/source/config/linux/ppc64/vpx_scale_rtcd.h +Index: chromium-134.0.6998.35/third_party/libvpx/source/config/linux/ppc64/vpx_scale_rtcd.h =================================================================== ---- chromium-130.0.6723.44.orig/third_party/libvpx/source/config/linux/ppc64/vpx_scale_rtcd.h +--- chromium-134.0.6998.35.orig/third_party/libvpx/source/config/linux/ppc64/vpx_scale_rtcd.h +++ /dev/null @@ -1,110 +0,0 @@ -/* -- * Copyright (c) 2024 The WebM project authors. All Rights Reserved. +- * Copyright (c) 2025 The WebM project authors. All Rights Reserved. - * - * Use of this source code is governed by a BSD-style license - * that can be found in the LICENSE file in the root of the source @@ -15602,10 +15604,10 @@ Index: chromium-130.0.6723.44/third_party/libvpx/source/config/linux/ppc64/vpx_s -#endif - -#endif // VPX_SCALE_RTCD_H_ -Index: chromium-130.0.6723.44/third_party/boringssl/src/gen/bcm/aesp8-ppc-linux.S +Index: chromium-134.0.6998.35/third_party/boringssl/src/gen/bcm/aesp8-ppc-linux.S =================================================================== --- /dev/null -+++ chromium-130.0.6723.44/third_party/boringssl/src/gen/bcm/aesp8-ppc-linux.S ++++ chromium-134.0.6998.35/third_party/boringssl/src/gen/bcm/aesp8-ppc-linux.S @@ -0,0 +1,3673 @@ +// This file is generated from a similarly-named Perl script in the BoringSSL +// source tree. Do not edit by hand. @@ -19277,13 +19279,13 @@ Index: chromium-130.0.6723.44/third_party/boringssl/src/gen/bcm/aesp8-ppc-linux. +.byte 0,12,0x14,0,0,0,0,0 +#endif // !OPENSSL_NO_ASM && __powerpc64__ && __ELF__ +#if defined(__ELF__) -+// See https://www.airs.com/blog/archives/518. ++// See https://www.airs.ccom/blog/archives/518. +.section .note.GNU-stack,"",%progbits +#endif -Index: chromium-130.0.6723.44/third_party/boringssl/src/gen/bcm/ghashp8-ppc-linux.S +Index: chromium-134.0.6998.35/third_party/boringssl/src/gen/bcm/ghashp8-ppc-linux.S =================================================================== --- /dev/null -+++ chromium-130.0.6723.44/third_party/boringssl/src/gen/bcm/ghashp8-ppc-linux.S ++++ chromium-134.0.6998.35/third_party/boringssl/src/gen/bcm/ghashp8-ppc-linux.S @@ -0,0 +1,590 @@ +// This file is generated from a similarly-named Perl script in the BoringSSL +// source tree. Do not edit by hand. @@ -19872,14 +19874,14 @@ Index: chromium-130.0.6723.44/third_party/boringssl/src/gen/bcm/ghashp8-ppc-linu +.align 2 +#endif // !OPENSSL_NO_ASM && __powerpc64__ && __ELF__ +#if defined(__ELF__) -+// See https://www.airs.com/blog/archives/518. ++// See https://www.airs.ccom/blog/archives/518. +.section .note.GNU-stack,"",%progbits +#endif -Index: chromium-130.0.6723.44/third_party/boringssl/src/gen/sources.cmake +Index: chromium-134.0.6998.35/third_party/boringssl/src/gen/sources.cmake =================================================================== ---- chromium-130.0.6723.44.orig/third_party/boringssl/src/gen/sources.cmake -+++ chromium-130.0.6723.44/third_party/boringssl/src/gen/sources.cmake -@@ -106,6 +106,7 @@ set( +--- chromium-134.0.6998.35.orig/third_party/boringssl/src/gen/sources.cmake ++++ chromium-134.0.6998.35/third_party/boringssl/src/gen/sources.cmake +@@ -118,6 +118,7 @@ set( gen/bcm/aesni-x86-linux.S gen/bcm/aesni-x86_64-apple.S gen/bcm/aesni-x86_64-linux.S @@ -19887,7 +19889,7 @@ Index: chromium-130.0.6723.44/third_party/boringssl/src/gen/sources.cmake gen/bcm/aesv8-armv7-linux.S gen/bcm/aesv8-armv8-apple.S gen/bcm/aesv8-armv8-linux.S -@@ -137,6 +138,7 @@ set( +@@ -149,6 +150,7 @@ set( gen/bcm/ghash-x86-linux.S gen/bcm/ghash-x86_64-apple.S gen/bcm/ghash-x86_64-linux.S @@ -19895,1467 +19897,15 @@ Index: chromium-130.0.6723.44/third_party/boringssl/src/gen/sources.cmake gen/bcm/ghashv8-armv7-linux.S gen/bcm/ghashv8-armv8-apple.S gen/bcm/ghashv8-armv8-linux.S -@@ -328,6 +330,7 @@ set( - crypto/cpu_arm_freebsd.c - crypto/cpu_arm_linux.c - crypto/cpu_intel.c -+ crypto/cpu_ppc64le.c - crypto/crypto.c - crypto/curve25519/curve25519.c - crypto/curve25519/curve25519_64_adx.c -@@ -805,37 +808,6 @@ set( - CRYPTO_TEST_DATA - - crypto/blake2/blake2b256_tests.txt -- crypto/cipher_extra/test/aes_128_cbc_sha1_tls_implicit_iv_tests.txt -- crypto/cipher_extra/test/aes_128_cbc_sha1_tls_tests.txt -- crypto/cipher_extra/test/aes_128_ccm_bluetooth_8_tests.txt -- crypto/cipher_extra/test/aes_128_ccm_bluetooth_tests.txt -- crypto/cipher_extra/test/aes_128_ccm_matter_tests.txt -- crypto/cipher_extra/test/aes_128_ctr_hmac_sha256.txt -- crypto/cipher_extra/test/aes_128_gcm_randnonce_tests.txt -- crypto/cipher_extra/test/aes_128_gcm_siv_tests.txt -- crypto/cipher_extra/test/aes_128_gcm_tests.txt -- crypto/cipher_extra/test/aes_192_gcm_tests.txt -- crypto/cipher_extra/test/aes_256_cbc_sha1_tls_implicit_iv_tests.txt -- crypto/cipher_extra/test/aes_256_cbc_sha1_tls_tests.txt -- crypto/cipher_extra/test/aes_256_ctr_hmac_sha256.txt -- crypto/cipher_extra/test/aes_256_gcm_randnonce_tests.txt -- crypto/cipher_extra/test/aes_256_gcm_siv_tests.txt -- crypto/cipher_extra/test/aes_256_gcm_tests.txt -- crypto/cipher_extra/test/chacha20_poly1305_tests.txt -- crypto/cipher_extra/test/cipher_tests.txt -- crypto/cipher_extra/test/des_ede3_cbc_sha1_tls_implicit_iv_tests.txt -- crypto/cipher_extra/test/des_ede3_cbc_sha1_tls_tests.txt -- crypto/cipher_extra/test/nist_cavp/aes_128_cbc.txt -- crypto/cipher_extra/test/nist_cavp/aes_128_ctr.txt -- crypto/cipher_extra/test/nist_cavp/aes_128_gcm.txt -- crypto/cipher_extra/test/nist_cavp/aes_192_cbc.txt -- crypto/cipher_extra/test/nist_cavp/aes_192_ctr.txt -- crypto/cipher_extra/test/nist_cavp/aes_256_cbc.txt -- crypto/cipher_extra/test/nist_cavp/aes_256_ctr.txt -- crypto/cipher_extra/test/nist_cavp/aes_256_gcm.txt -- crypto/cipher_extra/test/nist_cavp/tdes_cbc.txt -- crypto/cipher_extra/test/nist_cavp/tdes_ecb.txt -- crypto/cipher_extra/test/xchacha20_poly1305_tests.txt - crypto/curve25519/ed25519_tests.txt - crypto/dilithium/dilithium_tests.txt - crypto/dilithium/edge_cases_draft_dilithium3_sign.txt -@@ -1279,1413 +1251,6 @@ set( - set( - PKI_TEST_DATA - -- pki/testdata/cert_issuer_source_static_unittest/c1.pem -- pki/testdata/cert_issuer_source_static_unittest/c2.pem -- pki/testdata/cert_issuer_source_static_unittest/d.pem -- pki/testdata/cert_issuer_source_static_unittest/e1.pem -- pki/testdata/cert_issuer_source_static_unittest/e2.pem -- pki/testdata/cert_issuer_source_static_unittest/i1_1.pem -- pki/testdata/cert_issuer_source_static_unittest/i1_2.pem -- pki/testdata/cert_issuer_source_static_unittest/i2.pem -- pki/testdata/cert_issuer_source_static_unittest/i3_1.pem -- pki/testdata/cert_issuer_source_static_unittest/i3_2.pem -- pki/testdata/cert_issuer_source_static_unittest/root.pem -- pki/testdata/certificate_policies_unittest/anypolicy.pem -- pki/testdata/certificate_policies_unittest/anypolicy_with_qualifier.pem -- pki/testdata/certificate_policies_unittest/invalid-anypolicy_with_custom_qualifier.pem -- pki/testdata/certificate_policies_unittest/invalid-empty.pem -- pki/testdata/certificate_policies_unittest/invalid-policy_1_2_3_dupe.pem -- pki/testdata/certificate_policies_unittest/invalid-policy_1_2_3_policyinformation_unconsumed_data.pem -- pki/testdata/certificate_policies_unittest/invalid-policy_1_2_3_policyqualifierinfo_unconsumed_data.pem -- pki/testdata/certificate_policies_unittest/invalid-policy_1_2_3_with_empty_qualifiers_sequence.pem -- pki/testdata/certificate_policies_unittest/invalid-policy_identifier_not_oid.pem -- pki/testdata/certificate_policies_unittest/policy_1_2_3.pem -- pki/testdata/certificate_policies_unittest/policy_1_2_3_and_1_2_4.pem -- pki/testdata/certificate_policies_unittest/policy_1_2_3_and_1_2_4_with_qualifiers.pem -- pki/testdata/certificate_policies_unittest/policy_1_2_3_with_custom_qualifier.pem -- pki/testdata/certificate_policies_unittest/policy_1_2_3_with_qualifier.pem -- pki/testdata/crl_unittest/bad_crldp_has_crlissuer.pem -- pki/testdata/crl_unittest/bad_fake_critical_crlentryextension.pem -- pki/testdata/crl_unittest/bad_fake_critical_extension.pem -- pki/testdata/crl_unittest/bad_idp_contains_wrong_uri.pem -- pki/testdata/crl_unittest/bad_idp_indirectcrl.pem -- pki/testdata/crl_unittest/bad_idp_onlycontainscacerts.pem -- pki/testdata/crl_unittest/bad_idp_onlycontainscacerts_no_basic_constraints.pem -- pki/testdata/crl_unittest/bad_idp_onlycontainsusercerts.pem -- pki/testdata/crl_unittest/bad_idp_uri_and_onlycontainscacerts.pem -- pki/testdata/crl_unittest/bad_idp_uri_and_onlycontainsusercerts.pem -- pki/testdata/crl_unittest/bad_key_rollover_signature.pem -- pki/testdata/crl_unittest/bad_nextupdate_too_old.pem -- pki/testdata/crl_unittest/bad_signature.pem -- pki/testdata/crl_unittest/bad_thisupdate_in_future.pem -- pki/testdata/crl_unittest/bad_thisupdate_too_old.pem -- pki/testdata/crl_unittest/bad_wrong_issuer.pem -- pki/testdata/crl_unittest/good.pem -- pki/testdata/crl_unittest/good_fake_extension.pem -- pki/testdata/crl_unittest/good_fake_extension_no_nextupdate.pem -- pki/testdata/crl_unittest/good_generalizedtime.pem -- pki/testdata/crl_unittest/good_idp_contains_uri.pem -- pki/testdata/crl_unittest/good_idp_onlycontainscacerts.pem -- pki/testdata/crl_unittest/good_idp_onlycontainsusercerts.pem -- pki/testdata/crl_unittest/good_idp_onlycontainsusercerts_no_basic_constraints.pem -- pki/testdata/crl_unittest/good_idp_uri_and_onlycontainscacerts.pem -- pki/testdata/crl_unittest/good_idp_uri_and_onlycontainsusercerts.pem -- pki/testdata/crl_unittest/good_issuer_name_normalization.pem -- pki/testdata/crl_unittest/good_issuer_no_keyusage.pem -- pki/testdata/crl_unittest/good_key_rollover.pem -- pki/testdata/crl_unittest/good_no_crldp.pem -- pki/testdata/crl_unittest/good_no_nextupdate.pem -- pki/testdata/crl_unittest/good_no_version.pem -- pki/testdata/crl_unittest/invalid_garbage_after_crlentryextensions.pem -- pki/testdata/crl_unittest/invalid_garbage_after_extensions.pem -- pki/testdata/crl_unittest/invalid_garbage_after_nextupdate.pem -- pki/testdata/crl_unittest/invalid_garbage_after_revocationdate.pem -- pki/testdata/crl_unittest/invalid_garbage_after_revokedcerts.pem -- pki/testdata/crl_unittest/invalid_garbage_after_signaturevalue.pem -- pki/testdata/crl_unittest/invalid_garbage_after_thisupdate.pem -- pki/testdata/crl_unittest/invalid_garbage_crlentry.pem -- pki/testdata/crl_unittest/invalid_garbage_issuer_name.pem -- pki/testdata/crl_unittest/invalid_garbage_revocationdate.pem -- pki/testdata/crl_unittest/invalid_garbage_revoked_serial_number.pem -- pki/testdata/crl_unittest/invalid_garbage_signaturealgorithm.pem -- pki/testdata/crl_unittest/invalid_garbage_signaturevalue.pem -- pki/testdata/crl_unittest/invalid_garbage_tbs_signature_algorithm.pem -- pki/testdata/crl_unittest/invalid_garbage_tbscertlist.pem -- pki/testdata/crl_unittest/invalid_garbage_thisupdate.pem -- pki/testdata/crl_unittest/invalid_garbage_version.pem -- pki/testdata/crl_unittest/invalid_idp_dpname_choice_extra_data.pem -- pki/testdata/crl_unittest/invalid_idp_empty_sequence.pem -- pki/testdata/crl_unittest/invalid_idp_onlycontains_user_and_ca_certs.pem -- pki/testdata/crl_unittest/invalid_idp_onlycontainsusercerts_v1_leaf.pem -- pki/testdata/crl_unittest/invalid_issuer_keyusage_no_crlsign.pem -- pki/testdata/crl_unittest/invalid_key_rollover_issuer_keyusage_no_crlsign.pem -- pki/testdata/crl_unittest/invalid_mismatched_signature_algorithm.pem -- pki/testdata/crl_unittest/invalid_revoked_empty_sequence.pem -- pki/testdata/crl_unittest/invalid_v1_explicit.pem -- pki/testdata/crl_unittest/invalid_v1_with_crlentryextension.pem -- pki/testdata/crl_unittest/invalid_v1_with_extension.pem -- pki/testdata/crl_unittest/invalid_v3.pem -- pki/testdata/crl_unittest/revoked.pem -- pki/testdata/crl_unittest/revoked_fake_crlentryextension.pem -- pki/testdata/crl_unittest/revoked_generalized_revocationdate.pem -- pki/testdata/crl_unittest/revoked_key_rollover.pem -- pki/testdata/crl_unittest/revoked_no_nextupdate.pem -- pki/testdata/name_constraints_unittest/directoryname-excludeall.pem -- pki/testdata/name_constraints_unittest/directoryname-excluded.pem -- pki/testdata/name_constraints_unittest/directoryname.pem -- pki/testdata/name_constraints_unittest/directoryname_and_dnsname.pem -- pki/testdata/name_constraints_unittest/directoryname_and_dnsname_and_ipaddress.pem -- pki/testdata/name_constraints_unittest/dnsname-exclude_dot.pem -- pki/testdata/name_constraints_unittest/dnsname-excludeall.pem -- pki/testdata/name_constraints_unittest/dnsname-excluded.pem -- pki/testdata/name_constraints_unittest/dnsname-excluded_with_leading_dot.pem -- pki/testdata/name_constraints_unittest/dnsname-permitted_two_dot.pem -- pki/testdata/name_constraints_unittest/dnsname-permitted_with_leading_dot.pem -- pki/testdata/name_constraints_unittest/dnsname-with_max.pem -- pki/testdata/name_constraints_unittest/dnsname-with_min_0.pem -- pki/testdata/name_constraints_unittest/dnsname-with_min_0_and_max.pem -- pki/testdata/name_constraints_unittest/dnsname-with_min_1.pem -- pki/testdata/name_constraints_unittest/dnsname-with_min_1_and_max.pem -- pki/testdata/name_constraints_unittest/dnsname.pem -- pki/testdata/name_constraints_unittest/dnsname2.pem -- pki/testdata/name_constraints_unittest/edipartyname-excluded.pem -- pki/testdata/name_constraints_unittest/edipartyname-permitted.pem -- pki/testdata/name_constraints_unittest/invalid-empty_excluded_subtree.pem -- pki/testdata/name_constraints_unittest/invalid-empty_permitted_subtree.pem -- pki/testdata/name_constraints_unittest/invalid-no_subtrees.pem -- pki/testdata/name_constraints_unittest/ipaddress-excludeall.pem -- pki/testdata/name_constraints_unittest/ipaddress-excluded.pem -- pki/testdata/name_constraints_unittest/ipaddress-invalid_addr.pem -- pki/testdata/name_constraints_unittest/ipaddress-invalid_mask_not_contiguous_1.pem -- pki/testdata/name_constraints_unittest/ipaddress-invalid_mask_not_contiguous_2.pem -- pki/testdata/name_constraints_unittest/ipaddress-invalid_mask_not_contiguous_3.pem -- pki/testdata/name_constraints_unittest/ipaddress-invalid_mask_not_contiguous_4.pem -- pki/testdata/name_constraints_unittest/ipaddress-mapped_addrs.pem -- pki/testdata/name_constraints_unittest/ipaddress-permit_all.pem -- pki/testdata/name_constraints_unittest/ipaddress-permit_prefix1.pem -- pki/testdata/name_constraints_unittest/ipaddress-permit_prefix31.pem -- pki/testdata/name_constraints_unittest/ipaddress-permit_singlehost.pem -- pki/testdata/name_constraints_unittest/ipaddress.pem -- pki/testdata/name_constraints_unittest/name-ca.pem -- pki/testdata/name_constraints_unittest/name-de.pem -- pki/testdata/name_constraints_unittest/name-empty.pem -- pki/testdata/name_constraints_unittest/name-jp-tokyo.pem -- pki/testdata/name_constraints_unittest/name-jp.pem -- pki/testdata/name_constraints_unittest/name-us-arizona-1.1.1.1.pem -- pki/testdata/name_constraints_unittest/name-us-arizona-192.168.1.1.pem -- pki/testdata/name_constraints_unittest/name-us-arizona-email-invalidstring.pem -- pki/testdata/name_constraints_unittest/name-us-arizona-email-localpartcase.pem -- pki/testdata/name_constraints_unittest/name-us-arizona-email-multiple.pem -- pki/testdata/name_constraints_unittest/name-us-arizona-email.pem -- pki/testdata/name_constraints_unittest/name-us-arizona-foo.com.pem -- pki/testdata/name_constraints_unittest/name-us-arizona-ipv6.pem -- pki/testdata/name_constraints_unittest/name-us-arizona-permitted.example.com.pem -- pki/testdata/name_constraints_unittest/name-us-arizona.pem -- pki/testdata/name_constraints_unittest/name-us-california-192.168.1.1.pem -- pki/testdata/name_constraints_unittest/name-us-california-mountain_view.pem -- pki/testdata/name_constraints_unittest/name-us-california-permitted.example.com.pem -- pki/testdata/name_constraints_unittest/name-us-california.pem -- pki/testdata/name_constraints_unittest/name-us.pem -- pki/testdata/name_constraints_unittest/othername-excluded.pem -- pki/testdata/name_constraints_unittest/othername-permitted.pem -- pki/testdata/name_constraints_unittest/registeredid-excluded.pem -- pki/testdata/name_constraints_unittest/registeredid-permitted.pem -- pki/testdata/name_constraints_unittest/rfc822name-excluded-empty.pem -- pki/testdata/name_constraints_unittest/rfc822name-excluded-hostname.pem -- pki/testdata/name_constraints_unittest/rfc822name-excluded-hostnamewithat.pem -- pki/testdata/name_constraints_unittest/rfc822name-excluded-ipv4.pem -- pki/testdata/name_constraints_unittest/rfc822name-excluded-quoted.pem -- pki/testdata/name_constraints_unittest/rfc822name-excluded-subdomains.pem -- pki/testdata/name_constraints_unittest/rfc822name-excluded.pem -- pki/testdata/name_constraints_unittest/rfc822name-permitted-empty.pem -- pki/testdata/name_constraints_unittest/rfc822name-permitted-hostname.pem -- pki/testdata/name_constraints_unittest/rfc822name-permitted-hostnamewithat.pem -- pki/testdata/name_constraints_unittest/rfc822name-permitted-ipv4.pem -- pki/testdata/name_constraints_unittest/rfc822name-permitted-quoted.pem -- pki/testdata/name_constraints_unittest/rfc822name-permitted-subdomains.pem -- pki/testdata/name_constraints_unittest/rfc822name-permitted.pem -- pki/testdata/name_constraints_unittest/san-directoryname.pem -- pki/testdata/name_constraints_unittest/san-dnsname.pem -- pki/testdata/name_constraints_unittest/san-edipartyname.pem -- pki/testdata/name_constraints_unittest/san-excluded-directoryname.pem -- pki/testdata/name_constraints_unittest/san-excluded-dnsname.pem -- pki/testdata/name_constraints_unittest/san-excluded-ipaddress.pem -- pki/testdata/name_constraints_unittest/san-invalid-empty.pem -- pki/testdata/name_constraints_unittest/san-invalid-ipaddress.pem -- pki/testdata/name_constraints_unittest/san-ipaddress4.pem -- pki/testdata/name_constraints_unittest/san-ipaddress6.pem -- pki/testdata/name_constraints_unittest/san-othername.pem -- pki/testdata/name_constraints_unittest/san-permitted.pem -- pki/testdata/name_constraints_unittest/san-registeredid.pem -- pki/testdata/name_constraints_unittest/san-rfc822name-domaincase.pem -- pki/testdata/name_constraints_unittest/san-rfc822name-empty-localpart.pem -- pki/testdata/name_constraints_unittest/san-rfc822name-empty.pem -- pki/testdata/name_constraints_unittest/san-rfc822name-ipv4.pem -- pki/testdata/name_constraints_unittest/san-rfc822name-localpartcase.pem -- pki/testdata/name_constraints_unittest/san-rfc822name-multiple.pem -- pki/testdata/name_constraints_unittest/san-rfc822name-no-at.pem -- pki/testdata/name_constraints_unittest/san-rfc822name-quoted.pem -- pki/testdata/name_constraints_unittest/san-rfc822name-subdomain-no-at.pem -- pki/testdata/name_constraints_unittest/san-rfc822name-subdomain-two-ats.pem -- pki/testdata/name_constraints_unittest/san-rfc822name-subdomain.pem -- pki/testdata/name_constraints_unittest/san-rfc822name-subdomaincase.pem -- pki/testdata/name_constraints_unittest/san-rfc822name-two-ats.pem -- pki/testdata/name_constraints_unittest/san-rfc822name.pem -- pki/testdata/name_constraints_unittest/san-uri.pem -- pki/testdata/name_constraints_unittest/san-x400address.pem -- pki/testdata/name_constraints_unittest/uri-excluded.pem -- pki/testdata/name_constraints_unittest/uri-permitted.pem -- pki/testdata/name_constraints_unittest/x400address-excluded.pem -- pki/testdata/name_constraints_unittest/x400address-permitted.pem -- pki/testdata/nist-pkits/certs/AllCertificatesNoPoliciesTest2EE.crt -- pki/testdata/nist-pkits/certs/AllCertificatesSamePoliciesTest10EE.crt -- pki/testdata/nist-pkits/certs/AllCertificatesSamePoliciesTest13EE.crt -- pki/testdata/nist-pkits/certs/AllCertificatesanyPolicyTest11EE.crt -- pki/testdata/nist-pkits/certs/AnyPolicyTest14EE.crt -- pki/testdata/nist-pkits/certs/BadCRLIssuerNameCACert.crt -- pki/testdata/nist-pkits/certs/BadCRLSignatureCACert.crt -- pki/testdata/nist-pkits/certs/BadSignedCACert.crt -- pki/testdata/nist-pkits/certs/BadnotAfterDateCACert.crt -- pki/testdata/nist-pkits/certs/BadnotBeforeDateCACert.crt -- pki/testdata/nist-pkits/certs/BasicSelfIssuedCRLSigningKeyCACert.crt -- pki/testdata/nist-pkits/certs/BasicSelfIssuedCRLSigningKeyCRLCert.crt -- pki/testdata/nist-pkits/certs/BasicSelfIssuedNewKeyCACert.crt -- pki/testdata/nist-pkits/certs/BasicSelfIssuedNewKeyOldWithNewCACert.crt -- pki/testdata/nist-pkits/certs/BasicSelfIssuedOldKeyCACert.crt -- pki/testdata/nist-pkits/certs/BasicSelfIssuedOldKeyNewWithOldCACert.crt -- pki/testdata/nist-pkits/certs/CPSPointerQualifierTest20EE.crt -- pki/testdata/nist-pkits/certs/DSACACert.crt -- pki/testdata/nist-pkits/certs/DSAParametersInheritedCACert.crt -- pki/testdata/nist-pkits/certs/DifferentPoliciesTest12EE.crt -- pki/testdata/nist-pkits/certs/DifferentPoliciesTest3EE.crt -- pki/testdata/nist-pkits/certs/DifferentPoliciesTest4EE.crt -- pki/testdata/nist-pkits/certs/DifferentPoliciesTest5EE.crt -- pki/testdata/nist-pkits/certs/DifferentPoliciesTest7EE.crt -- pki/testdata/nist-pkits/certs/DifferentPoliciesTest8EE.crt -- pki/testdata/nist-pkits/certs/DifferentPoliciesTest9EE.crt -- pki/testdata/nist-pkits/certs/GeneralizedTimeCRLnextUpdateCACert.crt -- pki/testdata/nist-pkits/certs/GoodCACert.crt -- pki/testdata/nist-pkits/certs/GoodsubCACert.crt -- pki/testdata/nist-pkits/certs/GoodsubCAPanyPolicyMapping1to2CACert.crt -- pki/testdata/nist-pkits/certs/InvalidBadCRLIssuerNameTest5EE.crt -- pki/testdata/nist-pkits/certs/InvalidBadCRLSignatureTest4EE.crt -- pki/testdata/nist-pkits/certs/InvalidBasicSelfIssuedCRLSigningKeyTest7EE.crt -- pki/testdata/nist-pkits/certs/InvalidBasicSelfIssuedCRLSigningKeyTest8EE.crt -- pki/testdata/nist-pkits/certs/InvalidBasicSelfIssuedNewWithOldTest5EE.crt -- pki/testdata/nist-pkits/certs/InvalidBasicSelfIssuedOldWithNewTest2EE.crt -- pki/testdata/nist-pkits/certs/InvalidCASignatureTest2EE.crt -- pki/testdata/nist-pkits/certs/InvalidCAnotAfterDateTest5EE.crt -- pki/testdata/nist-pkits/certs/InvalidCAnotBeforeDateTest1EE.crt -- pki/testdata/nist-pkits/certs/InvalidDNSnameConstraintsTest31EE.crt -- pki/testdata/nist-pkits/certs/InvalidDNSnameConstraintsTest33EE.crt -- pki/testdata/nist-pkits/certs/InvalidDNSnameConstraintsTest38EE.crt -- pki/testdata/nist-pkits/certs/InvalidDNandRFC822nameConstraintsTest28EE.crt -- pki/testdata/nist-pkits/certs/InvalidDNandRFC822nameConstraintsTest29EE.crt -- pki/testdata/nist-pkits/certs/InvalidDNnameConstraintsTest10EE.crt -- pki/testdata/nist-pkits/certs/InvalidDNnameConstraintsTest12EE.crt -- pki/testdata/nist-pkits/certs/InvalidDNnameConstraintsTest13EE.crt -- pki/testdata/nist-pkits/certs/InvalidDNnameConstraintsTest15EE.crt -- pki/testdata/nist-pkits/certs/InvalidDNnameConstraintsTest16EE.crt -- pki/testdata/nist-pkits/certs/InvalidDNnameConstraintsTest17EE.crt -- pki/testdata/nist-pkits/certs/InvalidDNnameConstraintsTest20EE.crt -- pki/testdata/nist-pkits/certs/InvalidDNnameConstraintsTest2EE.crt -- pki/testdata/nist-pkits/certs/InvalidDNnameConstraintsTest3EE.crt -- pki/testdata/nist-pkits/certs/InvalidDNnameConstraintsTest7EE.crt -- pki/testdata/nist-pkits/certs/InvalidDNnameConstraintsTest8EE.crt -- pki/testdata/nist-pkits/certs/InvalidDNnameConstraintsTest9EE.crt -- pki/testdata/nist-pkits/certs/InvalidDSASignatureTest6EE.crt -- pki/testdata/nist-pkits/certs/InvalidEESignatureTest3EE.crt -- pki/testdata/nist-pkits/certs/InvalidEEnotAfterDateTest6EE.crt -- pki/testdata/nist-pkits/certs/InvalidEEnotBeforeDateTest2EE.crt -- pki/testdata/nist-pkits/certs/InvalidIDPwithindirectCRLTest23EE.crt -- pki/testdata/nist-pkits/certs/InvalidIDPwithindirectCRLTest26EE.crt -- pki/testdata/nist-pkits/certs/InvalidLongSerialNumberTest18EE.crt -- pki/testdata/nist-pkits/certs/InvalidMappingFromanyPolicyTest7EE.crt -- pki/testdata/nist-pkits/certs/InvalidMappingToanyPolicyTest8EE.crt -- pki/testdata/nist-pkits/certs/InvalidMissingCRLTest1EE.crt -- pki/testdata/nist-pkits/certs/InvalidMissingbasicConstraintsTest1EE.crt -- pki/testdata/nist-pkits/certs/InvalidNameChainingOrderTest2EE.crt -- pki/testdata/nist-pkits/certs/InvalidNameChainingTest1EE.crt -- pki/testdata/nist-pkits/certs/InvalidNegativeSerialNumberTest15EE.crt -- pki/testdata/nist-pkits/certs/InvalidOldCRLnextUpdateTest11EE.crt -- pki/testdata/nist-pkits/certs/InvalidPolicyMappingTest10EE.crt -- pki/testdata/nist-pkits/certs/InvalidPolicyMappingTest2EE.crt -- pki/testdata/nist-pkits/certs/InvalidPolicyMappingTest4EE.crt -- pki/testdata/nist-pkits/certs/InvalidRFC822nameConstraintsTest22EE.crt -- pki/testdata/nist-pkits/certs/InvalidRFC822nameConstraintsTest24EE.crt -- pki/testdata/nist-pkits/certs/InvalidRFC822nameConstraintsTest26EE.crt -- pki/testdata/nist-pkits/certs/InvalidRevokedCATest2EE.crt -- pki/testdata/nist-pkits/certs/InvalidRevokedEETest3EE.crt -- pki/testdata/nist-pkits/certs/InvalidSelfIssuedinhibitAnyPolicyTest10EE.crt -- pki/testdata/nist-pkits/certs/InvalidSelfIssuedinhibitAnyPolicyTest8EE.crt -- pki/testdata/nist-pkits/certs/InvalidSelfIssuedinhibitPolicyMappingTest10EE.crt -- pki/testdata/nist-pkits/certs/InvalidSelfIssuedinhibitPolicyMappingTest11EE.crt -- pki/testdata/nist-pkits/certs/InvalidSelfIssuedinhibitPolicyMappingTest8EE.crt -- pki/testdata/nist-pkits/certs/InvalidSelfIssuedinhibitPolicyMappingTest9EE.crt -- pki/testdata/nist-pkits/certs/InvalidSelfIssuedpathLenConstraintTest16EE.crt -- pki/testdata/nist-pkits/certs/InvalidSelfIssuedrequireExplicitPolicyTest7EE.crt -- pki/testdata/nist-pkits/certs/InvalidSelfIssuedrequireExplicitPolicyTest8EE.crt -- pki/testdata/nist-pkits/certs/InvalidSeparateCertificateandCRLKeysTest20EE.crt -- pki/testdata/nist-pkits/certs/InvalidSeparateCertificateandCRLKeysTest21EE.crt -- pki/testdata/nist-pkits/certs/InvalidURInameConstraintsTest35EE.crt -- pki/testdata/nist-pkits/certs/InvalidURInameConstraintsTest37EE.crt -- pki/testdata/nist-pkits/certs/InvalidUnknownCRLEntryExtensionTest8EE.crt -- pki/testdata/nist-pkits/certs/InvalidUnknownCRLExtensionTest10EE.crt -- pki/testdata/nist-pkits/certs/InvalidUnknownCRLExtensionTest9EE.crt -- pki/testdata/nist-pkits/certs/InvalidUnknownCriticalCertificateExtensionTest2EE.crt -- pki/testdata/nist-pkits/certs/InvalidWrongCRLTest6EE.crt -- pki/testdata/nist-pkits/certs/InvalidcAFalseTest2EE.crt -- pki/testdata/nist-pkits/certs/InvalidcAFalseTest3EE.crt -- pki/testdata/nist-pkits/certs/InvalidcRLIssuerTest27EE.crt -- pki/testdata/nist-pkits/certs/InvalidcRLIssuerTest31EE.crt -- pki/testdata/nist-pkits/certs/InvalidcRLIssuerTest32EE.crt -- pki/testdata/nist-pkits/certs/InvalidcRLIssuerTest34EE.crt -- pki/testdata/nist-pkits/certs/InvalidcRLIssuerTest35EE.crt -- pki/testdata/nist-pkits/certs/InvaliddeltaCRLIndicatorNoBaseTest1EE.crt -- pki/testdata/nist-pkits/certs/InvaliddeltaCRLTest10EE.crt -- pki/testdata/nist-pkits/certs/InvaliddeltaCRLTest3EE.crt -- pki/testdata/nist-pkits/certs/InvaliddeltaCRLTest4EE.crt -- pki/testdata/nist-pkits/certs/InvaliddeltaCRLTest6EE.crt -- pki/testdata/nist-pkits/certs/InvaliddeltaCRLTest9EE.crt -- pki/testdata/nist-pkits/certs/InvaliddistributionPointTest2EE.crt -- pki/testdata/nist-pkits/certs/InvaliddistributionPointTest3EE.crt -- pki/testdata/nist-pkits/certs/InvaliddistributionPointTest6EE.crt -- pki/testdata/nist-pkits/certs/InvaliddistributionPointTest8EE.crt -- pki/testdata/nist-pkits/certs/InvaliddistributionPointTest9EE.crt -- pki/testdata/nist-pkits/certs/InvalidinhibitAnyPolicyTest1EE.crt -- pki/testdata/nist-pkits/certs/InvalidinhibitAnyPolicyTest4EE.crt -- pki/testdata/nist-pkits/certs/InvalidinhibitAnyPolicyTest5EE.crt -- pki/testdata/nist-pkits/certs/InvalidinhibitAnyPolicyTest6EE.crt -- pki/testdata/nist-pkits/certs/InvalidinhibitPolicyMappingTest1EE.crt -- pki/testdata/nist-pkits/certs/InvalidinhibitPolicyMappingTest3EE.crt -- pki/testdata/nist-pkits/certs/InvalidinhibitPolicyMappingTest5EE.crt -- pki/testdata/nist-pkits/certs/InvalidinhibitPolicyMappingTest6EE.crt -- pki/testdata/nist-pkits/certs/InvalidkeyUsageCriticalcRLSignFalseTest4EE.crt -- pki/testdata/nist-pkits/certs/InvalidkeyUsageCriticalkeyCertSignFalseTest1EE.crt -- pki/testdata/nist-pkits/certs/InvalidkeyUsageNotCriticalcRLSignFalseTest5EE.crt -- pki/testdata/nist-pkits/certs/InvalidkeyUsageNotCriticalkeyCertSignFalseTest2EE.crt -- pki/testdata/nist-pkits/certs/InvalidonlyContainsAttributeCertsTest14EE.crt -- pki/testdata/nist-pkits/certs/InvalidonlyContainsCACertsTest12EE.crt -- pki/testdata/nist-pkits/certs/InvalidonlyContainsUserCertsTest11EE.crt -- pki/testdata/nist-pkits/certs/InvalidonlySomeReasonsTest15EE.crt -- pki/testdata/nist-pkits/certs/InvalidonlySomeReasonsTest16EE.crt -- pki/testdata/nist-pkits/certs/InvalidonlySomeReasonsTest17EE.crt -- pki/testdata/nist-pkits/certs/InvalidonlySomeReasonsTest20EE.crt -- pki/testdata/nist-pkits/certs/InvalidonlySomeReasonsTest21EE.crt -- pki/testdata/nist-pkits/certs/InvalidpathLenConstraintTest10EE.crt -- pki/testdata/nist-pkits/certs/InvalidpathLenConstraintTest11EE.crt -- pki/testdata/nist-pkits/certs/InvalidpathLenConstraintTest12EE.crt -- pki/testdata/nist-pkits/certs/InvalidpathLenConstraintTest5EE.crt -- pki/testdata/nist-pkits/certs/InvalidpathLenConstraintTest6EE.crt -- pki/testdata/nist-pkits/certs/InvalidpathLenConstraintTest9EE.crt -- pki/testdata/nist-pkits/certs/Invalidpre2000CRLnextUpdateTest12EE.crt -- pki/testdata/nist-pkits/certs/Invalidpre2000UTCEEnotAfterDateTest7EE.crt -- pki/testdata/nist-pkits/certs/InvalidrequireExplicitPolicyTest3EE.crt -- pki/testdata/nist-pkits/certs/InvalidrequireExplicitPolicyTest5EE.crt -- pki/testdata/nist-pkits/certs/LongSerialNumberCACert.crt -- pki/testdata/nist-pkits/certs/Mapping1to2CACert.crt -- pki/testdata/nist-pkits/certs/MappingFromanyPolicyCACert.crt -- pki/testdata/nist-pkits/certs/MappingToanyPolicyCACert.crt -- pki/testdata/nist-pkits/certs/MissingbasicConstraintsCACert.crt -- pki/testdata/nist-pkits/certs/NameOrderingCACert.crt -- pki/testdata/nist-pkits/certs/NegativeSerialNumberCACert.crt -- pki/testdata/nist-pkits/certs/NoCRLCACert.crt -- pki/testdata/nist-pkits/certs/NoPoliciesCACert.crt -- pki/testdata/nist-pkits/certs/NoissuingDistributionPointCACert.crt -- pki/testdata/nist-pkits/certs/OldCRLnextUpdateCACert.crt -- pki/testdata/nist-pkits/certs/OverlappingPoliciesTest6EE.crt -- pki/testdata/nist-pkits/certs/P12Mapping1to3CACert.crt -- pki/testdata/nist-pkits/certs/P12Mapping1to3subCACert.crt -- pki/testdata/nist-pkits/certs/P12Mapping1to3subsubCACert.crt -- pki/testdata/nist-pkits/certs/P1Mapping1to234CACert.crt -- pki/testdata/nist-pkits/certs/P1Mapping1to234subCACert.crt -- pki/testdata/nist-pkits/certs/P1anyPolicyMapping1to2CACert.crt -- pki/testdata/nist-pkits/certs/PanyPolicyMapping1to2CACert.crt -- pki/testdata/nist-pkits/certs/PoliciesP1234CACert.crt -- pki/testdata/nist-pkits/certs/PoliciesP1234subCAP123Cert.crt -- pki/testdata/nist-pkits/certs/PoliciesP1234subsubCAP123P12Cert.crt -- pki/testdata/nist-pkits/certs/PoliciesP123CACert.crt -- pki/testdata/nist-pkits/certs/PoliciesP123subCAP12Cert.crt -- pki/testdata/nist-pkits/certs/PoliciesP123subsubCAP12P1Cert.crt -- pki/testdata/nist-pkits/certs/PoliciesP123subsubCAP12P2Cert.crt -- pki/testdata/nist-pkits/certs/PoliciesP123subsubsubCAP12P2P1Cert.crt -- pki/testdata/nist-pkits/certs/PoliciesP12CACert.crt -- pki/testdata/nist-pkits/certs/PoliciesP12subCAP1Cert.crt -- pki/testdata/nist-pkits/certs/PoliciesP12subsubCAP1P2Cert.crt -- pki/testdata/nist-pkits/certs/PoliciesP2subCA2Cert.crt -- pki/testdata/nist-pkits/certs/PoliciesP2subCACert.crt -- pki/testdata/nist-pkits/certs/PoliciesP3CACert.crt -- pki/testdata/nist-pkits/certs/RFC3280MandatoryAttributeTypesCACert.crt -- pki/testdata/nist-pkits/certs/RFC3280OptionalAttributeTypesCACert.crt -- pki/testdata/nist-pkits/certs/RevokedsubCACert.crt -- pki/testdata/nist-pkits/certs/RolloverfromPrintableStringtoUTF8StringCACert.crt -- pki/testdata/nist-pkits/certs/SeparateCertificateandCRLKeysCA2CRLSigningCert.crt -- pki/testdata/nist-pkits/certs/SeparateCertificateandCRLKeysCA2CertificateSigningCACert.crt -- pki/testdata/nist-pkits/certs/SeparateCertificateandCRLKeysCRLSigningCert.crt -- pki/testdata/nist-pkits/certs/SeparateCertificateandCRLKeysCertificateSigningCACert.crt -- pki/testdata/nist-pkits/certs/TrustAnchorRootCertificate.crt -- pki/testdata/nist-pkits/certs/TwoCRLsCACert.crt -- pki/testdata/nist-pkits/certs/UIDCACert.crt -- pki/testdata/nist-pkits/certs/UTF8StringCaseInsensitiveMatchCACert.crt -- pki/testdata/nist-pkits/certs/UTF8StringEncodedNamesCACert.crt -- pki/testdata/nist-pkits/certs/UnknownCRLEntryExtensionCACert.crt -- pki/testdata/nist-pkits/certs/UnknownCRLExtensionCACert.crt -- pki/testdata/nist-pkits/certs/UserNoticeQualifierTest15EE.crt -- pki/testdata/nist-pkits/certs/UserNoticeQualifierTest16EE.crt -- pki/testdata/nist-pkits/certs/UserNoticeQualifierTest17EE.crt -- pki/testdata/nist-pkits/certs/UserNoticeQualifierTest18EE.crt -- pki/testdata/nist-pkits/certs/UserNoticeQualifierTest19EE.crt -- pki/testdata/nist-pkits/certs/ValidBasicSelfIssuedCRLSigningKeyTest6EE.crt -- pki/testdata/nist-pkits/certs/ValidBasicSelfIssuedNewWithOldTest3EE.crt -- pki/testdata/nist-pkits/certs/ValidBasicSelfIssuedNewWithOldTest4EE.crt -- pki/testdata/nist-pkits/certs/ValidBasicSelfIssuedOldWithNewTest1EE.crt -- pki/testdata/nist-pkits/certs/ValidCertificatePathTest1EE.crt -- pki/testdata/nist-pkits/certs/ValidDNSnameConstraintsTest30EE.crt -- pki/testdata/nist-pkits/certs/ValidDNSnameConstraintsTest32EE.crt -- pki/testdata/nist-pkits/certs/ValidDNandRFC822nameConstraintsTest27EE.crt -- pki/testdata/nist-pkits/certs/ValidDNnameConstraintsTest11EE.crt -- pki/testdata/nist-pkits/certs/ValidDNnameConstraintsTest14EE.crt -- pki/testdata/nist-pkits/certs/ValidDNnameConstraintsTest18EE.crt -- pki/testdata/nist-pkits/certs/ValidDNnameConstraintsTest19EE.crt -- pki/testdata/nist-pkits/certs/ValidDNnameConstraintsTest1EE.crt -- pki/testdata/nist-pkits/certs/ValidDNnameConstraintsTest4EE.crt -- pki/testdata/nist-pkits/certs/ValidDNnameConstraintsTest5EE.crt -- pki/testdata/nist-pkits/certs/ValidDNnameConstraintsTest6EE.crt -- pki/testdata/nist-pkits/certs/ValidDSAParameterInheritanceTest5EE.crt -- pki/testdata/nist-pkits/certs/ValidDSASignaturesTest4EE.crt -- pki/testdata/nist-pkits/certs/ValidGeneralizedTimeCRLnextUpdateTest13EE.crt -- pki/testdata/nist-pkits/certs/ValidGeneralizedTimenotAfterDateTest8EE.crt -- pki/testdata/nist-pkits/certs/ValidGeneralizedTimenotBeforeDateTest4EE.crt -- pki/testdata/nist-pkits/certs/ValidIDPwithindirectCRLTest22EE.crt -- pki/testdata/nist-pkits/certs/ValidIDPwithindirectCRLTest24EE.crt -- pki/testdata/nist-pkits/certs/ValidIDPwithindirectCRLTest25EE.crt -- pki/testdata/nist-pkits/certs/ValidLongSerialNumberTest16EE.crt -- pki/testdata/nist-pkits/certs/ValidLongSerialNumberTest17EE.crt -- pki/testdata/nist-pkits/certs/ValidNameChainingCapitalizationTest5EE.crt -- pki/testdata/nist-pkits/certs/ValidNameChainingWhitespaceTest3EE.crt -- pki/testdata/nist-pkits/certs/ValidNameChainingWhitespaceTest4EE.crt -- pki/testdata/nist-pkits/certs/ValidNameUIDsTest6EE.crt -- pki/testdata/nist-pkits/certs/ValidNegativeSerialNumberTest14EE.crt -- pki/testdata/nist-pkits/certs/ValidNoissuingDistributionPointTest10EE.crt -- pki/testdata/nist-pkits/certs/ValidPolicyMappingTest11EE.crt -- pki/testdata/nist-pkits/certs/ValidPolicyMappingTest12EE.crt -- pki/testdata/nist-pkits/certs/ValidPolicyMappingTest13EE.crt -- pki/testdata/nist-pkits/certs/ValidPolicyMappingTest14EE.crt -- pki/testdata/nist-pkits/certs/ValidPolicyMappingTest1EE.crt -- pki/testdata/nist-pkits/certs/ValidPolicyMappingTest3EE.crt -- pki/testdata/nist-pkits/certs/ValidPolicyMappingTest5EE.crt -- pki/testdata/nist-pkits/certs/ValidPolicyMappingTest6EE.crt -- pki/testdata/nist-pkits/certs/ValidPolicyMappingTest9EE.crt -- pki/testdata/nist-pkits/certs/ValidRFC3280MandatoryAttributeTypesTest7EE.crt -- pki/testdata/nist-pkits/certs/ValidRFC3280OptionalAttributeTypesTest8EE.crt -- pki/testdata/nist-pkits/certs/ValidRFC822nameConstraintsTest21EE.crt -- pki/testdata/nist-pkits/certs/ValidRFC822nameConstraintsTest23EE.crt -- pki/testdata/nist-pkits/certs/ValidRFC822nameConstraintsTest25EE.crt -- pki/testdata/nist-pkits/certs/ValidRolloverfromPrintableStringtoUTF8StringTest10EE.crt -- pki/testdata/nist-pkits/certs/ValidSelfIssuedinhibitAnyPolicyTest7EE.crt -- pki/testdata/nist-pkits/certs/ValidSelfIssuedinhibitAnyPolicyTest9EE.crt -- pki/testdata/nist-pkits/certs/ValidSelfIssuedinhibitPolicyMappingTest7EE.crt -- pki/testdata/nist-pkits/certs/ValidSelfIssuedpathLenConstraintTest15EE.crt -- pki/testdata/nist-pkits/certs/ValidSelfIssuedpathLenConstraintTest17EE.crt -- pki/testdata/nist-pkits/certs/ValidSelfIssuedrequireExplicitPolicyTest6EE.crt -- pki/testdata/nist-pkits/certs/ValidSeparateCertificateandCRLKeysTest19EE.crt -- pki/testdata/nist-pkits/certs/ValidTwoCRLsTest7EE.crt -- pki/testdata/nist-pkits/certs/ValidURInameConstraintsTest34EE.crt -- pki/testdata/nist-pkits/certs/ValidURInameConstraintsTest36EE.crt -- pki/testdata/nist-pkits/certs/ValidUTF8StringCaseInsensitiveMatchTest11EE.crt -- pki/testdata/nist-pkits/certs/ValidUTF8StringEncodedNamesTest9EE.crt -- pki/testdata/nist-pkits/certs/ValidUnknownNotCriticalCertificateExtensionTest1EE.crt -- pki/testdata/nist-pkits/certs/ValidbasicConstraintsNotCriticalTest4EE.crt -- pki/testdata/nist-pkits/certs/ValidcRLIssuerTest28EE.crt -- pki/testdata/nist-pkits/certs/ValidcRLIssuerTest29EE.crt -- pki/testdata/nist-pkits/certs/ValidcRLIssuerTest30EE.crt -- pki/testdata/nist-pkits/certs/ValidcRLIssuerTest33EE.crt -- pki/testdata/nist-pkits/certs/ValiddeltaCRLTest2EE.crt -- pki/testdata/nist-pkits/certs/ValiddeltaCRLTest5EE.crt -- pki/testdata/nist-pkits/certs/ValiddeltaCRLTest7EE.crt -- pki/testdata/nist-pkits/certs/ValiddeltaCRLTest8EE.crt -- pki/testdata/nist-pkits/certs/ValiddistributionPointTest1EE.crt -- pki/testdata/nist-pkits/certs/ValiddistributionPointTest4EE.crt -- pki/testdata/nist-pkits/certs/ValiddistributionPointTest5EE.crt -- pki/testdata/nist-pkits/certs/ValiddistributionPointTest7EE.crt -- pki/testdata/nist-pkits/certs/ValidinhibitAnyPolicyTest2EE.crt -- pki/testdata/nist-pkits/certs/ValidinhibitPolicyMappingTest2EE.crt -- pki/testdata/nist-pkits/certs/ValidinhibitPolicyMappingTest4EE.crt -- pki/testdata/nist-pkits/certs/ValidkeyUsageNotCriticalTest3EE.crt -- pki/testdata/nist-pkits/certs/ValidonlyContainsCACertsTest13EE.crt -- pki/testdata/nist-pkits/certs/ValidonlySomeReasonsTest18EE.crt -- pki/testdata/nist-pkits/certs/ValidonlySomeReasonsTest19EE.crt -- pki/testdata/nist-pkits/certs/ValidpathLenConstraintTest13EE.crt -- pki/testdata/nist-pkits/certs/ValidpathLenConstraintTest14EE.crt -- pki/testdata/nist-pkits/certs/ValidpathLenConstraintTest7EE.crt -- pki/testdata/nist-pkits/certs/ValidpathLenConstraintTest8EE.crt -- pki/testdata/nist-pkits/certs/Validpre2000UTCnotBeforeDateTest3EE.crt -- pki/testdata/nist-pkits/certs/ValidrequireExplicitPolicyTest1EE.crt -- pki/testdata/nist-pkits/certs/ValidrequireExplicitPolicyTest2EE.crt -- pki/testdata/nist-pkits/certs/ValidrequireExplicitPolicyTest4EE.crt -- pki/testdata/nist-pkits/certs/WrongCRLCACert.crt -- pki/testdata/nist-pkits/certs/anyPolicyCACert.crt -- pki/testdata/nist-pkits/certs/basicConstraintsCriticalcAFalseCACert.crt -- pki/testdata/nist-pkits/certs/basicConstraintsNotCriticalCACert.crt -- pki/testdata/nist-pkits/certs/basicConstraintsNotCriticalcAFalseCACert.crt -- pki/testdata/nist-pkits/certs/deltaCRLCA1Cert.crt -- pki/testdata/nist-pkits/certs/deltaCRLCA2Cert.crt -- pki/testdata/nist-pkits/certs/deltaCRLCA3Cert.crt -- pki/testdata/nist-pkits/certs/deltaCRLIndicatorNoBaseCACert.crt -- pki/testdata/nist-pkits/certs/distributionPoint1CACert.crt -- pki/testdata/nist-pkits/certs/distributionPoint2CACert.crt -- pki/testdata/nist-pkits/certs/indirectCRLCA1Cert.crt -- pki/testdata/nist-pkits/certs/indirectCRLCA2Cert.crt -- pki/testdata/nist-pkits/certs/indirectCRLCA3Cert.crt -- pki/testdata/nist-pkits/certs/indirectCRLCA3cRLIssuerCert.crt -- pki/testdata/nist-pkits/certs/indirectCRLCA4Cert.crt -- pki/testdata/nist-pkits/certs/indirectCRLCA4cRLIssuerCert.crt -- pki/testdata/nist-pkits/certs/indirectCRLCA5Cert.crt -- pki/testdata/nist-pkits/certs/indirectCRLCA6Cert.crt -- pki/testdata/nist-pkits/certs/inhibitAnyPolicy0CACert.crt -- pki/testdata/nist-pkits/certs/inhibitAnyPolicy1CACert.crt -- pki/testdata/nist-pkits/certs/inhibitAnyPolicy1SelfIssuedCACert.crt -- pki/testdata/nist-pkits/certs/inhibitAnyPolicy1SelfIssuedsubCA2Cert.crt -- pki/testdata/nist-pkits/certs/inhibitAnyPolicy1subCA1Cert.crt -- pki/testdata/nist-pkits/certs/inhibitAnyPolicy1subCA2Cert.crt -- pki/testdata/nist-pkits/certs/inhibitAnyPolicy1subCAIAP5Cert.crt -- pki/testdata/nist-pkits/certs/inhibitAnyPolicy1subsubCA2Cert.crt -- pki/testdata/nist-pkits/certs/inhibitAnyPolicy5CACert.crt -- pki/testdata/nist-pkits/certs/inhibitAnyPolicy5subCACert.crt -- pki/testdata/nist-pkits/certs/inhibitAnyPolicy5subsubCACert.crt -- pki/testdata/nist-pkits/certs/inhibitAnyPolicyTest3EE.crt -- pki/testdata/nist-pkits/certs/inhibitPolicyMapping0CACert.crt -- pki/testdata/nist-pkits/certs/inhibitPolicyMapping0subCACert.crt -- pki/testdata/nist-pkits/certs/inhibitPolicyMapping1P12CACert.crt -- pki/testdata/nist-pkits/certs/inhibitPolicyMapping1P12subCACert.crt -- pki/testdata/nist-pkits/certs/inhibitPolicyMapping1P12subCAIPM5Cert.crt -- pki/testdata/nist-pkits/certs/inhibitPolicyMapping1P12subsubCACert.crt -- pki/testdata/nist-pkits/certs/inhibitPolicyMapping1P12subsubCAIPM5Cert.crt -- pki/testdata/nist-pkits/certs/inhibitPolicyMapping1P1CACert.crt -- pki/testdata/nist-pkits/certs/inhibitPolicyMapping1P1SelfIssuedCACert.crt -- pki/testdata/nist-pkits/certs/inhibitPolicyMapping1P1SelfIssuedsubCACert.crt -- pki/testdata/nist-pkits/certs/inhibitPolicyMapping1P1subCACert.crt -- pki/testdata/nist-pkits/certs/inhibitPolicyMapping1P1subsubCACert.crt -- pki/testdata/nist-pkits/certs/inhibitPolicyMapping5CACert.crt -- pki/testdata/nist-pkits/certs/inhibitPolicyMapping5subCACert.crt -- pki/testdata/nist-pkits/certs/inhibitPolicyMapping5subsubCACert.crt -- pki/testdata/nist-pkits/certs/inhibitPolicyMapping5subsubsubCACert.crt -- pki/testdata/nist-pkits/certs/keyUsageCriticalcRLSignFalseCACert.crt -- pki/testdata/nist-pkits/certs/keyUsageCriticalkeyCertSignFalseCACert.crt -- pki/testdata/nist-pkits/certs/keyUsageNotCriticalCACert.crt -- pki/testdata/nist-pkits/certs/keyUsageNotCriticalcRLSignFalseCACert.crt -- pki/testdata/nist-pkits/certs/keyUsageNotCriticalkeyCertSignFalseCACert.crt -- pki/testdata/nist-pkits/certs/nameConstraintsDN1CACert.crt -- pki/testdata/nist-pkits/certs/nameConstraintsDN1SelfIssuedCACert.crt -- pki/testdata/nist-pkits/certs/nameConstraintsDN1subCA1Cert.crt -- pki/testdata/nist-pkits/certs/nameConstraintsDN1subCA2Cert.crt -- pki/testdata/nist-pkits/certs/nameConstraintsDN1subCA3Cert.crt -- pki/testdata/nist-pkits/certs/nameConstraintsDN2CACert.crt -- pki/testdata/nist-pkits/certs/nameConstraintsDN3CACert.crt -- pki/testdata/nist-pkits/certs/nameConstraintsDN3subCA1Cert.crt -- pki/testdata/nist-pkits/certs/nameConstraintsDN3subCA2Cert.crt -- pki/testdata/nist-pkits/certs/nameConstraintsDN4CACert.crt -- pki/testdata/nist-pkits/certs/nameConstraintsDN5CACert.crt -- pki/testdata/nist-pkits/certs/nameConstraintsDNS1CACert.crt -- pki/testdata/nist-pkits/certs/nameConstraintsDNS2CACert.crt -- pki/testdata/nist-pkits/certs/nameConstraintsRFC822CA1Cert.crt -- pki/testdata/nist-pkits/certs/nameConstraintsRFC822CA2Cert.crt -- pki/testdata/nist-pkits/certs/nameConstraintsRFC822CA3Cert.crt -- pki/testdata/nist-pkits/certs/nameConstraintsURI1CACert.crt -- pki/testdata/nist-pkits/certs/nameConstraintsURI2CACert.crt -- pki/testdata/nist-pkits/certs/onlyContainsAttributeCertsCACert.crt -- pki/testdata/nist-pkits/certs/onlyContainsCACertsCACert.crt -- pki/testdata/nist-pkits/certs/onlyContainsUserCertsCACert.crt -- pki/testdata/nist-pkits/certs/onlySomeReasonsCA1Cert.crt -- pki/testdata/nist-pkits/certs/onlySomeReasonsCA2Cert.crt -- pki/testdata/nist-pkits/certs/onlySomeReasonsCA3Cert.crt -- pki/testdata/nist-pkits/certs/onlySomeReasonsCA4Cert.crt -- pki/testdata/nist-pkits/certs/pathLenConstraint0CACert.crt -- pki/testdata/nist-pkits/certs/pathLenConstraint0SelfIssuedCACert.crt -- pki/testdata/nist-pkits/certs/pathLenConstraint0subCA2Cert.crt -- pki/testdata/nist-pkits/certs/pathLenConstraint0subCACert.crt -- pki/testdata/nist-pkits/certs/pathLenConstraint1CACert.crt -- pki/testdata/nist-pkits/certs/pathLenConstraint1SelfIssuedCACert.crt -- pki/testdata/nist-pkits/certs/pathLenConstraint1SelfIssuedsubCACert.crt -- pki/testdata/nist-pkits/certs/pathLenConstraint1subCACert.crt -- pki/testdata/nist-pkits/certs/pathLenConstraint6CACert.crt -- pki/testdata/nist-pkits/certs/pathLenConstraint6subCA0Cert.crt -- pki/testdata/nist-pkits/certs/pathLenConstraint6subCA1Cert.crt -- pki/testdata/nist-pkits/certs/pathLenConstraint6subCA4Cert.crt -- pki/testdata/nist-pkits/certs/pathLenConstraint6subsubCA00Cert.crt -- pki/testdata/nist-pkits/certs/pathLenConstraint6subsubCA11Cert.crt -- pki/testdata/nist-pkits/certs/pathLenConstraint6subsubCA41Cert.crt -- pki/testdata/nist-pkits/certs/pathLenConstraint6subsubsubCA11XCert.crt -- pki/testdata/nist-pkits/certs/pathLenConstraint6subsubsubCA41XCert.crt -- pki/testdata/nist-pkits/certs/pre2000CRLnextUpdateCACert.crt -- pki/testdata/nist-pkits/certs/requireExplicitPolicy0CACert.crt -- pki/testdata/nist-pkits/certs/requireExplicitPolicy0subCACert.crt -- pki/testdata/nist-pkits/certs/requireExplicitPolicy0subsubCACert.crt -- pki/testdata/nist-pkits/certs/requireExplicitPolicy0subsubsubCACert.crt -- pki/testdata/nist-pkits/certs/requireExplicitPolicy10CACert.crt -- pki/testdata/nist-pkits/certs/requireExplicitPolicy10subCACert.crt -- pki/testdata/nist-pkits/certs/requireExplicitPolicy10subsubCACert.crt -- pki/testdata/nist-pkits/certs/requireExplicitPolicy10subsubsubCACert.crt -- pki/testdata/nist-pkits/certs/requireExplicitPolicy2CACert.crt -- pki/testdata/nist-pkits/certs/requireExplicitPolicy2SelfIssuedCACert.crt -- pki/testdata/nist-pkits/certs/requireExplicitPolicy2SelfIssuedsubCACert.crt -- pki/testdata/nist-pkits/certs/requireExplicitPolicy2subCACert.crt -- pki/testdata/nist-pkits/certs/requireExplicitPolicy4CACert.crt -- pki/testdata/nist-pkits/certs/requireExplicitPolicy4subCACert.crt -- pki/testdata/nist-pkits/certs/requireExplicitPolicy4subsubCACert.crt -- pki/testdata/nist-pkits/certs/requireExplicitPolicy4subsubsubCACert.crt -- pki/testdata/nist-pkits/certs/requireExplicitPolicy5CACert.crt -- pki/testdata/nist-pkits/certs/requireExplicitPolicy5subCACert.crt -- pki/testdata/nist-pkits/certs/requireExplicitPolicy5subsubCACert.crt -- pki/testdata/nist-pkits/certs/requireExplicitPolicy5subsubsubCACert.crt -- pki/testdata/nist-pkits/certs/requireExplicitPolicy7CACert.crt -- pki/testdata/nist-pkits/certs/requireExplicitPolicy7subCARE2Cert.crt -- pki/testdata/nist-pkits/certs/requireExplicitPolicy7subsubCARE2RE4Cert.crt -- pki/testdata/nist-pkits/certs/requireExplicitPolicy7subsubsubCARE2RE4Cert.crt -- pki/testdata/nist-pkits/crls/BadCRLIssuerNameCACRL.crl -- pki/testdata/nist-pkits/crls/BadCRLSignatureCACRL.crl -- pki/testdata/nist-pkits/crls/BadSignedCACRL.crl -- pki/testdata/nist-pkits/crls/BadnotAfterDateCACRL.crl -- pki/testdata/nist-pkits/crls/BadnotBeforeDateCACRL.crl -- pki/testdata/nist-pkits/crls/BasicSelfIssuedCRLSigningKeyCACRL.crl -- pki/testdata/nist-pkits/crls/BasicSelfIssuedCRLSigningKeyCRLCertCRL.crl -- pki/testdata/nist-pkits/crls/BasicSelfIssuedNewKeyCACRL.crl -- pki/testdata/nist-pkits/crls/BasicSelfIssuedOldKeyCACRL.crl -- pki/testdata/nist-pkits/crls/BasicSelfIssuedOldKeySelfIssuedCertCRL.crl -- pki/testdata/nist-pkits/crls/DSACACRL.crl -- pki/testdata/nist-pkits/crls/DSAParametersInheritedCACRL.crl -- pki/testdata/nist-pkits/crls/GeneralizedTimeCRLnextUpdateCACRL.crl -- pki/testdata/nist-pkits/crls/GoodCACRL.crl -- pki/testdata/nist-pkits/crls/GoodsubCACRL.crl -- pki/testdata/nist-pkits/crls/GoodsubCAPanyPolicyMapping1to2CACRL.crl -- pki/testdata/nist-pkits/crls/LongSerialNumberCACRL.crl -- pki/testdata/nist-pkits/crls/Mapping1to2CACRL.crl -- pki/testdata/nist-pkits/crls/MappingFromanyPolicyCACRL.crl -- pki/testdata/nist-pkits/crls/MappingToanyPolicyCACRL.crl -- pki/testdata/nist-pkits/crls/MissingbasicConstraintsCACRL.crl -- pki/testdata/nist-pkits/crls/NameOrderCACRL.crl -- pki/testdata/nist-pkits/crls/NegativeSerialNumberCACRL.crl -- pki/testdata/nist-pkits/crls/NoPoliciesCACRL.crl -- pki/testdata/nist-pkits/crls/NoissuingDistributionPointCACRL.crl -- pki/testdata/nist-pkits/crls/OldCRLnextUpdateCACRL.crl -- pki/testdata/nist-pkits/crls/P12Mapping1to3CACRL.crl -- pki/testdata/nist-pkits/crls/P12Mapping1to3subCACRL.crl -- pki/testdata/nist-pkits/crls/P12Mapping1to3subsubCACRL.crl -- pki/testdata/nist-pkits/crls/P1Mapping1to234CACRL.crl -- pki/testdata/nist-pkits/crls/P1Mapping1to234subCACRL.crl -- pki/testdata/nist-pkits/crls/P1anyPolicyMapping1to2CACRL.crl -- pki/testdata/nist-pkits/crls/PanyPolicyMapping1to2CACRL.crl -- pki/testdata/nist-pkits/crls/PoliciesP1234CACRL.crl -- pki/testdata/nist-pkits/crls/PoliciesP1234subCAP123CRL.crl -- pki/testdata/nist-pkits/crls/PoliciesP1234subsubCAP123P12CRL.crl -- pki/testdata/nist-pkits/crls/PoliciesP123CACRL.crl -- pki/testdata/nist-pkits/crls/PoliciesP123subCAP12CRL.crl -- pki/testdata/nist-pkits/crls/PoliciesP123subsubCAP12P1CRL.crl -- pki/testdata/nist-pkits/crls/PoliciesP123subsubCAP2P2CRL.crl -- pki/testdata/nist-pkits/crls/PoliciesP123subsubsubCAP12P2P1CRL.crl -- pki/testdata/nist-pkits/crls/PoliciesP12CACRL.crl -- pki/testdata/nist-pkits/crls/PoliciesP12subCAP1CRL.crl -- pki/testdata/nist-pkits/crls/PoliciesP12subsubCAP1P2CRL.crl -- pki/testdata/nist-pkits/crls/PoliciesP2subCA2CRL.crl -- pki/testdata/nist-pkits/crls/PoliciesP2subCACRL.crl -- pki/testdata/nist-pkits/crls/PoliciesP3CACRL.crl -- pki/testdata/nist-pkits/crls/RFC3280MandatoryAttributeTypesCACRL.crl -- pki/testdata/nist-pkits/crls/RFC3280OptionalAttributeTypesCACRL.crl -- pki/testdata/nist-pkits/crls/RevokedsubCACRL.crl -- pki/testdata/nist-pkits/crls/RolloverfromPrintableStringtoUTF8StringCACRL.crl -- pki/testdata/nist-pkits/crls/SeparateCertificateandCRLKeysCA2CRL.crl -- pki/testdata/nist-pkits/crls/SeparateCertificateandCRLKeysCRL.crl -- pki/testdata/nist-pkits/crls/TrustAnchorRootCRL.crl -- pki/testdata/nist-pkits/crls/TwoCRLsCABadCRL.crl -- pki/testdata/nist-pkits/crls/TwoCRLsCAGoodCRL.crl -- pki/testdata/nist-pkits/crls/UIDCACRL.crl -- pki/testdata/nist-pkits/crls/UTF8StringCaseInsensitiveMatchCACRL.crl -- pki/testdata/nist-pkits/crls/UTF8StringEncodedNamesCACRL.crl -- pki/testdata/nist-pkits/crls/UnknownCRLEntryExtensionCACRL.crl -- pki/testdata/nist-pkits/crls/UnknownCRLExtensionCACRL.crl -- pki/testdata/nist-pkits/crls/WrongCRLCACRL.crl -- pki/testdata/nist-pkits/crls/anyPolicyCACRL.crl -- pki/testdata/nist-pkits/crls/basicConstraintsCriticalcAFalseCACRL.crl -- pki/testdata/nist-pkits/crls/basicConstraintsNotCriticalCACRL.crl -- pki/testdata/nist-pkits/crls/basicConstraintsNotCriticalcAFalseCACRL.crl -- pki/testdata/nist-pkits/crls/deltaCRLCA1CRL.crl -- pki/testdata/nist-pkits/crls/deltaCRLCA1deltaCRL.crl -- pki/testdata/nist-pkits/crls/deltaCRLCA2CRL.crl -- pki/testdata/nist-pkits/crls/deltaCRLCA2deltaCRL.crl -- pki/testdata/nist-pkits/crls/deltaCRLCA3CRL.crl -- pki/testdata/nist-pkits/crls/deltaCRLCA3deltaCRL.crl -- pki/testdata/nist-pkits/crls/deltaCRLIndicatorNoBaseCACRL.crl -- pki/testdata/nist-pkits/crls/distributionPoint1CACRL.crl -- pki/testdata/nist-pkits/crls/distributionPoint2CACRL.crl -- pki/testdata/nist-pkits/crls/indirectCRLCA1CRL.crl -- pki/testdata/nist-pkits/crls/indirectCRLCA3CRL.crl -- pki/testdata/nist-pkits/crls/indirectCRLCA3cRLIssuerCRL.crl -- pki/testdata/nist-pkits/crls/indirectCRLCA4cRLIssuerCRL.crl -- pki/testdata/nist-pkits/crls/indirectCRLCA5CRL.crl -- pki/testdata/nist-pkits/crls/inhibitAnyPolicy0CACRL.crl -- pki/testdata/nist-pkits/crls/inhibitAnyPolicy1CACRL.crl -- pki/testdata/nist-pkits/crls/inhibitAnyPolicy1subCA1CRL.crl -- pki/testdata/nist-pkits/crls/inhibitAnyPolicy1subCA2CRL.crl -- pki/testdata/nist-pkits/crls/inhibitAnyPolicy1subCAIAP5CRL.crl -- pki/testdata/nist-pkits/crls/inhibitAnyPolicy1subsubCA2CRL.crl -- pki/testdata/nist-pkits/crls/inhibitAnyPolicy5CACRL.crl -- pki/testdata/nist-pkits/crls/inhibitAnyPolicy5subCACRL.crl -- pki/testdata/nist-pkits/crls/inhibitAnyPolicy5subsubCACRL.crl -- pki/testdata/nist-pkits/crls/inhibitPolicyMapping0CACRL.crl -- pki/testdata/nist-pkits/crls/inhibitPolicyMapping0subCACRL.crl -- pki/testdata/nist-pkits/crls/inhibitPolicyMapping1P12CACRL.crl -- pki/testdata/nist-pkits/crls/inhibitPolicyMapping1P12subCACRL.crl -- pki/testdata/nist-pkits/crls/inhibitPolicyMapping1P12subCAIPM5CRL.crl -- pki/testdata/nist-pkits/crls/inhibitPolicyMapping1P12subsubCACRL.crl -- pki/testdata/nist-pkits/crls/inhibitPolicyMapping1P12subsubCAIPM5CRL.crl -- pki/testdata/nist-pkits/crls/inhibitPolicyMapping1P1CACRL.crl -- pki/testdata/nist-pkits/crls/inhibitPolicyMapping1P1subCACRL.crl -- pki/testdata/nist-pkits/crls/inhibitPolicyMapping1P1subsubCACRL.crl -- pki/testdata/nist-pkits/crls/inhibitPolicyMapping5CACRL.crl -- pki/testdata/nist-pkits/crls/inhibitPolicyMapping5subCACRL.crl -- pki/testdata/nist-pkits/crls/inhibitPolicyMapping5subsubCACRL.crl -- pki/testdata/nist-pkits/crls/inhibitPolicyMapping5subsubsubCACRL.crl -- pki/testdata/nist-pkits/crls/keyUsageCriticalcRLSignFalseCACRL.crl -- pki/testdata/nist-pkits/crls/keyUsageCriticalkeyCertSignFalseCACRL.crl -- pki/testdata/nist-pkits/crls/keyUsageNotCriticalCACRL.crl -- pki/testdata/nist-pkits/crls/keyUsageNotCriticalcRLSignFalseCACRL.crl -- pki/testdata/nist-pkits/crls/keyUsageNotCriticalkeyCertSignFalseCACRL.crl -- pki/testdata/nist-pkits/crls/nameConstraintsDN1CACRL.crl -- pki/testdata/nist-pkits/crls/nameConstraintsDN1subCA1CRL.crl -- pki/testdata/nist-pkits/crls/nameConstraintsDN1subCA2CRL.crl -- pki/testdata/nist-pkits/crls/nameConstraintsDN1subCA3CRL.crl -- pki/testdata/nist-pkits/crls/nameConstraintsDN2CACRL.crl -- pki/testdata/nist-pkits/crls/nameConstraintsDN3CACRL.crl -- pki/testdata/nist-pkits/crls/nameConstraintsDN3subCA1CRL.crl -- pki/testdata/nist-pkits/crls/nameConstraintsDN3subCA2CRL.crl -- pki/testdata/nist-pkits/crls/nameConstraintsDN4CACRL.crl -- pki/testdata/nist-pkits/crls/nameConstraintsDN5CACRL.crl -- pki/testdata/nist-pkits/crls/nameConstraintsDNS1CACRL.crl -- pki/testdata/nist-pkits/crls/nameConstraintsDNS2CACRL.crl -- pki/testdata/nist-pkits/crls/nameConstraintsRFC822CA1CRL.crl -- pki/testdata/nist-pkits/crls/nameConstraintsRFC822CA2CRL.crl -- pki/testdata/nist-pkits/crls/nameConstraintsRFC822CA3CRL.crl -- pki/testdata/nist-pkits/crls/nameConstraintsURI1CACRL.crl -- pki/testdata/nist-pkits/crls/nameConstraintsURI2CACRL.crl -- pki/testdata/nist-pkits/crls/onlyContainsAttributeCertsCACRL.crl -- pki/testdata/nist-pkits/crls/onlyContainsCACertsCACRL.crl -- pki/testdata/nist-pkits/crls/onlyContainsUserCertsCACRL.crl -- pki/testdata/nist-pkits/crls/onlySomeReasonsCA1compromiseCRL.crl -- pki/testdata/nist-pkits/crls/onlySomeReasonsCA1otherreasonsCRL.crl -- pki/testdata/nist-pkits/crls/onlySomeReasonsCA2CRL1.crl -- pki/testdata/nist-pkits/crls/onlySomeReasonsCA2CRL2.crl -- pki/testdata/nist-pkits/crls/onlySomeReasonsCA3compromiseCRL.crl -- pki/testdata/nist-pkits/crls/onlySomeReasonsCA3otherreasonsCRL.crl -- pki/testdata/nist-pkits/crls/onlySomeReasonsCA4compromiseCRL.crl -- pki/testdata/nist-pkits/crls/onlySomeReasonsCA4otherreasonsCRL.crl -- pki/testdata/nist-pkits/crls/pathLenConstraint0CACRL.crl -- pki/testdata/nist-pkits/crls/pathLenConstraint0subCA2CRL.crl -- pki/testdata/nist-pkits/crls/pathLenConstraint0subCACRL.crl -- pki/testdata/nist-pkits/crls/pathLenConstraint1CACRL.crl -- pki/testdata/nist-pkits/crls/pathLenConstraint1subCACRL.crl -- pki/testdata/nist-pkits/crls/pathLenConstraint6CACRL.crl -- pki/testdata/nist-pkits/crls/pathLenConstraint6subCA0CRL.crl -- pki/testdata/nist-pkits/crls/pathLenConstraint6subCA1CRL.crl -- pki/testdata/nist-pkits/crls/pathLenConstraint6subCA4CRL.crl -- pki/testdata/nist-pkits/crls/pathLenConstraint6subsubCA00CRL.crl -- pki/testdata/nist-pkits/crls/pathLenConstraint6subsubCA11CRL.crl -- pki/testdata/nist-pkits/crls/pathLenConstraint6subsubCA41CRL.crl -- pki/testdata/nist-pkits/crls/pathLenConstraint6subsubsubCA11XCRL.crl -- pki/testdata/nist-pkits/crls/pathLenConstraint6subsubsubCA41XCRL.crl -- pki/testdata/nist-pkits/crls/pre2000CRLnextUpdateCACRL.crl -- pki/testdata/nist-pkits/crls/requireExplicitPolicy0CACRL.crl -- pki/testdata/nist-pkits/crls/requireExplicitPolicy0subCACRL.crl -- pki/testdata/nist-pkits/crls/requireExplicitPolicy0subsubCACRL.crl -- pki/testdata/nist-pkits/crls/requireExplicitPolicy0subsubsubCACRL.crl -- pki/testdata/nist-pkits/crls/requireExplicitPolicy10CACRL.crl -- pki/testdata/nist-pkits/crls/requireExplicitPolicy10subCACRL.crl -- pki/testdata/nist-pkits/crls/requireExplicitPolicy10subsubCACRL.crl -- pki/testdata/nist-pkits/crls/requireExplicitPolicy10subsubsubCACRL.crl -- pki/testdata/nist-pkits/crls/requireExplicitPolicy2CACRL.crl -- pki/testdata/nist-pkits/crls/requireExplicitPolicy2subCACRL.crl -- pki/testdata/nist-pkits/crls/requireExplicitPolicy4CACRL.crl -- pki/testdata/nist-pkits/crls/requireExplicitPolicy4subCACRL.crl -- pki/testdata/nist-pkits/crls/requireExplicitPolicy4subsubCACRL.crl -- pki/testdata/nist-pkits/crls/requireExplicitPolicy4subsubsubCACRL.crl -- pki/testdata/nist-pkits/crls/requireExplicitPolicy5CACRL.crl -- pki/testdata/nist-pkits/crls/requireExplicitPolicy5subCACRL.crl -- pki/testdata/nist-pkits/crls/requireExplicitPolicy5subsubCACRL.crl -- pki/testdata/nist-pkits/crls/requireExplicitPolicy5subsubsubCACRL.crl -- pki/testdata/nist-pkits/crls/requireExplicitPolicy7CACRL.crl -- pki/testdata/nist-pkits/crls/requireExplicitPolicy7subCARE2CRL.crl -- pki/testdata/nist-pkits/crls/requireExplicitPolicy7subsubCARE2RE4CRL.crl -- pki/testdata/nist-pkits/crls/requireExplicitPolicy7subsubsubCARE2RE4CRL.crl -- pki/testdata/ocsp_unittest/bad_ocsp_type.pem -- pki/testdata/ocsp_unittest/bad_signature.pem -- pki/testdata/ocsp_unittest/bad_status.pem -- pki/testdata/ocsp_unittest/good_response.pem -- pki/testdata/ocsp_unittest/good_response_next_update.pem -- pki/testdata/ocsp_unittest/good_response_sha256.pem -- pki/testdata/ocsp_unittest/has_critical_ct_extension.pem -- pki/testdata/ocsp_unittest/has_critical_response_extension.pem -- pki/testdata/ocsp_unittest/has_critical_single_extension.pem -- pki/testdata/ocsp_unittest/has_extension.pem -- pki/testdata/ocsp_unittest/has_single_extension.pem -- pki/testdata/ocsp_unittest/has_version.pem -- pki/testdata/ocsp_unittest/malformed_request.pem -- pki/testdata/ocsp_unittest/missing_response.pem -- pki/testdata/ocsp_unittest/multiple_response.pem -- pki/testdata/ocsp_unittest/no_response.pem -- pki/testdata/ocsp_unittest/ocsp_extra_certs.pem -- pki/testdata/ocsp_unittest/ocsp_sign_bad_indirect.pem -- pki/testdata/ocsp_unittest/ocsp_sign_direct.pem -- pki/testdata/ocsp_unittest/ocsp_sign_indirect.pem -- pki/testdata/ocsp_unittest/ocsp_sign_indirect_missing.pem -- pki/testdata/ocsp_unittest/other_response.pem -- pki/testdata/ocsp_unittest/responder_id.pem -- pki/testdata/ocsp_unittest/responder_name.pem -- pki/testdata/ocsp_unittest/revoke_response.pem -- pki/testdata/ocsp_unittest/revoke_response_reason.pem -- pki/testdata/ocsp_unittest/unknown_response.pem -- pki/testdata/parse_certificate_unittest/authority_key_identifier/empty_sequence.pem -- pki/testdata/parse_certificate_unittest/authority_key_identifier/extra_contents_after_extension_sequence.pem -- pki/testdata/parse_certificate_unittest/authority_key_identifier/extra_contents_after_issuer_and_serial.pem -- pki/testdata/parse_certificate_unittest/authority_key_identifier/invalid_contents.pem -- pki/testdata/parse_certificate_unittest/authority_key_identifier/invalid_issuer.pem -- pki/testdata/parse_certificate_unittest/authority_key_identifier/invalid_key_identifier.pem -- pki/testdata/parse_certificate_unittest/authority_key_identifier/invalid_serial.pem -- pki/testdata/parse_certificate_unittest/authority_key_identifier/issuer_and_serial.pem -- pki/testdata/parse_certificate_unittest/authority_key_identifier/issuer_only.pem -- pki/testdata/parse_certificate_unittest/authority_key_identifier/key_identifier.pem -- pki/testdata/parse_certificate_unittest/authority_key_identifier/key_identifier_and_issuer_and_serial.pem -- pki/testdata/parse_certificate_unittest/authority_key_identifier/serial_only.pem -- pki/testdata/parse_certificate_unittest/authority_key_identifier/url_issuer_and_serial.pem -- pki/testdata/parse_certificate_unittest/authority_key_identifier_not_sequence.pem -- pki/testdata/parse_certificate_unittest/bad_key_usage.pem -- pki/testdata/parse_certificate_unittest/bad_policy_qualifiers.pem -- pki/testdata/parse_certificate_unittest/bad_signature_algorithm_oid.pem -- pki/testdata/parse_certificate_unittest/bad_validity.pem -- pki/testdata/parse_certificate_unittest/basic_constraints_ca_false.pem -- pki/testdata/parse_certificate_unittest/basic_constraints_ca_no_path.pem -- pki/testdata/parse_certificate_unittest/basic_constraints_ca_path_9.pem -- pki/testdata/parse_certificate_unittest/basic_constraints_negative_path.pem -- pki/testdata/parse_certificate_unittest/basic_constraints_not_ca.pem -- pki/testdata/parse_certificate_unittest/basic_constraints_path_too_large.pem -- pki/testdata/parse_certificate_unittest/basic_constraints_pathlen_255.pem -- pki/testdata/parse_certificate_unittest/basic_constraints_pathlen_256.pem -- pki/testdata/parse_certificate_unittest/basic_constraints_pathlen_not_ca.pem -- pki/testdata/parse_certificate_unittest/basic_constraints_unconsumed_data.pem -- pki/testdata/parse_certificate_unittest/cert_algorithm_not_sequence.pem -- pki/testdata/parse_certificate_unittest/cert_data_after_signature.pem -- pki/testdata/parse_certificate_unittest/cert_empty_sequence.pem -- pki/testdata/parse_certificate_unittest/cert_missing_signature.pem -- pki/testdata/parse_certificate_unittest/cert_not_sequence.pem -- pki/testdata/parse_certificate_unittest/cert_signature_not_bit_string.pem -- pki/testdata/parse_certificate_unittest/cert_skeleton.pem -- pki/testdata/parse_certificate_unittest/cert_version3.pem -- pki/testdata/parse_certificate_unittest/crldp_1uri_noissuer.pem -- pki/testdata/parse_certificate_unittest/crldp_3uri_noissuer.pem -- pki/testdata/parse_certificate_unittest/crldp_full_name_as_dirname.pem -- pki/testdata/parse_certificate_unittest/crldp_issuer_as_dirname.pem -- pki/testdata/parse_certificate_unittest/extended_key_usage.pem -- pki/testdata/parse_certificate_unittest/extension_critical.pem -- pki/testdata/parse_certificate_unittest/extension_critical_0.pem -- pki/testdata/parse_certificate_unittest/extension_critical_3.pem -- pki/testdata/parse_certificate_unittest/extension_not_critical.pem -- pki/testdata/parse_certificate_unittest/extensions_data_after_sequence.pem -- pki/testdata/parse_certificate_unittest/extensions_duplicate_key_usage.pem -- pki/testdata/parse_certificate_unittest/extensions_empty_sequence.pem -- pki/testdata/parse_certificate_unittest/extensions_not_sequence.pem -- pki/testdata/parse_certificate_unittest/extensions_real.pem -- pki/testdata/parse_certificate_unittest/failed_signature_algorithm.pem -- pki/testdata/parse_certificate_unittest/inhibit_any_policy.pem -- pki/testdata/parse_certificate_unittest/issuer_bad_printable_string.pem -- pki/testdata/parse_certificate_unittest/key_usage.pem -- pki/testdata/parse_certificate_unittest/name_constraints_bad_ip.pem -- pki/testdata/parse_certificate_unittest/policies.pem -- pki/testdata/parse_certificate_unittest/policy_constraints_empty.pem -- pki/testdata/parse_certificate_unittest/policy_constraints_inhibit.pem -- pki/testdata/parse_certificate_unittest/policy_constraints_inhibit_require.pem -- pki/testdata/parse_certificate_unittest/policy_constraints_require.pem -- pki/testdata/parse_certificate_unittest/policy_qualifiers_empty_sequence.pem -- pki/testdata/parse_certificate_unittest/serial_37_bytes.pem -- pki/testdata/parse_certificate_unittest/serial_negative.pem -- pki/testdata/parse_certificate_unittest/serial_not_minimal.pem -- pki/testdata/parse_certificate_unittest/serial_not_number.pem -- pki/testdata/parse_certificate_unittest/serial_zero.pem -- pki/testdata/parse_certificate_unittest/serial_zero_padded.pem -- pki/testdata/parse_certificate_unittest/serial_zero_padded_21_bytes.pem -- pki/testdata/parse_certificate_unittest/signature_algorithm_null.pem -- pki/testdata/parse_certificate_unittest/subject_alt_name.pem -- pki/testdata/parse_certificate_unittest/subject_blank_subjectaltname_not_critical.pem -- pki/testdata/parse_certificate_unittest/subject_key_identifier_not_octet_string.pem -- pki/testdata/parse_certificate_unittest/subject_not_ascii.pem -- pki/testdata/parse_certificate_unittest/subject_not_printable_string.pem -- pki/testdata/parse_certificate_unittest/subject_printable_string_containing_utf8_client_cert.pem -- pki/testdata/parse_certificate_unittest/subject_t61string.pem -- pki/testdata/parse_certificate_unittest/subject_t61string_1-32.pem -- pki/testdata/parse_certificate_unittest/subject_t61string_126-160.pem -- pki/testdata/parse_certificate_unittest/subject_t61string_actual.pem -- pki/testdata/parse_certificate_unittest/subjectaltname_bad_ip.pem -- pki/testdata/parse_certificate_unittest/subjectaltname_dns_not_ascii.pem -- pki/testdata/parse_certificate_unittest/subjectaltname_general_names_empty_sequence.pem -- pki/testdata/parse_certificate_unittest/subjectaltname_trailing_data.pem -- pki/testdata/parse_certificate_unittest/tbs_explicit_v1.pem -- pki/testdata/parse_certificate_unittest/tbs_v1.pem -- pki/testdata/parse_certificate_unittest/tbs_v1_extensions.pem -- pki/testdata/parse_certificate_unittest/tbs_v2_extensions.pem -- pki/testdata/parse_certificate_unittest/tbs_v2_issuer_and_subject_unique_id.pem -- pki/testdata/parse_certificate_unittest/tbs_v2_issuer_unique_id.pem -- pki/testdata/parse_certificate_unittest/tbs_v2_no_optionals.pem -- pki/testdata/parse_certificate_unittest/tbs_v3_all_optionals.pem -- pki/testdata/parse_certificate_unittest/tbs_v3_data_after_extensions.pem -- pki/testdata/parse_certificate_unittest/tbs_v3_extensions.pem -- pki/testdata/parse_certificate_unittest/tbs_v3_extensions_not_sequence.pem -- pki/testdata/parse_certificate_unittest/tbs_v3_no_optionals.pem -- pki/testdata/parse_certificate_unittest/tbs_v3_real.pem -- pki/testdata/parse_certificate_unittest/tbs_v4.pem -- pki/testdata/parse_certificate_unittest/tbs_validity_both_generalized_time.pem -- pki/testdata/parse_certificate_unittest/tbs_validity_both_utc_time.pem -- pki/testdata/parse_certificate_unittest/tbs_validity_generalized_time_and_utc_time.pem -- pki/testdata/parse_certificate_unittest/tbs_validity_relaxed.pem -- pki/testdata/parse_certificate_unittest/tbs_validity_utc_time_and_generalized_time.pem -- pki/testdata/parse_certificate_unittest/v1_explicit_version.pem -- pki/testdata/path_builder_unittest/key_id_name_and_serial_prioritization/int_match_name_only.pem -- pki/testdata/path_builder_unittest/key_id_name_and_serial_prioritization/int_matching.pem -- pki/testdata/path_builder_unittest/key_id_name_and_serial_prioritization/int_mismatch.pem -- pki/testdata/path_builder_unittest/key_id_name_and_serial_prioritization/root.pem -- pki/testdata/path_builder_unittest/key_id_name_and_serial_prioritization/root2.pem -- pki/testdata/path_builder_unittest/key_id_name_and_serial_prioritization/target.pem -- pki/testdata/path_builder_unittest/key_id_prioritization/int_different_ski_a.pem -- pki/testdata/path_builder_unittest/key_id_prioritization/int_different_ski_b.pem -- pki/testdata/path_builder_unittest/key_id_prioritization/int_different_ski_c.pem -- pki/testdata/path_builder_unittest/key_id_prioritization/int_matching_ski_a.pem -- pki/testdata/path_builder_unittest/key_id_prioritization/int_matching_ski_b.pem -- pki/testdata/path_builder_unittest/key_id_prioritization/int_matching_ski_c.pem -- pki/testdata/path_builder_unittest/key_id_prioritization/int_no_ski_a.pem -- pki/testdata/path_builder_unittest/key_id_prioritization/int_no_ski_b.pem -- pki/testdata/path_builder_unittest/key_id_prioritization/int_no_ski_c.pem -- pki/testdata/path_builder_unittest/key_id_prioritization/root.pem -- pki/testdata/path_builder_unittest/key_id_prioritization/target.pem -- pki/testdata/path_builder_unittest/multi-root-A-by-B.pem -- pki/testdata/path_builder_unittest/multi-root-B-by-C.pem -- pki/testdata/path_builder_unittest/multi-root-B-by-F.pem -- pki/testdata/path_builder_unittest/multi-root-C-by-D.pem -- pki/testdata/path_builder_unittest/multi-root-C-by-E.pem -- pki/testdata/path_builder_unittest/multi-root-D-by-D.pem -- pki/testdata/path_builder_unittest/multi-root-E-by-E.pem -- pki/testdata/path_builder_unittest/multi-root-F-by-E.pem -- pki/testdata/path_builder_unittest/precertificate/precertificate.pem -- pki/testdata/path_builder_unittest/precertificate/root.pem -- pki/testdata/path_builder_unittest/self_issued_prioritization/root1.pem -- pki/testdata/path_builder_unittest/self_issued_prioritization/root1_cross.pem -- pki/testdata/path_builder_unittest/self_issued_prioritization/root2.pem -- pki/testdata/path_builder_unittest/self_issued_prioritization/target.pem -- pki/testdata/path_builder_unittest/validity_date_prioritization/int_ac.pem -- pki/testdata/path_builder_unittest/validity_date_prioritization/int_ad.pem -- pki/testdata/path_builder_unittest/validity_date_prioritization/int_bc.pem -- pki/testdata/path_builder_unittest/validity_date_prioritization/int_bd.pem -- pki/testdata/path_builder_unittest/validity_date_prioritization/root.pem -- pki/testdata/path_builder_unittest/validity_date_prioritization/target.pem -- pki/testdata/verify_certificate_chain_unittest/basic-constraints-pathlen-0-self-issued/chain.pem -- pki/testdata/verify_certificate_chain_unittest/basic-constraints-pathlen-0-self-issued/main.test -- pki/testdata/verify_certificate_chain_unittest/expired-intermediate/chain.pem -- pki/testdata/verify_certificate_chain_unittest/expired-intermediate/not-after.test -- pki/testdata/verify_certificate_chain_unittest/expired-intermediate/not-before.test -- pki/testdata/verify_certificate_chain_unittest/expired-root/chain.pem -- pki/testdata/verify_certificate_chain_unittest/expired-root/not-after-ta-with-constraints.test -- pki/testdata/verify_certificate_chain_unittest/expired-root/not-after-ta-with-expiration-and-constraints.test -- pki/testdata/verify_certificate_chain_unittest/expired-root/not-after-ta-with-expiration.test -- pki/testdata/verify_certificate_chain_unittest/expired-root/not-after.test -- pki/testdata/verify_certificate_chain_unittest/expired-root/not-before-ta-with-expiration.test -- pki/testdata/verify_certificate_chain_unittest/expired-root/not-before.test -- pki/testdata/verify_certificate_chain_unittest/expired-target/chain.pem -- pki/testdata/verify_certificate_chain_unittest/expired-target/not-after.test -- pki/testdata/verify_certificate_chain_unittest/expired-target/not-before.test -- pki/testdata/verify_certificate_chain_unittest/incorrect-trust-anchor/chain.pem -- pki/testdata/verify_certificate_chain_unittest/incorrect-trust-anchor/main.test -- pki/testdata/verify_certificate_chain_unittest/intermediate-and-target-wrong-signature/chain.pem -- pki/testdata/verify_certificate_chain_unittest/intermediate-and-target-wrong-signature/main.test -- pki/testdata/verify_certificate_chain_unittest/intermediate-basic-constraints-ca-false/chain.pem -- pki/testdata/verify_certificate_chain_unittest/intermediate-basic-constraints-ca-false/main.test -- pki/testdata/verify_certificate_chain_unittest/intermediate-basic-constraints-not-critical/chain.pem -- pki/testdata/verify_certificate_chain_unittest/intermediate-basic-constraints-not-critical/main.test -- pki/testdata/verify_certificate_chain_unittest/intermediate-eku-any-and-clientauth/any.test -- pki/testdata/verify_certificate_chain_unittest/intermediate-eku-any-and-clientauth/chain.pem -- pki/testdata/verify_certificate_chain_unittest/intermediate-eku-any-and-clientauth/clientauth-strict-leaf.test -- pki/testdata/verify_certificate_chain_unittest/intermediate-eku-any-and-clientauth/clientauth-strict.test -- pki/testdata/verify_certificate_chain_unittest/intermediate-eku-any-and-clientauth/clientauth.test -- pki/testdata/verify_certificate_chain_unittest/intermediate-eku-any-and-clientauth/serverauth-strict-leaf.test -- pki/testdata/verify_certificate_chain_unittest/intermediate-eku-any-and-clientauth/serverauth-strict.test -- pki/testdata/verify_certificate_chain_unittest/intermediate-eku-any-and-clientauth/serverauth.test -- pki/testdata/verify_certificate_chain_unittest/intermediate-eku-clientauth/any.test -- pki/testdata/verify_certificate_chain_unittest/intermediate-eku-clientauth/chain.pem -- pki/testdata/verify_certificate_chain_unittest/intermediate-eku-clientauth/clientauth-strict-leaf.test -- pki/testdata/verify_certificate_chain_unittest/intermediate-eku-clientauth/clientauth-strict.test -- pki/testdata/verify_certificate_chain_unittest/intermediate-eku-clientauth/clientauth.test -- pki/testdata/verify_certificate_chain_unittest/intermediate-eku-clientauth/serverauth-strict-leaf.test -- pki/testdata/verify_certificate_chain_unittest/intermediate-eku-clientauth/serverauth-strict.test -- pki/testdata/verify_certificate_chain_unittest/intermediate-eku-clientauth/serverauth.test -- pki/testdata/verify_certificate_chain_unittest/intermediate-eku-server-gated-crypto/sha1-chain.pem -- pki/testdata/verify_certificate_chain_unittest/intermediate-eku-server-gated-crypto/sha1-eku-any.test -- pki/testdata/verify_certificate_chain_unittest/intermediate-eku-server-gated-crypto/sha1-eku-clientAuth-strict.test -- pki/testdata/verify_certificate_chain_unittest/intermediate-eku-server-gated-crypto/sha1-eku-clientAuth.test -- pki/testdata/verify_certificate_chain_unittest/intermediate-eku-server-gated-crypto/sha1-eku-serverAuth-strict.test -- pki/testdata/verify_certificate_chain_unittest/intermediate-eku-server-gated-crypto/sha1-eku-serverAuth.test -- pki/testdata/verify_certificate_chain_unittest/intermediate-eku-server-gated-crypto/sha256-chain.pem -- pki/testdata/verify_certificate_chain_unittest/intermediate-eku-server-gated-crypto/sha256-eku-any.test -- pki/testdata/verify_certificate_chain_unittest/intermediate-eku-server-gated-crypto/sha256-eku-clientAuth-strict.test -- pki/testdata/verify_certificate_chain_unittest/intermediate-eku-server-gated-crypto/sha256-eku-clientAuth.test -- pki/testdata/verify_certificate_chain_unittest/intermediate-eku-server-gated-crypto/sha256-eku-serverAuth-strict.test -- pki/testdata/verify_certificate_chain_unittest/intermediate-eku-server-gated-crypto/sha256-eku-serverAuth.test -- pki/testdata/verify_certificate_chain_unittest/intermediate-invalid-spki/chain.pem -- pki/testdata/verify_certificate_chain_unittest/intermediate-invalid-spki/main.test -- pki/testdata/verify_certificate_chain_unittest/intermediate-lacks-basic-constraints/chain.pem -- pki/testdata/verify_certificate_chain_unittest/intermediate-lacks-basic-constraints/main.test -- pki/testdata/verify_certificate_chain_unittest/intermediate-lacks-signing-key-usage/chain.pem -- pki/testdata/verify_certificate_chain_unittest/intermediate-lacks-signing-key-usage/main.test -- pki/testdata/verify_certificate_chain_unittest/intermediate-signed-with-sha1/chain.pem -- pki/testdata/verify_certificate_chain_unittest/intermediate-signed-with-sha1/main.test -- pki/testdata/verify_certificate_chain_unittest/intermediate-unknown-critical-extension/chain.pem -- pki/testdata/verify_certificate_chain_unittest/intermediate-unknown-critical-extension/main.test -- pki/testdata/verify_certificate_chain_unittest/intermediate-unknown-non-critical-extension/chain.pem -- pki/testdata/verify_certificate_chain_unittest/intermediate-unknown-non-critical-extension/main.test -- pki/testdata/verify_certificate_chain_unittest/intermediate-wrong-signature-no-authority-key-identifier/chain.pem -- pki/testdata/verify_certificate_chain_unittest/intermediate-wrong-signature-no-authority-key-identifier/main.test -- pki/testdata/verify_certificate_chain_unittest/issuer-and-subject-not-byte-for-byte-equal/anchor.pem -- pki/testdata/verify_certificate_chain_unittest/issuer-and-subject-not-byte-for-byte-equal/anchor.test -- pki/testdata/verify_certificate_chain_unittest/issuer-and-subject-not-byte-for-byte-equal/target.pem -- pki/testdata/verify_certificate_chain_unittest/issuer-and-subject-not-byte-for-byte-equal/target.test -- pki/testdata/verify_certificate_chain_unittest/key-rollover/longrolloverchain.pem -- pki/testdata/verify_certificate_chain_unittest/key-rollover/longrolloverchain.test -- pki/testdata/verify_certificate_chain_unittest/key-rollover/newchain.pem -- pki/testdata/verify_certificate_chain_unittest/key-rollover/newchain.test -- pki/testdata/verify_certificate_chain_unittest/key-rollover/oldchain.pem -- pki/testdata/verify_certificate_chain_unittest/key-rollover/oldchain.test -- pki/testdata/verify_certificate_chain_unittest/key-rollover/rolloverchain.pem -- pki/testdata/verify_certificate_chain_unittest/key-rollover/rolloverchain.test -- pki/testdata/verify_certificate_chain_unittest/many-names/ok-all-types.pem -- pki/testdata/verify_certificate_chain_unittest/many-names/ok-all-types.test -- pki/testdata/verify_certificate_chain_unittest/many-names/toomany-all-types.pem -- pki/testdata/verify_certificate_chain_unittest/many-names/toomany-all-types.test -- pki/testdata/verify_certificate_chain_unittest/many-names/toomany-dirnames-excluded.pem -- pki/testdata/verify_certificate_chain_unittest/many-names/toomany-dirnames-excluded.test -- pki/testdata/verify_certificate_chain_unittest/many-names/toomany-dirnames-permitted.pem -- pki/testdata/verify_certificate_chain_unittest/many-names/toomany-dirnames-permitted.test -- pki/testdata/verify_certificate_chain_unittest/many-names/toomany-dns-excluded.pem -- pki/testdata/verify_certificate_chain_unittest/many-names/toomany-dns-excluded.test -- pki/testdata/verify_certificate_chain_unittest/many-names/toomany-dns-permitted.pem -- pki/testdata/verify_certificate_chain_unittest/many-names/toomany-dns-permitted.test -- pki/testdata/verify_certificate_chain_unittest/many-names/toomany-ips-excluded.pem -- pki/testdata/verify_certificate_chain_unittest/many-names/toomany-ips-excluded.test -- pki/testdata/verify_certificate_chain_unittest/many-names/toomany-ips-permitted.pem -- pki/testdata/verify_certificate_chain_unittest/many-names/toomany-ips-permitted.test -- pki/testdata/verify_certificate_chain_unittest/non-self-signed-root/chain.pem -- pki/testdata/verify_certificate_chain_unittest/non-self-signed-root/main.test -- pki/testdata/verify_certificate_chain_unittest/non-self-signed-root/ta-with-constraints.test -- pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.1.2.txt -- pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.1.3.txt -- pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.1.4.txt -- pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.1.5.txt -- pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.1.6.txt -- pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.10.1.2.txt -- pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.10.1.3.txt -- pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.10.10.txt -- pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.10.13.txt -- pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.10.2.txt -- pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.10.3.txt -- pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.10.4.txt -- pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.10.5.txt -- pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.10.6.txt -- pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.10.7.txt -- pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.10.8.txt -- pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.11.1.txt -- pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.11.10.txt -- pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.11.11.txt -- pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.11.3.txt -- pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.11.5.txt -- pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.11.6.txt -- pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.11.8.txt -- pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.11.9.txt -- pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.12.1.txt -- pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.12.10.txt -- pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.12.3.txt -- pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.12.4.txt -- pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.12.5.txt -- pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.12.6.txt -- pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.12.8.txt -- pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.13.10.txt -- pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.13.12.txt -- pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.13.13.txt -- pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.13.15.txt -- pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.13.16.txt -- pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.13.17.txt -- pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.13.2.txt -- pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.13.20.txt -- pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.13.21.txt -- pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.13.22.txt -- pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.13.23.txt -- pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.13.24.txt -- pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.13.25.txt -- pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.13.26.txt -- pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.13.27.txt -- pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.13.28.txt -- pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.13.29.txt -- pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.13.3.txt -- pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.13.31.txt -- pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.13.33.txt -- pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.13.34.txt -- pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.13.35.txt -- pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.13.36.txt -- pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.13.37.txt -- pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.13.38.txt -- pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.13.7.txt -- pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.13.8.txt -- pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.13.9.txt -- pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.16.2.txt -- pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.2.1.txt -- pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.2.2.txt -- pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.2.5.txt -- pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.2.6.txt -- pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.2.7.txt -- pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.3.1.txt -- pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.3.2.txt -- pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.6.1.txt -- pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.6.10.txt -- pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.6.11.txt -- pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.6.12.txt -- pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.6.16.txt -- pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.6.2.txt -- pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.6.3.txt -- pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.6.5.txt -- pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.6.6.txt -- pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.6.9.txt -- pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.7.1.txt -- pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.7.2.txt -- pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.8.1.txt -- pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.8.12.txt -- pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.8.14.txt -- pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.8.2.txt -- pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.8.3.txt -- pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.8.4.txt -- pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.8.5.txt -- pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.8.6.txt -- pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.8.7.txt -- pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.8.8.txt -- pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.8.9.txt -- pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.9.3.txt -- pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.9.5.txt -- pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.9.7.txt -- pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.9.8.txt -- pki/testdata/verify_certificate_chain_unittest/policies-inhibit-anypolicy-by-root-fail/chain.pem -- pki/testdata/verify_certificate_chain_unittest/policies-inhibit-anypolicy-by-root-fail/main.test -- pki/testdata/verify_certificate_chain_unittest/policies-inhibit-anypolicy-by-root-fail/ta-with-constraints.test -- pki/testdata/verify_certificate_chain_unittest/policies-inhibit-anypolicy-by-root-ok/chain.pem -- pki/testdata/verify_certificate_chain_unittest/policies-inhibit-anypolicy-by-root-ok/main.test -- pki/testdata/verify_certificate_chain_unittest/policies-inhibit-anypolicy-by-root-ok/ta-with-constraints.test -- pki/testdata/verify_certificate_chain_unittest/policies-inhibit-mapping-by-root-fail/chain.pem -- pki/testdata/verify_certificate_chain_unittest/policies-inhibit-mapping-by-root-fail/main.test -- pki/testdata/verify_certificate_chain_unittest/policies-inhibit-mapping-by-root-fail/ta-with-constraints.test -- pki/testdata/verify_certificate_chain_unittest/policies-inhibit-mapping-by-root-ok/chain.pem -- pki/testdata/verify_certificate_chain_unittest/policies-inhibit-mapping-by-root-ok/main.test -- pki/testdata/verify_certificate_chain_unittest/policies-inhibit-mapping-by-root-ok/ta-with-constraints.test -- pki/testdata/verify_certificate_chain_unittest/policies-ok/chain.pem -- pki/testdata/verify_certificate_chain_unittest/policies-ok/main.test -- pki/testdata/verify_certificate_chain_unittest/policies-ok/ta-with-constraints.test -- pki/testdata/verify_certificate_chain_unittest/policies-on-root-ok/chain.pem -- pki/testdata/verify_certificate_chain_unittest/policies-on-root-ok/main.test -- pki/testdata/verify_certificate_chain_unittest/policies-on-root-ok/ta-with-constraints.test -- pki/testdata/verify_certificate_chain_unittest/policies-on-root-wrong/chain.pem -- pki/testdata/verify_certificate_chain_unittest/policies-on-root-wrong/main.test -- pki/testdata/verify_certificate_chain_unittest/policies-on-root-wrong/ta-with-constraints.test -- pki/testdata/verify_certificate_chain_unittest/policies-required-by-root-fail/chain.pem -- pki/testdata/verify_certificate_chain_unittest/policies-required-by-root-fail/main.test -- pki/testdata/verify_certificate_chain_unittest/policies-required-by-root-fail/ta-with-constraints.test -- pki/testdata/verify_certificate_chain_unittest/policies-required-by-root-ok/chain.pem -- pki/testdata/verify_certificate_chain_unittest/policies-required-by-root-ok/main.test -- pki/testdata/verify_certificate_chain_unittest/policies-required-by-root-ok/ta-with-constraints.test -- pki/testdata/verify_certificate_chain_unittest/policy-mappings-on-root-fail/chain.pem -- pki/testdata/verify_certificate_chain_unittest/policy-mappings-on-root-fail/main.test -- pki/testdata/verify_certificate_chain_unittest/policy-mappings-on-root-fail/ta-with-constraints.test -- pki/testdata/verify_certificate_chain_unittest/policy-mappings-on-root-ok/chain.pem -- pki/testdata/verify_certificate_chain_unittest/policy-mappings-on-root-ok/main.test -- pki/testdata/verify_certificate_chain_unittest/policy-mappings-on-root-ok/ta-with-constraints.test -- pki/testdata/verify_certificate_chain_unittest/root-basic-constraints-ca-false/chain.pem -- pki/testdata/verify_certificate_chain_unittest/root-basic-constraints-ca-false/main.test -- pki/testdata/verify_certificate_chain_unittest/root-basic-constraints-ca-false/ta-with-constraints.test -- pki/testdata/verify_certificate_chain_unittest/root-eku-clientauth/chain.pem -- pki/testdata/verify_certificate_chain_unittest/root-eku-clientauth/serverauth-strict.test -- pki/testdata/verify_certificate_chain_unittest/root-eku-clientauth/serverauth-ta-with-constraints-strict.test -- pki/testdata/verify_certificate_chain_unittest/root-eku-clientauth/serverauth-ta-with-constraints.test -- pki/testdata/verify_certificate_chain_unittest/root-eku-clientauth/serverauth-ta-with-expiration-and-constraints.test -- pki/testdata/verify_certificate_chain_unittest/root-eku-clientauth/serverauth-ta-with-expiration.test -- pki/testdata/verify_certificate_chain_unittest/root-eku-clientauth/serverauth.test -- pki/testdata/verify_certificate_chain_unittest/root-lacks-basic-constraints/chain.pem -- pki/testdata/verify_certificate_chain_unittest/root-lacks-basic-constraints/main.test -- pki/testdata/verify_certificate_chain_unittest/root-lacks-basic-constraints/ta-with-constraints-require-basic-constraints.test -- pki/testdata/verify_certificate_chain_unittest/root-lacks-basic-constraints/ta-with-constraints.test -- pki/testdata/verify_certificate_chain_unittest/root-lacks-basic-constraints/ta-with-require-basic-constraints.test -- pki/testdata/verify_certificate_chain_unittest/root-lacks-keycertsign-key-usage/chain.pem -- pki/testdata/verify_certificate_chain_unittest/root-lacks-keycertsign-key-usage/main.test -- pki/testdata/verify_certificate_chain_unittest/root-lacks-keycertsign-key-usage/ta-with-constraints.test -- pki/testdata/verify_certificate_chain_unittest/target-and-intermediate/chain.pem -- pki/testdata/verify_certificate_chain_unittest/target-and-intermediate/distrusted-root-expired.test -- pki/testdata/verify_certificate_chain_unittest/target-and-intermediate/distrusted-root.test -- pki/testdata/verify_certificate_chain_unittest/target-and-intermediate/main.test -- pki/testdata/verify_certificate_chain_unittest/target-and-intermediate/ta-with-constraints.test -- pki/testdata/verify_certificate_chain_unittest/target-and-intermediate/ta-with-expiration.test -- pki/testdata/verify_certificate_chain_unittest/target-and-intermediate/trusted_leaf-and-trust_anchor.test -- pki/testdata/verify_certificate_chain_unittest/target-and-intermediate/trusted_leaf-root.test -- pki/testdata/verify_certificate_chain_unittest/target-and-intermediate/unspecified-trust-root.test -- pki/testdata/verify_certificate_chain_unittest/target-eku-any/any.test -- pki/testdata/verify_certificate_chain_unittest/target-eku-any/chain.pem -- pki/testdata/verify_certificate_chain_unittest/target-eku-any/clientauth-strict-leaf.test -- pki/testdata/verify_certificate_chain_unittest/target-eku-any/clientauth-strict.test -- pki/testdata/verify_certificate_chain_unittest/target-eku-any/clientauth.test -- pki/testdata/verify_certificate_chain_unittest/target-eku-any/serverauth-strict-leaf.test -- pki/testdata/verify_certificate_chain_unittest/target-eku-any/serverauth-strict.test -- pki/testdata/verify_certificate_chain_unittest/target-eku-any/serverauth.test -- pki/testdata/verify_certificate_chain_unittest/target-eku-clientauth/any.test -- pki/testdata/verify_certificate_chain_unittest/target-eku-clientauth/chain.pem -- pki/testdata/verify_certificate_chain_unittest/target-eku-clientauth/clientauth-strict.test -- pki/testdata/verify_certificate_chain_unittest/target-eku-clientauth/clientauth.test -- pki/testdata/verify_certificate_chain_unittest/target-eku-clientauth/serverauth-strict.test -- pki/testdata/verify_certificate_chain_unittest/target-eku-clientauth/serverauth.test -- pki/testdata/verify_certificate_chain_unittest/target-eku-many/any.test -- pki/testdata/verify_certificate_chain_unittest/target-eku-many/chain.pem -- pki/testdata/verify_certificate_chain_unittest/target-eku-many/clientauth-strict-leaf.test -- pki/testdata/verify_certificate_chain_unittest/target-eku-many/clientauth-strict.test -- pki/testdata/verify_certificate_chain_unittest/target-eku-many/clientauth.test -- pki/testdata/verify_certificate_chain_unittest/target-eku-many/serverauth-strict-leaf.test -- pki/testdata/verify_certificate_chain_unittest/target-eku-many/serverauth-strict.test -- pki/testdata/verify_certificate_chain_unittest/target-eku-many/serverauth.test -- pki/testdata/verify_certificate_chain_unittest/target-eku-none/any.test -- pki/testdata/verify_certificate_chain_unittest/target-eku-none/chain.pem -- pki/testdata/verify_certificate_chain_unittest/target-eku-none/clientauth-strict-leaf.test -- pki/testdata/verify_certificate_chain_unittest/target-eku-none/clientauth-strict.test -- pki/testdata/verify_certificate_chain_unittest/target-eku-none/clientauth.test -- pki/testdata/verify_certificate_chain_unittest/target-eku-none/serverauth-strict.test -- pki/testdata/verify_certificate_chain_unittest/target-eku-none/serverauth.test -- pki/testdata/verify_certificate_chain_unittest/target-has-512bit-rsa-key/chain.pem -- pki/testdata/verify_certificate_chain_unittest/target-has-512bit-rsa-key/main.test -- pki/testdata/verify_certificate_chain_unittest/target-has-ca-basic-constraints/chain.pem -- pki/testdata/verify_certificate_chain_unittest/target-has-ca-basic-constraints/main.test -- pki/testdata/verify_certificate_chain_unittest/target-has-ca-basic-constraints/strict.test -- pki/testdata/verify_certificate_chain_unittest/target-has-ca-basic-constraints/target_only-trusted_leaf-strict.test -- pki/testdata/verify_certificate_chain_unittest/target-has-ca-basic-constraints/target_only-trusted_leaf.test -- pki/testdata/verify_certificate_chain_unittest/target-has-ca-basic-constraints/target_only.pem -- pki/testdata/verify_certificate_chain_unittest/target-has-keycertsign-but-not-ca/chain.pem -- pki/testdata/verify_certificate_chain_unittest/target-has-keycertsign-but-not-ca/main.test -- pki/testdata/verify_certificate_chain_unittest/target-has-pathlen-but-not-ca/chain.pem -- pki/testdata/verify_certificate_chain_unittest/target-has-pathlen-but-not-ca/main.test -- pki/testdata/verify_certificate_chain_unittest/target-msapplicationpolicies-and-eku/chain.pem -- pki/testdata/verify_certificate_chain_unittest/target-msapplicationpolicies-and-eku/main.test -- pki/testdata/verify_certificate_chain_unittest/target-msapplicationpolicies-no-eku/chain.pem -- pki/testdata/verify_certificate_chain_unittest/target-msapplicationpolicies-no-eku/main.test -- pki/testdata/verify_certificate_chain_unittest/target-not-end-entity/chain.pem -- pki/testdata/verify_certificate_chain_unittest/target-not-end-entity/main.test -- pki/testdata/verify_certificate_chain_unittest/target-not-end-entity/strict-leaf.test -- pki/testdata/verify_certificate_chain_unittest/target-not-end-entity/strict.test -- pki/testdata/verify_certificate_chain_unittest/target-only/chain.pem -- pki/testdata/verify_certificate_chain_unittest/target-only/trusted_anchor.test -- pki/testdata/verify_certificate_chain_unittest/target-only/trusted_leaf-and-trust_anchor.test -- pki/testdata/verify_certificate_chain_unittest/target-only/trusted_leaf-not_after.test -- pki/testdata/verify_certificate_chain_unittest/target-only/trusted_leaf-wrong_eku.test -- pki/testdata/verify_certificate_chain_unittest/target-only/trusted_leaf.test -- pki/testdata/verify_certificate_chain_unittest/target-only/trusted_leaf_require_self_signed.test -- pki/testdata/verify_certificate_chain_unittest/target-selfissued/chain.pem -- pki/testdata/verify_certificate_chain_unittest/target-selfissued/trusted_anchor.test -- pki/testdata/verify_certificate_chain_unittest/target-selfissued/trusted_leaf-and-trust_anchor.test -- pki/testdata/verify_certificate_chain_unittest/target-selfissued/trusted_leaf.test -- pki/testdata/verify_certificate_chain_unittest/target-selfissued/trusted_leaf_require_self_signed.test -- pki/testdata/verify_certificate_chain_unittest/target-selfsigned/chain.pem -- pki/testdata/verify_certificate_chain_unittest/target-selfsigned/trusted_leaf-and-trust_anchor.test -- pki/testdata/verify_certificate_chain_unittest/target-selfsigned/trusted_leaf-not_after.test -- pki/testdata/verify_certificate_chain_unittest/target-selfsigned/trusted_leaf-wrong_eku.test -- pki/testdata/verify_certificate_chain_unittest/target-selfsigned/trusted_leaf.test -- pki/testdata/verify_certificate_chain_unittest/target-selfsigned/trusted_leaf_require_self_signed.test -- pki/testdata/verify_certificate_chain_unittest/target-serverauth-various-keyusages/ec-decipherOnly.pem -- pki/testdata/verify_certificate_chain_unittest/target-serverauth-various-keyusages/ec-decipherOnly.test -- pki/testdata/verify_certificate_chain_unittest/target-serverauth-various-keyusages/ec-digitalSignature.pem -- pki/testdata/verify_certificate_chain_unittest/target-serverauth-various-keyusages/ec-digitalSignature.test -- pki/testdata/verify_certificate_chain_unittest/target-serverauth-various-keyusages/ec-keyAgreement.pem -- pki/testdata/verify_certificate_chain_unittest/target-serverauth-various-keyusages/ec-keyAgreement.test -- pki/testdata/verify_certificate_chain_unittest/target-serverauth-various-keyusages/ec-keyEncipherment.pem -- pki/testdata/verify_certificate_chain_unittest/target-serverauth-various-keyusages/ec-keyEncipherment.test -- pki/testdata/verify_certificate_chain_unittest/target-serverauth-various-keyusages/rsa-decipherOnly.pem -- pki/testdata/verify_certificate_chain_unittest/target-serverauth-various-keyusages/rsa-decipherOnly.test -- pki/testdata/verify_certificate_chain_unittest/target-serverauth-various-keyusages/rsa-digitalSignature.pem -- pki/testdata/verify_certificate_chain_unittest/target-serverauth-various-keyusages/rsa-digitalSignature.test -- pki/testdata/verify_certificate_chain_unittest/target-serverauth-various-keyusages/rsa-keyAgreement.pem -- pki/testdata/verify_certificate_chain_unittest/target-serverauth-various-keyusages/rsa-keyAgreement.test -- pki/testdata/verify_certificate_chain_unittest/target-serverauth-various-keyusages/rsa-keyEncipherment.pem -- pki/testdata/verify_certificate_chain_unittest/target-serverauth-various-keyusages/rsa-keyEncipherment.test -- pki/testdata/verify_certificate_chain_unittest/target-signed-by-512bit-rsa/chain.pem -- pki/testdata/verify_certificate_chain_unittest/target-signed-by-512bit-rsa/main.test -- pki/testdata/verify_certificate_chain_unittest/target-signed-using-ecdsa/chain.pem -- pki/testdata/verify_certificate_chain_unittest/target-signed-using-ecdsa/main.test -- pki/testdata/verify_certificate_chain_unittest/target-signed-with-sha1/chain.pem -- pki/testdata/verify_certificate_chain_unittest/target-signed-with-sha1/main.test -- pki/testdata/verify_certificate_chain_unittest/target-unknown-critical-extension/chain.pem -- pki/testdata/verify_certificate_chain_unittest/target-unknown-critical-extension/main.test -- pki/testdata/verify_certificate_chain_unittest/target-unknown-critical-extension/target_only-trusted_leaf.test -- pki/testdata/verify_certificate_chain_unittest/target-unknown-critical-extension/target_only.pem -- pki/testdata/verify_certificate_chain_unittest/target-wrong-signature-no-authority-key-identifier/chain.pem -- pki/testdata/verify_certificate_chain_unittest/target-wrong-signature-no-authority-key-identifier/main.test -- pki/testdata/verify_certificate_chain_unittest/target-wrong-signature/chain.pem -- pki/testdata/verify_certificate_chain_unittest/target-wrong-signature/main.test -- pki/testdata/verify_certificate_chain_unittest/unknown-critical-policy-qualifier/chain.pem -- pki/testdata/verify_certificate_chain_unittest/unknown-critical-policy-qualifier/main.test -- pki/testdata/verify_certificate_chain_unittest/unknown-non-critical-policy-qualifier/chain.pem -- pki/testdata/verify_certificate_chain_unittest/unknown-non-critical-policy-qualifier/main.test -- pki/testdata/verify_certificate_chain_unittest/violates-basic-constraints-pathlen-0/chain.pem -- pki/testdata/verify_certificate_chain_unittest/violates-basic-constraints-pathlen-0/main.test -- pki/testdata/verify_certificate_chain_unittest/violates-pathlen-1-from-root/chain.pem -- pki/testdata/verify_certificate_chain_unittest/violates-pathlen-1-from-root/main.test -- pki/testdata/verify_certificate_chain_unittest/violates-pathlen-1-from-root/ta-with-constraints.test -- pki/testdata/verify_name_match_unittest/names/ascii-BMPSTRING-case_swap-dupe_attr.pem -- pki/testdata/verify_name_match_unittest/names/ascii-BMPSTRING-case_swap-extra_attr.pem -- pki/testdata/verify_name_match_unittest/names/ascii-BMPSTRING-case_swap-extra_rdn.pem -- pki/testdata/verify_name_match_unittest/names/ascii-BMPSTRING-case_swap.pem -- pki/testdata/verify_name_match_unittest/names/ascii-BMPSTRING-extra_whitespace-dupe_attr.pem -- pki/testdata/verify_name_match_unittest/names/ascii-BMPSTRING-extra_whitespace-extra_attr.pem -- pki/testdata/verify_name_match_unittest/names/ascii-BMPSTRING-extra_whitespace-extra_rdn.pem -- pki/testdata/verify_name_match_unittest/names/ascii-BMPSTRING-extra_whitespace.pem -- pki/testdata/verify_name_match_unittest/names/ascii-BMPSTRING-unmangled-dupe_attr.pem -- pki/testdata/verify_name_match_unittest/names/ascii-BMPSTRING-unmangled-extra_attr.pem -- pki/testdata/verify_name_match_unittest/names/ascii-BMPSTRING-unmangled-extra_rdn.pem -- pki/testdata/verify_name_match_unittest/names/ascii-BMPSTRING-unmangled.pem -- pki/testdata/verify_name_match_unittest/names/ascii-PRINTABLESTRING-case_swap-dupe_attr.pem -- pki/testdata/verify_name_match_unittest/names/ascii-PRINTABLESTRING-case_swap-extra_attr.pem -- pki/testdata/verify_name_match_unittest/names/ascii-PRINTABLESTRING-case_swap-extra_rdn.pem -- pki/testdata/verify_name_match_unittest/names/ascii-PRINTABLESTRING-case_swap.pem -- pki/testdata/verify_name_match_unittest/names/ascii-PRINTABLESTRING-extra_whitespace-dupe_attr.pem -- pki/testdata/verify_name_match_unittest/names/ascii-PRINTABLESTRING-extra_whitespace-extra_attr.pem -- pki/testdata/verify_name_match_unittest/names/ascii-PRINTABLESTRING-extra_whitespace-extra_rdn.pem -- pki/testdata/verify_name_match_unittest/names/ascii-PRINTABLESTRING-extra_whitespace.pem -- pki/testdata/verify_name_match_unittest/names/ascii-PRINTABLESTRING-rdn_sorting_1.pem -- pki/testdata/verify_name_match_unittest/names/ascii-PRINTABLESTRING-rdn_sorting_2.pem -- pki/testdata/verify_name_match_unittest/names/ascii-PRINTABLESTRING-unmangled-dupe_attr.pem -- pki/testdata/verify_name_match_unittest/names/ascii-PRINTABLESTRING-unmangled-extra_attr.pem -- pki/testdata/verify_name_match_unittest/names/ascii-PRINTABLESTRING-unmangled-extra_rdn.pem -- pki/testdata/verify_name_match_unittest/names/ascii-PRINTABLESTRING-unmangled.pem -- pki/testdata/verify_name_match_unittest/names/ascii-T61STRING-case_swap-dupe_attr.pem -- pki/testdata/verify_name_match_unittest/names/ascii-T61STRING-case_swap-extra_attr.pem -- pki/testdata/verify_name_match_unittest/names/ascii-T61STRING-case_swap-extra_rdn.pem -- pki/testdata/verify_name_match_unittest/names/ascii-T61STRING-case_swap.pem -- pki/testdata/verify_name_match_unittest/names/ascii-T61STRING-extra_whitespace-dupe_attr.pem -- pki/testdata/verify_name_match_unittest/names/ascii-T61STRING-extra_whitespace-extra_attr.pem -- pki/testdata/verify_name_match_unittest/names/ascii-T61STRING-extra_whitespace-extra_rdn.pem -- pki/testdata/verify_name_match_unittest/names/ascii-T61STRING-extra_whitespace.pem -- pki/testdata/verify_name_match_unittest/names/ascii-T61STRING-unmangled-dupe_attr.pem -- pki/testdata/verify_name_match_unittest/names/ascii-T61STRING-unmangled-extra_attr.pem -- pki/testdata/verify_name_match_unittest/names/ascii-T61STRING-unmangled-extra_rdn.pem -- pki/testdata/verify_name_match_unittest/names/ascii-T61STRING-unmangled.pem -- pki/testdata/verify_name_match_unittest/names/ascii-UNIVERSALSTRING-case_swap-dupe_attr.pem -- pki/testdata/verify_name_match_unittest/names/ascii-UNIVERSALSTRING-case_swap-extra_attr.pem -- pki/testdata/verify_name_match_unittest/names/ascii-UNIVERSALSTRING-case_swap-extra_rdn.pem -- pki/testdata/verify_name_match_unittest/names/ascii-UNIVERSALSTRING-case_swap.pem -- pki/testdata/verify_name_match_unittest/names/ascii-UNIVERSALSTRING-extra_whitespace-dupe_attr.pem -- pki/testdata/verify_name_match_unittest/names/ascii-UNIVERSALSTRING-extra_whitespace-extra_attr.pem -- pki/testdata/verify_name_match_unittest/names/ascii-UNIVERSALSTRING-extra_whitespace-extra_rdn.pem -- pki/testdata/verify_name_match_unittest/names/ascii-UNIVERSALSTRING-extra_whitespace.pem -- pki/testdata/verify_name_match_unittest/names/ascii-UNIVERSALSTRING-unmangled-dupe_attr.pem -- pki/testdata/verify_name_match_unittest/names/ascii-UNIVERSALSTRING-unmangled-extra_attr.pem -- pki/testdata/verify_name_match_unittest/names/ascii-UNIVERSALSTRING-unmangled-extra_rdn.pem -- pki/testdata/verify_name_match_unittest/names/ascii-UNIVERSALSTRING-unmangled.pem -- pki/testdata/verify_name_match_unittest/names/ascii-UTF8-case_swap-dupe_attr.pem -- pki/testdata/verify_name_match_unittest/names/ascii-UTF8-case_swap-extra_attr.pem -- pki/testdata/verify_name_match_unittest/names/ascii-UTF8-case_swap-extra_rdn.pem -- pki/testdata/verify_name_match_unittest/names/ascii-UTF8-case_swap.pem -- pki/testdata/verify_name_match_unittest/names/ascii-UTF8-extra_whitespace-dupe_attr.pem -- pki/testdata/verify_name_match_unittest/names/ascii-UTF8-extra_whitespace-extra_attr.pem -- pki/testdata/verify_name_match_unittest/names/ascii-UTF8-extra_whitespace-extra_rdn.pem -- pki/testdata/verify_name_match_unittest/names/ascii-UTF8-extra_whitespace.pem -- pki/testdata/verify_name_match_unittest/names/ascii-UTF8-unmangled-dupe_attr.pem -- pki/testdata/verify_name_match_unittest/names/ascii-UTF8-unmangled-extra_attr.pem -- pki/testdata/verify_name_match_unittest/names/ascii-UTF8-unmangled-extra_rdn.pem -- pki/testdata/verify_name_match_unittest/names/ascii-UTF8-unmangled.pem -- pki/testdata/verify_name_match_unittest/names/ascii-mixed-rdn_dupetype_sorting_1.pem -- pki/testdata/verify_name_match_unittest/names/ascii-mixed-rdn_dupetype_sorting_2.pem -- pki/testdata/verify_name_match_unittest/names/custom-custom-normalized.pem -- pki/testdata/verify_name_match_unittest/names/invalid-AttributeTypeAndValue-badAttributeType.pem -- pki/testdata/verify_name_match_unittest/names/invalid-AttributeTypeAndValue-empty.pem -- pki/testdata/verify_name_match_unittest/names/invalid-AttributeTypeAndValue-extradata.pem -- pki/testdata/verify_name_match_unittest/names/invalid-AttributeTypeAndValue-onlyOneElement.pem -- pki/testdata/verify_name_match_unittest/names/invalid-AttributeTypeAndValue-setNotSequence.pem -- pki/testdata/verify_name_match_unittest/names/invalid-Name-setInsteadOfSequence.pem -- pki/testdata/verify_name_match_unittest/names/invalid-RDN-empty.pem -- pki/testdata/verify_name_match_unittest/names/invalid-RDN-sequenceInsteadOfSet.pem -- pki/testdata/verify_name_match_unittest/names/unicode-mixed-normalized.pem -- pki/testdata/verify_name_match_unittest/names/unicode-mixed-unnormalized.pem -- pki/testdata/verify_name_match_unittest/names/unicode_bmp-BMPSTRING-unmangled.pem -- pki/testdata/verify_name_match_unittest/names/unicode_bmp-UNIVERSALSTRING-unmangled.pem -- pki/testdata/verify_name_match_unittest/names/unicode_bmp-UTF8-unmangled.pem -- pki/testdata/verify_name_match_unittest/names/unicode_supplementary-UNIVERSALSTRING-unmangled.pem -- pki/testdata/verify_name_match_unittest/names/unicode_supplementary-UTF8-unmangled.pem -- pki/testdata/verify_name_match_unittest/names/valid-Name-empty.pem -- pki/testdata/verify_name_match_unittest/names/valid-minimal.pem -- pki/testdata/verify_signed_data_unittest/ecdsa-prime256v1-sha512-spki-params-null.pem -- pki/testdata/verify_signed_data_unittest/ecdsa-prime256v1-sha512-unused-bits-signature.pem -- pki/testdata/verify_signed_data_unittest/ecdsa-prime256v1-sha512-using-ecdh-key.pem -- pki/testdata/verify_signed_data_unittest/ecdsa-prime256v1-sha512-using-ecmqv-key.pem -- pki/testdata/verify_signed_data_unittest/ecdsa-prime256v1-sha512-using-rsa-algorithm.pem -- pki/testdata/verify_signed_data_unittest/ecdsa-prime256v1-sha512-wrong-signature-format.pem -- pki/testdata/verify_signed_data_unittest/ecdsa-prime256v1-sha512.pem -- pki/testdata/verify_signed_data_unittest/ecdsa-secp384r1-sha256-corrupted-data.pem -- pki/testdata/verify_signed_data_unittest/ecdsa-secp384r1-sha256.pem -- pki/testdata/verify_signed_data_unittest/ecdsa-using-rsa-key.pem -- pki/testdata/verify_signed_data_unittest/rsa-pkcs1-sha1-bad-key-der-length.pem -- pki/testdata/verify_signed_data_unittest/rsa-pkcs1-sha1-bad-key-der-null.pem -- pki/testdata/verify_signed_data_unittest/rsa-pkcs1-sha1-key-params-absent.pem -- pki/testdata/verify_signed_data_unittest/rsa-pkcs1-sha1-using-pss-key-no-params.pem -- pki/testdata/verify_signed_data_unittest/rsa-pkcs1-sha1-wrong-algorithm.pem -- pki/testdata/verify_signed_data_unittest/rsa-pkcs1-sha1.pem -- pki/testdata/verify_signed_data_unittest/rsa-pkcs1-sha256-key-encoded-ber.pem -- pki/testdata/verify_signed_data_unittest/rsa-pkcs1-sha256-spki-non-null-params.pem -- pki/testdata/verify_signed_data_unittest/rsa-pkcs1-sha256-using-ecdsa-algorithm.pem -- pki/testdata/verify_signed_data_unittest/rsa-pkcs1-sha256-using-id-ea-rsa.pem -- pki/testdata/verify_signed_data_unittest/rsa-pkcs1-sha256.pem -- pki/testdata/verify_signed_data_unittest/rsa-pss-sha256-using-pss-key-with-params.pem -- pki/testdata/verify_signed_data_unittest/rsa-pss-sha256-wrong-salt.pem -- pki/testdata/verify_signed_data_unittest/rsa-pss-sha256.pem -- pki/testdata/verify_signed_data_unittest/rsa-using-ec-key.pem -- pki/testdata/verify_signed_data_unittest/rsa2048-pkcs1-sha512.pem - pki/testdata/verify_unittest/google-intermediate1.der - pki/testdata/verify_unittest/google-intermediate2.der - pki/testdata/verify_unittest/google-leaf.der -@@ -2838,6 +1403,7 @@ set( +@@ -342,6 +344,7 @@ set( + crypto/cpu_arm_freebsd.cc + crypto/cpu_arm_linux.cc + crypto/cpu_intel.cc ++ crypto/cpu_ppc64le.cc + crypto/crypto.cc + crypto/curve25519/curve25519.cc + crypto/curve25519/curve25519_64_adx.cc +@@ -2832,6 +2835,7 @@ set( gen/test_support/trampoline-armv8-apple.S gen/test_support/trampoline-armv8-linux.S gen/test_support/trampoline-armv8-win.S @@ -21363,11 +19913,11 @@ Index: chromium-130.0.6723.44/third_party/boringssl/src/gen/sources.cmake gen/test_support/trampoline-x86-apple.S gen/test_support/trampoline-x86-linux.S gen/test_support/trampoline-x86_64-apple.S -Index: chromium-130.0.6723.44/third_party/boringssl/src/gen/sources.json +Index: chromium-134.0.6998.35/third_party/boringssl/src/gen/sources.json =================================================================== ---- chromium-130.0.6723.44.orig/third_party/boringssl/src/gen/sources.json -+++ chromium-130.0.6723.44/third_party/boringssl/src/gen/sources.json -@@ -84,6 +84,7 @@ +--- chromium-134.0.6998.35.orig/third_party/boringssl/src/gen/sources.json ++++ chromium-134.0.6998.35/third_party/boringssl/src/gen/sources.json +@@ -96,6 +96,7 @@ "gen/bcm/aesni-x86-linux.S", "gen/bcm/aesni-x86_64-apple.S", "gen/bcm/aesni-x86_64-linux.S", @@ -21375,7 +19925,7 @@ Index: chromium-130.0.6723.44/third_party/boringssl/src/gen/sources.json "gen/bcm/aesv8-armv7-linux.S", "gen/bcm/aesv8-armv8-apple.S", "gen/bcm/aesv8-armv8-linux.S", -@@ -115,6 +116,7 @@ +@@ -127,6 +128,7 @@ "gen/bcm/ghash-x86-linux.S", "gen/bcm/ghash-x86_64-apple.S", "gen/bcm/ghash-x86_64-linux.S", @@ -21383,1467 +19933,15 @@ Index: chromium-130.0.6723.44/third_party/boringssl/src/gen/sources.json "gen/bcm/ghashv8-armv7-linux.S", "gen/bcm/ghashv8-armv8-apple.S", "gen/bcm/ghashv8-armv8-linux.S", -@@ -298,6 +300,7 @@ - "crypto/cpu_arm_freebsd.c", - "crypto/cpu_arm_linux.c", - "crypto/cpu_intel.c", -+ "crypto/cpu_ppc64le.c", - "crypto/crypto.c", - "crypto/curve25519/curve25519.c", - "crypto/curve25519/curve25519_64_adx.c", -@@ -759,37 +762,6 @@ - ], - "data": [ - "crypto/blake2/blake2b256_tests.txt", -- "crypto/cipher_extra/test/aes_128_cbc_sha1_tls_implicit_iv_tests.txt", -- "crypto/cipher_extra/test/aes_128_cbc_sha1_tls_tests.txt", -- "crypto/cipher_extra/test/aes_128_ccm_bluetooth_8_tests.txt", -- "crypto/cipher_extra/test/aes_128_ccm_bluetooth_tests.txt", -- "crypto/cipher_extra/test/aes_128_ccm_matter_tests.txt", -- "crypto/cipher_extra/test/aes_128_ctr_hmac_sha256.txt", -- "crypto/cipher_extra/test/aes_128_gcm_randnonce_tests.txt", -- "crypto/cipher_extra/test/aes_128_gcm_siv_tests.txt", -- "crypto/cipher_extra/test/aes_128_gcm_tests.txt", -- "crypto/cipher_extra/test/aes_192_gcm_tests.txt", -- "crypto/cipher_extra/test/aes_256_cbc_sha1_tls_implicit_iv_tests.txt", -- "crypto/cipher_extra/test/aes_256_cbc_sha1_tls_tests.txt", -- "crypto/cipher_extra/test/aes_256_ctr_hmac_sha256.txt", -- "crypto/cipher_extra/test/aes_256_gcm_randnonce_tests.txt", -- "crypto/cipher_extra/test/aes_256_gcm_siv_tests.txt", -- "crypto/cipher_extra/test/aes_256_gcm_tests.txt", -- "crypto/cipher_extra/test/chacha20_poly1305_tests.txt", -- "crypto/cipher_extra/test/cipher_tests.txt", -- "crypto/cipher_extra/test/des_ede3_cbc_sha1_tls_implicit_iv_tests.txt", -- "crypto/cipher_extra/test/des_ede3_cbc_sha1_tls_tests.txt", -- "crypto/cipher_extra/test/nist_cavp/aes_128_cbc.txt", -- "crypto/cipher_extra/test/nist_cavp/aes_128_ctr.txt", -- "crypto/cipher_extra/test/nist_cavp/aes_128_gcm.txt", -- "crypto/cipher_extra/test/nist_cavp/aes_192_cbc.txt", -- "crypto/cipher_extra/test/nist_cavp/aes_192_ctr.txt", -- "crypto/cipher_extra/test/nist_cavp/aes_256_cbc.txt", -- "crypto/cipher_extra/test/nist_cavp/aes_256_ctr.txt", -- "crypto/cipher_extra/test/nist_cavp/aes_256_gcm.txt", -- "crypto/cipher_extra/test/nist_cavp/tdes_cbc.txt", -- "crypto/cipher_extra/test/nist_cavp/tdes_ecb.txt", -- "crypto/cipher_extra/test/xchacha20_poly1305_tests.txt", - "crypto/curve25519/ed25519_tests.txt", - "crypto/dilithium/dilithium_tests.txt", - "crypto/dilithium/edge_cases_draft_dilithium3_sign.txt", -@@ -1216,1413 +1188,6 @@ - "pki/verify_unittest.cc" - ], - "data": [ -- "pki/testdata/cert_issuer_source_static_unittest/c1.pem", -- "pki/testdata/cert_issuer_source_static_unittest/c2.pem", -- "pki/testdata/cert_issuer_source_static_unittest/d.pem", -- "pki/testdata/cert_issuer_source_static_unittest/e1.pem", -- "pki/testdata/cert_issuer_source_static_unittest/e2.pem", -- "pki/testdata/cert_issuer_source_static_unittest/i1_1.pem", -- "pki/testdata/cert_issuer_source_static_unittest/i1_2.pem", -- "pki/testdata/cert_issuer_source_static_unittest/i2.pem", -- "pki/testdata/cert_issuer_source_static_unittest/i3_1.pem", -- "pki/testdata/cert_issuer_source_static_unittest/i3_2.pem", -- "pki/testdata/cert_issuer_source_static_unittest/root.pem", -- "pki/testdata/certificate_policies_unittest/anypolicy.pem", -- "pki/testdata/certificate_policies_unittest/anypolicy_with_qualifier.pem", -- "pki/testdata/certificate_policies_unittest/invalid-anypolicy_with_custom_qualifier.pem", -- "pki/testdata/certificate_policies_unittest/invalid-empty.pem", -- "pki/testdata/certificate_policies_unittest/invalid-policy_1_2_3_dupe.pem", -- "pki/testdata/certificate_policies_unittest/invalid-policy_1_2_3_policyinformation_unconsumed_data.pem", -- "pki/testdata/certificate_policies_unittest/invalid-policy_1_2_3_policyqualifierinfo_unconsumed_data.pem", -- "pki/testdata/certificate_policies_unittest/invalid-policy_1_2_3_with_empty_qualifiers_sequence.pem", -- "pki/testdata/certificate_policies_unittest/invalid-policy_identifier_not_oid.pem", -- "pki/testdata/certificate_policies_unittest/policy_1_2_3.pem", -- "pki/testdata/certificate_policies_unittest/policy_1_2_3_and_1_2_4.pem", -- "pki/testdata/certificate_policies_unittest/policy_1_2_3_and_1_2_4_with_qualifiers.pem", -- "pki/testdata/certificate_policies_unittest/policy_1_2_3_with_custom_qualifier.pem", -- "pki/testdata/certificate_policies_unittest/policy_1_2_3_with_qualifier.pem", -- "pki/testdata/crl_unittest/bad_crldp_has_crlissuer.pem", -- "pki/testdata/crl_unittest/bad_fake_critical_crlentryextension.pem", -- "pki/testdata/crl_unittest/bad_fake_critical_extension.pem", -- "pki/testdata/crl_unittest/bad_idp_contains_wrong_uri.pem", -- "pki/testdata/crl_unittest/bad_idp_indirectcrl.pem", -- "pki/testdata/crl_unittest/bad_idp_onlycontainscacerts.pem", -- "pki/testdata/crl_unittest/bad_idp_onlycontainscacerts_no_basic_constraints.pem", -- "pki/testdata/crl_unittest/bad_idp_onlycontainsusercerts.pem", -- "pki/testdata/crl_unittest/bad_idp_uri_and_onlycontainscacerts.pem", -- "pki/testdata/crl_unittest/bad_idp_uri_and_onlycontainsusercerts.pem", -- "pki/testdata/crl_unittest/bad_key_rollover_signature.pem", -- "pki/testdata/crl_unittest/bad_nextupdate_too_old.pem", -- "pki/testdata/crl_unittest/bad_signature.pem", -- "pki/testdata/crl_unittest/bad_thisupdate_in_future.pem", -- "pki/testdata/crl_unittest/bad_thisupdate_too_old.pem", -- "pki/testdata/crl_unittest/bad_wrong_issuer.pem", -- "pki/testdata/crl_unittest/good.pem", -- "pki/testdata/crl_unittest/good_fake_extension.pem", -- "pki/testdata/crl_unittest/good_fake_extension_no_nextupdate.pem", -- "pki/testdata/crl_unittest/good_generalizedtime.pem", -- "pki/testdata/crl_unittest/good_idp_contains_uri.pem", -- "pki/testdata/crl_unittest/good_idp_onlycontainscacerts.pem", -- "pki/testdata/crl_unittest/good_idp_onlycontainsusercerts.pem", -- "pki/testdata/crl_unittest/good_idp_onlycontainsusercerts_no_basic_constraints.pem", -- "pki/testdata/crl_unittest/good_idp_uri_and_onlycontainscacerts.pem", -- "pki/testdata/crl_unittest/good_idp_uri_and_onlycontainsusercerts.pem", -- "pki/testdata/crl_unittest/good_issuer_name_normalization.pem", -- "pki/testdata/crl_unittest/good_issuer_no_keyusage.pem", -- "pki/testdata/crl_unittest/good_key_rollover.pem", -- "pki/testdata/crl_unittest/good_no_crldp.pem", -- "pki/testdata/crl_unittest/good_no_nextupdate.pem", -- "pki/testdata/crl_unittest/good_no_version.pem", -- "pki/testdata/crl_unittest/invalid_garbage_after_crlentryextensions.pem", -- "pki/testdata/crl_unittest/invalid_garbage_after_extensions.pem", -- "pki/testdata/crl_unittest/invalid_garbage_after_nextupdate.pem", -- "pki/testdata/crl_unittest/invalid_garbage_after_revocationdate.pem", -- "pki/testdata/crl_unittest/invalid_garbage_after_revokedcerts.pem", -- "pki/testdata/crl_unittest/invalid_garbage_after_signaturevalue.pem", -- "pki/testdata/crl_unittest/invalid_garbage_after_thisupdate.pem", -- "pki/testdata/crl_unittest/invalid_garbage_crlentry.pem", -- "pki/testdata/crl_unittest/invalid_garbage_issuer_name.pem", -- "pki/testdata/crl_unittest/invalid_garbage_revocationdate.pem", -- "pki/testdata/crl_unittest/invalid_garbage_revoked_serial_number.pem", -- "pki/testdata/crl_unittest/invalid_garbage_signaturealgorithm.pem", -- "pki/testdata/crl_unittest/invalid_garbage_signaturevalue.pem", -- "pki/testdata/crl_unittest/invalid_garbage_tbs_signature_algorithm.pem", -- "pki/testdata/crl_unittest/invalid_garbage_tbscertlist.pem", -- "pki/testdata/crl_unittest/invalid_garbage_thisupdate.pem", -- "pki/testdata/crl_unittest/invalid_garbage_version.pem", -- "pki/testdata/crl_unittest/invalid_idp_dpname_choice_extra_data.pem", -- "pki/testdata/crl_unittest/invalid_idp_empty_sequence.pem", -- "pki/testdata/crl_unittest/invalid_idp_onlycontains_user_and_ca_certs.pem", -- "pki/testdata/crl_unittest/invalid_idp_onlycontainsusercerts_v1_leaf.pem", -- "pki/testdata/crl_unittest/invalid_issuer_keyusage_no_crlsign.pem", -- "pki/testdata/crl_unittest/invalid_key_rollover_issuer_keyusage_no_crlsign.pem", -- "pki/testdata/crl_unittest/invalid_mismatched_signature_algorithm.pem", -- "pki/testdata/crl_unittest/invalid_revoked_empty_sequence.pem", -- "pki/testdata/crl_unittest/invalid_v1_explicit.pem", -- "pki/testdata/crl_unittest/invalid_v1_with_crlentryextension.pem", -- "pki/testdata/crl_unittest/invalid_v1_with_extension.pem", -- "pki/testdata/crl_unittest/invalid_v3.pem", -- "pki/testdata/crl_unittest/revoked.pem", -- "pki/testdata/crl_unittest/revoked_fake_crlentryextension.pem", -- "pki/testdata/crl_unittest/revoked_generalized_revocationdate.pem", -- "pki/testdata/crl_unittest/revoked_key_rollover.pem", -- "pki/testdata/crl_unittest/revoked_no_nextupdate.pem", -- "pki/testdata/name_constraints_unittest/directoryname-excludeall.pem", -- "pki/testdata/name_constraints_unittest/directoryname-excluded.pem", -- "pki/testdata/name_constraints_unittest/directoryname.pem", -- "pki/testdata/name_constraints_unittest/directoryname_and_dnsname.pem", -- "pki/testdata/name_constraints_unittest/directoryname_and_dnsname_and_ipaddress.pem", -- "pki/testdata/name_constraints_unittest/dnsname-exclude_dot.pem", -- "pki/testdata/name_constraints_unittest/dnsname-excludeall.pem", -- "pki/testdata/name_constraints_unittest/dnsname-excluded.pem", -- "pki/testdata/name_constraints_unittest/dnsname-excluded_with_leading_dot.pem", -- "pki/testdata/name_constraints_unittest/dnsname-permitted_two_dot.pem", -- "pki/testdata/name_constraints_unittest/dnsname-permitted_with_leading_dot.pem", -- "pki/testdata/name_constraints_unittest/dnsname-with_max.pem", -- "pki/testdata/name_constraints_unittest/dnsname-with_min_0.pem", -- "pki/testdata/name_constraints_unittest/dnsname-with_min_0_and_max.pem", -- "pki/testdata/name_constraints_unittest/dnsname-with_min_1.pem", -- "pki/testdata/name_constraints_unittest/dnsname-with_min_1_and_max.pem", -- "pki/testdata/name_constraints_unittest/dnsname.pem", -- "pki/testdata/name_constraints_unittest/dnsname2.pem", -- "pki/testdata/name_constraints_unittest/edipartyname-excluded.pem", -- "pki/testdata/name_constraints_unittest/edipartyname-permitted.pem", -- "pki/testdata/name_constraints_unittest/invalid-empty_excluded_subtree.pem", -- "pki/testdata/name_constraints_unittest/invalid-empty_permitted_subtree.pem", -- "pki/testdata/name_constraints_unittest/invalid-no_subtrees.pem", -- "pki/testdata/name_constraints_unittest/ipaddress-excludeall.pem", -- "pki/testdata/name_constraints_unittest/ipaddress-excluded.pem", -- "pki/testdata/name_constraints_unittest/ipaddress-invalid_addr.pem", -- "pki/testdata/name_constraints_unittest/ipaddress-invalid_mask_not_contiguous_1.pem", -- "pki/testdata/name_constraints_unittest/ipaddress-invalid_mask_not_contiguous_2.pem", -- "pki/testdata/name_constraints_unittest/ipaddress-invalid_mask_not_contiguous_3.pem", -- "pki/testdata/name_constraints_unittest/ipaddress-invalid_mask_not_contiguous_4.pem", -- "pki/testdata/name_constraints_unittest/ipaddress-mapped_addrs.pem", -- "pki/testdata/name_constraints_unittest/ipaddress-permit_all.pem", -- "pki/testdata/name_constraints_unittest/ipaddress-permit_prefix1.pem", -- "pki/testdata/name_constraints_unittest/ipaddress-permit_prefix31.pem", -- "pki/testdata/name_constraints_unittest/ipaddress-permit_singlehost.pem", -- "pki/testdata/name_constraints_unittest/ipaddress.pem", -- "pki/testdata/name_constraints_unittest/name-ca.pem", -- "pki/testdata/name_constraints_unittest/name-de.pem", -- "pki/testdata/name_constraints_unittest/name-empty.pem", -- "pki/testdata/name_constraints_unittest/name-jp-tokyo.pem", -- "pki/testdata/name_constraints_unittest/name-jp.pem", -- "pki/testdata/name_constraints_unittest/name-us-arizona-1.1.1.1.pem", -- "pki/testdata/name_constraints_unittest/name-us-arizona-192.168.1.1.pem", -- "pki/testdata/name_constraints_unittest/name-us-arizona-email-invalidstring.pem", -- "pki/testdata/name_constraints_unittest/name-us-arizona-email-localpartcase.pem", -- "pki/testdata/name_constraints_unittest/name-us-arizona-email-multiple.pem", -- "pki/testdata/name_constraints_unittest/name-us-arizona-email.pem", -- "pki/testdata/name_constraints_unittest/name-us-arizona-foo.com.pem", -- "pki/testdata/name_constraints_unittest/name-us-arizona-ipv6.pem", -- "pki/testdata/name_constraints_unittest/name-us-arizona-permitted.example.com.pem", -- "pki/testdata/name_constraints_unittest/name-us-arizona.pem", -- "pki/testdata/name_constraints_unittest/name-us-california-192.168.1.1.pem", -- "pki/testdata/name_constraints_unittest/name-us-california-mountain_view.pem", -- "pki/testdata/name_constraints_unittest/name-us-california-permitted.example.com.pem", -- "pki/testdata/name_constraints_unittest/name-us-california.pem", -- "pki/testdata/name_constraints_unittest/name-us.pem", -- "pki/testdata/name_constraints_unittest/othername-excluded.pem", -- "pki/testdata/name_constraints_unittest/othername-permitted.pem", -- "pki/testdata/name_constraints_unittest/registeredid-excluded.pem", -- "pki/testdata/name_constraints_unittest/registeredid-permitted.pem", -- "pki/testdata/name_constraints_unittest/rfc822name-excluded-empty.pem", -- "pki/testdata/name_constraints_unittest/rfc822name-excluded-hostname.pem", -- "pki/testdata/name_constraints_unittest/rfc822name-excluded-hostnamewithat.pem", -- "pki/testdata/name_constraints_unittest/rfc822name-excluded-ipv4.pem", -- "pki/testdata/name_constraints_unittest/rfc822name-excluded-quoted.pem", -- "pki/testdata/name_constraints_unittest/rfc822name-excluded-subdomains.pem", -- "pki/testdata/name_constraints_unittest/rfc822name-excluded.pem", -- "pki/testdata/name_constraints_unittest/rfc822name-permitted-empty.pem", -- "pki/testdata/name_constraints_unittest/rfc822name-permitted-hostname.pem", -- "pki/testdata/name_constraints_unittest/rfc822name-permitted-hostnamewithat.pem", -- "pki/testdata/name_constraints_unittest/rfc822name-permitted-ipv4.pem", -- "pki/testdata/name_constraints_unittest/rfc822name-permitted-quoted.pem", -- "pki/testdata/name_constraints_unittest/rfc822name-permitted-subdomains.pem", -- "pki/testdata/name_constraints_unittest/rfc822name-permitted.pem", -- "pki/testdata/name_constraints_unittest/san-directoryname.pem", -- "pki/testdata/name_constraints_unittest/san-dnsname.pem", -- "pki/testdata/name_constraints_unittest/san-edipartyname.pem", -- "pki/testdata/name_constraints_unittest/san-excluded-directoryname.pem", -- "pki/testdata/name_constraints_unittest/san-excluded-dnsname.pem", -- "pki/testdata/name_constraints_unittest/san-excluded-ipaddress.pem", -- "pki/testdata/name_constraints_unittest/san-invalid-empty.pem", -- "pki/testdata/name_constraints_unittest/san-invalid-ipaddress.pem", -- "pki/testdata/name_constraints_unittest/san-ipaddress4.pem", -- "pki/testdata/name_constraints_unittest/san-ipaddress6.pem", -- "pki/testdata/name_constraints_unittest/san-othername.pem", -- "pki/testdata/name_constraints_unittest/san-permitted.pem", -- "pki/testdata/name_constraints_unittest/san-registeredid.pem", -- "pki/testdata/name_constraints_unittest/san-rfc822name-domaincase.pem", -- "pki/testdata/name_constraints_unittest/san-rfc822name-empty-localpart.pem", -- "pki/testdata/name_constraints_unittest/san-rfc822name-empty.pem", -- "pki/testdata/name_constraints_unittest/san-rfc822name-ipv4.pem", -- "pki/testdata/name_constraints_unittest/san-rfc822name-localpartcase.pem", -- "pki/testdata/name_constraints_unittest/san-rfc822name-multiple.pem", -- "pki/testdata/name_constraints_unittest/san-rfc822name-no-at.pem", -- "pki/testdata/name_constraints_unittest/san-rfc822name-quoted.pem", -- "pki/testdata/name_constraints_unittest/san-rfc822name-subdomain-no-at.pem", -- "pki/testdata/name_constraints_unittest/san-rfc822name-subdomain-two-ats.pem", -- "pki/testdata/name_constraints_unittest/san-rfc822name-subdomain.pem", -- "pki/testdata/name_constraints_unittest/san-rfc822name-subdomaincase.pem", -- "pki/testdata/name_constraints_unittest/san-rfc822name-two-ats.pem", -- "pki/testdata/name_constraints_unittest/san-rfc822name.pem", -- "pki/testdata/name_constraints_unittest/san-uri.pem", -- "pki/testdata/name_constraints_unittest/san-x400address.pem", -- "pki/testdata/name_constraints_unittest/uri-excluded.pem", -- "pki/testdata/name_constraints_unittest/uri-permitted.pem", -- "pki/testdata/name_constraints_unittest/x400address-excluded.pem", -- "pki/testdata/name_constraints_unittest/x400address-permitted.pem", -- "pki/testdata/nist-pkits/certs/AllCertificatesNoPoliciesTest2EE.crt", -- "pki/testdata/nist-pkits/certs/AllCertificatesSamePoliciesTest10EE.crt", -- "pki/testdata/nist-pkits/certs/AllCertificatesSamePoliciesTest13EE.crt", -- "pki/testdata/nist-pkits/certs/AllCertificatesanyPolicyTest11EE.crt", -- "pki/testdata/nist-pkits/certs/AnyPolicyTest14EE.crt", -- "pki/testdata/nist-pkits/certs/BadCRLIssuerNameCACert.crt", -- "pki/testdata/nist-pkits/certs/BadCRLSignatureCACert.crt", -- "pki/testdata/nist-pkits/certs/BadSignedCACert.crt", -- "pki/testdata/nist-pkits/certs/BadnotAfterDateCACert.crt", -- "pki/testdata/nist-pkits/certs/BadnotBeforeDateCACert.crt", -- "pki/testdata/nist-pkits/certs/BasicSelfIssuedCRLSigningKeyCACert.crt", -- "pki/testdata/nist-pkits/certs/BasicSelfIssuedCRLSigningKeyCRLCert.crt", -- "pki/testdata/nist-pkits/certs/BasicSelfIssuedNewKeyCACert.crt", -- "pki/testdata/nist-pkits/certs/BasicSelfIssuedNewKeyOldWithNewCACert.crt", -- "pki/testdata/nist-pkits/certs/BasicSelfIssuedOldKeyCACert.crt", -- "pki/testdata/nist-pkits/certs/BasicSelfIssuedOldKeyNewWithOldCACert.crt", -- "pki/testdata/nist-pkits/certs/CPSPointerQualifierTest20EE.crt", -- "pki/testdata/nist-pkits/certs/DSACACert.crt", -- "pki/testdata/nist-pkits/certs/DSAParametersInheritedCACert.crt", -- "pki/testdata/nist-pkits/certs/DifferentPoliciesTest12EE.crt", -- "pki/testdata/nist-pkits/certs/DifferentPoliciesTest3EE.crt", -- "pki/testdata/nist-pkits/certs/DifferentPoliciesTest4EE.crt", -- "pki/testdata/nist-pkits/certs/DifferentPoliciesTest5EE.crt", -- "pki/testdata/nist-pkits/certs/DifferentPoliciesTest7EE.crt", -- "pki/testdata/nist-pkits/certs/DifferentPoliciesTest8EE.crt", -- "pki/testdata/nist-pkits/certs/DifferentPoliciesTest9EE.crt", -- "pki/testdata/nist-pkits/certs/GeneralizedTimeCRLnextUpdateCACert.crt", -- "pki/testdata/nist-pkits/certs/GoodCACert.crt", -- "pki/testdata/nist-pkits/certs/GoodsubCACert.crt", -- "pki/testdata/nist-pkits/certs/GoodsubCAPanyPolicyMapping1to2CACert.crt", -- "pki/testdata/nist-pkits/certs/InvalidBadCRLIssuerNameTest5EE.crt", -- "pki/testdata/nist-pkits/certs/InvalidBadCRLSignatureTest4EE.crt", -- "pki/testdata/nist-pkits/certs/InvalidBasicSelfIssuedCRLSigningKeyTest7EE.crt", -- "pki/testdata/nist-pkits/certs/InvalidBasicSelfIssuedCRLSigningKeyTest8EE.crt", -- "pki/testdata/nist-pkits/certs/InvalidBasicSelfIssuedNewWithOldTest5EE.crt", -- "pki/testdata/nist-pkits/certs/InvalidBasicSelfIssuedOldWithNewTest2EE.crt", -- "pki/testdata/nist-pkits/certs/InvalidCASignatureTest2EE.crt", -- "pki/testdata/nist-pkits/certs/InvalidCAnotAfterDateTest5EE.crt", -- "pki/testdata/nist-pkits/certs/InvalidCAnotBeforeDateTest1EE.crt", -- "pki/testdata/nist-pkits/certs/InvalidDNSnameConstraintsTest31EE.crt", -- "pki/testdata/nist-pkits/certs/InvalidDNSnameConstraintsTest33EE.crt", -- "pki/testdata/nist-pkits/certs/InvalidDNSnameConstraintsTest38EE.crt", -- "pki/testdata/nist-pkits/certs/InvalidDNandRFC822nameConstraintsTest28EE.crt", -- "pki/testdata/nist-pkits/certs/InvalidDNandRFC822nameConstraintsTest29EE.crt", -- "pki/testdata/nist-pkits/certs/InvalidDNnameConstraintsTest10EE.crt", -- "pki/testdata/nist-pkits/certs/InvalidDNnameConstraintsTest12EE.crt", -- "pki/testdata/nist-pkits/certs/InvalidDNnameConstraintsTest13EE.crt", -- "pki/testdata/nist-pkits/certs/InvalidDNnameConstraintsTest15EE.crt", -- "pki/testdata/nist-pkits/certs/InvalidDNnameConstraintsTest16EE.crt", -- "pki/testdata/nist-pkits/certs/InvalidDNnameConstraintsTest17EE.crt", -- "pki/testdata/nist-pkits/certs/InvalidDNnameConstraintsTest20EE.crt", -- "pki/testdata/nist-pkits/certs/InvalidDNnameConstraintsTest2EE.crt", -- "pki/testdata/nist-pkits/certs/InvalidDNnameConstraintsTest3EE.crt", -- "pki/testdata/nist-pkits/certs/InvalidDNnameConstraintsTest7EE.crt", -- "pki/testdata/nist-pkits/certs/InvalidDNnameConstraintsTest8EE.crt", -- "pki/testdata/nist-pkits/certs/InvalidDNnameConstraintsTest9EE.crt", -- "pki/testdata/nist-pkits/certs/InvalidDSASignatureTest6EE.crt", -- "pki/testdata/nist-pkits/certs/InvalidEESignatureTest3EE.crt", -- "pki/testdata/nist-pkits/certs/InvalidEEnotAfterDateTest6EE.crt", -- "pki/testdata/nist-pkits/certs/InvalidEEnotBeforeDateTest2EE.crt", -- "pki/testdata/nist-pkits/certs/InvalidIDPwithindirectCRLTest23EE.crt", -- "pki/testdata/nist-pkits/certs/InvalidIDPwithindirectCRLTest26EE.crt", -- "pki/testdata/nist-pkits/certs/InvalidLongSerialNumberTest18EE.crt", -- "pki/testdata/nist-pkits/certs/InvalidMappingFromanyPolicyTest7EE.crt", -- "pki/testdata/nist-pkits/certs/InvalidMappingToanyPolicyTest8EE.crt", -- "pki/testdata/nist-pkits/certs/InvalidMissingCRLTest1EE.crt", -- "pki/testdata/nist-pkits/certs/InvalidMissingbasicConstraintsTest1EE.crt", -- "pki/testdata/nist-pkits/certs/InvalidNameChainingOrderTest2EE.crt", -- "pki/testdata/nist-pkits/certs/InvalidNameChainingTest1EE.crt", -- "pki/testdata/nist-pkits/certs/InvalidNegativeSerialNumberTest15EE.crt", -- "pki/testdata/nist-pkits/certs/InvalidOldCRLnextUpdateTest11EE.crt", -- "pki/testdata/nist-pkits/certs/InvalidPolicyMappingTest10EE.crt", -- "pki/testdata/nist-pkits/certs/InvalidPolicyMappingTest2EE.crt", -- "pki/testdata/nist-pkits/certs/InvalidPolicyMappingTest4EE.crt", -- "pki/testdata/nist-pkits/certs/InvalidRFC822nameConstraintsTest22EE.crt", -- "pki/testdata/nist-pkits/certs/InvalidRFC822nameConstraintsTest24EE.crt", -- "pki/testdata/nist-pkits/certs/InvalidRFC822nameConstraintsTest26EE.crt", -- "pki/testdata/nist-pkits/certs/InvalidRevokedCATest2EE.crt", -- "pki/testdata/nist-pkits/certs/InvalidRevokedEETest3EE.crt", -- "pki/testdata/nist-pkits/certs/InvalidSelfIssuedinhibitAnyPolicyTest10EE.crt", -- "pki/testdata/nist-pkits/certs/InvalidSelfIssuedinhibitAnyPolicyTest8EE.crt", -- "pki/testdata/nist-pkits/certs/InvalidSelfIssuedinhibitPolicyMappingTest10EE.crt", -- "pki/testdata/nist-pkits/certs/InvalidSelfIssuedinhibitPolicyMappingTest11EE.crt", -- "pki/testdata/nist-pkits/certs/InvalidSelfIssuedinhibitPolicyMappingTest8EE.crt", -- "pki/testdata/nist-pkits/certs/InvalidSelfIssuedinhibitPolicyMappingTest9EE.crt", -- "pki/testdata/nist-pkits/certs/InvalidSelfIssuedpathLenConstraintTest16EE.crt", -- "pki/testdata/nist-pkits/certs/InvalidSelfIssuedrequireExplicitPolicyTest7EE.crt", -- "pki/testdata/nist-pkits/certs/InvalidSelfIssuedrequireExplicitPolicyTest8EE.crt", -- "pki/testdata/nist-pkits/certs/InvalidSeparateCertificateandCRLKeysTest20EE.crt", -- "pki/testdata/nist-pkits/certs/InvalidSeparateCertificateandCRLKeysTest21EE.crt", -- "pki/testdata/nist-pkits/certs/InvalidURInameConstraintsTest35EE.crt", -- "pki/testdata/nist-pkits/certs/InvalidURInameConstraintsTest37EE.crt", -- "pki/testdata/nist-pkits/certs/InvalidUnknownCRLEntryExtensionTest8EE.crt", -- "pki/testdata/nist-pkits/certs/InvalidUnknownCRLExtensionTest10EE.crt", -- "pki/testdata/nist-pkits/certs/InvalidUnknownCRLExtensionTest9EE.crt", -- "pki/testdata/nist-pkits/certs/InvalidUnknownCriticalCertificateExtensionTest2EE.crt", -- "pki/testdata/nist-pkits/certs/InvalidWrongCRLTest6EE.crt", -- "pki/testdata/nist-pkits/certs/InvalidcAFalseTest2EE.crt", -- "pki/testdata/nist-pkits/certs/InvalidcAFalseTest3EE.crt", -- "pki/testdata/nist-pkits/certs/InvalidcRLIssuerTest27EE.crt", -- "pki/testdata/nist-pkits/certs/InvalidcRLIssuerTest31EE.crt", -- "pki/testdata/nist-pkits/certs/InvalidcRLIssuerTest32EE.crt", -- "pki/testdata/nist-pkits/certs/InvalidcRLIssuerTest34EE.crt", -- "pki/testdata/nist-pkits/certs/InvalidcRLIssuerTest35EE.crt", -- "pki/testdata/nist-pkits/certs/InvaliddeltaCRLIndicatorNoBaseTest1EE.crt", -- "pki/testdata/nist-pkits/certs/InvaliddeltaCRLTest10EE.crt", -- "pki/testdata/nist-pkits/certs/InvaliddeltaCRLTest3EE.crt", -- "pki/testdata/nist-pkits/certs/InvaliddeltaCRLTest4EE.crt", -- "pki/testdata/nist-pkits/certs/InvaliddeltaCRLTest6EE.crt", -- "pki/testdata/nist-pkits/certs/InvaliddeltaCRLTest9EE.crt", -- "pki/testdata/nist-pkits/certs/InvaliddistributionPointTest2EE.crt", -- "pki/testdata/nist-pkits/certs/InvaliddistributionPointTest3EE.crt", -- "pki/testdata/nist-pkits/certs/InvaliddistributionPointTest6EE.crt", -- "pki/testdata/nist-pkits/certs/InvaliddistributionPointTest8EE.crt", -- "pki/testdata/nist-pkits/certs/InvaliddistributionPointTest9EE.crt", -- "pki/testdata/nist-pkits/certs/InvalidinhibitAnyPolicyTest1EE.crt", -- "pki/testdata/nist-pkits/certs/InvalidinhibitAnyPolicyTest4EE.crt", -- "pki/testdata/nist-pkits/certs/InvalidinhibitAnyPolicyTest5EE.crt", -- "pki/testdata/nist-pkits/certs/InvalidinhibitAnyPolicyTest6EE.crt", -- "pki/testdata/nist-pkits/certs/InvalidinhibitPolicyMappingTest1EE.crt", -- "pki/testdata/nist-pkits/certs/InvalidinhibitPolicyMappingTest3EE.crt", -- "pki/testdata/nist-pkits/certs/InvalidinhibitPolicyMappingTest5EE.crt", -- "pki/testdata/nist-pkits/certs/InvalidinhibitPolicyMappingTest6EE.crt", -- "pki/testdata/nist-pkits/certs/InvalidkeyUsageCriticalcRLSignFalseTest4EE.crt", -- "pki/testdata/nist-pkits/certs/InvalidkeyUsageCriticalkeyCertSignFalseTest1EE.crt", -- "pki/testdata/nist-pkits/certs/InvalidkeyUsageNotCriticalcRLSignFalseTest5EE.crt", -- "pki/testdata/nist-pkits/certs/InvalidkeyUsageNotCriticalkeyCertSignFalseTest2EE.crt", -- "pki/testdata/nist-pkits/certs/InvalidonlyContainsAttributeCertsTest14EE.crt", -- "pki/testdata/nist-pkits/certs/InvalidonlyContainsCACertsTest12EE.crt", -- "pki/testdata/nist-pkits/certs/InvalidonlyContainsUserCertsTest11EE.crt", -- "pki/testdata/nist-pkits/certs/InvalidonlySomeReasonsTest15EE.crt", -- "pki/testdata/nist-pkits/certs/InvalidonlySomeReasonsTest16EE.crt", -- "pki/testdata/nist-pkits/certs/InvalidonlySomeReasonsTest17EE.crt", -- "pki/testdata/nist-pkits/certs/InvalidonlySomeReasonsTest20EE.crt", -- "pki/testdata/nist-pkits/certs/InvalidonlySomeReasonsTest21EE.crt", -- "pki/testdata/nist-pkits/certs/InvalidpathLenConstraintTest10EE.crt", -- "pki/testdata/nist-pkits/certs/InvalidpathLenConstraintTest11EE.crt", -- "pki/testdata/nist-pkits/certs/InvalidpathLenConstraintTest12EE.crt", -- "pki/testdata/nist-pkits/certs/InvalidpathLenConstraintTest5EE.crt", -- "pki/testdata/nist-pkits/certs/InvalidpathLenConstraintTest6EE.crt", -- "pki/testdata/nist-pkits/certs/InvalidpathLenConstraintTest9EE.crt", -- "pki/testdata/nist-pkits/certs/Invalidpre2000CRLnextUpdateTest12EE.crt", -- "pki/testdata/nist-pkits/certs/Invalidpre2000UTCEEnotAfterDateTest7EE.crt", -- "pki/testdata/nist-pkits/certs/InvalidrequireExplicitPolicyTest3EE.crt", -- "pki/testdata/nist-pkits/certs/InvalidrequireExplicitPolicyTest5EE.crt", -- "pki/testdata/nist-pkits/certs/LongSerialNumberCACert.crt", -- "pki/testdata/nist-pkits/certs/Mapping1to2CACert.crt", -- "pki/testdata/nist-pkits/certs/MappingFromanyPolicyCACert.crt", -- "pki/testdata/nist-pkits/certs/MappingToanyPolicyCACert.crt", -- "pki/testdata/nist-pkits/certs/MissingbasicConstraintsCACert.crt", -- "pki/testdata/nist-pkits/certs/NameOrderingCACert.crt", -- "pki/testdata/nist-pkits/certs/NegativeSerialNumberCACert.crt", -- "pki/testdata/nist-pkits/certs/NoCRLCACert.crt", -- "pki/testdata/nist-pkits/certs/NoPoliciesCACert.crt", -- "pki/testdata/nist-pkits/certs/NoissuingDistributionPointCACert.crt", -- "pki/testdata/nist-pkits/certs/OldCRLnextUpdateCACert.crt", -- "pki/testdata/nist-pkits/certs/OverlappingPoliciesTest6EE.crt", -- "pki/testdata/nist-pkits/certs/P12Mapping1to3CACert.crt", -- "pki/testdata/nist-pkits/certs/P12Mapping1to3subCACert.crt", -- "pki/testdata/nist-pkits/certs/P12Mapping1to3subsubCACert.crt", -- "pki/testdata/nist-pkits/certs/P1Mapping1to234CACert.crt", -- "pki/testdata/nist-pkits/certs/P1Mapping1to234subCACert.crt", -- "pki/testdata/nist-pkits/certs/P1anyPolicyMapping1to2CACert.crt", -- "pki/testdata/nist-pkits/certs/PanyPolicyMapping1to2CACert.crt", -- "pki/testdata/nist-pkits/certs/PoliciesP1234CACert.crt", -- "pki/testdata/nist-pkits/certs/PoliciesP1234subCAP123Cert.crt", -- "pki/testdata/nist-pkits/certs/PoliciesP1234subsubCAP123P12Cert.crt", -- "pki/testdata/nist-pkits/certs/PoliciesP123CACert.crt", -- "pki/testdata/nist-pkits/certs/PoliciesP123subCAP12Cert.crt", -- "pki/testdata/nist-pkits/certs/PoliciesP123subsubCAP12P1Cert.crt", -- "pki/testdata/nist-pkits/certs/PoliciesP123subsubCAP12P2Cert.crt", -- "pki/testdata/nist-pkits/certs/PoliciesP123subsubsubCAP12P2P1Cert.crt", -- "pki/testdata/nist-pkits/certs/PoliciesP12CACert.crt", -- "pki/testdata/nist-pkits/certs/PoliciesP12subCAP1Cert.crt", -- "pki/testdata/nist-pkits/certs/PoliciesP12subsubCAP1P2Cert.crt", -- "pki/testdata/nist-pkits/certs/PoliciesP2subCA2Cert.crt", -- "pki/testdata/nist-pkits/certs/PoliciesP2subCACert.crt", -- "pki/testdata/nist-pkits/certs/PoliciesP3CACert.crt", -- "pki/testdata/nist-pkits/certs/RFC3280MandatoryAttributeTypesCACert.crt", -- "pki/testdata/nist-pkits/certs/RFC3280OptionalAttributeTypesCACert.crt", -- "pki/testdata/nist-pkits/certs/RevokedsubCACert.crt", -- "pki/testdata/nist-pkits/certs/RolloverfromPrintableStringtoUTF8StringCACert.crt", -- "pki/testdata/nist-pkits/certs/SeparateCertificateandCRLKeysCA2CRLSigningCert.crt", -- "pki/testdata/nist-pkits/certs/SeparateCertificateandCRLKeysCA2CertificateSigningCACert.crt", -- "pki/testdata/nist-pkits/certs/SeparateCertificateandCRLKeysCRLSigningCert.crt", -- "pki/testdata/nist-pkits/certs/SeparateCertificateandCRLKeysCertificateSigningCACert.crt", -- "pki/testdata/nist-pkits/certs/TrustAnchorRootCertificate.crt", -- "pki/testdata/nist-pkits/certs/TwoCRLsCACert.crt", -- "pki/testdata/nist-pkits/certs/UIDCACert.crt", -- "pki/testdata/nist-pkits/certs/UTF8StringCaseInsensitiveMatchCACert.crt", -- "pki/testdata/nist-pkits/certs/UTF8StringEncodedNamesCACert.crt", -- "pki/testdata/nist-pkits/certs/UnknownCRLEntryExtensionCACert.crt", -- "pki/testdata/nist-pkits/certs/UnknownCRLExtensionCACert.crt", -- "pki/testdata/nist-pkits/certs/UserNoticeQualifierTest15EE.crt", -- "pki/testdata/nist-pkits/certs/UserNoticeQualifierTest16EE.crt", -- "pki/testdata/nist-pkits/certs/UserNoticeQualifierTest17EE.crt", -- "pki/testdata/nist-pkits/certs/UserNoticeQualifierTest18EE.crt", -- "pki/testdata/nist-pkits/certs/UserNoticeQualifierTest19EE.crt", -- "pki/testdata/nist-pkits/certs/ValidBasicSelfIssuedCRLSigningKeyTest6EE.crt", -- "pki/testdata/nist-pkits/certs/ValidBasicSelfIssuedNewWithOldTest3EE.crt", -- "pki/testdata/nist-pkits/certs/ValidBasicSelfIssuedNewWithOldTest4EE.crt", -- "pki/testdata/nist-pkits/certs/ValidBasicSelfIssuedOldWithNewTest1EE.crt", -- "pki/testdata/nist-pkits/certs/ValidCertificatePathTest1EE.crt", -- "pki/testdata/nist-pkits/certs/ValidDNSnameConstraintsTest30EE.crt", -- "pki/testdata/nist-pkits/certs/ValidDNSnameConstraintsTest32EE.crt", -- "pki/testdata/nist-pkits/certs/ValidDNandRFC822nameConstraintsTest27EE.crt", -- "pki/testdata/nist-pkits/certs/ValidDNnameConstraintsTest11EE.crt", -- "pki/testdata/nist-pkits/certs/ValidDNnameConstraintsTest14EE.crt", -- "pki/testdata/nist-pkits/certs/ValidDNnameConstraintsTest18EE.crt", -- "pki/testdata/nist-pkits/certs/ValidDNnameConstraintsTest19EE.crt", -- "pki/testdata/nist-pkits/certs/ValidDNnameConstraintsTest1EE.crt", -- "pki/testdata/nist-pkits/certs/ValidDNnameConstraintsTest4EE.crt", -- "pki/testdata/nist-pkits/certs/ValidDNnameConstraintsTest5EE.crt", -- "pki/testdata/nist-pkits/certs/ValidDNnameConstraintsTest6EE.crt", -- "pki/testdata/nist-pkits/certs/ValidDSAParameterInheritanceTest5EE.crt", -- "pki/testdata/nist-pkits/certs/ValidDSASignaturesTest4EE.crt", -- "pki/testdata/nist-pkits/certs/ValidGeneralizedTimeCRLnextUpdateTest13EE.crt", -- "pki/testdata/nist-pkits/certs/ValidGeneralizedTimenotAfterDateTest8EE.crt", -- "pki/testdata/nist-pkits/certs/ValidGeneralizedTimenotBeforeDateTest4EE.crt", -- "pki/testdata/nist-pkits/certs/ValidIDPwithindirectCRLTest22EE.crt", -- "pki/testdata/nist-pkits/certs/ValidIDPwithindirectCRLTest24EE.crt", -- "pki/testdata/nist-pkits/certs/ValidIDPwithindirectCRLTest25EE.crt", -- "pki/testdata/nist-pkits/certs/ValidLongSerialNumberTest16EE.crt", -- "pki/testdata/nist-pkits/certs/ValidLongSerialNumberTest17EE.crt", -- "pki/testdata/nist-pkits/certs/ValidNameChainingCapitalizationTest5EE.crt", -- "pki/testdata/nist-pkits/certs/ValidNameChainingWhitespaceTest3EE.crt", -- "pki/testdata/nist-pkits/certs/ValidNameChainingWhitespaceTest4EE.crt", -- "pki/testdata/nist-pkits/certs/ValidNameUIDsTest6EE.crt", -- "pki/testdata/nist-pkits/certs/ValidNegativeSerialNumberTest14EE.crt", -- "pki/testdata/nist-pkits/certs/ValidNoissuingDistributionPointTest10EE.crt", -- "pki/testdata/nist-pkits/certs/ValidPolicyMappingTest11EE.crt", -- "pki/testdata/nist-pkits/certs/ValidPolicyMappingTest12EE.crt", -- "pki/testdata/nist-pkits/certs/ValidPolicyMappingTest13EE.crt", -- "pki/testdata/nist-pkits/certs/ValidPolicyMappingTest14EE.crt", -- "pki/testdata/nist-pkits/certs/ValidPolicyMappingTest1EE.crt", -- "pki/testdata/nist-pkits/certs/ValidPolicyMappingTest3EE.crt", -- "pki/testdata/nist-pkits/certs/ValidPolicyMappingTest5EE.crt", -- "pki/testdata/nist-pkits/certs/ValidPolicyMappingTest6EE.crt", -- "pki/testdata/nist-pkits/certs/ValidPolicyMappingTest9EE.crt", -- "pki/testdata/nist-pkits/certs/ValidRFC3280MandatoryAttributeTypesTest7EE.crt", -- "pki/testdata/nist-pkits/certs/ValidRFC3280OptionalAttributeTypesTest8EE.crt", -- "pki/testdata/nist-pkits/certs/ValidRFC822nameConstraintsTest21EE.crt", -- "pki/testdata/nist-pkits/certs/ValidRFC822nameConstraintsTest23EE.crt", -- "pki/testdata/nist-pkits/certs/ValidRFC822nameConstraintsTest25EE.crt", -- "pki/testdata/nist-pkits/certs/ValidRolloverfromPrintableStringtoUTF8StringTest10EE.crt", -- "pki/testdata/nist-pkits/certs/ValidSelfIssuedinhibitAnyPolicyTest7EE.crt", -- "pki/testdata/nist-pkits/certs/ValidSelfIssuedinhibitAnyPolicyTest9EE.crt", -- "pki/testdata/nist-pkits/certs/ValidSelfIssuedinhibitPolicyMappingTest7EE.crt", -- "pki/testdata/nist-pkits/certs/ValidSelfIssuedpathLenConstraintTest15EE.crt", -- "pki/testdata/nist-pkits/certs/ValidSelfIssuedpathLenConstraintTest17EE.crt", -- "pki/testdata/nist-pkits/certs/ValidSelfIssuedrequireExplicitPolicyTest6EE.crt", -- "pki/testdata/nist-pkits/certs/ValidSeparateCertificateandCRLKeysTest19EE.crt", -- "pki/testdata/nist-pkits/certs/ValidTwoCRLsTest7EE.crt", -- "pki/testdata/nist-pkits/certs/ValidURInameConstraintsTest34EE.crt", -- "pki/testdata/nist-pkits/certs/ValidURInameConstraintsTest36EE.crt", -- "pki/testdata/nist-pkits/certs/ValidUTF8StringCaseInsensitiveMatchTest11EE.crt", -- "pki/testdata/nist-pkits/certs/ValidUTF8StringEncodedNamesTest9EE.crt", -- "pki/testdata/nist-pkits/certs/ValidUnknownNotCriticalCertificateExtensionTest1EE.crt", -- "pki/testdata/nist-pkits/certs/ValidbasicConstraintsNotCriticalTest4EE.crt", -- "pki/testdata/nist-pkits/certs/ValidcRLIssuerTest28EE.crt", -- "pki/testdata/nist-pkits/certs/ValidcRLIssuerTest29EE.crt", -- "pki/testdata/nist-pkits/certs/ValidcRLIssuerTest30EE.crt", -- "pki/testdata/nist-pkits/certs/ValidcRLIssuerTest33EE.crt", -- "pki/testdata/nist-pkits/certs/ValiddeltaCRLTest2EE.crt", -- "pki/testdata/nist-pkits/certs/ValiddeltaCRLTest5EE.crt", -- "pki/testdata/nist-pkits/certs/ValiddeltaCRLTest7EE.crt", -- "pki/testdata/nist-pkits/certs/ValiddeltaCRLTest8EE.crt", -- "pki/testdata/nist-pkits/certs/ValiddistributionPointTest1EE.crt", -- "pki/testdata/nist-pkits/certs/ValiddistributionPointTest4EE.crt", -- "pki/testdata/nist-pkits/certs/ValiddistributionPointTest5EE.crt", -- "pki/testdata/nist-pkits/certs/ValiddistributionPointTest7EE.crt", -- "pki/testdata/nist-pkits/certs/ValidinhibitAnyPolicyTest2EE.crt", -- "pki/testdata/nist-pkits/certs/ValidinhibitPolicyMappingTest2EE.crt", -- "pki/testdata/nist-pkits/certs/ValidinhibitPolicyMappingTest4EE.crt", -- "pki/testdata/nist-pkits/certs/ValidkeyUsageNotCriticalTest3EE.crt", -- "pki/testdata/nist-pkits/certs/ValidonlyContainsCACertsTest13EE.crt", -- "pki/testdata/nist-pkits/certs/ValidonlySomeReasonsTest18EE.crt", -- "pki/testdata/nist-pkits/certs/ValidonlySomeReasonsTest19EE.crt", -- "pki/testdata/nist-pkits/certs/ValidpathLenConstraintTest13EE.crt", -- "pki/testdata/nist-pkits/certs/ValidpathLenConstraintTest14EE.crt", -- "pki/testdata/nist-pkits/certs/ValidpathLenConstraintTest7EE.crt", -- "pki/testdata/nist-pkits/certs/ValidpathLenConstraintTest8EE.crt", -- "pki/testdata/nist-pkits/certs/Validpre2000UTCnotBeforeDateTest3EE.crt", -- "pki/testdata/nist-pkits/certs/ValidrequireExplicitPolicyTest1EE.crt", -- "pki/testdata/nist-pkits/certs/ValidrequireExplicitPolicyTest2EE.crt", -- "pki/testdata/nist-pkits/certs/ValidrequireExplicitPolicyTest4EE.crt", -- "pki/testdata/nist-pkits/certs/WrongCRLCACert.crt", -- "pki/testdata/nist-pkits/certs/anyPolicyCACert.crt", -- "pki/testdata/nist-pkits/certs/basicConstraintsCriticalcAFalseCACert.crt", -- "pki/testdata/nist-pkits/certs/basicConstraintsNotCriticalCACert.crt", -- "pki/testdata/nist-pkits/certs/basicConstraintsNotCriticalcAFalseCACert.crt", -- "pki/testdata/nist-pkits/certs/deltaCRLCA1Cert.crt", -- "pki/testdata/nist-pkits/certs/deltaCRLCA2Cert.crt", -- "pki/testdata/nist-pkits/certs/deltaCRLCA3Cert.crt", -- "pki/testdata/nist-pkits/certs/deltaCRLIndicatorNoBaseCACert.crt", -- "pki/testdata/nist-pkits/certs/distributionPoint1CACert.crt", -- "pki/testdata/nist-pkits/certs/distributionPoint2CACert.crt", -- "pki/testdata/nist-pkits/certs/indirectCRLCA1Cert.crt", -- "pki/testdata/nist-pkits/certs/indirectCRLCA2Cert.crt", -- "pki/testdata/nist-pkits/certs/indirectCRLCA3Cert.crt", -- "pki/testdata/nist-pkits/certs/indirectCRLCA3cRLIssuerCert.crt", -- "pki/testdata/nist-pkits/certs/indirectCRLCA4Cert.crt", -- "pki/testdata/nist-pkits/certs/indirectCRLCA4cRLIssuerCert.crt", -- "pki/testdata/nist-pkits/certs/indirectCRLCA5Cert.crt", -- "pki/testdata/nist-pkits/certs/indirectCRLCA6Cert.crt", -- "pki/testdata/nist-pkits/certs/inhibitAnyPolicy0CACert.crt", -- "pki/testdata/nist-pkits/certs/inhibitAnyPolicy1CACert.crt", -- "pki/testdata/nist-pkits/certs/inhibitAnyPolicy1SelfIssuedCACert.crt", -- "pki/testdata/nist-pkits/certs/inhibitAnyPolicy1SelfIssuedsubCA2Cert.crt", -- "pki/testdata/nist-pkits/certs/inhibitAnyPolicy1subCA1Cert.crt", -- "pki/testdata/nist-pkits/certs/inhibitAnyPolicy1subCA2Cert.crt", -- "pki/testdata/nist-pkits/certs/inhibitAnyPolicy1subCAIAP5Cert.crt", -- "pki/testdata/nist-pkits/certs/inhibitAnyPolicy1subsubCA2Cert.crt", -- "pki/testdata/nist-pkits/certs/inhibitAnyPolicy5CACert.crt", -- "pki/testdata/nist-pkits/certs/inhibitAnyPolicy5subCACert.crt", -- "pki/testdata/nist-pkits/certs/inhibitAnyPolicy5subsubCACert.crt", -- "pki/testdata/nist-pkits/certs/inhibitAnyPolicyTest3EE.crt", -- "pki/testdata/nist-pkits/certs/inhibitPolicyMapping0CACert.crt", -- "pki/testdata/nist-pkits/certs/inhibitPolicyMapping0subCACert.crt", -- "pki/testdata/nist-pkits/certs/inhibitPolicyMapping1P12CACert.crt", -- "pki/testdata/nist-pkits/certs/inhibitPolicyMapping1P12subCACert.crt", -- "pki/testdata/nist-pkits/certs/inhibitPolicyMapping1P12subCAIPM5Cert.crt", -- "pki/testdata/nist-pkits/certs/inhibitPolicyMapping1P12subsubCACert.crt", -- "pki/testdata/nist-pkits/certs/inhibitPolicyMapping1P12subsubCAIPM5Cert.crt", -- "pki/testdata/nist-pkits/certs/inhibitPolicyMapping1P1CACert.crt", -- "pki/testdata/nist-pkits/certs/inhibitPolicyMapping1P1SelfIssuedCACert.crt", -- "pki/testdata/nist-pkits/certs/inhibitPolicyMapping1P1SelfIssuedsubCACert.crt", -- "pki/testdata/nist-pkits/certs/inhibitPolicyMapping1P1subCACert.crt", -- "pki/testdata/nist-pkits/certs/inhibitPolicyMapping1P1subsubCACert.crt", -- "pki/testdata/nist-pkits/certs/inhibitPolicyMapping5CACert.crt", -- "pki/testdata/nist-pkits/certs/inhibitPolicyMapping5subCACert.crt", -- "pki/testdata/nist-pkits/certs/inhibitPolicyMapping5subsubCACert.crt", -- "pki/testdata/nist-pkits/certs/inhibitPolicyMapping5subsubsubCACert.crt", -- "pki/testdata/nist-pkits/certs/keyUsageCriticalcRLSignFalseCACert.crt", -- "pki/testdata/nist-pkits/certs/keyUsageCriticalkeyCertSignFalseCACert.crt", -- "pki/testdata/nist-pkits/certs/keyUsageNotCriticalCACert.crt", -- "pki/testdata/nist-pkits/certs/keyUsageNotCriticalcRLSignFalseCACert.crt", -- "pki/testdata/nist-pkits/certs/keyUsageNotCriticalkeyCertSignFalseCACert.crt", -- "pki/testdata/nist-pkits/certs/nameConstraintsDN1CACert.crt", -- "pki/testdata/nist-pkits/certs/nameConstraintsDN1SelfIssuedCACert.crt", -- "pki/testdata/nist-pkits/certs/nameConstraintsDN1subCA1Cert.crt", -- "pki/testdata/nist-pkits/certs/nameConstraintsDN1subCA2Cert.crt", -- "pki/testdata/nist-pkits/certs/nameConstraintsDN1subCA3Cert.crt", -- "pki/testdata/nist-pkits/certs/nameConstraintsDN2CACert.crt", -- "pki/testdata/nist-pkits/certs/nameConstraintsDN3CACert.crt", -- "pki/testdata/nist-pkits/certs/nameConstraintsDN3subCA1Cert.crt", -- "pki/testdata/nist-pkits/certs/nameConstraintsDN3subCA2Cert.crt", -- "pki/testdata/nist-pkits/certs/nameConstraintsDN4CACert.crt", -- "pki/testdata/nist-pkits/certs/nameConstraintsDN5CACert.crt", -- "pki/testdata/nist-pkits/certs/nameConstraintsDNS1CACert.crt", -- "pki/testdata/nist-pkits/certs/nameConstraintsDNS2CACert.crt", -- "pki/testdata/nist-pkits/certs/nameConstraintsRFC822CA1Cert.crt", -- "pki/testdata/nist-pkits/certs/nameConstraintsRFC822CA2Cert.crt", -- "pki/testdata/nist-pkits/certs/nameConstraintsRFC822CA3Cert.crt", -- "pki/testdata/nist-pkits/certs/nameConstraintsURI1CACert.crt", -- "pki/testdata/nist-pkits/certs/nameConstraintsURI2CACert.crt", -- "pki/testdata/nist-pkits/certs/onlyContainsAttributeCertsCACert.crt", -- "pki/testdata/nist-pkits/certs/onlyContainsCACertsCACert.crt", -- "pki/testdata/nist-pkits/certs/onlyContainsUserCertsCACert.crt", -- "pki/testdata/nist-pkits/certs/onlySomeReasonsCA1Cert.crt", -- "pki/testdata/nist-pkits/certs/onlySomeReasonsCA2Cert.crt", -- "pki/testdata/nist-pkits/certs/onlySomeReasonsCA3Cert.crt", -- "pki/testdata/nist-pkits/certs/onlySomeReasonsCA4Cert.crt", -- "pki/testdata/nist-pkits/certs/pathLenConstraint0CACert.crt", -- "pki/testdata/nist-pkits/certs/pathLenConstraint0SelfIssuedCACert.crt", -- "pki/testdata/nist-pkits/certs/pathLenConstraint0subCA2Cert.crt", -- "pki/testdata/nist-pkits/certs/pathLenConstraint0subCACert.crt", -- "pki/testdata/nist-pkits/certs/pathLenConstraint1CACert.crt", -- "pki/testdata/nist-pkits/certs/pathLenConstraint1SelfIssuedCACert.crt", -- "pki/testdata/nist-pkits/certs/pathLenConstraint1SelfIssuedsubCACert.crt", -- "pki/testdata/nist-pkits/certs/pathLenConstraint1subCACert.crt", -- "pki/testdata/nist-pkits/certs/pathLenConstraint6CACert.crt", -- "pki/testdata/nist-pkits/certs/pathLenConstraint6subCA0Cert.crt", -- "pki/testdata/nist-pkits/certs/pathLenConstraint6subCA1Cert.crt", -- "pki/testdata/nist-pkits/certs/pathLenConstraint6subCA4Cert.crt", -- "pki/testdata/nist-pkits/certs/pathLenConstraint6subsubCA00Cert.crt", -- "pki/testdata/nist-pkits/certs/pathLenConstraint6subsubCA11Cert.crt", -- "pki/testdata/nist-pkits/certs/pathLenConstraint6subsubCA41Cert.crt", -- "pki/testdata/nist-pkits/certs/pathLenConstraint6subsubsubCA11XCert.crt", -- "pki/testdata/nist-pkits/certs/pathLenConstraint6subsubsubCA41XCert.crt", -- "pki/testdata/nist-pkits/certs/pre2000CRLnextUpdateCACert.crt", -- "pki/testdata/nist-pkits/certs/requireExplicitPolicy0CACert.crt", -- "pki/testdata/nist-pkits/certs/requireExplicitPolicy0subCACert.crt", -- "pki/testdata/nist-pkits/certs/requireExplicitPolicy0subsubCACert.crt", -- "pki/testdata/nist-pkits/certs/requireExplicitPolicy0subsubsubCACert.crt", -- "pki/testdata/nist-pkits/certs/requireExplicitPolicy10CACert.crt", -- "pki/testdata/nist-pkits/certs/requireExplicitPolicy10subCACert.crt", -- "pki/testdata/nist-pkits/certs/requireExplicitPolicy10subsubCACert.crt", -- "pki/testdata/nist-pkits/certs/requireExplicitPolicy10subsubsubCACert.crt", -- "pki/testdata/nist-pkits/certs/requireExplicitPolicy2CACert.crt", -- "pki/testdata/nist-pkits/certs/requireExplicitPolicy2SelfIssuedCACert.crt", -- "pki/testdata/nist-pkits/certs/requireExplicitPolicy2SelfIssuedsubCACert.crt", -- "pki/testdata/nist-pkits/certs/requireExplicitPolicy2subCACert.crt", -- "pki/testdata/nist-pkits/certs/requireExplicitPolicy4CACert.crt", -- "pki/testdata/nist-pkits/certs/requireExplicitPolicy4subCACert.crt", -- "pki/testdata/nist-pkits/certs/requireExplicitPolicy4subsubCACert.crt", -- "pki/testdata/nist-pkits/certs/requireExplicitPolicy4subsubsubCACert.crt", -- "pki/testdata/nist-pkits/certs/requireExplicitPolicy5CACert.crt", -- "pki/testdata/nist-pkits/certs/requireExplicitPolicy5subCACert.crt", -- "pki/testdata/nist-pkits/certs/requireExplicitPolicy5subsubCACert.crt", -- "pki/testdata/nist-pkits/certs/requireExplicitPolicy5subsubsubCACert.crt", -- "pki/testdata/nist-pkits/certs/requireExplicitPolicy7CACert.crt", -- "pki/testdata/nist-pkits/certs/requireExplicitPolicy7subCARE2Cert.crt", -- "pki/testdata/nist-pkits/certs/requireExplicitPolicy7subsubCARE2RE4Cert.crt", -- "pki/testdata/nist-pkits/certs/requireExplicitPolicy7subsubsubCARE2RE4Cert.crt", -- "pki/testdata/nist-pkits/crls/BadCRLIssuerNameCACRL.crl", -- "pki/testdata/nist-pkits/crls/BadCRLSignatureCACRL.crl", -- "pki/testdata/nist-pkits/crls/BadSignedCACRL.crl", -- "pki/testdata/nist-pkits/crls/BadnotAfterDateCACRL.crl", -- "pki/testdata/nist-pkits/crls/BadnotBeforeDateCACRL.crl", -- "pki/testdata/nist-pkits/crls/BasicSelfIssuedCRLSigningKeyCACRL.crl", -- "pki/testdata/nist-pkits/crls/BasicSelfIssuedCRLSigningKeyCRLCertCRL.crl", -- "pki/testdata/nist-pkits/crls/BasicSelfIssuedNewKeyCACRL.crl", -- "pki/testdata/nist-pkits/crls/BasicSelfIssuedOldKeyCACRL.crl", -- "pki/testdata/nist-pkits/crls/BasicSelfIssuedOldKeySelfIssuedCertCRL.crl", -- "pki/testdata/nist-pkits/crls/DSACACRL.crl", -- "pki/testdata/nist-pkits/crls/DSAParametersInheritedCACRL.crl", -- "pki/testdata/nist-pkits/crls/GeneralizedTimeCRLnextUpdateCACRL.crl", -- "pki/testdata/nist-pkits/crls/GoodCACRL.crl", -- "pki/testdata/nist-pkits/crls/GoodsubCACRL.crl", -- "pki/testdata/nist-pkits/crls/GoodsubCAPanyPolicyMapping1to2CACRL.crl", -- "pki/testdata/nist-pkits/crls/LongSerialNumberCACRL.crl", -- "pki/testdata/nist-pkits/crls/Mapping1to2CACRL.crl", -- "pki/testdata/nist-pkits/crls/MappingFromanyPolicyCACRL.crl", -- "pki/testdata/nist-pkits/crls/MappingToanyPolicyCACRL.crl", -- "pki/testdata/nist-pkits/crls/MissingbasicConstraintsCACRL.crl", -- "pki/testdata/nist-pkits/crls/NameOrderCACRL.crl", -- "pki/testdata/nist-pkits/crls/NegativeSerialNumberCACRL.crl", -- "pki/testdata/nist-pkits/crls/NoPoliciesCACRL.crl", -- "pki/testdata/nist-pkits/crls/NoissuingDistributionPointCACRL.crl", -- "pki/testdata/nist-pkits/crls/OldCRLnextUpdateCACRL.crl", -- "pki/testdata/nist-pkits/crls/P12Mapping1to3CACRL.crl", -- "pki/testdata/nist-pkits/crls/P12Mapping1to3subCACRL.crl", -- "pki/testdata/nist-pkits/crls/P12Mapping1to3subsubCACRL.crl", -- "pki/testdata/nist-pkits/crls/P1Mapping1to234CACRL.crl", -- "pki/testdata/nist-pkits/crls/P1Mapping1to234subCACRL.crl", -- "pki/testdata/nist-pkits/crls/P1anyPolicyMapping1to2CACRL.crl", -- "pki/testdata/nist-pkits/crls/PanyPolicyMapping1to2CACRL.crl", -- "pki/testdata/nist-pkits/crls/PoliciesP1234CACRL.crl", -- "pki/testdata/nist-pkits/crls/PoliciesP1234subCAP123CRL.crl", -- "pki/testdata/nist-pkits/crls/PoliciesP1234subsubCAP123P12CRL.crl", -- "pki/testdata/nist-pkits/crls/PoliciesP123CACRL.crl", -- "pki/testdata/nist-pkits/crls/PoliciesP123subCAP12CRL.crl", -- "pki/testdata/nist-pkits/crls/PoliciesP123subsubCAP12P1CRL.crl", -- "pki/testdata/nist-pkits/crls/PoliciesP123subsubCAP2P2CRL.crl", -- "pki/testdata/nist-pkits/crls/PoliciesP123subsubsubCAP12P2P1CRL.crl", -- "pki/testdata/nist-pkits/crls/PoliciesP12CACRL.crl", -- "pki/testdata/nist-pkits/crls/PoliciesP12subCAP1CRL.crl", -- "pki/testdata/nist-pkits/crls/PoliciesP12subsubCAP1P2CRL.crl", -- "pki/testdata/nist-pkits/crls/PoliciesP2subCA2CRL.crl", -- "pki/testdata/nist-pkits/crls/PoliciesP2subCACRL.crl", -- "pki/testdata/nist-pkits/crls/PoliciesP3CACRL.crl", -- "pki/testdata/nist-pkits/crls/RFC3280MandatoryAttributeTypesCACRL.crl", -- "pki/testdata/nist-pkits/crls/RFC3280OptionalAttributeTypesCACRL.crl", -- "pki/testdata/nist-pkits/crls/RevokedsubCACRL.crl", -- "pki/testdata/nist-pkits/crls/RolloverfromPrintableStringtoUTF8StringCACRL.crl", -- "pki/testdata/nist-pkits/crls/SeparateCertificateandCRLKeysCA2CRL.crl", -- "pki/testdata/nist-pkits/crls/SeparateCertificateandCRLKeysCRL.crl", -- "pki/testdata/nist-pkits/crls/TrustAnchorRootCRL.crl", -- "pki/testdata/nist-pkits/crls/TwoCRLsCABadCRL.crl", -- "pki/testdata/nist-pkits/crls/TwoCRLsCAGoodCRL.crl", -- "pki/testdata/nist-pkits/crls/UIDCACRL.crl", -- "pki/testdata/nist-pkits/crls/UTF8StringCaseInsensitiveMatchCACRL.crl", -- "pki/testdata/nist-pkits/crls/UTF8StringEncodedNamesCACRL.crl", -- "pki/testdata/nist-pkits/crls/UnknownCRLEntryExtensionCACRL.crl", -- "pki/testdata/nist-pkits/crls/UnknownCRLExtensionCACRL.crl", -- "pki/testdata/nist-pkits/crls/WrongCRLCACRL.crl", -- "pki/testdata/nist-pkits/crls/anyPolicyCACRL.crl", -- "pki/testdata/nist-pkits/crls/basicConstraintsCriticalcAFalseCACRL.crl", -- "pki/testdata/nist-pkits/crls/basicConstraintsNotCriticalCACRL.crl", -- "pki/testdata/nist-pkits/crls/basicConstraintsNotCriticalcAFalseCACRL.crl", -- "pki/testdata/nist-pkits/crls/deltaCRLCA1CRL.crl", -- "pki/testdata/nist-pkits/crls/deltaCRLCA1deltaCRL.crl", -- "pki/testdata/nist-pkits/crls/deltaCRLCA2CRL.crl", -- "pki/testdata/nist-pkits/crls/deltaCRLCA2deltaCRL.crl", -- "pki/testdata/nist-pkits/crls/deltaCRLCA3CRL.crl", -- "pki/testdata/nist-pkits/crls/deltaCRLCA3deltaCRL.crl", -- "pki/testdata/nist-pkits/crls/deltaCRLIndicatorNoBaseCACRL.crl", -- "pki/testdata/nist-pkits/crls/distributionPoint1CACRL.crl", -- "pki/testdata/nist-pkits/crls/distributionPoint2CACRL.crl", -- "pki/testdata/nist-pkits/crls/indirectCRLCA1CRL.crl", -- "pki/testdata/nist-pkits/crls/indirectCRLCA3CRL.crl", -- "pki/testdata/nist-pkits/crls/indirectCRLCA3cRLIssuerCRL.crl", -- "pki/testdata/nist-pkits/crls/indirectCRLCA4cRLIssuerCRL.crl", -- "pki/testdata/nist-pkits/crls/indirectCRLCA5CRL.crl", -- "pki/testdata/nist-pkits/crls/inhibitAnyPolicy0CACRL.crl", -- "pki/testdata/nist-pkits/crls/inhibitAnyPolicy1CACRL.crl", -- "pki/testdata/nist-pkits/crls/inhibitAnyPolicy1subCA1CRL.crl", -- "pki/testdata/nist-pkits/crls/inhibitAnyPolicy1subCA2CRL.crl", -- "pki/testdata/nist-pkits/crls/inhibitAnyPolicy1subCAIAP5CRL.crl", -- "pki/testdata/nist-pkits/crls/inhibitAnyPolicy1subsubCA2CRL.crl", -- "pki/testdata/nist-pkits/crls/inhibitAnyPolicy5CACRL.crl", -- "pki/testdata/nist-pkits/crls/inhibitAnyPolicy5subCACRL.crl", -- "pki/testdata/nist-pkits/crls/inhibitAnyPolicy5subsubCACRL.crl", -- "pki/testdata/nist-pkits/crls/inhibitPolicyMapping0CACRL.crl", -- "pki/testdata/nist-pkits/crls/inhibitPolicyMapping0subCACRL.crl", -- "pki/testdata/nist-pkits/crls/inhibitPolicyMapping1P12CACRL.crl", -- "pki/testdata/nist-pkits/crls/inhibitPolicyMapping1P12subCACRL.crl", -- "pki/testdata/nist-pkits/crls/inhibitPolicyMapping1P12subCAIPM5CRL.crl", -- "pki/testdata/nist-pkits/crls/inhibitPolicyMapping1P12subsubCACRL.crl", -- "pki/testdata/nist-pkits/crls/inhibitPolicyMapping1P12subsubCAIPM5CRL.crl", -- "pki/testdata/nist-pkits/crls/inhibitPolicyMapping1P1CACRL.crl", -- "pki/testdata/nist-pkits/crls/inhibitPolicyMapping1P1subCACRL.crl", -- "pki/testdata/nist-pkits/crls/inhibitPolicyMapping1P1subsubCACRL.crl", -- "pki/testdata/nist-pkits/crls/inhibitPolicyMapping5CACRL.crl", -- "pki/testdata/nist-pkits/crls/inhibitPolicyMapping5subCACRL.crl", -- "pki/testdata/nist-pkits/crls/inhibitPolicyMapping5subsubCACRL.crl", -- "pki/testdata/nist-pkits/crls/inhibitPolicyMapping5subsubsubCACRL.crl", -- "pki/testdata/nist-pkits/crls/keyUsageCriticalcRLSignFalseCACRL.crl", -- "pki/testdata/nist-pkits/crls/keyUsageCriticalkeyCertSignFalseCACRL.crl", -- "pki/testdata/nist-pkits/crls/keyUsageNotCriticalCACRL.crl", -- "pki/testdata/nist-pkits/crls/keyUsageNotCriticalcRLSignFalseCACRL.crl", -- "pki/testdata/nist-pkits/crls/keyUsageNotCriticalkeyCertSignFalseCACRL.crl", -- "pki/testdata/nist-pkits/crls/nameConstraintsDN1CACRL.crl", -- "pki/testdata/nist-pkits/crls/nameConstraintsDN1subCA1CRL.crl", -- "pki/testdata/nist-pkits/crls/nameConstraintsDN1subCA2CRL.crl", -- "pki/testdata/nist-pkits/crls/nameConstraintsDN1subCA3CRL.crl", -- "pki/testdata/nist-pkits/crls/nameConstraintsDN2CACRL.crl", -- "pki/testdata/nist-pkits/crls/nameConstraintsDN3CACRL.crl", -- "pki/testdata/nist-pkits/crls/nameConstraintsDN3subCA1CRL.crl", -- "pki/testdata/nist-pkits/crls/nameConstraintsDN3subCA2CRL.crl", -- "pki/testdata/nist-pkits/crls/nameConstraintsDN4CACRL.crl", -- "pki/testdata/nist-pkits/crls/nameConstraintsDN5CACRL.crl", -- "pki/testdata/nist-pkits/crls/nameConstraintsDNS1CACRL.crl", -- "pki/testdata/nist-pkits/crls/nameConstraintsDNS2CACRL.crl", -- "pki/testdata/nist-pkits/crls/nameConstraintsRFC822CA1CRL.crl", -- "pki/testdata/nist-pkits/crls/nameConstraintsRFC822CA2CRL.crl", -- "pki/testdata/nist-pkits/crls/nameConstraintsRFC822CA3CRL.crl", -- "pki/testdata/nist-pkits/crls/nameConstraintsURI1CACRL.crl", -- "pki/testdata/nist-pkits/crls/nameConstraintsURI2CACRL.crl", -- "pki/testdata/nist-pkits/crls/onlyContainsAttributeCertsCACRL.crl", -- "pki/testdata/nist-pkits/crls/onlyContainsCACertsCACRL.crl", -- "pki/testdata/nist-pkits/crls/onlyContainsUserCertsCACRL.crl", -- "pki/testdata/nist-pkits/crls/onlySomeReasonsCA1compromiseCRL.crl", -- "pki/testdata/nist-pkits/crls/onlySomeReasonsCA1otherreasonsCRL.crl", -- "pki/testdata/nist-pkits/crls/onlySomeReasonsCA2CRL1.crl", -- "pki/testdata/nist-pkits/crls/onlySomeReasonsCA2CRL2.crl", -- "pki/testdata/nist-pkits/crls/onlySomeReasonsCA3compromiseCRL.crl", -- "pki/testdata/nist-pkits/crls/onlySomeReasonsCA3otherreasonsCRL.crl", -- "pki/testdata/nist-pkits/crls/onlySomeReasonsCA4compromiseCRL.crl", -- "pki/testdata/nist-pkits/crls/onlySomeReasonsCA4otherreasonsCRL.crl", -- "pki/testdata/nist-pkits/crls/pathLenConstraint0CACRL.crl", -- "pki/testdata/nist-pkits/crls/pathLenConstraint0subCA2CRL.crl", -- "pki/testdata/nist-pkits/crls/pathLenConstraint0subCACRL.crl", -- "pki/testdata/nist-pkits/crls/pathLenConstraint1CACRL.crl", -- "pki/testdata/nist-pkits/crls/pathLenConstraint1subCACRL.crl", -- "pki/testdata/nist-pkits/crls/pathLenConstraint6CACRL.crl", -- "pki/testdata/nist-pkits/crls/pathLenConstraint6subCA0CRL.crl", -- "pki/testdata/nist-pkits/crls/pathLenConstraint6subCA1CRL.crl", -- "pki/testdata/nist-pkits/crls/pathLenConstraint6subCA4CRL.crl", -- "pki/testdata/nist-pkits/crls/pathLenConstraint6subsubCA00CRL.crl", -- "pki/testdata/nist-pkits/crls/pathLenConstraint6subsubCA11CRL.crl", -- "pki/testdata/nist-pkits/crls/pathLenConstraint6subsubCA41CRL.crl", -- "pki/testdata/nist-pkits/crls/pathLenConstraint6subsubsubCA11XCRL.crl", -- "pki/testdata/nist-pkits/crls/pathLenConstraint6subsubsubCA41XCRL.crl", -- "pki/testdata/nist-pkits/crls/pre2000CRLnextUpdateCACRL.crl", -- "pki/testdata/nist-pkits/crls/requireExplicitPolicy0CACRL.crl", -- "pki/testdata/nist-pkits/crls/requireExplicitPolicy0subCACRL.crl", -- "pki/testdata/nist-pkits/crls/requireExplicitPolicy0subsubCACRL.crl", -- "pki/testdata/nist-pkits/crls/requireExplicitPolicy0subsubsubCACRL.crl", -- "pki/testdata/nist-pkits/crls/requireExplicitPolicy10CACRL.crl", -- "pki/testdata/nist-pkits/crls/requireExplicitPolicy10subCACRL.crl", -- "pki/testdata/nist-pkits/crls/requireExplicitPolicy10subsubCACRL.crl", -- "pki/testdata/nist-pkits/crls/requireExplicitPolicy10subsubsubCACRL.crl", -- "pki/testdata/nist-pkits/crls/requireExplicitPolicy2CACRL.crl", -- "pki/testdata/nist-pkits/crls/requireExplicitPolicy2subCACRL.crl", -- "pki/testdata/nist-pkits/crls/requireExplicitPolicy4CACRL.crl", -- "pki/testdata/nist-pkits/crls/requireExplicitPolicy4subCACRL.crl", -- "pki/testdata/nist-pkits/crls/requireExplicitPolicy4subsubCACRL.crl", -- "pki/testdata/nist-pkits/crls/requireExplicitPolicy4subsubsubCACRL.crl", -- "pki/testdata/nist-pkits/crls/requireExplicitPolicy5CACRL.crl", -- "pki/testdata/nist-pkits/crls/requireExplicitPolicy5subCACRL.crl", -- "pki/testdata/nist-pkits/crls/requireExplicitPolicy5subsubCACRL.crl", -- "pki/testdata/nist-pkits/crls/requireExplicitPolicy5subsubsubCACRL.crl", -- "pki/testdata/nist-pkits/crls/requireExplicitPolicy7CACRL.crl", -- "pki/testdata/nist-pkits/crls/requireExplicitPolicy7subCARE2CRL.crl", -- "pki/testdata/nist-pkits/crls/requireExplicitPolicy7subsubCARE2RE4CRL.crl", -- "pki/testdata/nist-pkits/crls/requireExplicitPolicy7subsubsubCARE2RE4CRL.crl", -- "pki/testdata/ocsp_unittest/bad_ocsp_type.pem", -- "pki/testdata/ocsp_unittest/bad_signature.pem", -- "pki/testdata/ocsp_unittest/bad_status.pem", -- "pki/testdata/ocsp_unittest/good_response.pem", -- "pki/testdata/ocsp_unittest/good_response_next_update.pem", -- "pki/testdata/ocsp_unittest/good_response_sha256.pem", -- "pki/testdata/ocsp_unittest/has_critical_ct_extension.pem", -- "pki/testdata/ocsp_unittest/has_critical_response_extension.pem", -- "pki/testdata/ocsp_unittest/has_critical_single_extension.pem", -- "pki/testdata/ocsp_unittest/has_extension.pem", -- "pki/testdata/ocsp_unittest/has_single_extension.pem", -- "pki/testdata/ocsp_unittest/has_version.pem", -- "pki/testdata/ocsp_unittest/malformed_request.pem", -- "pki/testdata/ocsp_unittest/missing_response.pem", -- "pki/testdata/ocsp_unittest/multiple_response.pem", -- "pki/testdata/ocsp_unittest/no_response.pem", -- "pki/testdata/ocsp_unittest/ocsp_extra_certs.pem", -- "pki/testdata/ocsp_unittest/ocsp_sign_bad_indirect.pem", -- "pki/testdata/ocsp_unittest/ocsp_sign_direct.pem", -- "pki/testdata/ocsp_unittest/ocsp_sign_indirect.pem", -- "pki/testdata/ocsp_unittest/ocsp_sign_indirect_missing.pem", -- "pki/testdata/ocsp_unittest/other_response.pem", -- "pki/testdata/ocsp_unittest/responder_id.pem", -- "pki/testdata/ocsp_unittest/responder_name.pem", -- "pki/testdata/ocsp_unittest/revoke_response.pem", -- "pki/testdata/ocsp_unittest/revoke_response_reason.pem", -- "pki/testdata/ocsp_unittest/unknown_response.pem", -- "pki/testdata/parse_certificate_unittest/authority_key_identifier/empty_sequence.pem", -- "pki/testdata/parse_certificate_unittest/authority_key_identifier/extra_contents_after_extension_sequence.pem", -- "pki/testdata/parse_certificate_unittest/authority_key_identifier/extra_contents_after_issuer_and_serial.pem", -- "pki/testdata/parse_certificate_unittest/authority_key_identifier/invalid_contents.pem", -- "pki/testdata/parse_certificate_unittest/authority_key_identifier/invalid_issuer.pem", -- "pki/testdata/parse_certificate_unittest/authority_key_identifier/invalid_key_identifier.pem", -- "pki/testdata/parse_certificate_unittest/authority_key_identifier/invalid_serial.pem", -- "pki/testdata/parse_certificate_unittest/authority_key_identifier/issuer_and_serial.pem", -- "pki/testdata/parse_certificate_unittest/authority_key_identifier/issuer_only.pem", -- "pki/testdata/parse_certificate_unittest/authority_key_identifier/key_identifier.pem", -- "pki/testdata/parse_certificate_unittest/authority_key_identifier/key_identifier_and_issuer_and_serial.pem", -- "pki/testdata/parse_certificate_unittest/authority_key_identifier/serial_only.pem", -- "pki/testdata/parse_certificate_unittest/authority_key_identifier/url_issuer_and_serial.pem", -- "pki/testdata/parse_certificate_unittest/authority_key_identifier_not_sequence.pem", -- "pki/testdata/parse_certificate_unittest/bad_key_usage.pem", -- "pki/testdata/parse_certificate_unittest/bad_policy_qualifiers.pem", -- "pki/testdata/parse_certificate_unittest/bad_signature_algorithm_oid.pem", -- "pki/testdata/parse_certificate_unittest/bad_validity.pem", -- "pki/testdata/parse_certificate_unittest/basic_constraints_ca_false.pem", -- "pki/testdata/parse_certificate_unittest/basic_constraints_ca_no_path.pem", -- "pki/testdata/parse_certificate_unittest/basic_constraints_ca_path_9.pem", -- "pki/testdata/parse_certificate_unittest/basic_constraints_negative_path.pem", -- "pki/testdata/parse_certificate_unittest/basic_constraints_not_ca.pem", -- "pki/testdata/parse_certificate_unittest/basic_constraints_path_too_large.pem", -- "pki/testdata/parse_certificate_unittest/basic_constraints_pathlen_255.pem", -- "pki/testdata/parse_certificate_unittest/basic_constraints_pathlen_256.pem", -- "pki/testdata/parse_certificate_unittest/basic_constraints_pathlen_not_ca.pem", -- "pki/testdata/parse_certificate_unittest/basic_constraints_unconsumed_data.pem", -- "pki/testdata/parse_certificate_unittest/cert_algorithm_not_sequence.pem", -- "pki/testdata/parse_certificate_unittest/cert_data_after_signature.pem", -- "pki/testdata/parse_certificate_unittest/cert_empty_sequence.pem", -- "pki/testdata/parse_certificate_unittest/cert_missing_signature.pem", -- "pki/testdata/parse_certificate_unittest/cert_not_sequence.pem", -- "pki/testdata/parse_certificate_unittest/cert_signature_not_bit_string.pem", -- "pki/testdata/parse_certificate_unittest/cert_skeleton.pem", -- "pki/testdata/parse_certificate_unittest/cert_version3.pem", -- "pki/testdata/parse_certificate_unittest/crldp_1uri_noissuer.pem", -- "pki/testdata/parse_certificate_unittest/crldp_3uri_noissuer.pem", -- "pki/testdata/parse_certificate_unittest/crldp_full_name_as_dirname.pem", -- "pki/testdata/parse_certificate_unittest/crldp_issuer_as_dirname.pem", -- "pki/testdata/parse_certificate_unittest/extended_key_usage.pem", -- "pki/testdata/parse_certificate_unittest/extension_critical.pem", -- "pki/testdata/parse_certificate_unittest/extension_critical_0.pem", -- "pki/testdata/parse_certificate_unittest/extension_critical_3.pem", -- "pki/testdata/parse_certificate_unittest/extension_not_critical.pem", -- "pki/testdata/parse_certificate_unittest/extensions_data_after_sequence.pem", -- "pki/testdata/parse_certificate_unittest/extensions_duplicate_key_usage.pem", -- "pki/testdata/parse_certificate_unittest/extensions_empty_sequence.pem", -- "pki/testdata/parse_certificate_unittest/extensions_not_sequence.pem", -- "pki/testdata/parse_certificate_unittest/extensions_real.pem", -- "pki/testdata/parse_certificate_unittest/failed_signature_algorithm.pem", -- "pki/testdata/parse_certificate_unittest/inhibit_any_policy.pem", -- "pki/testdata/parse_certificate_unittest/issuer_bad_printable_string.pem", -- "pki/testdata/parse_certificate_unittest/key_usage.pem", -- "pki/testdata/parse_certificate_unittest/name_constraints_bad_ip.pem", -- "pki/testdata/parse_certificate_unittest/policies.pem", -- "pki/testdata/parse_certificate_unittest/policy_constraints_empty.pem", -- "pki/testdata/parse_certificate_unittest/policy_constraints_inhibit.pem", -- "pki/testdata/parse_certificate_unittest/policy_constraints_inhibit_require.pem", -- "pki/testdata/parse_certificate_unittest/policy_constraints_require.pem", -- "pki/testdata/parse_certificate_unittest/policy_qualifiers_empty_sequence.pem", -- "pki/testdata/parse_certificate_unittest/serial_37_bytes.pem", -- "pki/testdata/parse_certificate_unittest/serial_negative.pem", -- "pki/testdata/parse_certificate_unittest/serial_not_minimal.pem", -- "pki/testdata/parse_certificate_unittest/serial_not_number.pem", -- "pki/testdata/parse_certificate_unittest/serial_zero.pem", -- "pki/testdata/parse_certificate_unittest/serial_zero_padded.pem", -- "pki/testdata/parse_certificate_unittest/serial_zero_padded_21_bytes.pem", -- "pki/testdata/parse_certificate_unittest/signature_algorithm_null.pem", -- "pki/testdata/parse_certificate_unittest/subject_alt_name.pem", -- "pki/testdata/parse_certificate_unittest/subject_blank_subjectaltname_not_critical.pem", -- "pki/testdata/parse_certificate_unittest/subject_key_identifier_not_octet_string.pem", -- "pki/testdata/parse_certificate_unittest/subject_not_ascii.pem", -- "pki/testdata/parse_certificate_unittest/subject_not_printable_string.pem", -- "pki/testdata/parse_certificate_unittest/subject_printable_string_containing_utf8_client_cert.pem", -- "pki/testdata/parse_certificate_unittest/subject_t61string.pem", -- "pki/testdata/parse_certificate_unittest/subject_t61string_1-32.pem", -- "pki/testdata/parse_certificate_unittest/subject_t61string_126-160.pem", -- "pki/testdata/parse_certificate_unittest/subject_t61string_actual.pem", -- "pki/testdata/parse_certificate_unittest/subjectaltname_bad_ip.pem", -- "pki/testdata/parse_certificate_unittest/subjectaltname_dns_not_ascii.pem", -- "pki/testdata/parse_certificate_unittest/subjectaltname_general_names_empty_sequence.pem", -- "pki/testdata/parse_certificate_unittest/subjectaltname_trailing_data.pem", -- "pki/testdata/parse_certificate_unittest/tbs_explicit_v1.pem", -- "pki/testdata/parse_certificate_unittest/tbs_v1.pem", -- "pki/testdata/parse_certificate_unittest/tbs_v1_extensions.pem", -- "pki/testdata/parse_certificate_unittest/tbs_v2_extensions.pem", -- "pki/testdata/parse_certificate_unittest/tbs_v2_issuer_and_subject_unique_id.pem", -- "pki/testdata/parse_certificate_unittest/tbs_v2_issuer_unique_id.pem", -- "pki/testdata/parse_certificate_unittest/tbs_v2_no_optionals.pem", -- "pki/testdata/parse_certificate_unittest/tbs_v3_all_optionals.pem", -- "pki/testdata/parse_certificate_unittest/tbs_v3_data_after_extensions.pem", -- "pki/testdata/parse_certificate_unittest/tbs_v3_extensions.pem", -- "pki/testdata/parse_certificate_unittest/tbs_v3_extensions_not_sequence.pem", -- "pki/testdata/parse_certificate_unittest/tbs_v3_no_optionals.pem", -- "pki/testdata/parse_certificate_unittest/tbs_v3_real.pem", -- "pki/testdata/parse_certificate_unittest/tbs_v4.pem", -- "pki/testdata/parse_certificate_unittest/tbs_validity_both_generalized_time.pem", -- "pki/testdata/parse_certificate_unittest/tbs_validity_both_utc_time.pem", -- "pki/testdata/parse_certificate_unittest/tbs_validity_generalized_time_and_utc_time.pem", -- "pki/testdata/parse_certificate_unittest/tbs_validity_relaxed.pem", -- "pki/testdata/parse_certificate_unittest/tbs_validity_utc_time_and_generalized_time.pem", -- "pki/testdata/parse_certificate_unittest/v1_explicit_version.pem", -- "pki/testdata/path_builder_unittest/key_id_name_and_serial_prioritization/int_match_name_only.pem", -- "pki/testdata/path_builder_unittest/key_id_name_and_serial_prioritization/int_matching.pem", -- "pki/testdata/path_builder_unittest/key_id_name_and_serial_prioritization/int_mismatch.pem", -- "pki/testdata/path_builder_unittest/key_id_name_and_serial_prioritization/root.pem", -- "pki/testdata/path_builder_unittest/key_id_name_and_serial_prioritization/root2.pem", -- "pki/testdata/path_builder_unittest/key_id_name_and_serial_prioritization/target.pem", -- "pki/testdata/path_builder_unittest/key_id_prioritization/int_different_ski_a.pem", -- "pki/testdata/path_builder_unittest/key_id_prioritization/int_different_ski_b.pem", -- "pki/testdata/path_builder_unittest/key_id_prioritization/int_different_ski_c.pem", -- "pki/testdata/path_builder_unittest/key_id_prioritization/int_matching_ski_a.pem", -- "pki/testdata/path_builder_unittest/key_id_prioritization/int_matching_ski_b.pem", -- "pki/testdata/path_builder_unittest/key_id_prioritization/int_matching_ski_c.pem", -- "pki/testdata/path_builder_unittest/key_id_prioritization/int_no_ski_a.pem", -- "pki/testdata/path_builder_unittest/key_id_prioritization/int_no_ski_b.pem", -- "pki/testdata/path_builder_unittest/key_id_prioritization/int_no_ski_c.pem", -- "pki/testdata/path_builder_unittest/key_id_prioritization/root.pem", -- "pki/testdata/path_builder_unittest/key_id_prioritization/target.pem", -- "pki/testdata/path_builder_unittest/multi-root-A-by-B.pem", -- "pki/testdata/path_builder_unittest/multi-root-B-by-C.pem", -- "pki/testdata/path_builder_unittest/multi-root-B-by-F.pem", -- "pki/testdata/path_builder_unittest/multi-root-C-by-D.pem", -- "pki/testdata/path_builder_unittest/multi-root-C-by-E.pem", -- "pki/testdata/path_builder_unittest/multi-root-D-by-D.pem", -- "pki/testdata/path_builder_unittest/multi-root-E-by-E.pem", -- "pki/testdata/path_builder_unittest/multi-root-F-by-E.pem", -- "pki/testdata/path_builder_unittest/precertificate/precertificate.pem", -- "pki/testdata/path_builder_unittest/precertificate/root.pem", -- "pki/testdata/path_builder_unittest/self_issued_prioritization/root1.pem", -- "pki/testdata/path_builder_unittest/self_issued_prioritization/root1_cross.pem", -- "pki/testdata/path_builder_unittest/self_issued_prioritization/root2.pem", -- "pki/testdata/path_builder_unittest/self_issued_prioritization/target.pem", -- "pki/testdata/path_builder_unittest/validity_date_prioritization/int_ac.pem", -- "pki/testdata/path_builder_unittest/validity_date_prioritization/int_ad.pem", -- "pki/testdata/path_builder_unittest/validity_date_prioritization/int_bc.pem", -- "pki/testdata/path_builder_unittest/validity_date_prioritization/int_bd.pem", -- "pki/testdata/path_builder_unittest/validity_date_prioritization/root.pem", -- "pki/testdata/path_builder_unittest/validity_date_prioritization/target.pem", -- "pki/testdata/verify_certificate_chain_unittest/basic-constraints-pathlen-0-self-issued/chain.pem", -- "pki/testdata/verify_certificate_chain_unittest/basic-constraints-pathlen-0-self-issued/main.test", -- "pki/testdata/verify_certificate_chain_unittest/expired-intermediate/chain.pem", -- "pki/testdata/verify_certificate_chain_unittest/expired-intermediate/not-after.test", -- "pki/testdata/verify_certificate_chain_unittest/expired-intermediate/not-before.test", -- "pki/testdata/verify_certificate_chain_unittest/expired-root/chain.pem", -- "pki/testdata/verify_certificate_chain_unittest/expired-root/not-after-ta-with-constraints.test", -- "pki/testdata/verify_certificate_chain_unittest/expired-root/not-after-ta-with-expiration-and-constraints.test", -- "pki/testdata/verify_certificate_chain_unittest/expired-root/not-after-ta-with-expiration.test", -- "pki/testdata/verify_certificate_chain_unittest/expired-root/not-after.test", -- "pki/testdata/verify_certificate_chain_unittest/expired-root/not-before-ta-with-expiration.test", -- "pki/testdata/verify_certificate_chain_unittest/expired-root/not-before.test", -- "pki/testdata/verify_certificate_chain_unittest/expired-target/chain.pem", -- "pki/testdata/verify_certificate_chain_unittest/expired-target/not-after.test", -- "pki/testdata/verify_certificate_chain_unittest/expired-target/not-before.test", -- "pki/testdata/verify_certificate_chain_unittest/incorrect-trust-anchor/chain.pem", -- "pki/testdata/verify_certificate_chain_unittest/incorrect-trust-anchor/main.test", -- "pki/testdata/verify_certificate_chain_unittest/intermediate-and-target-wrong-signature/chain.pem", -- "pki/testdata/verify_certificate_chain_unittest/intermediate-and-target-wrong-signature/main.test", -- "pki/testdata/verify_certificate_chain_unittest/intermediate-basic-constraints-ca-false/chain.pem", -- "pki/testdata/verify_certificate_chain_unittest/intermediate-basic-constraints-ca-false/main.test", -- "pki/testdata/verify_certificate_chain_unittest/intermediate-basic-constraints-not-critical/chain.pem", -- "pki/testdata/verify_certificate_chain_unittest/intermediate-basic-constraints-not-critical/main.test", -- "pki/testdata/verify_certificate_chain_unittest/intermediate-eku-any-and-clientauth/any.test", -- "pki/testdata/verify_certificate_chain_unittest/intermediate-eku-any-and-clientauth/chain.pem", -- "pki/testdata/verify_certificate_chain_unittest/intermediate-eku-any-and-clientauth/clientauth-strict-leaf.test", -- "pki/testdata/verify_certificate_chain_unittest/intermediate-eku-any-and-clientauth/clientauth-strict.test", -- "pki/testdata/verify_certificate_chain_unittest/intermediate-eku-any-and-clientauth/clientauth.test", -- "pki/testdata/verify_certificate_chain_unittest/intermediate-eku-any-and-clientauth/serverauth-strict-leaf.test", -- "pki/testdata/verify_certificate_chain_unittest/intermediate-eku-any-and-clientauth/serverauth-strict.test", -- "pki/testdata/verify_certificate_chain_unittest/intermediate-eku-any-and-clientauth/serverauth.test", -- "pki/testdata/verify_certificate_chain_unittest/intermediate-eku-clientauth/any.test", -- "pki/testdata/verify_certificate_chain_unittest/intermediate-eku-clientauth/chain.pem", -- "pki/testdata/verify_certificate_chain_unittest/intermediate-eku-clientauth/clientauth-strict-leaf.test", -- "pki/testdata/verify_certificate_chain_unittest/intermediate-eku-clientauth/clientauth-strict.test", -- "pki/testdata/verify_certificate_chain_unittest/intermediate-eku-clientauth/clientauth.test", -- "pki/testdata/verify_certificate_chain_unittest/intermediate-eku-clientauth/serverauth-strict-leaf.test", -- "pki/testdata/verify_certificate_chain_unittest/intermediate-eku-clientauth/serverauth-strict.test", -- "pki/testdata/verify_certificate_chain_unittest/intermediate-eku-clientauth/serverauth.test", -- "pki/testdata/verify_certificate_chain_unittest/intermediate-eku-server-gated-crypto/sha1-chain.pem", -- "pki/testdata/verify_certificate_chain_unittest/intermediate-eku-server-gated-crypto/sha1-eku-any.test", -- "pki/testdata/verify_certificate_chain_unittest/intermediate-eku-server-gated-crypto/sha1-eku-clientAuth-strict.test", -- "pki/testdata/verify_certificate_chain_unittest/intermediate-eku-server-gated-crypto/sha1-eku-clientAuth.test", -- "pki/testdata/verify_certificate_chain_unittest/intermediate-eku-server-gated-crypto/sha1-eku-serverAuth-strict.test", -- "pki/testdata/verify_certificate_chain_unittest/intermediate-eku-server-gated-crypto/sha1-eku-serverAuth.test", -- "pki/testdata/verify_certificate_chain_unittest/intermediate-eku-server-gated-crypto/sha256-chain.pem", -- "pki/testdata/verify_certificate_chain_unittest/intermediate-eku-server-gated-crypto/sha256-eku-any.test", -- "pki/testdata/verify_certificate_chain_unittest/intermediate-eku-server-gated-crypto/sha256-eku-clientAuth-strict.test", -- "pki/testdata/verify_certificate_chain_unittest/intermediate-eku-server-gated-crypto/sha256-eku-clientAuth.test", -- "pki/testdata/verify_certificate_chain_unittest/intermediate-eku-server-gated-crypto/sha256-eku-serverAuth-strict.test", -- "pki/testdata/verify_certificate_chain_unittest/intermediate-eku-server-gated-crypto/sha256-eku-serverAuth.test", -- "pki/testdata/verify_certificate_chain_unittest/intermediate-invalid-spki/chain.pem", -- "pki/testdata/verify_certificate_chain_unittest/intermediate-invalid-spki/main.test", -- "pki/testdata/verify_certificate_chain_unittest/intermediate-lacks-basic-constraints/chain.pem", -- "pki/testdata/verify_certificate_chain_unittest/intermediate-lacks-basic-constraints/main.test", -- "pki/testdata/verify_certificate_chain_unittest/intermediate-lacks-signing-key-usage/chain.pem", -- "pki/testdata/verify_certificate_chain_unittest/intermediate-lacks-signing-key-usage/main.test", -- "pki/testdata/verify_certificate_chain_unittest/intermediate-signed-with-sha1/chain.pem", -- "pki/testdata/verify_certificate_chain_unittest/intermediate-signed-with-sha1/main.test", -- "pki/testdata/verify_certificate_chain_unittest/intermediate-unknown-critical-extension/chain.pem", -- "pki/testdata/verify_certificate_chain_unittest/intermediate-unknown-critical-extension/main.test", -- "pki/testdata/verify_certificate_chain_unittest/intermediate-unknown-non-critical-extension/chain.pem", -- "pki/testdata/verify_certificate_chain_unittest/intermediate-unknown-non-critical-extension/main.test", -- "pki/testdata/verify_certificate_chain_unittest/intermediate-wrong-signature-no-authority-key-identifier/chain.pem", -- "pki/testdata/verify_certificate_chain_unittest/intermediate-wrong-signature-no-authority-key-identifier/main.test", -- "pki/testdata/verify_certificate_chain_unittest/issuer-and-subject-not-byte-for-byte-equal/anchor.pem", -- "pki/testdata/verify_certificate_chain_unittest/issuer-and-subject-not-byte-for-byte-equal/anchor.test", -- "pki/testdata/verify_certificate_chain_unittest/issuer-and-subject-not-byte-for-byte-equal/target.pem", -- "pki/testdata/verify_certificate_chain_unittest/issuer-and-subject-not-byte-for-byte-equal/target.test", -- "pki/testdata/verify_certificate_chain_unittest/key-rollover/longrolloverchain.pem", -- "pki/testdata/verify_certificate_chain_unittest/key-rollover/longrolloverchain.test", -- "pki/testdata/verify_certificate_chain_unittest/key-rollover/newchain.pem", -- "pki/testdata/verify_certificate_chain_unittest/key-rollover/newchain.test", -- "pki/testdata/verify_certificate_chain_unittest/key-rollover/oldchain.pem", -- "pki/testdata/verify_certificate_chain_unittest/key-rollover/oldchain.test", -- "pki/testdata/verify_certificate_chain_unittest/key-rollover/rolloverchain.pem", -- "pki/testdata/verify_certificate_chain_unittest/key-rollover/rolloverchain.test", -- "pki/testdata/verify_certificate_chain_unittest/many-names/ok-all-types.pem", -- "pki/testdata/verify_certificate_chain_unittest/many-names/ok-all-types.test", -- "pki/testdata/verify_certificate_chain_unittest/many-names/toomany-all-types.pem", -- "pki/testdata/verify_certificate_chain_unittest/many-names/toomany-all-types.test", -- "pki/testdata/verify_certificate_chain_unittest/many-names/toomany-dirnames-excluded.pem", -- "pki/testdata/verify_certificate_chain_unittest/many-names/toomany-dirnames-excluded.test", -- "pki/testdata/verify_certificate_chain_unittest/many-names/toomany-dirnames-permitted.pem", -- "pki/testdata/verify_certificate_chain_unittest/many-names/toomany-dirnames-permitted.test", -- "pki/testdata/verify_certificate_chain_unittest/many-names/toomany-dns-excluded.pem", -- "pki/testdata/verify_certificate_chain_unittest/many-names/toomany-dns-excluded.test", -- "pki/testdata/verify_certificate_chain_unittest/many-names/toomany-dns-permitted.pem", -- "pki/testdata/verify_certificate_chain_unittest/many-names/toomany-dns-permitted.test", -- "pki/testdata/verify_certificate_chain_unittest/many-names/toomany-ips-excluded.pem", -- "pki/testdata/verify_certificate_chain_unittest/many-names/toomany-ips-excluded.test", -- "pki/testdata/verify_certificate_chain_unittest/many-names/toomany-ips-permitted.pem", -- "pki/testdata/verify_certificate_chain_unittest/many-names/toomany-ips-permitted.test", -- "pki/testdata/verify_certificate_chain_unittest/non-self-signed-root/chain.pem", -- "pki/testdata/verify_certificate_chain_unittest/non-self-signed-root/main.test", -- "pki/testdata/verify_certificate_chain_unittest/non-self-signed-root/ta-with-constraints.test", -- "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.1.2.txt", -- "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.1.3.txt", -- "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.1.4.txt", -- "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.1.5.txt", -- "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.1.6.txt", -- "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.10.1.2.txt", -- "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.10.1.3.txt", -- "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.10.10.txt", -- "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.10.13.txt", -- "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.10.2.txt", -- "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.10.3.txt", -- "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.10.4.txt", -- "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.10.5.txt", -- "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.10.6.txt", -- "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.10.7.txt", -- "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.10.8.txt", -- "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.11.1.txt", -- "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.11.10.txt", -- "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.11.11.txt", -- "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.11.3.txt", -- "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.11.5.txt", -- "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.11.6.txt", -- "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.11.8.txt", -- "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.11.9.txt", -- "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.12.1.txt", -- "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.12.10.txt", -- "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.12.3.txt", -- "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.12.4.txt", -- "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.12.5.txt", -- "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.12.6.txt", -- "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.12.8.txt", -- "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.13.10.txt", -- "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.13.12.txt", -- "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.13.13.txt", -- "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.13.15.txt", -- "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.13.16.txt", -- "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.13.17.txt", -- "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.13.2.txt", -- "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.13.20.txt", -- "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.13.21.txt", -- "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.13.22.txt", -- "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.13.23.txt", -- "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.13.24.txt", -- "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.13.25.txt", -- "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.13.26.txt", -- "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.13.27.txt", -- "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.13.28.txt", -- "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.13.29.txt", -- "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.13.3.txt", -- "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.13.31.txt", -- "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.13.33.txt", -- "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.13.34.txt", -- "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.13.35.txt", -- "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.13.36.txt", -- "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.13.37.txt", -- "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.13.38.txt", -- "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.13.7.txt", -- "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.13.8.txt", -- "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.13.9.txt", -- "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.16.2.txt", -- "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.2.1.txt", -- "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.2.2.txt", -- "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.2.5.txt", -- "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.2.6.txt", -- "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.2.7.txt", -- "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.3.1.txt", -- "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.3.2.txt", -- "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.6.1.txt", -- "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.6.10.txt", -- "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.6.11.txt", -- "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.6.12.txt", -- "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.6.16.txt", -- "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.6.2.txt", -- "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.6.3.txt", -- "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.6.5.txt", -- "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.6.6.txt", -- "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.6.9.txt", -- "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.7.1.txt", -- "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.7.2.txt", -- "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.8.1.txt", -- "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.8.12.txt", -- "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.8.14.txt", -- "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.8.2.txt", -- "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.8.3.txt", -- "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.8.4.txt", -- "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.8.5.txt", -- "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.8.6.txt", -- "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.8.7.txt", -- "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.8.8.txt", -- "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.8.9.txt", -- "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.9.3.txt", -- "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.9.5.txt", -- "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.9.7.txt", -- "pki/testdata/verify_certificate_chain_unittest/pkits_errors/4.9.8.txt", -- "pki/testdata/verify_certificate_chain_unittest/policies-inhibit-anypolicy-by-root-fail/chain.pem", -- "pki/testdata/verify_certificate_chain_unittest/policies-inhibit-anypolicy-by-root-fail/main.test", -- "pki/testdata/verify_certificate_chain_unittest/policies-inhibit-anypolicy-by-root-fail/ta-with-constraints.test", -- "pki/testdata/verify_certificate_chain_unittest/policies-inhibit-anypolicy-by-root-ok/chain.pem", -- "pki/testdata/verify_certificate_chain_unittest/policies-inhibit-anypolicy-by-root-ok/main.test", -- "pki/testdata/verify_certificate_chain_unittest/policies-inhibit-anypolicy-by-root-ok/ta-with-constraints.test", -- "pki/testdata/verify_certificate_chain_unittest/policies-inhibit-mapping-by-root-fail/chain.pem", -- "pki/testdata/verify_certificate_chain_unittest/policies-inhibit-mapping-by-root-fail/main.test", -- "pki/testdata/verify_certificate_chain_unittest/policies-inhibit-mapping-by-root-fail/ta-with-constraints.test", -- "pki/testdata/verify_certificate_chain_unittest/policies-inhibit-mapping-by-root-ok/chain.pem", -- "pki/testdata/verify_certificate_chain_unittest/policies-inhibit-mapping-by-root-ok/main.test", -- "pki/testdata/verify_certificate_chain_unittest/policies-inhibit-mapping-by-root-ok/ta-with-constraints.test", -- "pki/testdata/verify_certificate_chain_unittest/policies-ok/chain.pem", -- "pki/testdata/verify_certificate_chain_unittest/policies-ok/main.test", -- "pki/testdata/verify_certificate_chain_unittest/policies-ok/ta-with-constraints.test", -- "pki/testdata/verify_certificate_chain_unittest/policies-on-root-ok/chain.pem", -- "pki/testdata/verify_certificate_chain_unittest/policies-on-root-ok/main.test", -- "pki/testdata/verify_certificate_chain_unittest/policies-on-root-ok/ta-with-constraints.test", -- "pki/testdata/verify_certificate_chain_unittest/policies-on-root-wrong/chain.pem", -- "pki/testdata/verify_certificate_chain_unittest/policies-on-root-wrong/main.test", -- "pki/testdata/verify_certificate_chain_unittest/policies-on-root-wrong/ta-with-constraints.test", -- "pki/testdata/verify_certificate_chain_unittest/policies-required-by-root-fail/chain.pem", -- "pki/testdata/verify_certificate_chain_unittest/policies-required-by-root-fail/main.test", -- "pki/testdata/verify_certificate_chain_unittest/policies-required-by-root-fail/ta-with-constraints.test", -- "pki/testdata/verify_certificate_chain_unittest/policies-required-by-root-ok/chain.pem", -- "pki/testdata/verify_certificate_chain_unittest/policies-required-by-root-ok/main.test", -- "pki/testdata/verify_certificate_chain_unittest/policies-required-by-root-ok/ta-with-constraints.test", -- "pki/testdata/verify_certificate_chain_unittest/policy-mappings-on-root-fail/chain.pem", -- "pki/testdata/verify_certificate_chain_unittest/policy-mappings-on-root-fail/main.test", -- "pki/testdata/verify_certificate_chain_unittest/policy-mappings-on-root-fail/ta-with-constraints.test", -- "pki/testdata/verify_certificate_chain_unittest/policy-mappings-on-root-ok/chain.pem", -- "pki/testdata/verify_certificate_chain_unittest/policy-mappings-on-root-ok/main.test", -- "pki/testdata/verify_certificate_chain_unittest/policy-mappings-on-root-ok/ta-with-constraints.test", -- "pki/testdata/verify_certificate_chain_unittest/root-basic-constraints-ca-false/chain.pem", -- "pki/testdata/verify_certificate_chain_unittest/root-basic-constraints-ca-false/main.test", -- "pki/testdata/verify_certificate_chain_unittest/root-basic-constraints-ca-false/ta-with-constraints.test", -- "pki/testdata/verify_certificate_chain_unittest/root-eku-clientauth/chain.pem", -- "pki/testdata/verify_certificate_chain_unittest/root-eku-clientauth/serverauth-strict.test", -- "pki/testdata/verify_certificate_chain_unittest/root-eku-clientauth/serverauth-ta-with-constraints-strict.test", -- "pki/testdata/verify_certificate_chain_unittest/root-eku-clientauth/serverauth-ta-with-constraints.test", -- "pki/testdata/verify_certificate_chain_unittest/root-eku-clientauth/serverauth-ta-with-expiration-and-constraints.test", -- "pki/testdata/verify_certificate_chain_unittest/root-eku-clientauth/serverauth-ta-with-expiration.test", -- "pki/testdata/verify_certificate_chain_unittest/root-eku-clientauth/serverauth.test", -- "pki/testdata/verify_certificate_chain_unittest/root-lacks-basic-constraints/chain.pem", -- "pki/testdata/verify_certificate_chain_unittest/root-lacks-basic-constraints/main.test", -- "pki/testdata/verify_certificate_chain_unittest/root-lacks-basic-constraints/ta-with-constraints-require-basic-constraints.test", -- "pki/testdata/verify_certificate_chain_unittest/root-lacks-basic-constraints/ta-with-constraints.test", -- "pki/testdata/verify_certificate_chain_unittest/root-lacks-basic-constraints/ta-with-require-basic-constraints.test", -- "pki/testdata/verify_certificate_chain_unittest/root-lacks-keycertsign-key-usage/chain.pem", -- "pki/testdata/verify_certificate_chain_unittest/root-lacks-keycertsign-key-usage/main.test", -- "pki/testdata/verify_certificate_chain_unittest/root-lacks-keycertsign-key-usage/ta-with-constraints.test", -- "pki/testdata/verify_certificate_chain_unittest/target-and-intermediate/chain.pem", -- "pki/testdata/verify_certificate_chain_unittest/target-and-intermediate/distrusted-root-expired.test", -- "pki/testdata/verify_certificate_chain_unittest/target-and-intermediate/distrusted-root.test", -- "pki/testdata/verify_certificate_chain_unittest/target-and-intermediate/main.test", -- "pki/testdata/verify_certificate_chain_unittest/target-and-intermediate/ta-with-constraints.test", -- "pki/testdata/verify_certificate_chain_unittest/target-and-intermediate/ta-with-expiration.test", -- "pki/testdata/verify_certificate_chain_unittest/target-and-intermediate/trusted_leaf-and-trust_anchor.test", -- "pki/testdata/verify_certificate_chain_unittest/target-and-intermediate/trusted_leaf-root.test", -- "pki/testdata/verify_certificate_chain_unittest/target-and-intermediate/unspecified-trust-root.test", -- "pki/testdata/verify_certificate_chain_unittest/target-eku-any/any.test", -- "pki/testdata/verify_certificate_chain_unittest/target-eku-any/chain.pem", -- "pki/testdata/verify_certificate_chain_unittest/target-eku-any/clientauth-strict-leaf.test", -- "pki/testdata/verify_certificate_chain_unittest/target-eku-any/clientauth-strict.test", -- "pki/testdata/verify_certificate_chain_unittest/target-eku-any/clientauth.test", -- "pki/testdata/verify_certificate_chain_unittest/target-eku-any/serverauth-strict-leaf.test", -- "pki/testdata/verify_certificate_chain_unittest/target-eku-any/serverauth-strict.test", -- "pki/testdata/verify_certificate_chain_unittest/target-eku-any/serverauth.test", -- "pki/testdata/verify_certificate_chain_unittest/target-eku-clientauth/any.test", -- "pki/testdata/verify_certificate_chain_unittest/target-eku-clientauth/chain.pem", -- "pki/testdata/verify_certificate_chain_unittest/target-eku-clientauth/clientauth-strict.test", -- "pki/testdata/verify_certificate_chain_unittest/target-eku-clientauth/clientauth.test", -- "pki/testdata/verify_certificate_chain_unittest/target-eku-clientauth/serverauth-strict.test", -- "pki/testdata/verify_certificate_chain_unittest/target-eku-clientauth/serverauth.test", -- "pki/testdata/verify_certificate_chain_unittest/target-eku-many/any.test", -- "pki/testdata/verify_certificate_chain_unittest/target-eku-many/chain.pem", -- "pki/testdata/verify_certificate_chain_unittest/target-eku-many/clientauth-strict-leaf.test", -- "pki/testdata/verify_certificate_chain_unittest/target-eku-many/clientauth-strict.test", -- "pki/testdata/verify_certificate_chain_unittest/target-eku-many/clientauth.test", -- "pki/testdata/verify_certificate_chain_unittest/target-eku-many/serverauth-strict-leaf.test", -- "pki/testdata/verify_certificate_chain_unittest/target-eku-many/serverauth-strict.test", -- "pki/testdata/verify_certificate_chain_unittest/target-eku-many/serverauth.test", -- "pki/testdata/verify_certificate_chain_unittest/target-eku-none/any.test", -- "pki/testdata/verify_certificate_chain_unittest/target-eku-none/chain.pem", -- "pki/testdata/verify_certificate_chain_unittest/target-eku-none/clientauth-strict-leaf.test", -- "pki/testdata/verify_certificate_chain_unittest/target-eku-none/clientauth-strict.test", -- "pki/testdata/verify_certificate_chain_unittest/target-eku-none/clientauth.test", -- "pki/testdata/verify_certificate_chain_unittest/target-eku-none/serverauth-strict.test", -- "pki/testdata/verify_certificate_chain_unittest/target-eku-none/serverauth.test", -- "pki/testdata/verify_certificate_chain_unittest/target-has-512bit-rsa-key/chain.pem", -- "pki/testdata/verify_certificate_chain_unittest/target-has-512bit-rsa-key/main.test", -- "pki/testdata/verify_certificate_chain_unittest/target-has-ca-basic-constraints/chain.pem", -- "pki/testdata/verify_certificate_chain_unittest/target-has-ca-basic-constraints/main.test", -- "pki/testdata/verify_certificate_chain_unittest/target-has-ca-basic-constraints/strict.test", -- "pki/testdata/verify_certificate_chain_unittest/target-has-ca-basic-constraints/target_only-trusted_leaf-strict.test", -- "pki/testdata/verify_certificate_chain_unittest/target-has-ca-basic-constraints/target_only-trusted_leaf.test", -- "pki/testdata/verify_certificate_chain_unittest/target-has-ca-basic-constraints/target_only.pem", -- "pki/testdata/verify_certificate_chain_unittest/target-has-keycertsign-but-not-ca/chain.pem", -- "pki/testdata/verify_certificate_chain_unittest/target-has-keycertsign-but-not-ca/main.test", -- "pki/testdata/verify_certificate_chain_unittest/target-has-pathlen-but-not-ca/chain.pem", -- "pki/testdata/verify_certificate_chain_unittest/target-has-pathlen-but-not-ca/main.test", -- "pki/testdata/verify_certificate_chain_unittest/target-msapplicationpolicies-and-eku/chain.pem", -- "pki/testdata/verify_certificate_chain_unittest/target-msapplicationpolicies-and-eku/main.test", -- "pki/testdata/verify_certificate_chain_unittest/target-msapplicationpolicies-no-eku/chain.pem", -- "pki/testdata/verify_certificate_chain_unittest/target-msapplicationpolicies-no-eku/main.test", -- "pki/testdata/verify_certificate_chain_unittest/target-not-end-entity/chain.pem", -- "pki/testdata/verify_certificate_chain_unittest/target-not-end-entity/main.test", -- "pki/testdata/verify_certificate_chain_unittest/target-not-end-entity/strict-leaf.test", -- "pki/testdata/verify_certificate_chain_unittest/target-not-end-entity/strict.test", -- "pki/testdata/verify_certificate_chain_unittest/target-only/chain.pem", -- "pki/testdata/verify_certificate_chain_unittest/target-only/trusted_anchor.test", -- "pki/testdata/verify_certificate_chain_unittest/target-only/trusted_leaf-and-trust_anchor.test", -- "pki/testdata/verify_certificate_chain_unittest/target-only/trusted_leaf-not_after.test", -- "pki/testdata/verify_certificate_chain_unittest/target-only/trusted_leaf-wrong_eku.test", -- "pki/testdata/verify_certificate_chain_unittest/target-only/trusted_leaf.test", -- "pki/testdata/verify_certificate_chain_unittest/target-only/trusted_leaf_require_self_signed.test", -- "pki/testdata/verify_certificate_chain_unittest/target-selfissued/chain.pem", -- "pki/testdata/verify_certificate_chain_unittest/target-selfissued/trusted_anchor.test", -- "pki/testdata/verify_certificate_chain_unittest/target-selfissued/trusted_leaf-and-trust_anchor.test", -- "pki/testdata/verify_certificate_chain_unittest/target-selfissued/trusted_leaf.test", -- "pki/testdata/verify_certificate_chain_unittest/target-selfissued/trusted_leaf_require_self_signed.test", -- "pki/testdata/verify_certificate_chain_unittest/target-selfsigned/chain.pem", -- "pki/testdata/verify_certificate_chain_unittest/target-selfsigned/trusted_leaf-and-trust_anchor.test", -- "pki/testdata/verify_certificate_chain_unittest/target-selfsigned/trusted_leaf-not_after.test", -- "pki/testdata/verify_certificate_chain_unittest/target-selfsigned/trusted_leaf-wrong_eku.test", -- "pki/testdata/verify_certificate_chain_unittest/target-selfsigned/trusted_leaf.test", -- "pki/testdata/verify_certificate_chain_unittest/target-selfsigned/trusted_leaf_require_self_signed.test", -- "pki/testdata/verify_certificate_chain_unittest/target-serverauth-various-keyusages/ec-decipherOnly.pem", -- "pki/testdata/verify_certificate_chain_unittest/target-serverauth-various-keyusages/ec-decipherOnly.test", -- "pki/testdata/verify_certificate_chain_unittest/target-serverauth-various-keyusages/ec-digitalSignature.pem", -- "pki/testdata/verify_certificate_chain_unittest/target-serverauth-various-keyusages/ec-digitalSignature.test", -- "pki/testdata/verify_certificate_chain_unittest/target-serverauth-various-keyusages/ec-keyAgreement.pem", -- "pki/testdata/verify_certificate_chain_unittest/target-serverauth-various-keyusages/ec-keyAgreement.test", -- "pki/testdata/verify_certificate_chain_unittest/target-serverauth-various-keyusages/ec-keyEncipherment.pem", -- "pki/testdata/verify_certificate_chain_unittest/target-serverauth-various-keyusages/ec-keyEncipherment.test", -- "pki/testdata/verify_certificate_chain_unittest/target-serverauth-various-keyusages/rsa-decipherOnly.pem", -- "pki/testdata/verify_certificate_chain_unittest/target-serverauth-various-keyusages/rsa-decipherOnly.test", -- "pki/testdata/verify_certificate_chain_unittest/target-serverauth-various-keyusages/rsa-digitalSignature.pem", -- "pki/testdata/verify_certificate_chain_unittest/target-serverauth-various-keyusages/rsa-digitalSignature.test", -- "pki/testdata/verify_certificate_chain_unittest/target-serverauth-various-keyusages/rsa-keyAgreement.pem", -- "pki/testdata/verify_certificate_chain_unittest/target-serverauth-various-keyusages/rsa-keyAgreement.test", -- "pki/testdata/verify_certificate_chain_unittest/target-serverauth-various-keyusages/rsa-keyEncipherment.pem", -- "pki/testdata/verify_certificate_chain_unittest/target-serverauth-various-keyusages/rsa-keyEncipherment.test", -- "pki/testdata/verify_certificate_chain_unittest/target-signed-by-512bit-rsa/chain.pem", -- "pki/testdata/verify_certificate_chain_unittest/target-signed-by-512bit-rsa/main.test", -- "pki/testdata/verify_certificate_chain_unittest/target-signed-using-ecdsa/chain.pem", -- "pki/testdata/verify_certificate_chain_unittest/target-signed-using-ecdsa/main.test", -- "pki/testdata/verify_certificate_chain_unittest/target-signed-with-sha1/chain.pem", -- "pki/testdata/verify_certificate_chain_unittest/target-signed-with-sha1/main.test", -- "pki/testdata/verify_certificate_chain_unittest/target-unknown-critical-extension/chain.pem", -- "pki/testdata/verify_certificate_chain_unittest/target-unknown-critical-extension/main.test", -- "pki/testdata/verify_certificate_chain_unittest/target-unknown-critical-extension/target_only-trusted_leaf.test", -- "pki/testdata/verify_certificate_chain_unittest/target-unknown-critical-extension/target_only.pem", -- "pki/testdata/verify_certificate_chain_unittest/target-wrong-signature-no-authority-key-identifier/chain.pem", -- "pki/testdata/verify_certificate_chain_unittest/target-wrong-signature-no-authority-key-identifier/main.test", -- "pki/testdata/verify_certificate_chain_unittest/target-wrong-signature/chain.pem", -- "pki/testdata/verify_certificate_chain_unittest/target-wrong-signature/main.test", -- "pki/testdata/verify_certificate_chain_unittest/unknown-critical-policy-qualifier/chain.pem", -- "pki/testdata/verify_certificate_chain_unittest/unknown-critical-policy-qualifier/main.test", -- "pki/testdata/verify_certificate_chain_unittest/unknown-non-critical-policy-qualifier/chain.pem", -- "pki/testdata/verify_certificate_chain_unittest/unknown-non-critical-policy-qualifier/main.test", -- "pki/testdata/verify_certificate_chain_unittest/violates-basic-constraints-pathlen-0/chain.pem", -- "pki/testdata/verify_certificate_chain_unittest/violates-basic-constraints-pathlen-0/main.test", -- "pki/testdata/verify_certificate_chain_unittest/violates-pathlen-1-from-root/chain.pem", -- "pki/testdata/verify_certificate_chain_unittest/violates-pathlen-1-from-root/main.test", -- "pki/testdata/verify_certificate_chain_unittest/violates-pathlen-1-from-root/ta-with-constraints.test", -- "pki/testdata/verify_name_match_unittest/names/ascii-BMPSTRING-case_swap-dupe_attr.pem", -- "pki/testdata/verify_name_match_unittest/names/ascii-BMPSTRING-case_swap-extra_attr.pem", -- "pki/testdata/verify_name_match_unittest/names/ascii-BMPSTRING-case_swap-extra_rdn.pem", -- "pki/testdata/verify_name_match_unittest/names/ascii-BMPSTRING-case_swap.pem", -- "pki/testdata/verify_name_match_unittest/names/ascii-BMPSTRING-extra_whitespace-dupe_attr.pem", -- "pki/testdata/verify_name_match_unittest/names/ascii-BMPSTRING-extra_whitespace-extra_attr.pem", -- "pki/testdata/verify_name_match_unittest/names/ascii-BMPSTRING-extra_whitespace-extra_rdn.pem", -- "pki/testdata/verify_name_match_unittest/names/ascii-BMPSTRING-extra_whitespace.pem", -- "pki/testdata/verify_name_match_unittest/names/ascii-BMPSTRING-unmangled-dupe_attr.pem", -- "pki/testdata/verify_name_match_unittest/names/ascii-BMPSTRING-unmangled-extra_attr.pem", -- "pki/testdata/verify_name_match_unittest/names/ascii-BMPSTRING-unmangled-extra_rdn.pem", -- "pki/testdata/verify_name_match_unittest/names/ascii-BMPSTRING-unmangled.pem", -- "pki/testdata/verify_name_match_unittest/names/ascii-PRINTABLESTRING-case_swap-dupe_attr.pem", -- "pki/testdata/verify_name_match_unittest/names/ascii-PRINTABLESTRING-case_swap-extra_attr.pem", -- "pki/testdata/verify_name_match_unittest/names/ascii-PRINTABLESTRING-case_swap-extra_rdn.pem", -- "pki/testdata/verify_name_match_unittest/names/ascii-PRINTABLESTRING-case_swap.pem", -- "pki/testdata/verify_name_match_unittest/names/ascii-PRINTABLESTRING-extra_whitespace-dupe_attr.pem", -- "pki/testdata/verify_name_match_unittest/names/ascii-PRINTABLESTRING-extra_whitespace-extra_attr.pem", -- "pki/testdata/verify_name_match_unittest/names/ascii-PRINTABLESTRING-extra_whitespace-extra_rdn.pem", -- "pki/testdata/verify_name_match_unittest/names/ascii-PRINTABLESTRING-extra_whitespace.pem", -- "pki/testdata/verify_name_match_unittest/names/ascii-PRINTABLESTRING-rdn_sorting_1.pem", -- "pki/testdata/verify_name_match_unittest/names/ascii-PRINTABLESTRING-rdn_sorting_2.pem", -- "pki/testdata/verify_name_match_unittest/names/ascii-PRINTABLESTRING-unmangled-dupe_attr.pem", -- "pki/testdata/verify_name_match_unittest/names/ascii-PRINTABLESTRING-unmangled-extra_attr.pem", -- "pki/testdata/verify_name_match_unittest/names/ascii-PRINTABLESTRING-unmangled-extra_rdn.pem", -- "pki/testdata/verify_name_match_unittest/names/ascii-PRINTABLESTRING-unmangled.pem", -- "pki/testdata/verify_name_match_unittest/names/ascii-T61STRING-case_swap-dupe_attr.pem", -- "pki/testdata/verify_name_match_unittest/names/ascii-T61STRING-case_swap-extra_attr.pem", -- "pki/testdata/verify_name_match_unittest/names/ascii-T61STRING-case_swap-extra_rdn.pem", -- "pki/testdata/verify_name_match_unittest/names/ascii-T61STRING-case_swap.pem", -- "pki/testdata/verify_name_match_unittest/names/ascii-T61STRING-extra_whitespace-dupe_attr.pem", -- "pki/testdata/verify_name_match_unittest/names/ascii-T61STRING-extra_whitespace-extra_attr.pem", -- "pki/testdata/verify_name_match_unittest/names/ascii-T61STRING-extra_whitespace-extra_rdn.pem", -- "pki/testdata/verify_name_match_unittest/names/ascii-T61STRING-extra_whitespace.pem", -- "pki/testdata/verify_name_match_unittest/names/ascii-T61STRING-unmangled-dupe_attr.pem", -- "pki/testdata/verify_name_match_unittest/names/ascii-T61STRING-unmangled-extra_attr.pem", -- "pki/testdata/verify_name_match_unittest/names/ascii-T61STRING-unmangled-extra_rdn.pem", -- "pki/testdata/verify_name_match_unittest/names/ascii-T61STRING-unmangled.pem", -- "pki/testdata/verify_name_match_unittest/names/ascii-UNIVERSALSTRING-case_swap-dupe_attr.pem", -- "pki/testdata/verify_name_match_unittest/names/ascii-UNIVERSALSTRING-case_swap-extra_attr.pem", -- "pki/testdata/verify_name_match_unittest/names/ascii-UNIVERSALSTRING-case_swap-extra_rdn.pem", -- "pki/testdata/verify_name_match_unittest/names/ascii-UNIVERSALSTRING-case_swap.pem", -- "pki/testdata/verify_name_match_unittest/names/ascii-UNIVERSALSTRING-extra_whitespace-dupe_attr.pem", -- "pki/testdata/verify_name_match_unittest/names/ascii-UNIVERSALSTRING-extra_whitespace-extra_attr.pem", -- "pki/testdata/verify_name_match_unittest/names/ascii-UNIVERSALSTRING-extra_whitespace-extra_rdn.pem", -- "pki/testdata/verify_name_match_unittest/names/ascii-UNIVERSALSTRING-extra_whitespace.pem", -- "pki/testdata/verify_name_match_unittest/names/ascii-UNIVERSALSTRING-unmangled-dupe_attr.pem", -- "pki/testdata/verify_name_match_unittest/names/ascii-UNIVERSALSTRING-unmangled-extra_attr.pem", -- "pki/testdata/verify_name_match_unittest/names/ascii-UNIVERSALSTRING-unmangled-extra_rdn.pem", -- "pki/testdata/verify_name_match_unittest/names/ascii-UNIVERSALSTRING-unmangled.pem", -- "pki/testdata/verify_name_match_unittest/names/ascii-UTF8-case_swap-dupe_attr.pem", -- "pki/testdata/verify_name_match_unittest/names/ascii-UTF8-case_swap-extra_attr.pem", -- "pki/testdata/verify_name_match_unittest/names/ascii-UTF8-case_swap-extra_rdn.pem", -- "pki/testdata/verify_name_match_unittest/names/ascii-UTF8-case_swap.pem", -- "pki/testdata/verify_name_match_unittest/names/ascii-UTF8-extra_whitespace-dupe_attr.pem", -- "pki/testdata/verify_name_match_unittest/names/ascii-UTF8-extra_whitespace-extra_attr.pem", -- "pki/testdata/verify_name_match_unittest/names/ascii-UTF8-extra_whitespace-extra_rdn.pem", -- "pki/testdata/verify_name_match_unittest/names/ascii-UTF8-extra_whitespace.pem", -- "pki/testdata/verify_name_match_unittest/names/ascii-UTF8-unmangled-dupe_attr.pem", -- "pki/testdata/verify_name_match_unittest/names/ascii-UTF8-unmangled-extra_attr.pem", -- "pki/testdata/verify_name_match_unittest/names/ascii-UTF8-unmangled-extra_rdn.pem", -- "pki/testdata/verify_name_match_unittest/names/ascii-UTF8-unmangled.pem", -- "pki/testdata/verify_name_match_unittest/names/ascii-mixed-rdn_dupetype_sorting_1.pem", -- "pki/testdata/verify_name_match_unittest/names/ascii-mixed-rdn_dupetype_sorting_2.pem", -- "pki/testdata/verify_name_match_unittest/names/custom-custom-normalized.pem", -- "pki/testdata/verify_name_match_unittest/names/invalid-AttributeTypeAndValue-badAttributeType.pem", -- "pki/testdata/verify_name_match_unittest/names/invalid-AttributeTypeAndValue-empty.pem", -- "pki/testdata/verify_name_match_unittest/names/invalid-AttributeTypeAndValue-extradata.pem", -- "pki/testdata/verify_name_match_unittest/names/invalid-AttributeTypeAndValue-onlyOneElement.pem", -- "pki/testdata/verify_name_match_unittest/names/invalid-AttributeTypeAndValue-setNotSequence.pem", -- "pki/testdata/verify_name_match_unittest/names/invalid-Name-setInsteadOfSequence.pem", -- "pki/testdata/verify_name_match_unittest/names/invalid-RDN-empty.pem", -- "pki/testdata/verify_name_match_unittest/names/invalid-RDN-sequenceInsteadOfSet.pem", -- "pki/testdata/verify_name_match_unittest/names/unicode-mixed-normalized.pem", -- "pki/testdata/verify_name_match_unittest/names/unicode-mixed-unnormalized.pem", -- "pki/testdata/verify_name_match_unittest/names/unicode_bmp-BMPSTRING-unmangled.pem", -- "pki/testdata/verify_name_match_unittest/names/unicode_bmp-UNIVERSALSTRING-unmangled.pem", -- "pki/testdata/verify_name_match_unittest/names/unicode_bmp-UTF8-unmangled.pem", -- "pki/testdata/verify_name_match_unittest/names/unicode_supplementary-UNIVERSALSTRING-unmangled.pem", -- "pki/testdata/verify_name_match_unittest/names/unicode_supplementary-UTF8-unmangled.pem", -- "pki/testdata/verify_name_match_unittest/names/valid-Name-empty.pem", -- "pki/testdata/verify_name_match_unittest/names/valid-minimal.pem", -- "pki/testdata/verify_signed_data_unittest/ecdsa-prime256v1-sha512-spki-params-null.pem", -- "pki/testdata/verify_signed_data_unittest/ecdsa-prime256v1-sha512-unused-bits-signature.pem", -- "pki/testdata/verify_signed_data_unittest/ecdsa-prime256v1-sha512-using-ecdh-key.pem", -- "pki/testdata/verify_signed_data_unittest/ecdsa-prime256v1-sha512-using-ecmqv-key.pem", -- "pki/testdata/verify_signed_data_unittest/ecdsa-prime256v1-sha512-using-rsa-algorithm.pem", -- "pki/testdata/verify_signed_data_unittest/ecdsa-prime256v1-sha512-wrong-signature-format.pem", -- "pki/testdata/verify_signed_data_unittest/ecdsa-prime256v1-sha512.pem", -- "pki/testdata/verify_signed_data_unittest/ecdsa-secp384r1-sha256-corrupted-data.pem", -- "pki/testdata/verify_signed_data_unittest/ecdsa-secp384r1-sha256.pem", -- "pki/testdata/verify_signed_data_unittest/ecdsa-using-rsa-key.pem", -- "pki/testdata/verify_signed_data_unittest/rsa-pkcs1-sha1-bad-key-der-length.pem", -- "pki/testdata/verify_signed_data_unittest/rsa-pkcs1-sha1-bad-key-der-null.pem", -- "pki/testdata/verify_signed_data_unittest/rsa-pkcs1-sha1-key-params-absent.pem", -- "pki/testdata/verify_signed_data_unittest/rsa-pkcs1-sha1-using-pss-key-no-params.pem", -- "pki/testdata/verify_signed_data_unittest/rsa-pkcs1-sha1-wrong-algorithm.pem", -- "pki/testdata/verify_signed_data_unittest/rsa-pkcs1-sha1.pem", -- "pki/testdata/verify_signed_data_unittest/rsa-pkcs1-sha256-key-encoded-ber.pem", -- "pki/testdata/verify_signed_data_unittest/rsa-pkcs1-sha256-spki-non-null-params.pem", -- "pki/testdata/verify_signed_data_unittest/rsa-pkcs1-sha256-using-ecdsa-algorithm.pem", -- "pki/testdata/verify_signed_data_unittest/rsa-pkcs1-sha256-using-id-ea-rsa.pem", -- "pki/testdata/verify_signed_data_unittest/rsa-pkcs1-sha256.pem", -- "pki/testdata/verify_signed_data_unittest/rsa-pss-sha256-using-pss-key-with-params.pem", -- "pki/testdata/verify_signed_data_unittest/rsa-pss-sha256-wrong-salt.pem", -- "pki/testdata/verify_signed_data_unittest/rsa-pss-sha256.pem", -- "pki/testdata/verify_signed_data_unittest/rsa-using-ec-key.pem", -- "pki/testdata/verify_signed_data_unittest/rsa2048-pkcs1-sha512.pem", - "pki/testdata/verify_unittest/google-intermediate1.der", - "pki/testdata/verify_unittest/google-intermediate2.der", - "pki/testdata/verify_unittest/google-leaf.der", -@@ -2758,6 +1323,7 @@ +@@ -312,6 +314,7 @@ + "crypto/cpu_arm_freebsd.cc", + "crypto/cpu_arm_linux.cc", + "crypto/cpu_intel.cc", ++ "crypto/cpu_ppc64le.cc", + "crypto/crypto.cc", + "crypto/curve25519/curve25519.cc", + "crypto/curve25519/curve25519_64_adx.cc", +@@ -2752,6 +2755,7 @@ "gen/test_support/trampoline-armv8-apple.S", "gen/test_support/trampoline-armv8-linux.S", "gen/test_support/trampoline-armv8-win.S", @@ -22851,10 +19949,10 @@ Index: chromium-130.0.6723.44/third_party/boringssl/src/gen/sources.json "gen/test_support/trampoline-x86-apple.S", "gen/test_support/trampoline-x86-linux.S", "gen/test_support/trampoline-x86_64-apple.S", -Index: chromium-130.0.6723.44/third_party/boringssl/src/gen/test_support/trampoline-ppc-linux.S +Index: chromium-134.0.6998.35/third_party/boringssl/src/gen/test_support/trampoline-ppc-linux.S =================================================================== --- /dev/null -+++ chromium-130.0.6723.44/third_party/boringssl/src/gen/test_support/trampoline-ppc-linux.S ++++ chromium-134.0.6998.35/third_party/boringssl/src/gen/test_support/trampoline-ppc-linux.S @@ -0,0 +1,1413 @@ +// This file is generated from a similarly-named Perl script in the BoringSSL +// source tree. Do not edit by hand. @@ -24266,13 +21364,13 @@ Index: chromium-130.0.6723.44/third_party/boringssl/src/gen/test_support/trampol + +#endif // !OPENSSL_NO_ASM && __powerpc64__ && __ELF__ +#if defined(__ELF__) -+// See https://www.airs.com/blog/archives/518. ++// See https://www.airs.ccom/blog/archives/518. +.section .note.GNU-stack,"",%progbits +#endif -Index: chromium-130.0.6723.44/third_party/libvpx/source/config/linux/ppc64/vp8_rtcd.h +Index: chromium-134.0.6998.35/third_party/libvpx/source/config/linux/ppc64/vp8_rtcd.h =================================================================== --- /dev/null -+++ chromium-130.0.6723.44/third_party/libvpx/source/config/linux/ppc64/vp8_rtcd.h ++++ chromium-134.0.6998.35/third_party/libvpx/source/config/linux/ppc64/vp8_rtcd.h @@ -0,0 +1,316 @@ +// This file is generated. Do not edit. +#ifndef VP8_RTCD_H_ @@ -24590,10 +21688,10 @@ Index: chromium-130.0.6723.44/third_party/libvpx/source/config/linux/ppc64/vp8_r +#endif + +#endif -Index: chromium-130.0.6723.44/third_party/libvpx/source/config/linux/ppc64/vp9_rtcd.h +Index: chromium-134.0.6998.35/third_party/libvpx/source/config/linux/ppc64/vp9_rtcd.h =================================================================== --- /dev/null -+++ chromium-130.0.6723.44/third_party/libvpx/source/config/linux/ppc64/vp9_rtcd.h ++++ chromium-134.0.6998.35/third_party/libvpx/source/config/linux/ppc64/vp9_rtcd.h @@ -0,0 +1,267 @@ +// This file is generated. Do not edit. +#ifndef VP9_RTCD_H_ @@ -24862,10 +21960,10 @@ Index: chromium-130.0.6723.44/third_party/libvpx/source/config/linux/ppc64/vp9_r +#endif + +#endif -Index: chromium-130.0.6723.44/third_party/libvpx/source/config/linux/ppc64/vpx_config.asm +Index: chromium-134.0.6998.35/third_party/libvpx/source/config/linux/ppc64/vpx_config.asm =================================================================== --- /dev/null -+++ chromium-130.0.6723.44/third_party/libvpx/source/config/linux/ppc64/vpx_config.asm ++++ chromium-134.0.6998.35/third_party/libvpx/source/config/linux/ppc64/vpx_config.asm @@ -0,0 +1,107 @@ +@ This file was created from a .asm file +@ using the ads2gas.pl script. @@ -24974,10 +22072,10 @@ Index: chromium-130.0.6723.44/third_party/libvpx/source/config/linux/ppc64/vpx_c +.equ DECODE_WIDTH_LIMIT , 16384 +.equ DECODE_HEIGHT_LIMIT , 16384 + .section .note.GNU-stack,"",%progbits -Index: chromium-130.0.6723.44/third_party/libvpx/source/config/linux/ppc64/vpx_config.c +Index: chromium-134.0.6998.35/third_party/libvpx/source/config/linux/ppc64/vpx_config.c =================================================================== --- /dev/null -+++ chromium-130.0.6723.44/third_party/libvpx/source/config/linux/ppc64/vpx_config.c ++++ chromium-134.0.6998.35/third_party/libvpx/source/config/linux/ppc64/vpx_config.c @@ -0,0 +1,10 @@ +/* Copyright (c) 2011 The WebM project authors. All Rights Reserved. */ +/* */ @@ -24989,10 +22087,10 @@ Index: chromium-130.0.6723.44/third_party/libvpx/source/config/linux/ppc64/vpx_c +#include "vpx/vpx_codec.h" +static const char* const cfg = "--target=generic-gnu --enable-vp9-highbitdepth --enable-external-build --enable-postproc --enable-multi-res-encoding --enable-temporal-denoising --enable-vp9-temporal-denoising --enable-vp9-postproc --size-limit=16384x16384 --enable-realtime-only --disable-install-docs --disable-libyuv"; +const char *vpx_codec_build_config(void) {return cfg;} -Index: chromium-130.0.6723.44/third_party/libvpx/source/config/linux/ppc64/vpx_config.h +Index: chromium-134.0.6998.35/third_party/libvpx/source/config/linux/ppc64/vpx_config.h =================================================================== --- /dev/null -+++ chromium-130.0.6723.44/third_party/libvpx/source/config/linux/ppc64/vpx_config.h ++++ chromium-134.0.6998.35/third_party/libvpx/source/config/linux/ppc64/vpx_config.h @@ -0,0 +1,116 @@ +/* Copyright (c) 2011 The WebM project authors. All Rights Reserved. */ +/* */ @@ -25110,10 +22208,10 @@ Index: chromium-130.0.6723.44/third_party/libvpx/source/config/linux/ppc64/vpx_c +#define DECODE_WIDTH_LIMIT 16384 +#define DECODE_HEIGHT_LIMIT 16384 +#endif /* VPX_CONFIG_H */ -Index: chromium-130.0.6723.44/third_party/libvpx/source/config/linux/ppc64/vpx_dsp_rtcd.h +Index: chromium-134.0.6998.35/third_party/libvpx/source/config/linux/ppc64/vpx_dsp_rtcd.h =================================================================== --- /dev/null -+++ chromium-130.0.6723.44/third_party/libvpx/source/config/linux/ppc64/vpx_dsp_rtcd.h ++++ chromium-134.0.6998.35/third_party/libvpx/source/config/linux/ppc64/vpx_dsp_rtcd.h @@ -0,0 +1,4128 @@ +// This file is generated. Do not edit. +#ifndef VPX_DSP_RTCD_H_ @@ -29243,10 +26341,10 @@ Index: chromium-130.0.6723.44/third_party/libvpx/source/config/linux/ppc64/vpx_d +#endif + +#endif -Index: chromium-130.0.6723.44/third_party/libvpx/source/config/linux/ppc64/vpx_scale_rtcd.h +Index: chromium-134.0.6998.35/third_party/libvpx/source/config/linux/ppc64/vpx_scale_rtcd.h =================================================================== --- /dev/null -+++ chromium-130.0.6723.44/third_party/libvpx/source/config/linux/ppc64/vpx_scale_rtcd.h ++++ chromium-134.0.6998.35/third_party/libvpx/source/config/linux/ppc64/vpx_scale_rtcd.h @@ -0,0 +1,96 @@ +// This file is generated. Do not edit. +#ifndef VPX_SCALE_RTCD_H_ @@ -29386,21 +26484,21 @@ This patch implements support for the PPC64 architecture on Linux hosts. util/misc/capture_context_test_util_linux.cc | 6 + 36 files changed, 932 insertions(+), 12 deletions(-) -Index: chromium-130.0.6723.44/third_party/crashpad/crashpad/CONTRIBUTORS +Index: chromium-134.0.6998.35/third_party/crashpad/crashpad/CONTRIBUTORS =================================================================== ---- chromium-130.0.6723.44.orig/third_party/crashpad/crashpad/CONTRIBUTORS -+++ chromium-130.0.6723.44/third_party/crashpad/crashpad/CONTRIBUTORS +--- chromium-134.0.6998.35.orig/third_party/crashpad/crashpad/CONTRIBUTORS ++++ chromium-134.0.6998.35/third_party/crashpad/crashpad/CONTRIBUTORS @@ -13,3 +13,5 @@ Mark Mentovai Robert Sesek Scott Graham Joshua Peraza +Shawn Anastasio +Timothy Pearson -Index: chromium-130.0.6723.44/third_party/crashpad/crashpad/minidump/minidump_context.h +Index: chromium-134.0.6998.35/third_party/crashpad/crashpad/minidump/minidump_context.h =================================================================== ---- chromium-130.0.6723.44.orig/third_party/crashpad/crashpad/minidump/minidump_context.h -+++ chromium-130.0.6723.44/third_party/crashpad/crashpad/minidump/minidump_context.h -@@ -687,6 +687,70 @@ struct MinidumpContextRISCV64 { +--- chromium-134.0.6998.35.orig/third_party/crashpad/crashpad/minidump/minidump_context.h ++++ chromium-134.0.6998.35/third_party/crashpad/crashpad/minidump/minidump_context.h +@@ -686,6 +686,70 @@ struct MinidumpContextRISCV64 { uint32_t fcsr; }; @@ -29471,10 +26569,10 @@ Index: chromium-130.0.6723.44/third_party/crashpad/crashpad/minidump/minidump_co } // namespace crashpad #endif // CRASHPAD_MINIDUMP_MINIDUMP_CONTEXT_H_ -Index: chromium-130.0.6723.44/third_party/crashpad/crashpad/minidump/minidump_context_writer.cc +Index: chromium-134.0.6998.35/third_party/crashpad/crashpad/minidump/minidump_context_writer.cc =================================================================== ---- chromium-130.0.6723.44.orig/third_party/crashpad/crashpad/minidump/minidump_context_writer.cc -+++ chromium-130.0.6723.44/third_party/crashpad/crashpad/minidump/minidump_context_writer.cc +--- chromium-134.0.6998.35.orig/third_party/crashpad/crashpad/minidump/minidump_context_writer.cc ++++ chromium-134.0.6998.35/third_party/crashpad/crashpad/minidump/minidump_context_writer.cc @@ -110,6 +110,13 @@ MinidumpContextWriter::CreateFromSnapsho break; } @@ -29538,10 +26636,10 @@ Index: chromium-130.0.6723.44/third_party/crashpad/crashpad/minidump/minidump_co +} } // namespace crashpad -Index: chromium-130.0.6723.44/third_party/crashpad/crashpad/minidump/minidump_context_writer.h +Index: chromium-134.0.6998.35/third_party/crashpad/crashpad/minidump/minidump_context_writer.h =================================================================== ---- chromium-130.0.6723.44.orig/third_party/crashpad/crashpad/minidump/minidump_context_writer.h -+++ chromium-130.0.6723.44/third_party/crashpad/crashpad/minidump/minidump_context_writer.h +--- chromium-134.0.6998.35.orig/third_party/crashpad/crashpad/minidump/minidump_context_writer.h ++++ chromium-134.0.6998.35/third_party/crashpad/crashpad/minidump/minidump_context_writer.h @@ -413,6 +413,49 @@ class MinidumpContextRISCV64Writer final MinidumpContextRISCV64 context_; }; @@ -29592,10 +26690,10 @@ Index: chromium-130.0.6723.44/third_party/crashpad/crashpad/minidump/minidump_co } // namespace crashpad #endif // CRASHPAD_MINIDUMP_MINIDUMP_CONTEXT_WRITER_H_ -Index: chromium-130.0.6723.44/third_party/crashpad/crashpad/minidump/minidump_context_writer_test.cc +Index: chromium-134.0.6998.35/third_party/crashpad/crashpad/minidump/minidump_context_writer_test.cc =================================================================== ---- chromium-130.0.6723.44.orig/third_party/crashpad/crashpad/minidump/minidump_context_writer_test.cc -+++ chromium-130.0.6723.44/third_party/crashpad/crashpad/minidump/minidump_context_writer_test.cc +--- chromium-134.0.6998.35.orig/third_party/crashpad/crashpad/minidump/minidump_context_writer_test.cc ++++ chromium-134.0.6998.35/third_party/crashpad/crashpad/minidump/minidump_context_writer_test.cc @@ -322,6 +322,21 @@ TYPED_TEST(MinidumpContextWriter, RISCV6 TypeParam>(context, ExpectMinidumpContextRISCV64, kSeed); } @@ -29618,10 +26716,10 @@ Index: chromium-130.0.6723.44/third_party/crashpad/crashpad/minidump/minidump_co } // namespace } // namespace test } // namespace crashpad -Index: chromium-130.0.6723.44/third_party/crashpad/crashpad/minidump/minidump_misc_info_writer.cc +Index: chromium-134.0.6998.35/third_party/crashpad/crashpad/minidump/minidump_misc_info_writer.cc =================================================================== ---- chromium-130.0.6723.44.orig/third_party/crashpad/crashpad/minidump/minidump_misc_info_writer.cc -+++ chromium-130.0.6723.44/third_party/crashpad/crashpad/minidump/minidump_misc_info_writer.cc +--- chromium-134.0.6998.35.orig/third_party/crashpad/crashpad/minidump/minidump_misc_info_writer.cc ++++ chromium-134.0.6998.35/third_party/crashpad/crashpad/minidump/minidump_misc_info_writer.cc @@ -177,6 +177,8 @@ std::string MinidumpMiscInfoDebugBuildSt static constexpr char kCPU[] = "mips64"; #elif defined(ARCH_CPU_RISCV64) @@ -29631,10 +26729,10 @@ Index: chromium-130.0.6723.44/third_party/crashpad/crashpad/minidump/minidump_mi #else #error define kCPU for this CPU #endif -Index: chromium-130.0.6723.44/third_party/crashpad/crashpad/snapshot/capture_memory.cc +Index: chromium-134.0.6998.35/third_party/crashpad/crashpad/snapshot/capture_memory.cc =================================================================== ---- chromium-130.0.6723.44.orig/third_party/crashpad/crashpad/snapshot/capture_memory.cc -+++ chromium-130.0.6723.44/third_party/crashpad/crashpad/snapshot/capture_memory.cc +--- chromium-134.0.6998.35.orig/third_party/crashpad/crashpad/snapshot/capture_memory.cc ++++ chromium-134.0.6998.35/third_party/crashpad/crashpad/snapshot/capture_memory.cc @@ -123,6 +123,11 @@ void CaptureMemory::PointedToByContext(c for (size_t i = 0; i < std::size(context.riscv64->regs); ++i) { MaybeCaptureMemoryAround(delegate, context.riscv64->regs[i]); @@ -29647,10 +26745,10 @@ Index: chromium-130.0.6723.44/third_party/crashpad/crashpad/snapshot/capture_mem #else #error Port. #endif -Index: chromium-130.0.6723.44/third_party/crashpad/crashpad/snapshot/cpu_architecture.h +Index: chromium-134.0.6998.35/third_party/crashpad/crashpad/snapshot/cpu_architecture.h =================================================================== ---- chromium-130.0.6723.44.orig/third_party/crashpad/crashpad/snapshot/cpu_architecture.h -+++ chromium-130.0.6723.44/third_party/crashpad/crashpad/snapshot/cpu_architecture.h +--- chromium-134.0.6998.35.orig/third_party/crashpad/crashpad/snapshot/cpu_architecture.h ++++ chromium-134.0.6998.35/third_party/crashpad/crashpad/snapshot/cpu_architecture.h @@ -47,6 +47,9 @@ enum CPUArchitecture { //! \brief 64-bit RISC-V. @@ -29661,10 +26759,10 @@ Index: chromium-130.0.6723.44/third_party/crashpad/crashpad/snapshot/cpu_archite }; } // namespace crashpad -Index: chromium-130.0.6723.44/third_party/crashpad/crashpad/snapshot/cpu_context.cc +Index: chromium-134.0.6998.35/third_party/crashpad/crashpad/snapshot/cpu_context.cc =================================================================== ---- chromium-130.0.6723.44.orig/third_party/crashpad/crashpad/snapshot/cpu_context.cc -+++ chromium-130.0.6723.44/third_party/crashpad/crashpad/snapshot/cpu_context.cc +--- chromium-134.0.6998.35.orig/third_party/crashpad/crashpad/snapshot/cpu_context.cc ++++ chromium-134.0.6998.35/third_party/crashpad/crashpad/snapshot/cpu_context.cc @@ -173,6 +173,8 @@ uint64_t CPUContext::InstructionPointer( return arm64->pc; case kCPUArchitectureRISCV64: @@ -29691,10 +26789,10 @@ Index: chromium-130.0.6723.44/third_party/crashpad/crashpad/snapshot/cpu_context case kCPUArchitectureRISCV64: return true; case kCPUArchitectureX86: -Index: chromium-130.0.6723.44/third_party/crashpad/crashpad/snapshot/cpu_context.h +Index: chromium-134.0.6998.35/third_party/crashpad/crashpad/snapshot/cpu_context.h =================================================================== ---- chromium-130.0.6723.44.orig/third_party/crashpad/crashpad/snapshot/cpu_context.h -+++ chromium-130.0.6723.44/third_party/crashpad/crashpad/snapshot/cpu_context.h +--- chromium-134.0.6998.35.orig/third_party/crashpad/crashpad/snapshot/cpu_context.h ++++ chromium-134.0.6998.35/third_party/crashpad/crashpad/snapshot/cpu_context.h @@ -371,6 +371,24 @@ struct CPUContextRISCV64 { uint32_t fcsr; }; @@ -29728,10 +26826,10 @@ Index: chromium-130.0.6723.44/third_party/crashpad/crashpad/snapshot/cpu_context }; }; -Index: chromium-130.0.6723.44/third_party/crashpad/crashpad/snapshot/linux/cpu_context_linux.h +Index: chromium-134.0.6998.35/third_party/crashpad/crashpad/snapshot/linux/cpu_context_linux.h =================================================================== ---- chromium-130.0.6723.44.orig/third_party/crashpad/crashpad/snapshot/linux/cpu_context_linux.h -+++ chromium-130.0.6723.44/third_party/crashpad/crashpad/snapshot/linux/cpu_context_linux.h +--- chromium-134.0.6998.35.orig/third_party/crashpad/crashpad/snapshot/linux/cpu_context_linux.h ++++ chromium-134.0.6998.35/third_party/crashpad/crashpad/snapshot/linux/cpu_context_linux.h @@ -15,6 +15,7 @@ #ifndef CRASHPAD_SNAPSHOT_LINUX_CPU_CONTEXT_LINUX_H_ #define CRASHPAD_SNAPSHOT_LINUX_CPU_CONTEXT_LINUX_H_ @@ -29819,10 +26917,10 @@ Index: chromium-130.0.6723.44/third_party/crashpad/crashpad/snapshot/linux/cpu_c } // namespace internal } // namespace crashpad -Index: chromium-130.0.6723.44/third_party/crashpad/crashpad/snapshot/linux/debug_rendezvous_test.cc +Index: chromium-134.0.6998.35/third_party/crashpad/crashpad/snapshot/linux/debug_rendezvous_test.cc =================================================================== ---- chromium-130.0.6723.44.orig/third_party/crashpad/crashpad/snapshot/linux/debug_rendezvous_test.cc -+++ chromium-130.0.6723.44/third_party/crashpad/crashpad/snapshot/linux/debug_rendezvous_test.cc +--- chromium-134.0.6998.35.orig/third_party/crashpad/crashpad/snapshot/linux/debug_rendezvous_test.cc ++++ chromium-134.0.6998.35/third_party/crashpad/crashpad/snapshot/linux/debug_rendezvous_test.cc @@ -194,12 +194,15 @@ void TestAgainstTarget(PtraceConnection* device == 0 && inode == 0 && mapping_name == "[vdso]"; #if defined(ARCH_CPU_X86) @@ -29840,10 +26938,10 @@ Index: chromium-130.0.6723.44/third_party/crashpad/crashpad/snapshot/linux/debug }, module_mapping->name, module_mapping->device, -Index: chromium-130.0.6723.44/third_party/crashpad/crashpad/snapshot/linux/exception_snapshot_linux.cc +Index: chromium-134.0.6998.35/third_party/crashpad/crashpad/snapshot/linux/exception_snapshot_linux.cc =================================================================== ---- chromium-130.0.6723.44.orig/third_party/crashpad/crashpad/snapshot/linux/exception_snapshot_linux.cc -+++ chromium-130.0.6723.44/third_party/crashpad/crashpad/snapshot/linux/exception_snapshot_linux.cc +--- chromium-134.0.6998.35.orig/third_party/crashpad/crashpad/snapshot/linux/exception_snapshot_linux.cc ++++ chromium-134.0.6998.35/third_party/crashpad/crashpad/snapshot/linux/exception_snapshot_linux.cc @@ -367,6 +367,69 @@ bool ExceptionSnapshotLinux::ReadContext return internal::ReadContext(reader, context_address, context_.riscv64); } @@ -29914,11 +27012,11 @@ Index: chromium-130.0.6723.44/third_party/crashpad/crashpad/snapshot/linux/excep #endif // ARCH_CPU_X86_FAMILY bool ExceptionSnapshotLinux::Initialize( -Index: chromium-130.0.6723.44/third_party/crashpad/crashpad/snapshot/linux/exception_snapshot_linux.h +Index: chromium-134.0.6998.35/third_party/crashpad/crashpad/snapshot/linux/exception_snapshot_linux.h =================================================================== ---- chromium-130.0.6723.44.orig/third_party/crashpad/crashpad/snapshot/linux/exception_snapshot_linux.h -+++ chromium-130.0.6723.44/third_party/crashpad/crashpad/snapshot/linux/exception_snapshot_linux.h -@@ -91,6 +91,8 @@ class ExceptionSnapshotLinux final : pub +--- chromium-134.0.6998.35.orig/third_party/crashpad/crashpad/snapshot/linux/exception_snapshot_linux.h ++++ chromium-134.0.6998.35/third_party/crashpad/crashpad/snapshot/linux/exception_snapshot_linux.h +@@ -94,6 +94,8 @@ class ExceptionSnapshotLinux final : pub CPUContextMIPS64 mips64; #elif defined(ARCH_CPU_RISCV64) CPUContextRISCV64 riscv64; @@ -29927,10 +27025,10 @@ Index: chromium-130.0.6723.44/third_party/crashpad/crashpad/snapshot/linux/excep #endif } context_union_; CPUContext context_; -Index: chromium-130.0.6723.44/third_party/crashpad/crashpad/snapshot/linux/exception_snapshot_linux_test.cc +Index: chromium-134.0.6998.35/third_party/crashpad/crashpad/snapshot/linux/exception_snapshot_linux_test.cc =================================================================== ---- chromium-130.0.6723.44.orig/third_party/crashpad/crashpad/snapshot/linux/exception_snapshot_linux_test.cc -+++ chromium-130.0.6723.44/third_party/crashpad/crashpad/snapshot/linux/exception_snapshot_linux_test.cc +--- chromium-134.0.6998.35.orig/third_party/crashpad/crashpad/snapshot/linux/exception_snapshot_linux_test.cc ++++ chromium-134.0.6998.35/third_party/crashpad/crashpad/snapshot/linux/exception_snapshot_linux_test.cc @@ -325,7 +325,28 @@ void ExpectContext(const CPUContext& act sizeof(actual.riscv64->fpregs)), 0); @@ -29960,10 +27058,10 @@ Index: chromium-130.0.6723.44/third_party/crashpad/crashpad/snapshot/linux/excep #else #error Port. #endif -Index: chromium-130.0.6723.44/third_party/crashpad/crashpad/snapshot/linux/process_reader_linux.cc +Index: chromium-134.0.6998.35/third_party/crashpad/crashpad/snapshot/linux/process_reader_linux.cc =================================================================== ---- chromium-130.0.6723.44.orig/third_party/crashpad/crashpad/snapshot/linux/process_reader_linux.cc -+++ chromium-130.0.6723.44/third_party/crashpad/crashpad/snapshot/linux/process_reader_linux.cc +--- chromium-134.0.6998.35.orig/third_party/crashpad/crashpad/snapshot/linux/process_reader_linux.cc ++++ chromium-134.0.6998.35/third_party/crashpad/crashpad/snapshot/linux/process_reader_linux.cc @@ -129,6 +129,8 @@ void ProcessReaderLinux::Thread::Initial : thread_info.thread_context.t32.regs[29]; #elif defined(ARCH_CPU_RISCV64) @@ -29973,10 +27071,10 @@ Index: chromium-130.0.6723.44/third_party/crashpad/crashpad/snapshot/linux/proce #else #error Port. #endif -Index: chromium-130.0.6723.44/third_party/crashpad/crashpad/snapshot/linux/signal_context.h +Index: chromium-134.0.6998.35/third_party/crashpad/crashpad/snapshot/linux/signal_context.h =================================================================== ---- chromium-130.0.6723.44.orig/third_party/crashpad/crashpad/snapshot/linux/signal_context.h -+++ chromium-130.0.6723.44/third_party/crashpad/crashpad/snapshot/linux/signal_context.h +--- chromium-134.0.6998.35.orig/third_party/crashpad/crashpad/snapshot/linux/signal_context.h ++++ chromium-134.0.6998.35/third_party/crashpad/crashpad/snapshot/linux/signal_context.h @@ -456,6 +456,89 @@ static_assert(offsetof(UContextthread_context, &info->thread_specific_data_address, -Index: chromium-130.0.6723.44/third_party/crashpad/crashpad/util/linux/thread_info.h +Index: chromium-134.0.6998.35/third_party/crashpad/crashpad/util/linux/thread_info.h =================================================================== ---- chromium-130.0.6723.44.orig/third_party/crashpad/crashpad/util/linux/thread_info.h -+++ chromium-130.0.6723.44/third_party/crashpad/crashpad/util/linux/thread_info.h +--- chromium-134.0.6998.35.orig/third_party/crashpad/crashpad/util/linux/thread_info.h ++++ chromium-134.0.6998.35/third_party/crashpad/crashpad/util/linux/thread_info.h @@ -34,6 +34,10 @@ #include #endif @@ -30359,10 +27457,10 @@ Index: chromium-130.0.6723.44/third_party/crashpad/crashpad/util/linux/thread_in //! \brief The thread-local storage address for the thread. LinuxVMAddress thread_specific_data_address; }; -Index: chromium-130.0.6723.44/third_party/crashpad/crashpad/util/misc/capture_context.h +Index: chromium-134.0.6998.35/third_party/crashpad/crashpad/util/misc/capture_context.h =================================================================== ---- chromium-130.0.6723.44.orig/third_party/crashpad/crashpad/util/misc/capture_context.h -+++ chromium-130.0.6723.44/third_party/crashpad/crashpad/util/misc/capture_context.h +--- chromium-134.0.6998.35.orig/third_party/crashpad/crashpad/util/misc/capture_context.h ++++ chromium-134.0.6998.35/third_party/crashpad/crashpad/util/misc/capture_context.h @@ -70,6 +70,7 @@ using NativeCPUContext = ucontext_t; //! Linux | ARM/ARM64 | `r0`/`x0` //! Linux | MIPS/MIPS64 | `$a0` @@ -30371,10 +27469,10 @@ Index: chromium-130.0.6723.44/third_party/crashpad/crashpad/util/misc/capture_co //! //! Additionally, the value `LR` on ARM/ARM64 will be the return address of //! this function. -Index: chromium-130.0.6723.44/third_party/crashpad/crashpad/util/misc/capture_context_linux.S +Index: chromium-134.0.6998.35/third_party/crashpad/crashpad/util/misc/capture_context_linux.S =================================================================== ---- chromium-130.0.6723.44.orig/third_party/crashpad/crashpad/util/misc/capture_context_linux.S -+++ chromium-130.0.6723.44/third_party/crashpad/crashpad/util/misc/capture_context_linux.S +--- chromium-134.0.6998.35.orig/third_party/crashpad/crashpad/util/misc/capture_context_linux.S ++++ chromium-134.0.6998.35/third_party/crashpad/crashpad/util/misc/capture_context_linux.S @@ -30,7 +30,7 @@ .globl CAPTURECONTEXT_SYMBOL2 #if defined(__i386__) || defined(__x86_64__) @@ -30601,10 +27699,10 @@ Index: chromium-130.0.6723.44/third_party/crashpad/crashpad/util/misc/capture_co #elif defined(__riscv) #define MCONTEXT_GREGS_OFFSET 176 -Index: chromium-130.0.6723.44/third_party/crashpad/crashpad/util/misc/capture_context_test.cc +Index: chromium-134.0.6998.35/third_party/crashpad/crashpad/util/misc/capture_context_test.cc =================================================================== ---- chromium-130.0.6723.44.orig/third_party/crashpad/crashpad/util/misc/capture_context_test.cc -+++ chromium-130.0.6723.44/third_party/crashpad/crashpad/util/misc/capture_context_test.cc +--- chromium-134.0.6998.35.orig/third_party/crashpad/crashpad/util/misc/capture_context_test.cc ++++ chromium-134.0.6998.35/third_party/crashpad/crashpad/util/misc/capture_context_test.cc @@ -48,7 +48,7 @@ void TestCaptureContext() { uintptr_t pc = ProgramCounterFromContext(context_1); @@ -30614,10 +27712,10 @@ Index: chromium-130.0.6723.44/third_party/crashpad/crashpad/util/misc/capture_co // Sanitizers can cause enough code bloat that the “nearby” check would // likely fail. const uintptr_t kReferencePC = -Index: chromium-130.0.6723.44/third_party/crashpad/crashpad/util/misc/capture_context_test_util_linux.cc +Index: chromium-134.0.6998.35/third_party/crashpad/crashpad/util/misc/capture_context_test_util_linux.cc =================================================================== ---- chromium-130.0.6723.44.orig/third_party/crashpad/crashpad/util/misc/capture_context_test_util_linux.cc -+++ chromium-130.0.6723.44/third_party/crashpad/crashpad/util/misc/capture_context_test_util_linux.cc +--- chromium-134.0.6998.35.orig/third_party/crashpad/crashpad/util/misc/capture_context_test_util_linux.cc ++++ chromium-134.0.6998.35/third_party/crashpad/crashpad/util/misc/capture_context_test_util_linux.cc @@ -38,6 +38,8 @@ void SanityCheckContext(const NativeCPUC #elif defined(ARCH_CPU_RISCV64) EXPECT_EQ(context.uc_mcontext.__gregs[10], @@ -30647,11 +27745,11 @@ Index: chromium-130.0.6723.44/third_party/crashpad/crashpad/util/misc/capture_co kIndex: chromium-114.0.5735.45/base/allocator/partition_allocator/partition_alloc.gni =================================================================== -Index: chromium-130.0.6723.44/base/allocator/partition_allocator/partition_alloc.gni +Index: chromium-134.0.6998.35/base/allocator/partition_allocator/partition_alloc.gni =================================================================== ---- chromium-130.0.6723.44.orig/base/allocator/partition_allocator/partition_alloc.gni -+++ chromium-130.0.6723.44/base/allocator/partition_allocator/partition_alloc.gni -@@ -19,7 +19,8 @@ if (is_nacl) { +--- chromium-134.0.6998.35.orig/base/allocator/partition_allocator/partition_alloc.gni ++++ chromium-134.0.6998.35/base/allocator/partition_allocator/partition_alloc.gni +@@ -69,7 +69,8 @@ if (is_nacl) { # NaCl targets don't use 64-bit pointers. has_64_bit_pointers = false } else if (current_cpu == "x64" || current_cpu == "arm64" || @@ -30661,11 +27759,11 @@ Index: chromium-130.0.6723.44/base/allocator/partition_allocator/partition_alloc has_64_bit_pointers = true } else if (current_cpu == "x86" || current_cpu == "arm") { has_64_bit_pointers = false -Index: chromium-130.0.6723.44/base/allocator/partition_allocator/src/partition_alloc/page_allocator_constants.h +Index: chromium-134.0.6998.35/base/allocator/partition_allocator/src/partition_alloc/page_allocator_constants.h =================================================================== ---- chromium-130.0.6723.44.orig/base/allocator/partition_allocator/src/partition_alloc/page_allocator_constants.h -+++ chromium-130.0.6723.44/base/allocator/partition_allocator/src/partition_alloc/page_allocator_constants.h -@@ -187,7 +187,11 @@ SystemPageBaseMask() { +--- chromium-134.0.6998.35.orig/base/allocator/partition_allocator/src/partition_alloc/page_allocator_constants.h ++++ chromium-134.0.6998.35/base/allocator/partition_allocator/src/partition_alloc/page_allocator_constants.h +@@ -209,7 +209,11 @@ SystemPageBaseMask() { return ~SystemPageOffsetMask(); } @@ -30677,10 +27775,10 @@ Index: chromium-130.0.6723.44/base/allocator/partition_allocator/src/partition_a constexpr size_t kPageMetadataSize = 1 << kPageMetadataShift; } // namespace internal -Index: chromium-130.0.6723.44/third_party/dawn/src/dawn/common/Platform.h +Index: chromium-134.0.6998.35/third_party/dawn/src/dawn/common/Platform.h =================================================================== ---- chromium-130.0.6723.44.orig/third_party/dawn/src/dawn/common/Platform.h -+++ chromium-130.0.6723.44/third_party/dawn/src/dawn/common/Platform.h +--- chromium-134.0.6998.35.orig/third_party/dawn/src/dawn/common/Platform.h ++++ chromium-134.0.6998.35/third_party/dawn/src/dawn/common/Platform.h @@ -159,10 +159,12 @@ #elif defined(__s390x__) #define DAWN_PLATFORM_IS_S390X 1 @@ -30696,22 +27794,11 @@ Index: chromium-130.0.6723.44/third_party/dawn/src/dawn/common/Platform.h #elif defined(__wasm32__) #define DAWN_PLATFORM_IS_WASM32 1 -Index: chromium-130.0.6723.44/third_party/skia/src/core/SkRasterPipeline.h +Index: chromium-134.0.6998.35/base/process/launch.h =================================================================== ---- chromium-130.0.6723.44.orig/third_party/skia/src/core/SkRasterPipeline.h -+++ chromium-130.0.6723.44/third_party/skia/src/core/SkRasterPipeline.h -@@ -27,7 +27,7 @@ struct SkImageInfo; - struct skcms_TransferFunction; - - #if __has_cpp_attribute(clang::musttail) && !defined(__EMSCRIPTEN__) && !defined(SK_CPU_ARM32) && \ -- !defined(SK_CPU_LOONGARCH) && !(defined(_WIN32) && defined(SK_BUILD_FOR_ANDROID_FRAMEWORK)) -+ !defined(SK_CPU_LOONGARCH) && !(defined(_WIN32) && defined(SK_BUILD_FOR_ANDROID_FRAMEWORK)) && !defined(__powerpc64__) - // [[clang::musttail]] is disabled for the Android version of Skia running on Windows as it - // causes crashes (This is probably related to http://crbug.com/1505442). - #define SK_HAS_MUSTTAIL 1 ---- a/base/process/launch.h -+++ b/base/process/launch.h -@@ -54,6 +54,9 @@ +--- chromium-134.0.6998.35.orig/base/process/launch.h ++++ chromium-134.0.6998.35/base/process/launch.h +@@ -58,6 +58,9 @@ namespace base { #if defined(ARCH_CPU_ARM64) #define PTHREAD_STACK_MIN_CONST \ (__builtin_constant_p(PTHREAD_STACK_MIN) ? PTHREAD_STACK_MIN : 131072) @@ -30721,9 +27808,21 @@ Index: chromium-130.0.6723.44/third_party/skia/src/core/SkRasterPipeline.h #else #define PTHREAD_STACK_MIN_CONST \ (__builtin_constant_p(PTHREAD_STACK_MIN) ? PTHREAD_STACK_MIN : 16384) +diff -up chromium/sandbox/linux/seccomp-bpf-helpers/syscall_parameters_restrictions.cc.orig chromium/sandbox/linux/seccomp-bpf-helpers/syscall_parameters_restrictions.cc +--- chromium/sandbox/linux/seccomp-bpf-helpers/syscall_parameters_restrictions.cc.orig 2025-09-28 16:56:19.438134010 +0200 ++++ chromium/sandbox/linux/seccomp-bpf-helpers/syscall_parameters_restrictions.cc 2025-09-28 16:56:51.790767660 +0200 +@@ -41,7 +41,7 @@ + #endif + + #if (BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)) && \ +- !defined(__arm__) && !defined(__aarch64__) && \ ++ !defined(__arm__) && !defined(__aarch64__) && !defined(__powerpc64__) && \ + !defined(PTRACE_GET_THREAD_AREA) + // Also include asm/ptrace-abi.h since ptrace.h in older libc (for instance + // the one in Ubuntu 16.04 LTS) is missing PTRACE_GET_THREAD_AREA. diff -up chromium/sandbox/linux/seccomp-bpf-helpers/syscall_sets.cc.orig chromium/sandbox/linux/seccomp-bpf-helpers/syscall_sets.cc ---- chromium/sandbox/linux/seccomp-bpf-helpers/syscall_sets.cc.orig 2025-08-29 10:24:11.982676966 +0200 -+++ chromium/sandbox/linux/seccomp-bpf-helpers/syscall_sets.cc 2025-08-29 10:26:04.859133616 +0200 +--- chromium/sandbox/linux/seccomp-bpf-helpers/syscall_sets.cc.orig 2025-09-28 16:58:22.853176446 +0200 ++++ chromium/sandbox/linux/seccomp-bpf-helpers/syscall_sets.cc 2025-09-28 17:28:40.653091370 +0200 @@ -621,18 +621,19 @@ bool SyscallSets::IsAllowedGeneralIo(int case __NR_readv: case __NR_pread64: @@ -30763,3 +27862,31 @@ diff -up chromium/sandbox/linux/seccomp-bpf-helpers/syscall_sets.cc.orig chromiu case __NR_sendmsg: // Could specify destination. case __NR_sendto: // Could specify destination. #endif +@@ -666,11 +668,12 @@ bool SyscallSets::IsAllowedGeneralIo(int + bool SyscallSets::IsSockSendOneMsg(int sysno) { + switch (sysno) { + #if defined(__arm__) || \ +- (defined(ARCH_CPU_MIPS_FAMILY) && defined(ARCH_CPU_32_BITS)) ++ (defined(ARCH_CPU_MIPS_FAMILY) && defined(ARCH_CPU_32_BITS)) || \ ++ defined(__powerpc64__) + case __NR_send: + #endif + #if defined(__i386__) || defined(__x86_64__) || defined(__arm__) || \ +- defined(__mips__) || defined(__aarch64__) ++ defined(__mips__) || defined(__aarch64__) || defined(__powerpc64__) + case __NR_sendmsg: // Could specify destination. + case __NR_sendto: // Could specify destination. + #endif +Index: chromium-134.0.6998.35/third_party/highway/src/hwy/targets.cc +=================================================================== +--- chromium-134.0.6998.35.orig/third_party/highway/src/hwy/targets.cc ++++ chromium-134.0.6998.35/third_party/highway/src/hwy/targets.cc +@@ -35,7 +35,7 @@ + HWY_OS_LINUX + // sys/auxv.h does not always include asm/hwcap.h, or define HWCAP*, hence we + // still include this directly. See #1199. +-#ifndef TOOLCHAIN_MISS_ASM_HWCAP_H ++#if !defined(TOOLCHAIN_MISS_ASM_HWCAP_H) && !defined(HWY_ARCH_PPC) + #include + #endif + #if HWY_HAVE_AUXV diff --git a/series.ppc64 b/series.ppc64 index b8c87d2..c0e8461 100644 --- a/series.ppc64 +++ b/series.ppc64 @@ -40,5 +40,5 @@ ppc64le/crashpad/0001-Implement-support-for-PPC64-on-Linux.patch ppc64le/fixes/fix-partition-alloc-compile.patch ppc64le/third_party/use-sysconf-page-size-on-ppc64.patch ppc64le/third_party/dawn-fix-ppc64le-detection.patch -ppc64le/workarounds/HACK-debian-clang-disable-skia-musttail.patch ppc64le/core/add-ppc64-pthread-stack-size.patch +ppc64le/third_party/0001-third-party-hwy-wrong-include.patch From bb1b6240de79d3f980204792166e3a7a4186e2e6 Mon Sep 17 00:00:00 2001 From: Jan Grulich Date: Mon, 29 Sep 2025 20:47:35 +0200 Subject: [PATCH 62/76] Fix build --- .gitignore | 1 + qt6-qtwebengine.spec | 12 +- qtwebengine-fix-build.patch | 227 ----------------------- qtwebengine-revert-create-eglimage.patch | 160 +++++++++++----- sources | 2 +- 5 files changed, 123 insertions(+), 279 deletions(-) delete mode 100644 qtwebengine-fix-build.patch diff --git a/.gitignore b/.gitignore index 64ef03a..728b7fc 100644 --- a/.gitignore +++ b/.gitignore @@ -19,3 +19,4 @@ /qtwebengine-everywhere-src-6.9.1-clean.tar.xz /qtwebengine-everywhere-src-6.9.2-clean.tar.xz /qtwebengine-everywhere-src-6.10.0-rc-clean.tar.xz +/qtwebengine-everywhere-src-6.10.0-clean.tar.xz diff --git a/qt6-qtwebengine.spec b/qt6-qtwebengine.spec index a8e90ee..638cc70 100644 --- a/qt6-qtwebengine.spec +++ b/qt6-qtwebengine.spec @@ -76,7 +76,9 @@ # and designer plugins %global __provides_exclude_from ^%{_qt6_plugindir}/.*\\.so$ -%global unstable 1 +# FIXME: we cannot use any ~rc or similar suffix as the build +# would fail for having too long filename +#global unstable 1 %if 0%{?unstable} %global prerelease rc %endif @@ -85,7 +87,7 @@ Summary: Qt6 - QtWebEngine components Name: qt6-qtwebengine -Version: 6.10.0%{?unstable:~%{prerelease}} +Version: 6.10.0 Release: 1%{?dist} # See LICENSE.GPL LICENSE.LGPL LGPL_EXCEPTION.txt, for details @@ -124,9 +126,6 @@ Patch3: qtwebengine-aarch64-new-stat.patch # Enable OpenH264 Patch4: qtwebengine-use-openh264.patch -# FTBS warning: elaborated-type-specifier for a scoped enum must not -# use the 'class' keyword -Patch50: qtwebengine-fix-build.patch # https://bugreports.qt.io/browse/QTBUG-139424 # Revert commit bcee2dbf412cc655c1b467091b581c696d234e3f # See also https://gitlab.archlinux.org/archlinux/packaging/packages/qt6-webengine/-/commit/74473e03e9d77895d22659914aa4ae91324a1f0a @@ -483,7 +482,6 @@ popd %patch -P3 -p1 -b .aarch64-new-stat %patch -P4 -p1 -b .use-openh264 -%patch -P50 -p1 -b .fix-build.patch %patch -P51 -p1 -b .eglimage ## upstream patches @@ -768,7 +766,6 @@ done %dir %{_qt6_libdir}/cmake/Qt6WebEngineCoreTools %dir %{_qt6_libdir}/cmake/Qt6WebEngineQuick %dir %{_qt6_libdir}/cmake/Qt6WebEngineQuickDelegatesQml -%dir %{_qt6_libdir}/cmake/Qt6WebEngineQuickDelegatesQmlPrivate %dir %{_qt6_libdir}/cmake/Qt6WebEngineQuickPrivate %dir %{_qt6_libdir}/cmake/Qt6WebEngineWidgets %dir %{_qt6_libdir}/cmake/Qt6WebEngineWidgetsPrivate @@ -781,7 +778,6 @@ done %{_qt6_libdir}/cmake/Qt6WebEngineCoreTools/*.cmake %{_qt6_libdir}/cmake/Qt6WebEngineQuick/*.cmake %{_qt6_libdir}/cmake/Qt6WebEngineQuickDelegatesQml/*.cmake -%{_qt6_libdir}/cmake/Qt6WebEngineQuickDelegatesQmlPrivate/*.cmake %{_qt6_libdir}/cmake/Qt6WebEngineQuickPrivate/*.cmake %{_qt6_libdir}/cmake/Qt6WebEngineWidgets/*.cmake %{_qt6_libdir}/cmake/Qt6WebEngineWidgetsPrivate/*.cmake diff --git a/qtwebengine-fix-build.patch b/qtwebengine-fix-build.patch deleted file mode 100644 index 192a202..0000000 --- a/qtwebengine-fix-build.patch +++ /dev/null @@ -1,227 +0,0 @@ -diff --git a/src/3rdparty/chromium/base/debug/profiler.h b/src/3rdparty/chromium/base/debug/profiler.h -index 035affc7c..d8e1a5346 100644 ---- a/src/3rdparty/chromium/base/debug/profiler.h -+++ b/src/3rdparty/chromium/base/debug/profiler.h -@@ -5,6 +5,7 @@ - #ifndef BASE_DEBUG_PROFILER_H_ - #define BASE_DEBUG_PROFILER_H_ - -+#include - #include - #include - -diff --git a/src/3rdparty/chromium/cc/trees/target_property.cc b/src/3rdparty/chromium/cc/trees/target_property.cc -index 7d73467a9..be4febd9a 100644 ---- a/src/3rdparty/chromium/cc/trees/target_property.cc -+++ b/src/3rdparty/chromium/cc/trees/target_property.cc -@@ -8,6 +8,8 @@ - - #include "ui/gfx/animation/keyframe/target_property.h" - -+#include -+ - namespace cc { - - static_assert(TargetProperty::LAST_TARGET_PROPERTY < -diff --git a/src/3rdparty/chromium/device/base/synchronization/one_writer_seqlock.cc b/src/3rdparty/chromium/device/base/synchronization/one_writer_seqlock.cc -index c62a00ee0..af54520b7 100644 ---- a/src/3rdparty/chromium/device/base/synchronization/one_writer_seqlock.cc -+++ b/src/3rdparty/chromium/device/base/synchronization/one_writer_seqlock.cc -@@ -6,6 +6,8 @@ - - #include "base/threading/platform_thread.h" - -+#include -+ - namespace device { - - OneWriterSeqLock::OneWriterSeqLock() : sequence_(0) {} -diff --git a/src/3rdparty/chromium/extensions/common/constants.h b/src/3rdparty/chromium/extensions/common/constants.h -index 63af22b65..916d45a36 100644 ---- a/src/3rdparty/chromium/extensions/common/constants.h -+++ b/src/3rdparty/chromium/extensions/common/constants.h -@@ -13,6 +13,8 @@ - #include "build/chromeos_buildflags.h" - #include "extensions/common/extensions_export.h" - -+#include -+ - namespace extensions { - - // Scheme we serve extension content from. -diff --git a/src/3rdparty/chromium/gpu/config/gpu_util.h b/src/3rdparty/chromium/gpu/config/gpu_util.h -index 64d531be0..cc370a4bf 100644 ---- a/src/3rdparty/chromium/gpu/config/gpu_util.h -+++ b/src/3rdparty/chromium/gpu/config/gpu_util.h -@@ -5,6 +5,8 @@ - #ifndef GPU_CONFIG_GPU_UTIL_H_ - #define GPU_CONFIG_GPU_UTIL_H_ - -+#include -+ - #include "build/build_config.h" - #include "gpu/config/gpu_feature_info.h" - #include "gpu/gpu_export.h" -diff --git a/src/3rdparty/chromium/net/base/parse_number.h b/src/3rdparty/chromium/net/base/parse_number.h -index f70619a75..5c4eee7f6 100644 ---- a/src/3rdparty/chromium/net/base/parse_number.h -+++ b/src/3rdparty/chromium/net/base/parse_number.h -@@ -10,6 +10,8 @@ - - #include "net/base/net_export.h" - -+#include -+ - // This file contains utility functions for parsing numbers, in the context of - // network protocols. - // -diff --git a/src/3rdparty/chromium/ppapi/utility/completion_callback_factory_thread_traits.h b/src/3rdparty/chromium/ppapi/utility/completion_callback_factory_thread_traits.h -index 7c0dcdecb..97054d476 100644 ---- a/src/3rdparty/chromium/ppapi/utility/completion_callback_factory_thread_traits.h -+++ b/src/3rdparty/chromium/ppapi/utility/completion_callback_factory_thread_traits.h -@@ -38,6 +38,10 @@ namespace pp { - /// As a further optimization, we can add support for this later. - class ThreadSafeThreadTraits { - public: -+ -+ typedef pp::Lock Lock; -+ typedef pp::AutoLock AutoLock; -+ - class RefCount { - public: - /// Default constructor. In debug mode, this checks that the object is being -@@ -67,8 +71,6 @@ class ThreadSafeThreadTraits { - int32_t ref_; - }; - -- typedef pp::Lock Lock; -- typedef pp::AutoLock AutoLock; - }; - - /// The non-thread-safe version of thread traits. Using this class as the -diff --git a/src/3rdparty/chromium/third_party/dawn/src/dawn/native/CacheKey.h b/src/3rdparty/chromium/third_party/dawn/src/dawn/native/CacheKey.h -index a65ea9a2a..ba967c018 100644 ---- a/src/3rdparty/chromium/third_party/dawn/src/dawn/native/CacheKey.h -+++ b/src/3rdparty/chromium/third_party/dawn/src/dawn/native/CacheKey.h -@@ -28,6 +28,7 @@ - #ifndef SRC_DAWN_NATIVE_CACHEKEY_H_ - #define SRC_DAWN_NATIVE_CACHEKEY_H_ - -+#include - #include - - #include "dawn/native/stream/ByteVectorSink.h" -diff --git a/src/3rdparty/chromium/third_party/libgav1/src/src/utils/threadpool.cc b/src/3rdparty/chromium/third_party/libgav1/src/src/utils/threadpool.cc -index 6fa2e8864..6b942abdf 100644 ---- a/src/3rdparty/chromium/third_party/libgav1/src/src/utils/threadpool.cc -+++ b/src/3rdparty/chromium/third_party/libgav1/src/src/utils/threadpool.cc -@@ -31,6 +31,7 @@ - #include - #include - #include -+#include - #include - #include - -diff --git a/src/3rdparty/chromium/third_party/perfetto/src/trace_processor/importers/proto/proto_importer_module.h b/src/3rdparty/chromium/third_party/perfetto/src/trace_processor/importers/proto/proto_importer_module.h -index c8375dc69..8f290c302 100644 ---- a/src/3rdparty/chromium/third_party/perfetto/src/trace_processor/importers/proto/proto_importer_module.h -+++ b/src/3rdparty/chromium/third_party/perfetto/src/trace_processor/importers/proto/proto_importer_module.h -@@ -27,6 +27,8 @@ - #include "src/trace_processor/importers/common/trace_parser.h" - #include "src/trace_processor/importers/proto/packet_sequence_state_generation.h" - -+#include -+ - namespace perfetto { - - namespace protos::pbzero { -diff --git a/src/3rdparty/chromium/third_party/skia/src/utils/SkParseColor.cpp b/src/3rdparty/chromium/third_party/skia/src/utils/SkParseColor.cpp -index ae6a412fd..5fe0370ec 100644 ---- a/src/3rdparty/chromium/third_party/skia/src/utils/SkParseColor.cpp -+++ b/src/3rdparty/chromium/third_party/skia/src/utils/SkParseColor.cpp -@@ -15,6 +15,10 @@ - #include - #include - -+#include -+#include -+#include -+ - static constexpr const char* gColorNames[] = { - "aliceblue", - "antiquewhite", -diff --git a/src/3rdparty/chromium/third_party/vulkan_memory_allocator/include/vk_mem_alloc.h b/src/3rdparty/chromium/third_party/vulkan_memory_allocator/include/vk_mem_alloc.h -index 0bbfeedb1..91f19f83e 100644 ---- a/src/3rdparty/chromium/third_party/vulkan_memory_allocator/include/vk_mem_alloc.h -+++ b/src/3rdparty/chromium/third_party/vulkan_memory_allocator/include/vk_mem_alloc.h -@@ -122,6 +122,8 @@ See documentation chapter: \ref statistics. - */ - - -+#include -+ - #ifdef __cplusplus - extern "C" { - #endif -diff --git a/src/3rdparty/chromium/third_party/webrtc/modules/portal/xdg_session_details.h b/src/3rdparty/chromium/third_party/webrtc/modules/portal/xdg_session_details.h -index ab52508c2..050229a2f 100644 ---- a/src/3rdparty/chromium/third_party/webrtc/modules/portal/xdg_session_details.h -+++ b/src/3rdparty/chromium/third_party/webrtc/modules/portal/xdg_session_details.h -@@ -13,6 +13,7 @@ - - #include - -+#include - #include - - namespace webrtc { -diff --git a/src/3rdparty/chromium/ui/events/gesture_event_details.h b/src/3rdparty/chromium/ui/events/gesture_event_details.h -index b4f797bca..95b144fd1 100644 ---- a/src/3rdparty/chromium/ui/events/gesture_event_details.h -+++ b/src/3rdparty/chromium/ui/events/gesture_event_details.h -@@ -5,6 +5,7 @@ - #ifndef UI_EVENTS_GESTURE_EVENT_DETAILS_H_ - #define UI_EVENTS_GESTURE_EVENT_DETAILS_H_ - -+#include - #include - - #include "base/check_op.h" -diff --git a/src/3rdparty/chromium/ui/gfx/geometry/linear_gradient.h b/src/3rdparty/chromium/ui/gfx/geometry/linear_gradient.h -index 7239ed516..975b88c51 100644 ---- a/src/3rdparty/chromium/ui/gfx/geometry/linear_gradient.h -+++ b/src/3rdparty/chromium/ui/gfx/geometry/linear_gradient.h -@@ -7,6 +7,7 @@ - - #include - -+#include - #include - #include - #include -diff --git a/src/3rdparty/chromium/v8/src/base/macros.h b/src/3rdparty/chromium/v8/src/base/macros.h -index 488729dd5..d497f123d 100644 ---- a/src/3rdparty/chromium/v8/src/base/macros.h -+++ b/src/3rdparty/chromium/v8/src/base/macros.h -@@ -5,6 +5,7 @@ - #ifndef V8_BASE_MACROS_H_ - #define V8_BASE_MACROS_H_ - -+#include - #include - #include - -diff --git a/src/core/browsing_data_remover_delegate_qt.h b/src/core/browsing_data_remover_delegate_qt.h -index d33af4acb..ce864b6bd 100644 ---- a/src/core/browsing_data_remover_delegate_qt.h -+++ b/src/core/browsing_data_remover_delegate_qt.h -@@ -8,6 +8,8 @@ - - #include "content/public/browser/browsing_data_remover_delegate.h" - -+#include -+ - namespace QtWebEngineCore { - - class BrowsingDataRemoverDelegateQt : public content::BrowsingDataRemoverDelegate { diff --git a/qtwebengine-revert-create-eglimage.patch b/qtwebengine-revert-create-eglimage.patch index 2d4d6f9..cea6fa9 100644 --- a/qtwebengine-revert-create-eglimage.patch +++ b/qtwebengine-revert-create-eglimage.patch @@ -1,7 +1,48 @@ -diff -rupN qtwebengine-everywhere-src-6.9.2/src/core/ozone/egl_helper.cpp qtwebengine-everywhere-src-6.9.2-new/src/core/ozone/egl_helper.cpp ---- qtwebengine-everywhere-src-6.9.2/src/core/ozone/egl_helper.cpp 2025-08-18 02:53:11.000000000 +0200 -+++ qtwebengine-everywhere-src-6.9.2-new/src/core/ozone/egl_helper.cpp 2025-09-08 22:20:02.398760647 +0200 -@@ -58,14 +58,90 @@ static const char *getEGLErrorString(uin +From 3cc88e0f85113e38ccb1bfdadb7d150c2389b1bc Mon Sep 17 00:00:00 2001 +From: Moss Heim +Date: Thu, 11 Sep 2025 13:47:04 +0200 +Subject: [PATCH] Return to supporting eglCreateImage in EGLHelper::queryDmaBuf + +eglCreateDRMImageMESA was removed in mesa 25.2. +Keep using it where we can since this fixes support for +panthor/panfrost, otherwise fall back to the old use of EGL API. + +Includes a revert of the following commits: +Revert "Create EGLImage with eglCreateDRMImageMESA() for exporting dma_buf" +This reverts commit 2ed5f9632292c6e531f353dae800cb12274af91a. +Revert "Remove leftover QOffscreenSurface from EGLHelper" +This reverts commit bcee2dbf412cc655c1b467091b581c696d234e3f. + +Pick-to: 6.9 6.10 6.10.0 +Task-number: QTBUG-136257 +Task-number: QTBUG-139424 +Change-Id: Ie115bd6373ce0a80651781aa568405477010ee25 +Reviewed-by: Peter Varga +--- + src/core/ozone/egl_helper.cpp | 142 +++++++++++++++++++++++++++++++--- + src/core/ozone/egl_helper.h | 4 + + 2 files changed, 134 insertions(+), 12 deletions(-) + +diff --git a/src/core/ozone/egl_helper.cpp b/src/core/ozone/egl_helper.cpp +index 76e1c2a4663..68e45ffd446 100644 +--- a/src/core/ozone/egl_helper.cpp ++++ b/src/core/ozone/egl_helper.cpp +@@ -3,10 +3,14 @@ + // Qt-Security score:significant reason:default + + #include "egl_helper.h" ++ ++#include "compositor/compositor.h" + #include "ozone_util_qt.h" + #include "web_engine_context.h" + ++#include + #include ++#include + #include + #include + #include +@@ -57,6 +61,84 @@ static const char *getEGLErrorString(uint32_t error) QT_BEGIN_NAMESPACE @@ -86,23 +127,32 @@ diff -rupN qtwebengine-everywhere-src-6.9.2/src/core/ozone/egl_helper.cpp qtwebe EGLHelper::EGLFunctions::EGLFunctions() { QOpenGLContext *context = OzoneUtilQt::getQOpenGLContext(); - - eglCreateImage = - reinterpret_cast(context->getProcAddress("eglCreateImage")); -- eglCreateDRMImageMESA = reinterpret_cast( -- context->getProcAddress("eglCreateDRMImageMESA")); - eglDestroyImage = - reinterpret_cast(context->getProcAddress("eglDestroyImage")); - eglExportDMABUFImageMESA = reinterpret_cast( -@@ -122,7 +198,6 @@ EGLHelper::EGLHelper() +@@ -117,8 +199,23 @@ EGLHelper::EGLHelper() const char *displayExtensions = m_functions->eglQueryString(m_eglDisplay, EGL_EXTENSIONS); m_isDmaBufSupported = strstr(displayExtensions, "EGL_EXT_image_dma_buf_import") && strstr(displayExtensions, "EGL_EXT_image_dma_buf_import_modifiers") - && strstr(displayExtensions, "EGL_MESA_drm_image") && strstr(displayExtensions, "EGL_MESA_image_dma_buf_export"); ++ m_isCreateDRMImageMesaSupported = strstr(displayExtensions, "EGL_MESA_drm_image"); ++ if (!m_isDmaBufSupported) { ++ qCDebug(QtWebEngineCore::lcWebEngineCompositor, ++ "EGL: MESA extensions not found, will not use dma-buf"); ++ } else if (!m_isCreateDRMImageMesaSupported) { ++ qCDebug(QtWebEngineCore::lcWebEngineCompositor, ++ "EGL: MESA extensions found but missing EGL_MESA_drm_image, will use dma-buf, " ++ "some older graphics cards may not be supported"); ++ m_offscreenSurface.reset(new QOffscreenSurface()); ++ Q_ASSERT(QThread::currentThread() == qApp->thread()); ++ m_offscreenSurface->create(); ++ } else { ++ qCDebug(QtWebEngineCore::lcWebEngineCompositor, ++ "EGL: MESA extensions and EGL_MESA_drm_image found, will use dma-buf with GEM " ++ "buffer allocation"); ++ } } -@@ -143,17 +218,19 @@ void EGLHelper::queryDmaBuf(const int wi + // Try to create dma-buf. +@@ -138,17 +235,38 @@ void EGLHelper::queryDmaBuf(const int width, const int height, int *fd, int *str if (!m_isDmaBufSupported) return; @@ -115,39 +165,63 @@ diff -rupN qtwebengine-everywhere-src-6.9.2/src/core/ozone/egl_helper.cpp qtwebe - EGL_NONE - }; - // clang-format on -+ ScopedGLContext context(m_offscreenSurface.get(), m_functions.get()); -+ if (!context.isValid()) -+ return; -+ -+ EGLContext eglContext = context.eglContext(); -+ if (!eglContext) { -+ qWarning("EGL: No EGLContext."); -+ return; -+ } - +- - EGLImage eglImage = m_functions->eglCreateDRMImageMESA(m_eglDisplay, attribs); -+ uint64_t textureId = context.createTexture(width, height); -+ EGLImage eglImage = m_functions->eglCreateImage(m_eglDisplay, eglContext, EGL_GL_TEXTURE_2D, ++ EGLImage eglImage = EGL_NO_IMAGE; ++ // Probably doesn't need to live to the end of the function, but just in case. ++ std::unique_ptr glContext; ++ if (m_isCreateDRMImageMesaSupported) { ++ // This approach is slightly worse for security and no longer supported in mesa 25.2, ++ // but it allows us to keep support for the Panthor driver prior to that mesa version. ++ // clang-format off ++ EGLint attribs[] = { ++ EGL_WIDTH, width, ++ EGL_HEIGHT, height, ++ EGL_DRM_BUFFER_FORMAT_MESA, EGL_DRM_BUFFER_FORMAT_ARGB32_MESA, ++ EGL_DRM_BUFFER_USE_MESA, EGL_DRM_BUFFER_USE_SHARE_MESA, ++ EGL_NONE ++ }; ++ // clang-format on ++ eglImage = m_functions->eglCreateDRMImageMESA(m_eglDisplay, attribs); ++ } else { ++ glContext = std::make_unique(m_offscreenSurface.get(), m_functions.get()); ++ if (!glContext->isValid()) ++ return; ++ ++ EGLContext eglContext = glContext->eglContext(); ++ if (!eglContext) { ++ qWarning("EGL: No EGLContext."); ++ return; ++ } ++ ++ uint64_t textureId = glContext->createTexture(width, height); ++ eglImage = m_functions->eglCreateImage(m_eglDisplay, eglContext, EGL_GL_TEXTURE_2D, + (EGLClientBuffer)textureId, NULL); ++ } ++ if (eglImage == EGL_NO_IMAGE) { qWarning("EGL: Failed to create EGLImage: %s", getLastEGLErrorString()); return; -diff -rupN qtwebengine-everywhere-src-6.9.2/src/core/ozone/egl_helper.h qtwebengine-everywhere-src-6.9.2-new/src/core/ozone/egl_helper.h ---- qtwebengine-everywhere-src-6.9.2/src/core/ozone/egl_helper.h 2025-08-18 02:53:11.000000000 +0200 -+++ qtwebengine-everywhere-src-6.9.2-new/src/core/ozone/egl_helper.h 2025-09-08 22:20:02.399018856 +0200 -@@ -11,7 +11,6 @@ - #include +diff --git a/src/core/ozone/egl_helper.h b/src/core/ozone/egl_helper.h +index 6233ef87e4d..6e059baecb4 100644 +--- a/src/core/ozone/egl_helper.h ++++ b/src/core/ozone/egl_helper.h +@@ -25,6 +25,8 @@ - #undef eglCreateImage --#undef eglCreateDRMImageMESA - #undef eglDestroyImage - #undef eglExportDMABUFImageMESA - #undef eglExportDMABUFImageQueryMESA -@@ -34,7 +33,6 @@ public: - EGLFunctions(); + QT_BEGIN_NAMESPACE - PFNEGLCREATEIMAGEPROC eglCreateImage; -- PFNEGLCREATEDRMIMAGEMESAPROC eglCreateDRMImageMESA; - PFNEGLDESTROYIMAGEPROC eglDestroyImage; - PFNEGLEXPORTDMABUFIMAGEMESAPROC eglExportDMABUFImageMESA; - PFNEGLEXPORTDMABUFIMAGEQUERYMESAPROC eglExportDMABUFImageQueryMESA; ++class QOffscreenSurface; ++ + class EGLHelper + { + public: +@@ -59,7 +61,9 @@ class EGLHelper + + EGLDisplay m_eglDisplay = EGL_NO_DISPLAY; + QScopedPointer m_functions; ++ QScopedPointer m_offscreenSurface; + bool m_isDmaBufSupported = false; ++ bool m_isCreateDRMImageMesaSupported = false; + }; + + QT_END_NAMESPACE diff --git a/sources b/sources index 35d49ed..9c4c531 100644 --- a/sources +++ b/sources @@ -1,2 +1,2 @@ -SHA512 (qtwebengine-everywhere-src-6.10.0-rc-clean.tar.xz) = e22e59137525124deb112534cbf6447cfd9a07977593187489e21f452576f2614ee19c4137eef26a0f3a4d4382124417e089d22e9da40650e22456e3f00c34f3 +SHA512 (qtwebengine-everywhere-src-6.10.0-clean.tar.xz) = e0ab4073f85adeb4da521c718f09f5d8308d45bc2d714203182dc754b7ef9192c04548e222e6ba3118179bfe9c3403ccd3ce3116e84ec67c2e8e1a51bd0b0d30 SHA512 (pulseaudio-12.2-headers.tar.gz) = a5a9bcbb16030b3bc83cc0cc8f5e7f90e0723d3e83258a5c77eacb32eaa267118a73fa7814fbcc99a24e4907916a2b371ebb6dedc4f45541c3acf6c834fd35be From 100d0a81a69c8e48192b2975a1365b6e63d2949e Mon Sep 17 00:00:00 2001 From: Jan Grulich Date: Tue, 7 Oct 2025 15:13:09 +0200 Subject: [PATCH 63/76] 6.10.0 --- qt6-qtwebengine.spec | 7 +++++-- sources | 2 +- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/qt6-qtwebengine.spec b/qt6-qtwebengine.spec index 638cc70..5f82390 100644 --- a/qt6-qtwebengine.spec +++ b/qt6-qtwebengine.spec @@ -88,7 +88,7 @@ Summary: Qt6 - QtWebEngine components Name: qt6-qtwebengine Version: 6.10.0 -Release: 1%{?dist} +Release: 2%{?dist} # See LICENSE.GPL LICENSE.LGPL LGPL_EXCEPTION.txt, for details # See also http://qt-project.org/doc/qt-5.0/qtdoc/licensing.html @@ -845,6 +845,9 @@ done %endif %changelog +* Tue Oct 07 2025 Jan Grulich - 6.10.0-2 +- 6.10.0 + * Thu Sep 25 2025 Jan Grulich - 6.10.0~rc-1 - 6.10.0 RC @@ -926,7 +929,7 @@ done - 6.7.0 * Sun Mar 3 2024 Marie Loise Nolden - 6.6.2-3 -- move qt designer plugin to -devel +- move qt designer plugin to -devel - remove old doc package code (docs are in qt6-doc) * Mon Feb 19 2024 Jan Grulich - 6.6.2-2 diff --git a/sources b/sources index 9c4c531..605f7d5 100644 --- a/sources +++ b/sources @@ -1,2 +1,2 @@ -SHA512 (qtwebengine-everywhere-src-6.10.0-clean.tar.xz) = e0ab4073f85adeb4da521c718f09f5d8308d45bc2d714203182dc754b7ef9192c04548e222e6ba3118179bfe9c3403ccd3ce3116e84ec67c2e8e1a51bd0b0d30 +SHA512 (qtwebengine-everywhere-src-6.10.0-clean.tar.xz) = fa8271f6bb15a76e328fc1fe77afca8d23a6e6c6a47877b06e6cee46514f2daba8648c33bb33bded76d6f382e6549604f43d7c277eb534db5bc50d7afdde7d0f SHA512 (pulseaudio-12.2-headers.tar.gz) = a5a9bcbb16030b3bc83cc0cc8f5e7f90e0723d3e83258a5c77eacb32eaa267118a73fa7814fbcc99a24e4907916a2b371ebb6dedc4f45541c3acf6c834fd35be From c55df45eea9a4eea2e3d832dbc208cde7ae4acad Mon Sep 17 00:00:00 2001 From: Jan Grulich Date: Tue, 7 Oct 2025 19:06:47 +0200 Subject: [PATCH 64/76] Drop already upstream patch --- qt6-qtwebengine.spec | 7 - qtwebengine-revert-create-eglimage.patch | 227 ----------------------- 2 files changed, 234 deletions(-) delete mode 100644 qtwebengine-revert-create-eglimage.patch diff --git a/qt6-qtwebengine.spec b/qt6-qtwebengine.spec index 5f82390..95cd763 100644 --- a/qt6-qtwebengine.spec +++ b/qt6-qtwebengine.spec @@ -126,11 +126,6 @@ Patch3: qtwebengine-aarch64-new-stat.patch # Enable OpenH264 Patch4: qtwebengine-use-openh264.patch -# https://bugreports.qt.io/browse/QTBUG-139424 -# Revert commit bcee2dbf412cc655c1b467091b581c696d234e3f -# See also https://gitlab.archlinux.org/archlinux/packaging/packages/qt6-webengine/-/commit/74473e03e9d77895d22659914aa4ae91324a1f0a -Patch51: qtwebengine-revert-create-eglimage.patch - ## Upstream patches: # https://bugreports.qt.io/browse/QTBUG-129985 Patch80: qtwebengine-fix-arm-build.patch @@ -482,8 +477,6 @@ popd %patch -P3 -p1 -b .aarch64-new-stat %patch -P4 -p1 -b .use-openh264 -%patch -P51 -p1 -b .eglimage - ## upstream patches %patch -P80 -p1 -b .fix-arm-build diff --git a/qtwebengine-revert-create-eglimage.patch b/qtwebengine-revert-create-eglimage.patch deleted file mode 100644 index cea6fa9..0000000 --- a/qtwebengine-revert-create-eglimage.patch +++ /dev/null @@ -1,227 +0,0 @@ -From 3cc88e0f85113e38ccb1bfdadb7d150c2389b1bc Mon Sep 17 00:00:00 2001 -From: Moss Heim -Date: Thu, 11 Sep 2025 13:47:04 +0200 -Subject: [PATCH] Return to supporting eglCreateImage in EGLHelper::queryDmaBuf - -eglCreateDRMImageMESA was removed in mesa 25.2. -Keep using it where we can since this fixes support for -panthor/panfrost, otherwise fall back to the old use of EGL API. - -Includes a revert of the following commits: -Revert "Create EGLImage with eglCreateDRMImageMESA() for exporting dma_buf" -This reverts commit 2ed5f9632292c6e531f353dae800cb12274af91a. -Revert "Remove leftover QOffscreenSurface from EGLHelper" -This reverts commit bcee2dbf412cc655c1b467091b581c696d234e3f. - -Pick-to: 6.9 6.10 6.10.0 -Task-number: QTBUG-136257 -Task-number: QTBUG-139424 -Change-Id: Ie115bd6373ce0a80651781aa568405477010ee25 -Reviewed-by: Peter Varga ---- - src/core/ozone/egl_helper.cpp | 142 +++++++++++++++++++++++++++++++--- - src/core/ozone/egl_helper.h | 4 + - 2 files changed, 134 insertions(+), 12 deletions(-) - -diff --git a/src/core/ozone/egl_helper.cpp b/src/core/ozone/egl_helper.cpp -index 76e1c2a4663..68e45ffd446 100644 ---- a/src/core/ozone/egl_helper.cpp -+++ b/src/core/ozone/egl_helper.cpp -@@ -3,10 +3,14 @@ - // Qt-Security score:significant reason:default - - #include "egl_helper.h" -+ -+#include "compositor/compositor.h" - #include "ozone_util_qt.h" - #include "web_engine_context.h" - -+#include - #include -+#include - #include - #include - #include -@@ -57,6 +61,84 @@ static const char *getEGLErrorString(uint32_t error) - - QT_BEGIN_NAMESPACE - -+class ScopedGLContext -+{ -+public: -+ ScopedGLContext(QOffscreenSurface *surface, EGLHelper::EGLFunctions *eglFun) -+ : m_context(new QOpenGLContext()), m_eglFun(eglFun) -+ { -+ if ((m_previousEGLContext = m_eglFun->eglGetCurrentContext())) { -+ m_previousEGLDrawSurface = m_eglFun->eglGetCurrentSurface(EGL_DRAW); -+ m_previousEGLReadSurface = m_eglFun->eglGetCurrentSurface(EGL_READ); -+ m_previousEGLDisplay = m_eglFun->eglGetCurrentDisplay(); -+ } -+ -+ if (!m_context->create()) { -+ qWarning("Failed to create OpenGL context."); -+ return; -+ } -+ -+ Q_ASSERT(surface->isValid()); -+ if (!m_context->makeCurrent(surface)) { -+ qWarning("Failed to make OpenGL context current."); -+ return; -+ } -+ } -+ -+ ~ScopedGLContext() -+ { -+ if (!m_textures.empty()) { -+ auto *glFun = m_context->functions(); -+ glFun->glDeleteTextures(m_textures.size(), m_textures.data()); -+ } -+ -+ if (m_previousEGLContext) { -+ // Make sure the scoped context is not current when restoring the previous -+ // EGL context otherwise the QOpenGLContext destructor resets the restored -+ // current context. -+ m_context->doneCurrent(); -+ -+ m_eglFun->eglMakeCurrent(m_previousEGLDisplay, m_previousEGLDrawSurface, -+ m_previousEGLReadSurface, m_previousEGLContext); -+ if (m_eglFun->eglGetError() != EGL_SUCCESS) -+ qWarning("Failed to restore EGL context."); -+ } -+ } -+ -+ bool isValid() const { return m_context->isValid() && (m_context->surface() != nullptr); } -+ -+ EGLContext eglContext() const -+ { -+ QNativeInterface::QEGLContext *nativeInterface = -+ m_context->nativeInterface(); -+ return nativeInterface->nativeContext(); -+ } -+ -+ uint createTexture(int width, int height) -+ { -+ auto *glFun = m_context->functions(); -+ -+ uint glTexture; -+ glFun->glGenTextures(1, &glTexture); -+ glFun->glBindTexture(GL_TEXTURE_2D, glTexture); -+ glFun->glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, width, height, 0, GL_RGBA, GL_UNSIGNED_BYTE, -+ NULL); -+ glFun->glBindTexture(GL_TEXTURE_2D, 0); -+ -+ m_textures.push_back(glTexture); -+ return glTexture; -+ } -+ -+private: -+ QScopedPointer m_context; -+ EGLHelper::EGLFunctions *m_eglFun; -+ EGLContext m_previousEGLContext = nullptr; -+ EGLSurface m_previousEGLDrawSurface = nullptr; -+ EGLSurface m_previousEGLReadSurface = nullptr; -+ EGLDisplay m_previousEGLDisplay = nullptr; -+ std::vector m_textures; -+}; -+ - EGLHelper::EGLFunctions::EGLFunctions() - { - QOpenGLContext *context = OzoneUtilQt::getQOpenGLContext(); -@@ -117,8 +199,23 @@ EGLHelper::EGLHelper() - const char *displayExtensions = m_functions->eglQueryString(m_eglDisplay, EGL_EXTENSIONS); - m_isDmaBufSupported = strstr(displayExtensions, "EGL_EXT_image_dma_buf_import") - && strstr(displayExtensions, "EGL_EXT_image_dma_buf_import_modifiers") -- && strstr(displayExtensions, "EGL_MESA_drm_image") - && strstr(displayExtensions, "EGL_MESA_image_dma_buf_export"); -+ m_isCreateDRMImageMesaSupported = strstr(displayExtensions, "EGL_MESA_drm_image"); -+ if (!m_isDmaBufSupported) { -+ qCDebug(QtWebEngineCore::lcWebEngineCompositor, -+ "EGL: MESA extensions not found, will not use dma-buf"); -+ } else if (!m_isCreateDRMImageMesaSupported) { -+ qCDebug(QtWebEngineCore::lcWebEngineCompositor, -+ "EGL: MESA extensions found but missing EGL_MESA_drm_image, will use dma-buf, " -+ "some older graphics cards may not be supported"); -+ m_offscreenSurface.reset(new QOffscreenSurface()); -+ Q_ASSERT(QThread::currentThread() == qApp->thread()); -+ m_offscreenSurface->create(); -+ } else { -+ qCDebug(QtWebEngineCore::lcWebEngineCompositor, -+ "EGL: MESA extensions and EGL_MESA_drm_image found, will use dma-buf with GEM " -+ "buffer allocation"); -+ } - } - - // Try to create dma-buf. -@@ -138,17 +235,38 @@ void EGLHelper::queryDmaBuf(const int width, const int height, int *fd, int *str - if (!m_isDmaBufSupported) - return; - -- // clang-format off -- EGLint attribs[] = { -- EGL_WIDTH, width, -- EGL_HEIGHT, height, -- EGL_DRM_BUFFER_FORMAT_MESA, EGL_DRM_BUFFER_FORMAT_ARGB32_MESA, -- EGL_DRM_BUFFER_USE_MESA, EGL_DRM_BUFFER_USE_SHARE_MESA, -- EGL_NONE -- }; -- // clang-format on -- -- EGLImage eglImage = m_functions->eglCreateDRMImageMESA(m_eglDisplay, attribs); -+ EGLImage eglImage = EGL_NO_IMAGE; -+ // Probably doesn't need to live to the end of the function, but just in case. -+ std::unique_ptr glContext; -+ if (m_isCreateDRMImageMesaSupported) { -+ // This approach is slightly worse for security and no longer supported in mesa 25.2, -+ // but it allows us to keep support for the Panthor driver prior to that mesa version. -+ // clang-format off -+ EGLint attribs[] = { -+ EGL_WIDTH, width, -+ EGL_HEIGHT, height, -+ EGL_DRM_BUFFER_FORMAT_MESA, EGL_DRM_BUFFER_FORMAT_ARGB32_MESA, -+ EGL_DRM_BUFFER_USE_MESA, EGL_DRM_BUFFER_USE_SHARE_MESA, -+ EGL_NONE -+ }; -+ // clang-format on -+ eglImage = m_functions->eglCreateDRMImageMESA(m_eglDisplay, attribs); -+ } else { -+ glContext = std::make_unique(m_offscreenSurface.get(), m_functions.get()); -+ if (!glContext->isValid()) -+ return; -+ -+ EGLContext eglContext = glContext->eglContext(); -+ if (!eglContext) { -+ qWarning("EGL: No EGLContext."); -+ return; -+ } -+ -+ uint64_t textureId = glContext->createTexture(width, height); -+ eglImage = m_functions->eglCreateImage(m_eglDisplay, eglContext, EGL_GL_TEXTURE_2D, -+ (EGLClientBuffer)textureId, NULL); -+ } -+ - if (eglImage == EGL_NO_IMAGE) { - qWarning("EGL: Failed to create EGLImage: %s", getLastEGLErrorString()); - return; -diff --git a/src/core/ozone/egl_helper.h b/src/core/ozone/egl_helper.h -index 6233ef87e4d..6e059baecb4 100644 ---- a/src/core/ozone/egl_helper.h -+++ b/src/core/ozone/egl_helper.h -@@ -25,6 +25,8 @@ - - QT_BEGIN_NAMESPACE - -+class QOffscreenSurface; -+ - class EGLHelper - { - public: -@@ -59,7 +61,9 @@ class EGLHelper - - EGLDisplay m_eglDisplay = EGL_NO_DISPLAY; - QScopedPointer m_functions; -+ QScopedPointer m_offscreenSurface; - bool m_isDmaBufSupported = false; -+ bool m_isCreateDRMImageMesaSupported = false; - }; - - QT_END_NAMESPACE From 05d82bf6b04c03b564312a572aa6d957f5fda787 Mon Sep 17 00:00:00 2001 From: Jan Grulich Date: Sat, 25 Oct 2025 12:56:09 +0200 Subject: [PATCH 65/76] Add missing PipeWire headers --- qt6-qtwebengine.spec | 2 + ...bengine-add-missing-pipewire-headers.patch | 81 +++++++++++++++++++ 2 files changed, 83 insertions(+) create mode 100644 qtwebengine-add-missing-pipewire-headers.patch diff --git a/qt6-qtwebengine.spec b/qt6-qtwebengine.spec index 95cd763..17a2bd9 100644 --- a/qt6-qtwebengine.spec +++ b/qt6-qtwebengine.spec @@ -131,6 +131,7 @@ Patch4: qtwebengine-use-openh264.patch Patch80: qtwebengine-fix-arm-build.patch ## Upstreamable patches: +Patch100: qtwebengine-add-missing-pipewire-headers.patch ## ppc64le port Patch200: qtwebengine-6.9-ppc64.patch @@ -481,6 +482,7 @@ popd %patch -P80 -p1 -b .fix-arm-build ## upstreamable patches +%patch -P100 -p1 -b .add-missing-pipewire-headers # ppc64le support %patch -P200 -p1 diff --git a/qtwebengine-add-missing-pipewire-headers.patch b/qtwebengine-add-missing-pipewire-headers.patch new file mode 100644 index 0000000..94d0143 --- /dev/null +++ b/qtwebengine-add-missing-pipewire-headers.patch @@ -0,0 +1,81 @@ +diff --git a/src/3rdparty/chromium/third_party/webrtc/modules/video_capture/linux/pipewire_session.cc b/src/3rdparty/chromium/third_party/webrtc/modules/video_capture/linux/pipewire_session.cc +index cfe5350..4a28ebd 100644 +--- a/src/3rdparty/chromium/third_party/webrtc/modules/video_capture/linux/pipewire_session.cc ++++ b/src/3rdparty/chromium/third_party/webrtc/modules/video_capture/linux/pipewire_session.cc +@@ -10,11 +10,18 @@ + + #include "modules/video_capture/linux/pipewire_session.h" + ++#include + #include + #include + #include ++#include + #include +-#include ++#include ++#include ++#include ++#include ++#include ++#include + + #include + +diff --git a/src/3rdparty/chromium/third_party/webrtc/modules/video_capture/linux/pipewire_session.h b/src/3rdparty/chromium/third_party/webrtc/modules/video_capture/linux/pipewire_session.h +index 84273ea..825bb00 100644 +--- a/src/3rdparty/chromium/third_party/webrtc/modules/video_capture/linux/pipewire_session.h ++++ b/src/3rdparty/chromium/third_party/webrtc/modules/video_capture/linux/pipewire_session.h +@@ -11,8 +11,10 @@ + #ifndef MODULES_VIDEO_CAPTURE_LINUX_PIPEWIRE_SESSION_H_ + #define MODULES_VIDEO_CAPTURE_LINUX_PIPEWIRE_SESSION_H_ + +-#include + #include ++#include ++#include ++#include + + #include + #include +diff --git a/src/3rdparty/chromium/third_party/webrtc/modules/video_capture/linux/video_capture_pipewire.cc b/src/3rdparty/chromium/third_party/webrtc/modules/video_capture/linux/video_capture_pipewire.cc +index f6cd57a..b9c579d 100644 +--- a/src/3rdparty/chromium/third_party/webrtc/modules/video_capture/linux/video_capture_pipewire.cc ++++ b/src/3rdparty/chromium/third_party/webrtc/modules/video_capture/linux/video_capture_pipewire.cc +@@ -10,10 +10,21 @@ + + #include "modules/video_capture/linux/video_capture_pipewire.h" + ++#include ++#include ++#include ++#include + #include ++#include + #include ++#include + #include ++#include ++#include ++#include + #include ++#include ++#include + + #include + +diff --git a/src/3rdparty/chromium/third_party/webrtc/modules/video_capture/linux/video_capture_pipewire.h b/src/3rdparty/chromium/third_party/webrtc/modules/video_capture/linux/video_capture_pipewire.h +index 789f203..7c1f939 100644 +--- a/src/3rdparty/chromium/third_party/webrtc/modules/video_capture/linux/video_capture_pipewire.h ++++ b/src/3rdparty/chromium/third_party/webrtc/modules/video_capture/linux/video_capture_pipewire.h +@@ -11,6 +11,10 @@ + #ifndef MODULES_VIDEO_CAPTURE_LINUX_VIDEO_CAPTURE_PIPEWIRE_H_ + #define MODULES_VIDEO_CAPTURE_LINUX_VIDEO_CAPTURE_PIPEWIRE_H_ + ++#include ++#include ++#include ++ + #include "modules/video_capture/linux/pipewire_session.h" + #include "modules/video_capture/video_capture_defines.h" + #include "modules/video_capture/video_capture_impl.h" From 0b9b2b1bb9ce2b94900eded29890e47d6c916201 Mon Sep 17 00:00:00 2001 From: Jan Grulich Date: Thu, 30 Oct 2025 10:27:44 +0100 Subject: [PATCH 66/76] Fix FTBS in rawhide due to glib and PipeWire updates --- qt6-qtwebengine.spec | 10 ++++++- ...-chromium-141-glibc-2.42-SYS_SECCOMP.patch | 29 +++++++++++++++++++ 2 files changed, 38 insertions(+), 1 deletion(-) create mode 100644 qtwebengine-chromium-141-glibc-2.42-SYS_SECCOMP.patch diff --git a/qt6-qtwebengine.spec b/qt6-qtwebengine.spec index 17a2bd9..71e1ad1 100644 --- a/qt6-qtwebengine.spec +++ b/qt6-qtwebengine.spec @@ -88,7 +88,7 @@ Summary: Qt6 - QtWebEngine components Name: qt6-qtwebengine Version: 6.10.0 -Release: 2%{?dist} +Release: 3%{?dist} # See LICENSE.GPL LICENSE.LGPL LGPL_EXCEPTION.txt, for details # See also http://qt-project.org/doc/qt-5.0/qtdoc/licensing.html @@ -126,6 +126,10 @@ Patch3: qtwebengine-aarch64-new-stat.patch # Enable OpenH264 Patch4: qtwebengine-use-openh264.patch +# FTBFS - /usr/include/bits/siginfo-consts.h:219:3: error: expected identifier +# 219 | SYS_SECCOMP = 1, /* Seccomp triggered. */ +Patch5: qtwebengine-chromium-141-glibc-2.42-SYS_SECCOMP.patch + ## Upstream patches: # https://bugreports.qt.io/browse/QTBUG-129985 Patch80: qtwebengine-fix-arm-build.patch @@ -477,6 +481,7 @@ popd %patch -P2 -p1 -b .link-pipewire %patch -P3 -p1 -b .aarch64-new-stat %patch -P4 -p1 -b .use-openh264 +%patch -P5 -p1 -b .chromium-141-glibc-2.42-SYS_SECCOMP ## upstream patches %patch -P80 -p1 -b .fix-arm-build @@ -840,6 +845,9 @@ done %endif %changelog +* Thu Oct 30 2025 Jan Grulich - 6.10.0-3 +- Fix FTBS in rawhide due to glib and PipeWire updates + * Tue Oct 07 2025 Jan Grulich - 6.10.0-2 - 6.10.0 diff --git a/qtwebengine-chromium-141-glibc-2.42-SYS_SECCOMP.patch b/qtwebengine-chromium-141-glibc-2.42-SYS_SECCOMP.patch new file mode 100644 index 0000000..6c827bc --- /dev/null +++ b/qtwebengine-chromium-141-glibc-2.42-SYS_SECCOMP.patch @@ -0,0 +1,29 @@ +Fix FTBFS + +/usr/include/bits/siginfo-consts.h:219:3: error: expected identifier + 219 | SYS_SECCOMP = 1, /* Seccomp triggered. */ + | ^ +../../sandbox/linux/system_headers/linux_seccomp.h:220:39: note: expanded from macro 'SYS_SECCOMP' + 220 | #define SYS_SECCOMP 1 + | ^ +../../sandbox/linux/seccomp-bpf/trap.cc:159:46: error: use of undeclared identifier 'SYS_SECCOMP' + 159 | if (nr != LINUX_SIGSYS || info->si_code != SYS_SECCOMP || !ctx || + | ^~~~~~~~~~~ +/usr/include/bits/siginfo-consts.h:220:23: note: expanded from macro 'SYS_SECCOMP' + 220 | # define SYS_SECCOMP SYS_SECCOMP + +diff -up chromium-141.0.7390.122/src/3rdparty/chromium/sandbox/linux/system_headers/linux_seccomp.h.me chromium-141.0.7390.122/src/3rdparty/chromium/sandbox/linux/system_headers/linux_seccomp.h +--- chromium-141.0.7390.122/src/3rdparty/chromium/sandbox/linux/system_headers/linux_seccomp.h.me 2025-10-28 10:05:44.970248151 +0100 ++++ chromium-141.0.7390.122/src/3rdparty/chromium/sandbox/linux/system_headers/linux_seccomp.h 2025-10-28 10:05:52.291345772 +0100 +@@ -214,8 +214,11 @@ struct seccomp_notif_addfd { + #define SECCOMP_RET_INVALID 0x00010000U // Illegal return value + #endif + ++// check glibc version < 2.42 ++#if (__GLIBC__ < 2) || (__GLIBC__ == 2 && __GLIBC_MINOR__ < 42) + #ifndef SYS_SECCOMP + #define SYS_SECCOMP 1 + #endif ++#endif + + #endif // SANDBOX_LINUX_SYSTEM_HEADERS_LINUX_SECCOMP_H_ From 5ebad15d9b73b3ee20f1eb178e366b8e5e3d9522 Mon Sep 17 00:00:00 2001 From: Dominik 'Rathann' Mierzejewski Date: Thu, 30 Oct 2025 12:38:03 +0100 Subject: [PATCH 67/76] Rebuilt for FFmpeg 8 --- qt6-qtwebengine.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/qt6-qtwebengine.spec b/qt6-qtwebengine.spec index 71e1ad1..a2d02aa 100644 --- a/qt6-qtwebengine.spec +++ b/qt6-qtwebengine.spec @@ -88,7 +88,7 @@ Summary: Qt6 - QtWebEngine components Name: qt6-qtwebengine Version: 6.10.0 -Release: 3%{?dist} +Release: 4%{?dist} # See LICENSE.GPL LICENSE.LGPL LGPL_EXCEPTION.txt, for details # See also http://qt-project.org/doc/qt-5.0/qtdoc/licensing.html @@ -845,6 +845,9 @@ done %endif %changelog +* Thu Oct 30 2025 Dominik Mierzejewski - 6.10.0-4 +- Rebuilt for FFmpeg 8 + * Thu Oct 30 2025 Jan Grulich - 6.10.0-3 - Fix FTBS in rawhide due to glib and PipeWire updates From bce7c7ba947ba809a468244e4cb1d4545d3cb7b9 Mon Sep 17 00:00:00 2001 From: Jan Grulich Date: Thu, 20 Nov 2025 18:33:32 +0100 Subject: [PATCH 68/76] 6.10.1 --- .gitignore | 1 + qt6-qtwebengine.spec | 7 +++++-- sources | 2 +- 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/.gitignore b/.gitignore index 728b7fc..d9b9799 100644 --- a/.gitignore +++ b/.gitignore @@ -20,3 +20,4 @@ /qtwebengine-everywhere-src-6.9.2-clean.tar.xz /qtwebengine-everywhere-src-6.10.0-rc-clean.tar.xz /qtwebengine-everywhere-src-6.10.0-clean.tar.xz +/qtwebengine-everywhere-src-6.10.1-clean.tar.xz diff --git a/qt6-qtwebengine.spec b/qt6-qtwebengine.spec index a2d02aa..efd6363 100644 --- a/qt6-qtwebengine.spec +++ b/qt6-qtwebengine.spec @@ -87,8 +87,8 @@ Summary: Qt6 - QtWebEngine components Name: qt6-qtwebengine -Version: 6.10.0 -Release: 4%{?dist} +Version: 6.10.1 +Release: 1%{?dist} # See LICENSE.GPL LICENSE.LGPL LGPL_EXCEPTION.txt, for details # See also http://qt-project.org/doc/qt-5.0/qtdoc/licensing.html @@ -845,6 +845,9 @@ done %endif %changelog +* Thu Nov 20 2025 Jan Grulich - 6.10.1-1 +- 6.10.1 + * Thu Oct 30 2025 Dominik Mierzejewski - 6.10.0-4 - Rebuilt for FFmpeg 8 diff --git a/sources b/sources index 605f7d5..3d8dace 100644 --- a/sources +++ b/sources @@ -1,2 +1,2 @@ -SHA512 (qtwebengine-everywhere-src-6.10.0-clean.tar.xz) = fa8271f6bb15a76e328fc1fe77afca8d23a6e6c6a47877b06e6cee46514f2daba8648c33bb33bded76d6f382e6549604f43d7c277eb534db5bc50d7afdde7d0f SHA512 (pulseaudio-12.2-headers.tar.gz) = a5a9bcbb16030b3bc83cc0cc8f5e7f90e0723d3e83258a5c77eacb32eaa267118a73fa7814fbcc99a24e4907916a2b371ebb6dedc4f45541c3acf6c834fd35be +SHA512 (qtwebengine-everywhere-src-6.10.1-clean.tar.xz) = c297c030623663dce4943562ca60ac64067702dd96b487f5786fb765c477162ee7d040e6ecb4b820ff9ef162259e1f56bd1054e20e0982fef90fa32857a462c9 From 586037da1be4af669e3858796804649feff1f7b3 Mon Sep 17 00:00:00 2001 From: Jan Grulich Date: Thu, 20 Nov 2025 22:42:58 +0100 Subject: [PATCH 69/76] Rebase PipeWire patch --- ...bengine-add-missing-pipewire-headers.patch | 30 ++----------------- 1 file changed, 3 insertions(+), 27 deletions(-) diff --git a/qtwebengine-add-missing-pipewire-headers.patch b/qtwebengine-add-missing-pipewire-headers.patch index 94d0143..d30ab52 100644 --- a/qtwebengine-add-missing-pipewire-headers.patch +++ b/qtwebengine-add-missing-pipewire-headers.patch @@ -1,29 +1,5 @@ -diff --git a/src/3rdparty/chromium/third_party/webrtc/modules/video_capture/linux/pipewire_session.cc b/src/3rdparty/chromium/third_party/webrtc/modules/video_capture/linux/pipewire_session.cc -index cfe5350..4a28ebd 100644 ---- a/src/3rdparty/chromium/third_party/webrtc/modules/video_capture/linux/pipewire_session.cc -+++ b/src/3rdparty/chromium/third_party/webrtc/modules/video_capture/linux/pipewire_session.cc -@@ -10,11 +10,18 @@ - - #include "modules/video_capture/linux/pipewire_session.h" - -+#include - #include - #include - #include -+#include - #include --#include -+#include -+#include -+#include -+#include -+#include -+#include - - #include - diff --git a/src/3rdparty/chromium/third_party/webrtc/modules/video_capture/linux/pipewire_session.h b/src/3rdparty/chromium/third_party/webrtc/modules/video_capture/linux/pipewire_session.h -index 84273ea..825bb00 100644 +index 84273ea695..825bb0000a 100644 --- a/src/3rdparty/chromium/third_party/webrtc/modules/video_capture/linux/pipewire_session.h +++ b/src/3rdparty/chromium/third_party/webrtc/modules/video_capture/linux/pipewire_session.h @@ -11,8 +11,10 @@ @@ -39,7 +15,7 @@ index 84273ea..825bb00 100644 #include #include diff --git a/src/3rdparty/chromium/third_party/webrtc/modules/video_capture/linux/video_capture_pipewire.cc b/src/3rdparty/chromium/third_party/webrtc/modules/video_capture/linux/video_capture_pipewire.cc -index f6cd57a..b9c579d 100644 +index f6cd57ac36..b9c579d2e3 100644 --- a/src/3rdparty/chromium/third_party/webrtc/modules/video_capture/linux/video_capture_pipewire.cc +++ b/src/3rdparty/chromium/third_party/webrtc/modules/video_capture/linux/video_capture_pipewire.cc @@ -10,10 +10,21 @@ @@ -65,7 +41,7 @@ index f6cd57a..b9c579d 100644 #include diff --git a/src/3rdparty/chromium/third_party/webrtc/modules/video_capture/linux/video_capture_pipewire.h b/src/3rdparty/chromium/third_party/webrtc/modules/video_capture/linux/video_capture_pipewire.h -index 789f203..7c1f939 100644 +index 789f2034d3..7c1f9390fc 100644 --- a/src/3rdparty/chromium/third_party/webrtc/modules/video_capture/linux/video_capture_pipewire.h +++ b/src/3rdparty/chromium/third_party/webrtc/modules/video_capture/linux/video_capture_pipewire.h @@ -11,6 +11,10 @@ From fe6ef1ccdf8d1a96aeddb18a5a65c8205746c7d5 Mon Sep 17 00:00:00 2001 From: Jan Grulich Date: Fri, 21 Nov 2025 07:59:29 +0100 Subject: [PATCH 70/76] Rebuild for Koji infra issue --- qt6-qtwebengine.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/qt6-qtwebengine.spec b/qt6-qtwebengine.spec index efd6363..0596870 100644 --- a/qt6-qtwebengine.spec +++ b/qt6-qtwebengine.spec @@ -88,7 +88,7 @@ Summary: Qt6 - QtWebEngine components Name: qt6-qtwebengine Version: 6.10.1 -Release: 1%{?dist} +Release: 2%{?dist} # See LICENSE.GPL LICENSE.LGPL LGPL_EXCEPTION.txt, for details # See also http://qt-project.org/doc/qt-5.0/qtdoc/licensing.html @@ -845,6 +845,9 @@ done %endif %changelog +* Fri Nov 21 2025 Jan Grulich - 6.10.1-2 +- Rebuild for Koji infra issue + * Thu Nov 20 2025 Jan Grulich - 6.10.1-1 - 6.10.1 From 2933153067fa67d31842f9cd6b860cfde7fa280d Mon Sep 17 00:00:00 2001 From: Jan Grulich Date: Fri, 21 Nov 2025 11:16:01 +0100 Subject: [PATCH 71/76] Apply glib patchc only on F43+ --- qt6-qtwebengine.spec | 2 ++ 1 file changed, 2 insertions(+) diff --git a/qt6-qtwebengine.spec b/qt6-qtwebengine.spec index 0596870..eef3fdd 100644 --- a/qt6-qtwebengine.spec +++ b/qt6-qtwebengine.spec @@ -481,7 +481,9 @@ popd %patch -P2 -p1 -b .link-pipewire %patch -P3 -p1 -b .aarch64-new-stat %patch -P4 -p1 -b .use-openh264 +%if 0%{?fedora} > 43 %patch -P5 -p1 -b .chromium-141-glibc-2.42-SYS_SECCOMP +%endif ## upstream patches %patch -P80 -p1 -b .fix-arm-build From 5cba9df9f5fe02b4e5d2c2b8717e2fb5af742f98 Mon Sep 17 00:00:00 2001 From: Jan Grulich Date: Thu, 8 Jan 2026 08:39:35 +0100 Subject: [PATCH 72/76] Move GPU info logging into the GPU thread --- qt6-qtwebengine.spec | 7 +- ...-move-gpu-info-logging-to-gpu-thread.patch | 607 ++++++++++++++++++ 2 files changed, 613 insertions(+), 1 deletion(-) create mode 100644 qtwebengine-move-gpu-info-logging-to-gpu-thread.patch diff --git a/qt6-qtwebengine.spec b/qt6-qtwebengine.spec index eef3fdd..cf815e9 100644 --- a/qt6-qtwebengine.spec +++ b/qt6-qtwebengine.spec @@ -88,7 +88,7 @@ Summary: Qt6 - QtWebEngine components Name: qt6-qtwebengine Version: 6.10.1 -Release: 2%{?dist} +Release: 3%{?dist} # See LICENSE.GPL LICENSE.LGPL LGPL_EXCEPTION.txt, for details # See also http://qt-project.org/doc/qt-5.0/qtdoc/licensing.html @@ -133,6 +133,8 @@ Patch5: qtwebengine-chromium-141-glibc-2.42-SYS_SECCOMP.patch ## Upstream patches: # https://bugreports.qt.io/browse/QTBUG-129985 Patch80: qtwebengine-fix-arm-build.patch +# https://codereview.qt-project.org/c/qt/qtwebengine/+/702597 +Patch81: qtwebengine-move-gpu-info-logging-to-gpu-thread.patch ## Upstreamable patches: Patch100: qtwebengine-add-missing-pipewire-headers.patch @@ -847,6 +849,9 @@ done %endif %changelog +* Thu Jan 08 2026 Jan Grulich - 6.10.1-3 +- Move GPU info logging into the GPU thread + * Fri Nov 21 2025 Jan Grulich - 6.10.1-2 - Rebuild for Koji infra issue diff --git a/qtwebengine-move-gpu-info-logging-to-gpu-thread.patch b/qtwebengine-move-gpu-info-logging-to-gpu-thread.patch new file mode 100644 index 0000000..3d64eff --- /dev/null +++ b/qtwebengine-move-gpu-info-logging-to-gpu-thread.patch @@ -0,0 +1,607 @@ +From 1534a75e57b47d763af8f32eec91bc8471442816 Mon Sep 17 00:00:00 2001 +From: Peter Varga +Date: Mon, 20 Oct 2025 10:43:49 +0200 +Subject: [PATCH] Move GPU info logging to the GPU thread + +Accessing certain GPU information (eg. GPU feature status values) from +the browser thread requires extra API on top of Chromium, such as +content::GpuChildThread::gpu_channel_manager(). + +This change moves the logging to the GPU thread, allowing use of +existing APIs like content::GpuDataManager::GetFeatureStatus(). + +Task-number: QTBUG-139335 +Fixes: QTBUG-142497 +Fixes: QTBUG-142720 +Change-Id: I4e4471a78258a1502ec0e11683cae3936e170ce1 +Reviewed-by: Moss Heim +(cherry picked from commit 0b65b0754d1534280acc3fe48be61127ce24ac93) +--- + +diff --git a/src/core/CMakeLists.txt b/src/core/CMakeLists.txt +index 64ef09f..eb83a82 100644 +--- a/src/core/CMakeLists.txt ++++ b/src/core/CMakeLists.txt +@@ -132,6 +132,7 @@ + file_system_access/file_system_access_permission_request_manager_qt.cpp file_system_access/file_system_access_permission_request_manager_qt.h + find_text_helper.cpp find_text_helper.h + global_descriptors_qt.h ++ gpu/content_gpu_client_qt.cpp gpu/content_gpu_client_qt.h + javascript_dialog_controller.cpp javascript_dialog_controller.h javascript_dialog_controller_p.h + javascript_dialog_manager_qt.cpp javascript_dialog_manager_qt.h + login_delegate_qt.cpp login_delegate_qt.h +diff --git a/src/core/content_client_qt.cpp b/src/core/content_client_qt.cpp +index 4d81e39..ed63980 100644 +--- a/src/core/content_client_qt.cpp ++++ b/src/core/content_client_qt.cpp +@@ -4,8 +4,6 @@ + + #include "content_client_qt.h" + +-#include "compositor/compositor.h" +- + #include "base/command_line.h" + #include "base/files/file_util.h" + #include "base/json/json_string_value_serializer.h" +@@ -13,15 +11,11 @@ + #include "base/strings/string_util.h" + #include "base/values.h" + #include "base/version.h" +-#include "content/gpu/gpu_child_thread.h" + #include "content/public/common/cdm_info.h" + #include "content/public/common/content_constants.h" + #include "content/public/common/content_switches.h" + #include "extensions/buildflags/buildflags.h" + #include "extensions/common/constants.h" +-#include "gpu/config/gpu_feature_info.h" +-#include "gpu/config/gpu_preferences.h" +-#include "gpu/ipc/service/gpu_channel_manager.h" + #include "media/base/media_switches.h" + #include "media/base/video_codecs.h" + #include "media/cdm/supported_audio_codecs.h" +@@ -34,10 +28,8 @@ + #include + #include + #include +-#include + #include + #include +-#include + + #if BUILDFLAG(IS_WIN) + #include "ui/gl/gl_utils.h" +@@ -497,165 +489,4 @@ + return origin_trial_policy_.get(); + } + +-void ContentClientQt::SetGpuInfo(const gpu::GPUInfo &gpu_info) +-{ +- base::CommandLine *commandLine = base::CommandLine::ForCurrentProcess(); +- const bool isBrowserProcess = !commandLine->HasSwitch(switches::kProcessType); +- const bool isMainThread = QThread::currentThread() == qApp->thread(); +- +- // Limit this to the main thread of the browser process for now. +- if (!isBrowserProcess || !isMainThread) +- return; +- +- if (!gpu_info.IsInitialized()) { +- // This is probably not an issue but suspicious. +- qWarning("Failed to initialize GPUInfo."); +- return; +- } +- +- const gpu::GPUInfo::GPUDevice &primary = gpu_info.gpu; +- +- // Do not print the info again if the device hasn't been changed. +- // Change of the device is unexpected: we don't support or implement fallback yet. +- // It is suspicious if the info is logged twice. +- if (m_gpuInfo && m_gpuInfo->gpu.device_string == primary.device_string) +- return; +- m_gpuInfo = gpu_info; +- +- auto *gpuChannelManager = content::GpuChildThread::instance()->gpu_channel_manager(); +- const gpu::GpuFeatureStatus gpuCompositingStatus = +- gpuChannelManager->gpu_feature_info() +- .status_values[gpu::GPU_FEATURE_TYPE_ACCELERATED_GL]; +- +-#if BUILDFLAG(IS_OZONE) +- if (gpuCompositingStatus == gpu::kGpuFeatureStatusEnabled) { +- // See entry 3 in //gpu/config/software_rendering_list.json +- QRegularExpression filter(u"software|llvmpipe|softpipe"_s, +- QRegularExpression::CaseInsensitiveOption); +- if (filter.match(QLatin1StringView(gpu_info.gl_renderer)).hasMatch()) { +- qWarning("Hardware rendering is enabled but it is not supported with Mesa software " +- "rasterizer. Expect troubles."); +- +- if (gpuChannelManager->gpu_preferences().ignore_gpu_blocklist) +- qWarning("Rendering may fail because --ignore-gpu-blocklist is set."); +- } +- } +-#endif +- +- if (Q_LIKELY(!lcWebEngineCompositor().isDebugEnabled())) +- return; +- +- auto deviceToString = [](const gpu::GPUInfo::GPUDevice &device) -> QString { +- if (device.vendor_id == 0x0) +- return "Disabled"_L1; +- +- QString log; +- +- // TODO: Factor vendor translation out from QtWebEngineCore::GPUInfo. +- // Only name the most common desktop GPU hardware vendors for now. +- switch (device.vendor_id) { +- case 0x1002: +- log += "AMD"_L1; +- break; +- case 0x10DE: +- log += "Nvidia"_L1; +- break; +- case 0x8086: +- log += "Intel"_L1; +- break; +- default: +- log += "vendor id: 0x"_L1 + QString::number(device.vendor_id, 16); +- } +- +- log += ", device id: 0x"_L1 + QString::number(device.device_id, 16); +- +- if (!device.driver_vendor.empty()) { +- log += ", driver: "_L1 + QLatin1StringView(device.driver_vendor) + u' ' +- + QLatin1StringView(device.driver_version); +- } +- log += ", system device id: 0x"_L1 + QString::number(device.system_device_id, 16); +- +- log += ", preference: "_L1; +- switch (device.gpu_preference) { +- case gl::GpuPreference::kNone: +- log += "None"_L1; +- break; +- case gl::GpuPreference::kDefault: +- log += "Default"_L1; +- break; +- case gl::GpuPreference::kLowPower: +- log += "LowPower"_L1; +- break; +- case gl::GpuPreference::kHighPerformance: +- log += "HighPerformance"_L1; +- break; +- } +- +- log += ", active: "_L1 + (device.active ? "yes"_L1 : "no"_L1); +- return log; +- }; +- +- QString log; +- +- log = "GPU Compositing: "; +- switch (gpuCompositingStatus) { +- case gpu::kGpuFeatureStatusEnabled: +- log += "Enabled"_L1; +- break; +- case gpu::kGpuFeatureStatusBlocklisted: +- log += "Blocklisted"_L1; +- break; +- case gpu::kGpuFeatureStatusDisabled: +- log += "Disabled"_L1; +- break; +- case gpu::kGpuFeatureStatusSoftware: +- log += "Software"_L1; +- break; +- case gpu::kGpuFeatureStatusUndefined: +- log += "Undefined"_L1; +- break; +- case gpu::kGpuFeatureStatusMax: +- log += "Max"_L1; +- break; +- } +- qCDebug(lcWebEngineCompositor, "%ls", qUtf16Printable(log)); +- +- if (gpu_info.gl_vendor.empty() || gpu_info.gl_vendor == "Disabled") { +- log = "ANGLE is disabled:\n"_L1; +- log += " GL Renderer: "_L1 + QLatin1StringView(gpu_info.gl_renderer) + u'\n'; +- log += " Software Renderer: "_L1 + (primary.IsSoftwareRenderer() ? "yes"_L1 : "no"_L1) +- + u'\n'; +- log += " Primary GPU: "_L1 + deviceToString(primary) + u'\n'; +- } else { +- log = QLatin1StringView(gpu_info.display_type) + " display is initialized:\n"_L1; +- log += " GL Renderer: "_L1 + QLatin1StringView(gpu_info.gl_renderer) + u'\n'; +- log += " "_L1 + QString::number(gpu_info.GpuCount()) + " GPU(s) detected:\n"_L1; +- log += " "_L1 + deviceToString(primary) + u'\n'; +- for (auto &secondary : gpu_info.secondary_gpus) +- log += " "_L1 + deviceToString(secondary) + u'\n'; +- +- log += " NVIDIA Optimus: "_L1 + (gpu_info.optimus ? "enabled"_L1 : "disabled"_L1) + u'\n'; +- log += " AMD Switchable: "_L1 + (gpu_info.amd_switchable ? "enabled"_L1 : "disabled"_L1); +- } +- +- qCDebug(lcWebEngineCompositor, "%ls", qUtf16Printable(log)); +- +-#if BUILDFLAG(IS_WIN) +- log = "Windows specific driver information:\n"_L1; +- +- log += " Direct Composition: "_L1; +- if (gpu_info.overlay_info.direct_composition) +- log += "enabled\n"_L1; +- else if (gl::GetGlWorkarounds().disable_direct_composition) +- log += "disabled by workaround\n"_L1; +- else +- log += "disabled\n"_L1; +- +- log += " Supports Overlays: "_L1 +- + (gpu_info.overlay_info.supports_overlays ? "yes"_L1 : "no"_L1) + u'\n'; +- log += " Supports D3D Shared Images: "_L1 + (gpu_info.shared_image_d3d ? "yes"_L1 : "no"_L1); +- qCDebug(lcWebEngineCompositor, "%ls", qUtf16Printable(log)); +-#endif +-} +- + } // namespace QtWebEngineCore +diff --git a/src/core/content_client_qt.h b/src/core/content_client_qt.h +index 2936c23..d5f9e71 100644 +--- a/src/core/content_client_qt.h ++++ b/src/core/content_client_qt.h +@@ -10,11 +10,9 @@ + #include "base/synchronization/lock.h" + #include "components/embedder_support/origin_trials/origin_trial_policy_impl.h" + #include "content/public/common/content_client.h" +-#include "gpu/config/gpu_info.h" + #include "ui/base/layout.h" + + #include +-#include + + namespace QtWebEngineCore { + +@@ -32,13 +30,11 @@ + gfx::Image &GetNativeImageNamed(int resource_id) override; + std::u16string GetLocalizedString(int message_id) override; + blink::OriginTrialPolicy *GetOriginTrialPolicy() override; +- void SetGpuInfo(const gpu::GPUInfo &gpu_info) override; + + private: + // Used to lock when |origin_trial_policy_| is initialized. + base::Lock origin_trial_policy_lock_; + std::unique_ptr origin_trial_policy_; +- std::optional m_gpuInfo; + }; + + } // namespace QtWebEngineCore +diff --git a/src/core/content_main_delegate_qt.cpp b/src/core/content_main_delegate_qt.cpp +index 6c61c7a..1512f9a 100644 +--- a/src/core/content_main_delegate_qt.cpp ++++ b/src/core/content_main_delegate_qt.cpp +@@ -194,6 +194,12 @@ + return m_browserClient.get(); + } + ++content::ContentGpuClient *ContentMainDelegateQt::CreateContentGpuClient() ++{ ++ m_gpuClient.reset(new ContentGpuClientQt); ++ return m_gpuClient.get(); ++} ++ + content::ContentRendererClient *ContentMainDelegateQt::CreateContentRendererClient() + { + #if BUILDFLAG(IS_LINUX) +diff --git a/src/core/content_main_delegate_qt.h b/src/core/content_main_delegate_qt.h +index cb320ec..b725d88 100644 +--- a/src/core/content_main_delegate_qt.h ++++ b/src/core/content_main_delegate_qt.h +@@ -10,6 +10,7 @@ + #include "content_browser_client_qt.h" + #include "content_client_qt.h" + #include "content_utility_client_qt.h" ++#include "gpu/content_gpu_client_qt.h" + + namespace QtWebEngineCore { + +@@ -23,6 +24,7 @@ + + content::ContentClient *CreateContentClient() override; + content::ContentBrowserClient* CreateContentBrowserClient() override; ++ content::ContentGpuClient* CreateContentGpuClient() override; + content::ContentRendererClient* CreateContentRendererClient() override; + content::ContentUtilityClient* CreateContentUtilityClient() override; + std::optional BasicStartupComplete() override; +@@ -30,6 +32,7 @@ + private: + ContentClientQt m_contentClient; + std::unique_ptr m_browserClient; ++ std::unique_ptr m_gpuClient; + std::unique_ptr m_utilityClient; + }; + +diff --git a/src/core/gpu/content_gpu_client_qt.cpp b/src/core/gpu/content_gpu_client_qt.cpp +new file mode 100644 +index 0000000..2cb6592 +--- /dev/null ++++ b/src/core/gpu/content_gpu_client_qt.cpp +@@ -0,0 +1,236 @@ ++// Copyright (C) 2025 The Qt Company Ltd. ++// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only ++// Qt-Security score:significant reason:default ++ ++#include "content_gpu_client_qt.h" ++ ++#include "compositor/compositor.h" ++ ++#include "content/public/browser/browser_thread.h" ++#include "content/public/browser/gpu_data_manager.h" ++#include "content/public/browser/gpu_data_manager_observer.h" ++#include "gpu/config/gpu_driver_bug_workarounds.h" ++#include "gpu/config/gpu_info.h" ++#include "mojo/public/cpp/bindings/binder_map.h" ++ ++#include ++#include ++ ++#include ++#include ++ ++#if BUILDFLAG(IS_WIN) ++#include "ui/gl/gl_utils.h" ++#endif ++ ++using namespace Qt::StringLiterals; ++ ++namespace QtWebEngineCore { ++ ++namespace { ++static inline bool isSameDevice(const gpu::GPUInfo::GPUDevice &d1, ++ const gpu::GPUInfo::GPUDevice &d2) ++{ ++ return std::tie(d1.vendor_id, d1.device_id, d1.system_device_id, d1.vendor_string, ++ d1.device_string, d1.driver_vendor, d1.driver_version) ++ == std::tie(d2.vendor_id, d2.device_id, d2.system_device_id, d2.vendor_string, ++ d2.device_string, d2.driver_vendor, d2.driver_version); ++} ++ ++static QString gpuDeviceToString(const gpu::GPUInfo::GPUDevice &device) ++{ ++ if (device.vendor_id == 0x0) ++ return "Disabled"_L1; ++ ++ QString deviceString; ++ ++ // TODO: Factor vendor translation out from QtWebEngineCore::GPUInfo. ++ // Only name the most common desktop GPU hardware vendors for now. ++ switch (device.vendor_id) { ++ case 0x1002: ++ deviceString += "AMD"_L1; ++ break; ++ case 0x10DE: ++ deviceString += "Nvidia"_L1; ++ break; ++ case 0x8086: ++ deviceString += "Intel"_L1; ++ break; ++ default: ++ deviceString += "vendor id: 0x"_L1 + QString::number(device.vendor_id, 16); ++ } ++ ++ deviceString += ", device id: 0x"_L1 + QString::number(device.device_id, 16); ++ ++ if (!device.driver_vendor.empty()) { ++ deviceString += ", driver: "_L1 + QLatin1StringView(device.driver_vendor) + u' ' ++ + QLatin1StringView(device.driver_version); ++ } ++ deviceString += ", system device id: 0x"_L1 + QString::number(device.system_device_id, 16); ++ ++ deviceString += ", preference: "_L1; ++ switch (device.gpu_preference) { ++ case gl::GpuPreference::kNone: ++ deviceString += "None"_L1; ++ break; ++ case gl::GpuPreference::kDefault: ++ deviceString += "Default"_L1; ++ break; ++ case gl::GpuPreference::kLowPower: ++ deviceString += "LowPower"_L1; ++ break; ++ case gl::GpuPreference::kHighPerformance: ++ deviceString += "HighPerformance"_L1; ++ break; ++ } ++ ++ deviceString += ", active: "_L1 + (device.active ? "yes"_L1 : "no"_L1); ++ return deviceString; ++} ++ ++static inline const char *gpuFeatureStatusToString(const gpu::GpuFeatureStatus &status) ++{ ++ switch (status) { ++ case gpu::kGpuFeatureStatusEnabled: ++ return "Enabled"; ++ case gpu::kGpuFeatureStatusBlocklisted: ++ return "Blocklisted"; ++ case gpu::kGpuFeatureStatusDisabled: ++ return "Disabled"; ++ case gpu::kGpuFeatureStatusSoftware: ++ return "Software"; ++ case gpu::kGpuFeatureStatusUndefined: ++ return "Undefined"; ++ case gpu::kGpuFeatureStatusMax: ++ return "Max"; ++ } ++} ++ ++static QString angleInfo(const gpu::GPUInfo &gpuInfo) ++{ ++ QString info; ++ ++ if (gpuInfo.gl_vendor.empty() || gpuInfo.gl_vendor == "Disabled") { ++ info = "ANGLE is disabled:\n"_L1; ++ info += " GL Renderer: "_L1 + QLatin1StringView(gpuInfo.gl_renderer) + u'\n'; ++ info += " Software Renderer: "_L1 + (gpuInfo.gpu.IsSoftwareRenderer() ? "yes"_L1 : "no"_L1) ++ + u'\n'; ++ info += " Primary GPU: "_L1 + gpuDeviceToString(gpuInfo.gpu) + u'\n'; ++ return info; ++ } ++ ++ info = QLatin1StringView(gpuInfo.display_type) + " display is initialized:\n"_L1; ++ info += " GL Renderer: "_L1 + QLatin1StringView(gpuInfo.gl_renderer) + u'\n'; ++ info += " "_L1 + QString::number(gpuInfo.GpuCount()) + " GPU(s) detected:\n"_L1; ++ info += " "_L1 + gpuDeviceToString(gpuInfo.gpu) + u'\n'; ++ for (auto &secondary : gpuInfo.secondary_gpus) ++ info += " "_L1 + gpuDeviceToString(secondary) + u'\n'; ++ ++ info += " NVIDIA Optimus: "_L1 + (gpuInfo.optimus ? "enabled"_L1 : "disabled"_L1) + u'\n'; ++ info += " AMD Switchable: "_L1 + (gpuInfo.amd_switchable ? "enabled"_L1 : "disabled"_L1); ++ ++ return info; ++} ++ ++#if BUILDFLAG(IS_WIN) ++static QString windowsInfo(const gpu::GPUInfo &gpuInfo) ++{ ++ QString info; ++ info = "Windows specific driver information:\n"_L1; ++ ++ info += " Direct Composition: "_L1; ++ if (gpuInfo.overlay_info.direct_composition) ++ info += "enabled\n"_L1; ++ else if (gl::GetGlWorkarounds().disable_direct_composition) ++ info += "disabled by workaround\n"_L1; ++ else ++ info += "disabled\n"_L1; ++ ++ info += " Supports Overlays: "_L1 ++ + (gpuInfo.overlay_info.supports_overlays ? "yes"_L1 : "no"_L1) + u'\n'; ++ info += " Supports D3D Shared Images: "_L1 + (gpuInfo.shared_image_d3d ? "yes"_L1 : "no"_L1); ++ return info; ++} ++#endif ++} // namespace ++ ++class GpuObserver : public content::GpuDataManagerObserver ++{ ++public: ++ GpuObserver(ContentGpuClientQt *client) : m_client(client) ++ { ++ content::GpuDataManager *manager = content::GpuDataManager::GetInstance(); ++ if (manager->IsEssentialGpuInfoAvailable()) ++ OnGpuInfoUpdate(); ++ } ++ ++ ~GpuObserver() { content::GpuDataManager::GetInstance()->RemoveObserver(this); } ++ ++ void OnGpuInfoUpdate() override ++ { ++ content::GpuDataManager *manager = content::GpuDataManager::GetInstance(); ++ Q_ASSERT(manager->IsEssentialGpuInfoAvailable()); ++ ++ const gpu::GPUInfo &gpuInfo = manager->GetGPUInfo(); ++ Q_ASSERT(gpuInfo.IsInitialized()); ++ ++ // Avoid logging the info again if the device hasn't changed. ++ // A change in the device is unexpected, as we currently don't support or implement ++ // fallback. Logging the info multiple times may indicate a problem. ++ if (m_gpuInfo && isSameDevice(m_gpuInfo->gpu, gpuInfo.gpu)) ++ return; ++ m_gpuInfo = gpuInfo; ++ ++ const gpu::GpuFeatureStatus gpuCompositingStatus = ++ manager->GetFeatureStatus(gpu::GPU_FEATURE_TYPE_ACCELERATED_GL); ++ qCDebug(lcWebEngineCompositor, "GPU Compositing: %s", ++ gpuFeatureStatusToString(gpuCompositingStatus)); ++ ++#if BUILDFLAG(IS_OZONE) ++ if (gpuCompositingStatus == gpu::kGpuFeatureStatusEnabled) { ++ // See entry 3 in //gpu/config/software_rendering_list.json ++ QRegularExpression filter(u"software|llvmpipe|softpipe"_s, ++ QRegularExpression::CaseInsensitiveOption); ++ if (filter.match(QLatin1StringView(gpuInfo.gl_renderer)).hasMatch()) { ++ qWarning("Hardware rendering is enabled but it is not supported with Mesa software " ++ "rasterizer. Expect troubles."); ++ ++ if (m_client->gpuPreferences().ignore_gpu_blocklist) ++ qWarning("Rendering may fail because --ignore-gpu-blocklist is set."); ++ } ++ } ++#endif ++ ++ qCDebug(lcWebEngineCompositor, "%ls", qUtf16Printable(angleInfo(gpuInfo))); ++#if BUILDFLAG(IS_WIN) ++ qCDebug(lcWebEngineCompositor, "%ls", qUtf16Printable(windowsInfo(gpuInfo))); ++#endif ++ } ++ ++private: ++ ContentGpuClientQt *m_client; ++ std::optional m_gpuInfo; ++}; ++ ++ContentGpuClientQt::ContentGpuClientQt() = default; ++ContentGpuClientQt::~ContentGpuClientQt() = default; ++ ++void ContentGpuClientQt::GpuServiceInitialized() ++{ ++ // This is expected to be called on the GPU thread. ++ Q_ASSERT(!content::BrowserThread::CurrentlyOn(content::BrowserThread::UI)); ++ ++ m_gpuObserver.reset(new GpuObserver(this)); ++ content::GpuDataManager::GetInstance()->AddObserver(m_gpuObserver.get()); ++} ++ ++void ContentGpuClientQt::ExposeInterfacesToBrowser( ++ const gpu::GpuPreferences &gpu_preferences, ++ const gpu::GpuDriverBugWorkarounds &gpu_workarounds, mojo::BinderMap *binders) ++{ ++ Q_UNUSED(gpu_workarounds); ++ Q_UNUSED(binders); ++ m_gpuPreferences = gpu_preferences; ++} ++ ++} // namespace QtWebEngineCore +diff --git a/src/core/gpu/content_gpu_client_qt.h b/src/core/gpu/content_gpu_client_qt.h +new file mode 100644 +index 0000000..51b3a0d +--- /dev/null ++++ b/src/core/gpu/content_gpu_client_qt.h +@@ -0,0 +1,46 @@ ++// Copyright (C) 2025 The Qt Company Ltd. ++// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only ++// Qt-Security score:significant reason:default ++ ++#ifndef CONTENT_GPU_CLIENT_QT_H ++#define CONTENT_GPU_CLIENT_QT_H ++ ++#include "content/public/gpu/content_gpu_client.h" ++#include "gpu/config/gpu_preferences.h" ++ ++#include ++ ++namespace gpu { ++class GpuDriverBugWorkarounds; ++} ++ ++namespace mojo { ++class BinderMap; ++} ++ ++namespace QtWebEngineCore { ++ ++class GpuObserver; ++ ++class ContentGpuClientQt : public content::ContentGpuClient ++{ ++public: ++ ContentGpuClientQt(); ++ ~ContentGpuClientQt(); ++ ++ gpu::GpuPreferences gpuPreferences() const { return m_gpuPreferences; } ++ ++ // Overridden from content::ContentGpuClient: ++ void GpuServiceInitialized() override; ++ void ExposeInterfacesToBrowser(const gpu::GpuPreferences &gpu_preferences, ++ const gpu::GpuDriverBugWorkarounds &gpu_workarounds, ++ mojo::BinderMap *binders) override; ++ ++private: ++ QScopedPointer m_gpuObserver; ++ gpu::GpuPreferences m_gpuPreferences; ++}; ++ ++} // namespace QtWebEngineCore ++ ++#endif // CONTENT_GPU_CLIENT_QT_H From 29c1b9692b5febc5586dbb38aa6c470e0445cb42 Mon Sep 17 00:00:00 2001 From: Jan Grulich Date: Thu, 8 Jan 2026 15:49:51 +0100 Subject: [PATCH 73/76] Fix build against GCC16 --- qt6-qtwebengine.spec | 2 ++ qtwebengine-fix-build-against-gcc16.patch | 12 ++++++++++++ 2 files changed, 14 insertions(+) create mode 100644 qtwebengine-fix-build-against-gcc16.patch diff --git a/qt6-qtwebengine.spec b/qt6-qtwebengine.spec index cf815e9..798b46d 100644 --- a/qt6-qtwebengine.spec +++ b/qt6-qtwebengine.spec @@ -138,6 +138,7 @@ Patch81: qtwebengine-move-gpu-info-logging-to-gpu-thread.patch ## Upstreamable patches: Patch100: qtwebengine-add-missing-pipewire-headers.patch +Patch101: qtwebengine-fix-build-against-gcc16.patch ## ppc64le port Patch200: qtwebengine-6.9-ppc64.patch @@ -492,6 +493,7 @@ popd ## upstreamable patches %patch -P100 -p1 -b .add-missing-pipewire-headers +%patch -P101 -p1 -b .fix-build-against-gcc16 # ppc64le support %patch -P200 -p1 diff --git a/qtwebengine-fix-build-against-gcc16.patch b/qtwebengine-fix-build-against-gcc16.patch new file mode 100644 index 0000000..ad97de9 --- /dev/null +++ b/qtwebengine-fix-build-against-gcc16.patch @@ -0,0 +1,12 @@ +diff --git a/src/3rdparty/chromium/base/strings/to_string.h b/src/3rdparty/chromium/base/strings/to_string.h +index 96e61daa9e..5d097946f7 100644 +--- a/src/3rdparty/chromium/base/strings/to_string.h ++++ b/src/3rdparty/chromium/base/strings/to_string.h +@@ -6,6 +6,7 @@ + #define BASE_STRINGS_TO_STRING_H_ + + #include ++#include + #include + #include + #include From b4cecbae28e24557476e5ababb573bafbea43fae Mon Sep 17 00:00:00 2001 From: Jan Grulich Date: Sun, 11 Jan 2026 15:44:08 +0100 Subject: [PATCH 74/76] Apply the "Move GPU info logging into the GPU thread" patch --- qt6-qtwebengine.spec | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/qt6-qtwebengine.spec b/qt6-qtwebengine.spec index 798b46d..6996e48 100644 --- a/qt6-qtwebengine.spec +++ b/qt6-qtwebengine.spec @@ -88,7 +88,7 @@ Summary: Qt6 - QtWebEngine components Name: qt6-qtwebengine Version: 6.10.1 -Release: 3%{?dist} +Release: 4%{?dist} # See LICENSE.GPL LICENSE.LGPL LGPL_EXCEPTION.txt, for details # See also http://qt-project.org/doc/qt-5.0/qtdoc/licensing.html @@ -490,6 +490,7 @@ popd ## upstream patches %patch -P80 -p1 -b .fix-arm-build +%patch -P81 -p1 -b .move-gpu-info-logging-to-gpu-thread ## upstreamable patches %patch -P100 -p1 -b .add-missing-pipewire-headers @@ -851,6 +852,9 @@ done %endif %changelog +* Sun Jan 11 2026 Jan Grulich - 6.10.1-4 +- Apply the "Move GPU info logging into the GPU thread" patch + * Thu Jan 08 2026 Jan Grulich - 6.10.1-3 - Move GPU info logging into the GPU thread From 225a761a3187cf1864d7826eda39e7c0553759bf Mon Sep 17 00:00:00 2001 From: Yaakov Selkowitz Date: Mon, 12 Jan 2026 14:01:37 -0500 Subject: [PATCH 75/76] Apply glibc 2.42 patch on ELN --- qt6-qtwebengine.spec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/qt6-qtwebengine.spec b/qt6-qtwebengine.spec index 6996e48..b2ad566 100644 --- a/qt6-qtwebengine.spec +++ b/qt6-qtwebengine.spec @@ -484,7 +484,7 @@ popd %patch -P2 -p1 -b .link-pipewire %patch -P3 -p1 -b .aarch64-new-stat %patch -P4 -p1 -b .use-openh264 -%if 0%{?fedora} > 43 +%if 0%{?fedora} > 43 || 0%{?rhel} > 10 %patch -P5 -p1 -b .chromium-141-glibc-2.42-SYS_SECCOMP %endif From eba7bec4749e3691bd89f853ce494aea86586daa Mon Sep 17 00:00:00 2001 From: Jan Grulich Date: Tue, 13 Jan 2026 12:24:12 +0100 Subject: [PATCH 76/76] Fix Quick popup window positioning under X11 --- qt6-qtwebengine.spec | 9 +++- ...k-popup-window-positioning-under-x11.patch | 45 +++++++++++++++++++ 2 files changed, 53 insertions(+), 1 deletion(-) create mode 100644 qtwebengine-fix-quick-popup-window-positioning-under-x11.patch diff --git a/qt6-qtwebengine.spec b/qt6-qtwebengine.spec index b2ad566..ad75b37 100644 --- a/qt6-qtwebengine.spec +++ b/qt6-qtwebengine.spec @@ -88,7 +88,7 @@ Summary: Qt6 - QtWebEngine components Name: qt6-qtwebengine Version: 6.10.1 -Release: 4%{?dist} +Release: 5%{?dist} # See LICENSE.GPL LICENSE.LGPL LGPL_EXCEPTION.txt, for details # See also http://qt-project.org/doc/qt-5.0/qtdoc/licensing.html @@ -133,8 +133,11 @@ Patch5: qtwebengine-chromium-141-glibc-2.42-SYS_SECCOMP.patch ## Upstream patches: # https://bugreports.qt.io/browse/QTBUG-129985 Patch80: qtwebengine-fix-arm-build.patch +# Remove with Qt 6.10.2 # https://codereview.qt-project.org/c/qt/qtwebengine/+/702597 Patch81: qtwebengine-move-gpu-info-logging-to-gpu-thread.patch +# https://qt-project.atlassian.net/browse/QTBUG-142823 +Patch82: qtwebengine-fix-quick-popup-window-positioning-under-x11.patch ## Upstreamable patches: Patch100: qtwebengine-add-missing-pipewire-headers.patch @@ -491,6 +494,7 @@ popd ## upstream patches %patch -P80 -p1 -b .fix-arm-build %patch -P81 -p1 -b .move-gpu-info-logging-to-gpu-thread +%patch -P82 -p1 -b .fix-quick-popup-window-positioning-under-x11 ## upstreamable patches %patch -P100 -p1 -b .add-missing-pipewire-headers @@ -852,6 +856,9 @@ done %endif %changelog +* Tue Jan 13 2026 Jan Grulich - 6.10.1-5 +- Fix Quick popup window positioning under X11 + * Sun Jan 11 2026 Jan Grulich - 6.10.1-4 - Apply the "Move GPU info logging into the GPU thread" patch diff --git a/qtwebengine-fix-quick-popup-window-positioning-under-x11.patch b/qtwebengine-fix-quick-popup-window-positioning-under-x11.patch new file mode 100644 index 0000000..318a852 --- /dev/null +++ b/qtwebengine-fix-quick-popup-window-positioning-under-x11.patch @@ -0,0 +1,45 @@ +From 65ea28e7204eaeb39588a33cfc2f69c48951aa6a Mon Sep 17 00:00:00 2001 +From: Peter Varga +Date: Thu, 14 Aug 2025 16:17:41 +0200 +Subject: [PATCH] Fix Quick popup window positioning under X11 + +If the popup window has the Qt::Dialog flag, some window managers may +try to resize and move the popup after it becomes visible. This can lead +to a blinking popup or even worse, it can cause a loop that continuously +moves the popup window. + +Replace Qt::Tool flag with Qt::Popup to get rid of the Qt::Dialog flag +but keep popup as popup. + +Note on Wayland Qt:Tool is xdg toplevel not a 'popup' neither 'grabbing +popup' and it creates shell surface. This means it will get random +position on the screen. + +Note this tricky issue as we already changed that several times both +for widgets and quick due to different reasons (see 1390979a, 2f720836, +58467ed19, 7e7dd2625, c56169f7a1) + +Fixes: QTBUG-140321 +Task-number: QTBUG-132794 +Task-number: QTBUG-138747 +Pick-to: 6.10 +Change-Id: I8c3a94519008455fac2d8ab4c3bf34d860e2475b +Reviewed-by: Peter Varga +--- + .../render_widget_host_view_qt_delegate_quickwindow.cpp | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/src/webenginequick/render_widget_host_view_qt_delegate_quickwindow.cpp b/src/webenginequick/render_widget_host_view_qt_delegate_quickwindow.cpp +index 3ad88ca39aa..95b5e3500b3 100644 +--- a/src/webenginequick/render_widget_host_view_qt_delegate_quickwindow.cpp ++++ b/src/webenginequick/render_widget_host_view_qt_delegate_quickwindow.cpp +@@ -31,7 +31,8 @@ RenderWidgetHostViewQtDelegateQuickWindow::RenderWidgetHostViewQtDelegateQuickWi + RenderWidgetHostViewQtDelegateItem *realDelegate, QWindow *parent) + : QQuickWindow(), m_realDelegate(realDelegate), m_virtualParent(nullptr), m_transformed(false) + { +- setFlags(Qt::Tool | Qt::WindowStaysOnTopHint | Qt::FramelessWindowHint | Qt::WindowDoesNotAcceptFocus); ++ setFlags(Qt::Popup | Qt::WindowStaysOnTopHint | Qt::FramelessWindowHint ++ | Qt::WindowDoesNotAcceptFocus); + realDelegate->setParentItem(contentItem()); + setTransientParent(parent); + }