Compare commits
No commits in common. "2b332b5f4c3dcbc536f9e216d0a46214f02dce10" and "0469bc96530a9438660755387e010655a6798304" have entirely different histories.
2b332b5f4c
...
0469bc9653
@ -1,29 +0,0 @@
|
||||
From b727ffde2b4ffe8b979927d6dc9f056eb916a8b8 Mon Sep 17 00:00:00 2001
|
||||
From: peijiankang <peijiankang@kylinos.cn>
|
||||
Date: Tue, 30 Jan 2024 09:43:39 +0800
|
||||
Subject: [PATCH] CVE-2023-6112
|
||||
|
||||
---
|
||||
.../content/browser/loader/navigation_url_loader_impl.cc | 4 ++--
|
||||
1 file changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/src/3rdparty/chromium/content/browser/loader/navigation_url_loader_impl.cc b/src/3rdparty/chromium/content/browser/loader/navigation_url_loader_impl.cc
|
||||
index f54cfd9a6..41c78e2fe 100644
|
||||
--- a/src/3rdparty/chromium/content/browser/loader/navigation_url_loader_impl.cc
|
||||
+++ b/src/3rdparty/chromium/content/browser/loader/navigation_url_loader_impl.cc
|
||||
@@ -560,10 +560,10 @@ void NavigationURLLoaderImpl::MaybeStartLoader(
|
||||
next_interceptor->MaybeCreateLoader(
|
||||
*resource_request_, browser_context_,
|
||||
base::BindOnce(&NavigationURLLoaderImpl::MaybeStartLoader,
|
||||
- base::Unretained(this), next_interceptor),
|
||||
+ weak_factory_.GetWeakPtr(), next_interceptor),
|
||||
base::BindOnce(
|
||||
&NavigationURLLoaderImpl::FallbackToNonInterceptedRequest,
|
||||
- base::Unretained(this)));
|
||||
+ weak_factory_.GetWeakPtr()));
|
||||
return;
|
||||
}
|
||||
|
||||
--
|
||||
2.41.0
|
||||
|
||||
@ -7,11 +7,10 @@
|
||||
|
||||
%global use_system_libwebp 1
|
||||
%global use_system_jsoncpp 1
|
||||
%global use_system_re2 0
|
||||
%global use_system_re2 1
|
||||
|
||||
%global use_system_libicu 1
|
||||
|
||||
%global use_system_py_six 1
|
||||
# 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
|
||||
@ -38,8 +37,8 @@
|
||||
|
||||
Summary: Qt6 - QtWebEngine components
|
||||
Name: qt6-qtwebengine
|
||||
Version: 6.5.2
|
||||
Release: 2
|
||||
Version: 6.5.0
|
||||
Release: 3
|
||||
|
||||
# See LICENSE.GPL LICENSE.LGPL LGPL_EXCEPTION.txt, for details
|
||||
# See also http://qt-project.org/doc/qt-5.0/qtdoc/licensing.html
|
||||
@ -49,7 +48,6 @@ URL: http://www.qt.io
|
||||
# cleaned tarball with patent-encumbered codecs removed from the bundled FFmpeg
|
||||
# ./qtwebengine-release.sh
|
||||
# ./clean_qtwebengine.sh 6.4.1
|
||||
# remove Source0 file for fix Eulermaker failure
|
||||
Source0: qtwebengine-everywhere-src-%{version}-clean.tar.xz
|
||||
Source100: qtwebengine-everywhere-src-%{version}-clean.tar.xz.0
|
||||
Source101: qtwebengine-everywhere-src-%{version}-clean.tar.xz.1
|
||||
@ -81,21 +79,11 @@ Patch100: qtwebengine-webrtc-dlopen-h264.patch
|
||||
|
||||
## Upstreamable patches:
|
||||
Patch110: qtwebengine-blink-dlopen-h264.patch
|
||||
#https://codereview.qt-project.org/c/qt/qtwebengine-chromium/+/518607
|
||||
Patch111: CVE-2023-6112.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 riscv64
|
||||
|
||||
Patch120: qtwebengine-icu-74.patch
|
||||
|
||||
## Add riscv64 patches
|
||||
Patch1000: riscv-angle.patch
|
||||
Patch1001: riscv-breakpad.patch
|
||||
Patch1002: riscv-crashpad.patch
|
||||
Patch1003: riscv-dav1d.patch
|
||||
Patch1004: riscv-sandbox.patch
|
||||
ExclusiveArch: aarch64 x86_64
|
||||
|
||||
BuildRequires: cmake
|
||||
BuildRequires: make
|
||||
@ -123,7 +111,7 @@ BuildRequires: git-core
|
||||
BuildRequires: gperf
|
||||
BuildRequires: krb5-devel
|
||||
%if 0%{?use_system_libicu}
|
||||
BuildRequires: libicu-devel >= 68
|
||||
BuildRequires: libicu-devel >= 65
|
||||
%endif
|
||||
BuildRequires: libjpeg-devel
|
||||
BuildRequires: nodejs
|
||||
@ -195,9 +183,6 @@ BuildRequires: pkgconfig(libavutil)
|
||||
# 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:
|
||||
@ -317,7 +302,6 @@ 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
|
||||
@ -335,25 +319,6 @@ 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
|
||||
cat %{SOURCE100} %{SOURCE101} > %{SOURCE0}
|
||||
%setup -q -n %{qt_module}-everywhere-src-%{version} -a20
|
||||
@ -375,32 +340,12 @@ popd
|
||||
|
||||
## upstreamable patches
|
||||
%patch110 -p1 -b .blink-dlopen-h264
|
||||
%patch111 -p1
|
||||
|
||||
%patch120 -p1
|
||||
|
||||
## Add riscv64 patches
|
||||
%patch1000 -p0 -d src/3rdparty
|
||||
%patch1001 -p0 -d src/3rdparty
|
||||
%patch1002 -p0 -d src/3rdparty
|
||||
%patch1003 -p0 -d src/3rdparty
|
||||
%patch1004 -p0 -d src/3rdparty
|
||||
|
||||
# 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' \
|
||||
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
|
||||
@ -499,6 +444,9 @@ 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.*
|
||||
@ -506,16 +454,16 @@ 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
|
||||
%{_qt6_datadir}/resources/qtwebengine_resources_200p.pak
|
||||
%if ! 0%{?use_system_libicu}
|
||||
%{_qt6_datadir}/resources/icudtl.dat
|
||||
%endif
|
||||
%dir %{_qtwebengine_dictionaries_dir}
|
||||
%dir %{_qt6_translationdir}/qtwebengine_locales
|
||||
%lang(am) %{_qt6_translationdir}/qtwebengine_locales/am.pak
|
||||
@ -574,27 +522,46 @@ 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/qt6webengine*.json
|
||||
%{_qt6_libdir}/qt6/modules/WebEngine*.json
|
||||
%{_qt6_libdir}/qt6/metatypes/*.json
|
||||
%{_qt6_libdir}/qt6/modules/*.json
|
||||
%{_qt6_libdir}/libQt6Pdf.so
|
||||
%{_qt6_libdir}/libQt6PdfQuick.so
|
||||
%{_qt6_libdir}/libQt6PdfWidgets.so
|
||||
%{_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/QtWebEngine*
|
||||
%{_qt6_libdir}/cmake/Qt6Qml/QmlPlugins/Qt6qtwebengine*.cmake
|
||||
%{_qt6_libdir}/cmake/Qt6BuildInternals/StandaloneTests
|
||||
%{_qt6_libdir}/cmake/Qt6Gui/*.cmake
|
||||
%{_qt6_libdir}/cmake/Qt6Qml/QmlPlugins/*.cmake
|
||||
%dir %{_qt6_libdir}/cmake/Qt6Designer
|
||||
%{_qt6_libdir}/cmake/Qt6Designer/Qt6QWebEngine*.cmake
|
||||
%{_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
|
||||
%dir %{_qt6_libdir}/cmake/Qt6WebEngineQuick
|
||||
%{_qt6_libdir}/cmake/Qt6WebEngineQuick/*.cmake
|
||||
%dir %{_qt6_libdir}/cmake/Qt6WebEngineWidgets
|
||||
@ -605,80 +572,28 @@ 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/qt_lib_webengine*.pri
|
||||
%{_qt6_archdatadir}/mkspecs/modules/*.pri
|
||||
|
||||
%files devtools
|
||||
%{_qt6_datadir}/resources/qtwebengine_devtools_resources.pak
|
||||
|
||||
%files examples
|
||||
%{_qt6_examplesdir}/webengine*
|
||||
%{_qt6_examplesdir}/
|
||||
|
||||
%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
|
||||
* Fri Apr 12 2024 misaka00251 <liuxin@iscas.ac.cn> - 6.5.2-2
|
||||
- Add support for riscv64
|
||||
|
||||
* Fri Mar 08 2024 peijiankang <peijiankang@kylinos.cn> - 6.5.2-1
|
||||
- update version to 6.5.2
|
||||
|
||||
* Mon Feb 5 2024 Dongxing Wang <dongxing.wang_a@thundersoft.com> - 6.5.0-6
|
||||
- remove Source0 file for fix Eulermaker failure
|
||||
|
||||
* Tue Jan 30 2024 peijiankang <peijiankang@kylinos.cn> - 6.5.0-5
|
||||
- CVE-2023-6112.patch
|
||||
|
||||
* Fri Dec 08 2023 peijiankang <peijiankang@kylinos.cn> - 6.5.0-4
|
||||
- fix build error about re2
|
||||
|
||||
* Fri Aug 18 2023 huayadong <huayadong@kylinos.cn> - 6.5.0-3
|
||||
- add Requires: re2; change License
|
||||
|
||||
|
||||
BIN
qtwebengine-everywhere-src-6.5.0-clean.tar.xz
Normal file
BIN
qtwebengine-everywhere-src-6.5.0-clean.tar.xz
Normal file
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -1,54 +1,114 @@
|
||||
diff --git a/src/3rdparty/chromium/base/debug/profiler.h b/src/3rdparty/chromium/base/debug/profiler.h
|
||||
index 80c73feb9..d3921a6aa 100644
|
||||
index 5f0deadd5..803de8f2b 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 <cstdint>
|
||||
#include <stddef.h>
|
||||
#include <cstdint>
|
||||
|
||||
|
||||
#include <string>
|
||||
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 f6e873a01..5f952c5ed 100644
|
||||
--- a/src/3rdparty/chromium/cc/trees/target_property.cc
|
||||
+++ b/src/3rdparty/chromium/cc/trees/target_property.cc
|
||||
@@ -8,6 +8,8 @@
|
||||
|
||||
@@ -6,6 +6,8 @@
|
||||
|
||||
#include "ui/gfx/animation/keyframe/target_property.h"
|
||||
|
||||
|
||||
+#include <cstdint>
|
||||
+
|
||||
namespace cc {
|
||||
|
||||
|
||||
static_assert(TargetProperty::LAST_TARGET_PROPERTY <
|
||||
diff --git a/src/3rdparty/chromium/components/viz/common/shared_element_resource_id.h b/src/3rdparty/chromium/components/viz/common/shared_element_resource_id.h
|
||||
index b39a2d3dc..ca3d8aeda 100644
|
||||
--- a/src/3rdparty/chromium/components/viz/common/shared_element_resource_id.h
|
||||
+++ b/src/3rdparty/chromium/components/viz/common/shared_element_resource_id.h
|
||||
@@ -5,6 +5,7 @@
|
||||
#ifndef COMPONENTS_VIZ_COMMON_SHARED_ELEMENT_RESOURCE_ID_H_
|
||||
#define COMPONENTS_VIZ_COMMON_SHARED_ELEMENT_RESOURCE_ID_H_
|
||||
|
||||
+#include <cstdint>
|
||||
#include <string>
|
||||
#include <vector>
|
||||
|
||||
diff --git a/src/3rdparty/chromium/content/public/browser/browsing_data_remover_delegate.h b/src/3rdparty/chromium/content/public/browser/browsing_data_remover_delegate.h
|
||||
index ee75332f0..c0168281e 100644
|
||||
--- a/src/3rdparty/chromium/content/public/browser/browsing_data_remover_delegate.h
|
||||
+++ b/src/3rdparty/chromium/content/public/browser/browsing_data_remover_delegate.h
|
||||
@@ -5,6 +5,7 @@
|
||||
#ifndef CONTENT_PUBLIC_BROWSER_BROWSING_DATA_REMOVER_DELEGATE_H_
|
||||
#define CONTENT_PUBLIC_BROWSER_BROWSING_DATA_REMOVER_DELEGATE_H_
|
||||
|
||||
+#include <cstdint>
|
||||
#include <string>
|
||||
#include <vector>
|
||||
#include "base/callback_forward.h"
|
||||
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 <cstdint>
|
||||
+
|
||||
namespace device {
|
||||
|
||||
|
||||
OneWriterSeqLock::OneWriterSeqLock() : sequence_(0) {}
|
||||
diff --git a/src/3rdparty/chromium/device/base/synchronization/one_writer_seqlock.h b/src/3rdparty/chromium/device/base/synchronization/one_writer_seqlock.h
|
||||
index 528b6683c..e37a16b81 100644
|
||||
--- a/src/3rdparty/chromium/device/base/synchronization/one_writer_seqlock.h
|
||||
+++ b/src/3rdparty/chromium/device/base/synchronization/one_writer_seqlock.h
|
||||
@@ -6,6 +6,7 @@
|
||||
#define DEVICE_BASE_SYNCHRONIZATION_ONE_WRITER_SEQLOCK_H_
|
||||
|
||||
#include <atomic>
|
||||
+#include <cstdint>
|
||||
#include <type_traits>
|
||||
|
||||
#include "base/atomicops.h"
|
||||
diff --git a/src/3rdparty/chromium/device/bluetooth/public/cpp/bluetooth_uuid.h b/src/3rdparty/chromium/device/bluetooth/public/cpp/bluetooth_uuid.h
|
||||
index 816d3405e..15c4004c0 100644
|
||||
--- a/src/3rdparty/chromium/device/bluetooth/public/cpp/bluetooth_uuid.h
|
||||
+++ b/src/3rdparty/chromium/device/bluetooth/public/cpp/bluetooth_uuid.h
|
||||
@@ -5,6 +5,7 @@
|
||||
#ifndef DEVICE_BLUETOOTH_PUBLIC_CPP_BLUETOOTH_UUID_H_
|
||||
#define DEVICE_BLUETOOTH_PUBLIC_CPP_BLUETOOTH_UUID_H_
|
||||
|
||||
+#include <cstdint>
|
||||
#include <ostream>
|
||||
#include <string>
|
||||
#include <vector>
|
||||
diff --git a/src/3rdparty/chromium/extensions/common/constants.h b/src/3rdparty/chromium/extensions/common/constants.h
|
||||
index b1a0d56ea..019bc0743 100644
|
||||
index bf6bac2b4..51c534509 100644
|
||||
--- a/src/3rdparty/chromium/extensions/common/constants.h
|
||||
+++ b/src/3rdparty/chromium/extensions/common/constants.h
|
||||
@@ -12,6 +12,8 @@
|
||||
@@ -10,6 +10,8 @@
|
||||
#include "build/chromeos_buildflags.h"
|
||||
#include "extensions/common/extensions_export.h"
|
||||
|
||||
|
||||
+#include <cstdint>
|
||||
+
|
||||
namespace extensions {
|
||||
|
||||
|
||||
// Scheme we serve extension content from.
|
||||
diff --git a/src/3rdparty/chromium/gpu/config/gpu_feature_info.h b/src/3rdparty/chromium/gpu/config/gpu_feature_info.h
|
||||
index 1a7028e47..b9e951c0a 100644
|
||||
--- a/src/3rdparty/chromium/gpu/config/gpu_feature_info.h
|
||||
+++ b/src/3rdparty/chromium/gpu/config/gpu_feature_info.h
|
||||
@@ -5,6 +5,7 @@
|
||||
#ifndef GPU_CONFIG_GPU_FEATURE_INFO_H_
|
||||
#define GPU_CONFIG_GPU_FEATURE_INFO_H_
|
||||
|
||||
+#include <cstdint>
|
||||
#include <string>
|
||||
#include <vector>
|
||||
|
||||
diff --git a/src/3rdparty/chromium/gpu/config/gpu_util.h b/src/3rdparty/chromium/gpu/config/gpu_util.h
|
||||
index 574aca1ff..fca32671c 100644
|
||||
--- a/src/3rdparty/chromium/gpu/config/gpu_util.h
|
||||
@ -56,25 +116,73 @@ index 574aca1ff..fca32671c 100644
|
||||
@@ -5,6 +5,8 @@
|
||||
#ifndef GPU_CONFIG_GPU_UTIL_H_
|
||||
#define GPU_CONFIG_GPU_UTIL_H_
|
||||
|
||||
|
||||
+#include <cstdint>
|
||||
+
|
||||
#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 ea360d1c9..dca84fd02 100644
|
||||
index d6adf388e..560e692aa 100644
|
||||
--- a/src/3rdparty/chromium/net/base/parse_number.h
|
||||
+++ b/src/3rdparty/chromium/net/base/parse_number.h
|
||||
@@ -10,6 +10,8 @@
|
||||
@@ -8,6 +8,8 @@
|
||||
#include "base/strings/string_piece.h"
|
||||
#include "net/base/net_export.h"
|
||||
|
||||
|
||||
+#include <cstdint>
|
||||
+
|
||||
// This file contains utility functions for parsing numbers, in the context of
|
||||
// network protocols.
|
||||
//
|
||||
diff --git a/src/3rdparty/chromium/net/cookies/cookie_inclusion_status.h b/src/3rdparty/chromium/net/cookies/cookie_inclusion_status.h
|
||||
index 5f289ddcd..44f2f9eb1 100644
|
||||
--- a/src/3rdparty/chromium/net/cookies/cookie_inclusion_status.h
|
||||
+++ b/src/3rdparty/chromium/net/cookies/cookie_inclusion_status.h
|
||||
@@ -6,6 +6,7 @@
|
||||
#define NET_COOKIES_COOKIE_INCLUSION_STATUS_H_
|
||||
|
||||
#include <bitset>
|
||||
+#include <cstdint>
|
||||
#include <ostream>
|
||||
#include <string>
|
||||
#include <vector>
|
||||
diff --git a/src/3rdparty/chromium/net/third_party/quiche/src/quiche/quic/core/crypto/quic_hkdf.h b/src/3rdparty/chromium/net/third_party/quiche/src/quiche/quic/core/crypto/quic_hkdf.h
|
||||
index 6a300ed0c..3e30f1cb0 100644
|
||||
--- a/src/3rdparty/chromium/net/third_party/quiche/src/quiche/quic/core/crypto/quic_hkdf.h
|
||||
+++ b/src/3rdparty/chromium/net/third_party/quiche/src/quiche/quic/core/crypto/quic_hkdf.h
|
||||
@@ -5,6 +5,7 @@
|
||||
#ifndef QUICHE_QUIC_CORE_CRYPTO_QUIC_HKDF_H_
|
||||
#define QUICHE_QUIC_CORE_CRYPTO_QUIC_HKDF_H_
|
||||
|
||||
+#include <cstdint>
|
||||
#include <vector>
|
||||
|
||||
#include "absl/strings/string_view.h"
|
||||
diff --git a/src/3rdparty/chromium/net/third_party/quiche/src/quiche/quic/core/quic_connection_id.h b/src/3rdparty/chromium/net/third_party/quiche/src/quiche/quic/core/quic_connection_id.h
|
||||
index 52f150172..db4d31084 100644
|
||||
--- a/src/3rdparty/chromium/net/third_party/quiche/src/quiche/quic/core/quic_connection_id.h
|
||||
+++ b/src/3rdparty/chromium/net/third_party/quiche/src/quiche/quic/core/quic_connection_id.h
|
||||
@@ -5,6 +5,7 @@
|
||||
#ifndef QUICHE_QUIC_CORE_QUIC_CONNECTION_ID_H_
|
||||
#define QUICHE_QUIC_CORE_QUIC_CONNECTION_ID_H_
|
||||
|
||||
+#include <cstdint>
|
||||
#include <string>
|
||||
#include <vector>
|
||||
|
||||
diff --git a/src/3rdparty/chromium/pdf/document_attachment_info.h b/src/3rdparty/chromium/pdf/document_attachment_info.h
|
||||
index e0fffc2ca..095463fcb 100644
|
||||
--- a/src/3rdparty/chromium/pdf/document_attachment_info.h
|
||||
+++ b/src/3rdparty/chromium/pdf/document_attachment_info.h
|
||||
@@ -5,6 +5,7 @@
|
||||
#ifndef PDF_DOCUMENT_ATTACHMENT_INFO_H_
|
||||
#define PDF_DOCUMENT_ATTACHMENT_INFO_H_
|
||||
|
||||
+#include <cstdint>
|
||||
#include <string>
|
||||
|
||||
|
||||
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
|
||||
@ -93,20 +201,65 @@ 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/sandbox/linux/syscall_broker/broker_file_permission.h b/src/3rdparty/chromium/sandbox/linux/syscall_broker/broker_file_permission.h
|
||||
index b167ffb09..2347d5461 100644
|
||||
--- a/src/3rdparty/chromium/sandbox/linux/syscall_broker/broker_file_permission.h
|
||||
+++ b/src/3rdparty/chromium/sandbox/linux/syscall_broker/broker_file_permission.h
|
||||
@@ -6,6 +6,7 @@
|
||||
#define SANDBOX_LINUX_SYSCALL_BROKER_BROKER_FILE_PERMISSION_H_
|
||||
|
||||
#include <bitset>
|
||||
+#include <cstdint>
|
||||
#include <string>
|
||||
|
||||
#include "sandbox/sandbox_export.h"
|
||||
diff --git a/src/3rdparty/chromium/third_party/angle/include/GLSLANG/ShaderVars.h b/src/3rdparty/chromium/third_party/angle/include/GLSLANG/ShaderVars.h
|
||||
index 4b76d33af..4db1902d1 100644
|
||||
--- a/src/3rdparty/chromium/third_party/angle/include/GLSLANG/ShaderVars.h
|
||||
+++ b/src/3rdparty/chromium/third_party/angle/include/GLSLANG/ShaderVars.h
|
||||
@@ -12,6 +12,7 @@
|
||||
|
||||
#include <algorithm>
|
||||
#include <array>
|
||||
+#include <cstdint>
|
||||
#include <string>
|
||||
#include <vector>
|
||||
|
||||
diff --git a/src/3rdparty/chromium/third_party/blink/public/common/origin_trials/origin_trial_public_key.h b/src/3rdparty/chromium/third_party/blink/public/common/origin_trials/origin_trial_public_key.h
|
||||
index c1b5f59f5..246200991 100644
|
||||
--- a/src/3rdparty/chromium/third_party/blink/public/common/origin_trials/origin_trial_public_key.h
|
||||
+++ b/src/3rdparty/chromium/third_party/blink/public/common/origin_trials/origin_trial_public_key.h
|
||||
@@ -6,6 +6,7 @@
|
||||
#define THIRD_PARTY_BLINK_PUBLIC_COMMON_ORIGIN_TRIALS_ORIGIN_TRIAL_PUBLIC_KEY_H_
|
||||
|
||||
#include <array>
|
||||
+#include <cstdint>
|
||||
|
||||
namespace blink {
|
||||
|
||||
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
|
||||
index e40a76207..bf5ef7f13 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
|
||||
@@ -122,7 +122,7 @@ class PLATFORM_EXPORT EffectPaintPropertyNode
|
||||
|
||||
// An identifier for a document transition shared element. `id.valid()`
|
||||
// returns true if this has been set, and false otherwise.
|
||||
- DocumentTransitionSharedElementId document_transition_shared_element_id;
|
||||
+ cc::DocumentTransitionSharedElementId document_transition_shared_element_id;
|
||||
|
||||
// An identifier to tag shared element resources generated and cached in the
|
||||
// Viz process. This generated resource can be used as content for other
|
||||
@@ -291,7 +291,7 @@ class PLATFORM_EXPORT EffectPaintPropertyNode
|
||||
return state_.compositor_element_id;
|
||||
}
|
||||
|
||||
|
||||
- const blink::DocumentTransitionSharedElementId&
|
||||
+ const cc::DocumentTransitionSharedElementId&
|
||||
DocumentTransitionSharedElementId() const {
|
||||
@ -119,10 +272,10 @@ index c7e4f2b37..e491a1f68 100644
|
||||
@@ -33,6 +33,7 @@
|
||||
#include <assert.h>
|
||||
#include <sys/types.h>
|
||||
|
||||
|
||||
+#include <cstdint>
|
||||
#include <string>
|
||||
|
||||
|
||||
#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
|
||||
@ -131,10 +284,10 @@ index 6cec3b6b8..541bba5b1 100644
|
||||
@@ -15,6 +15,7 @@
|
||||
#ifndef SRC_DAWN_NATIVE_CACHEKEY_H_
|
||||
#define SRC_DAWN_NATIVE_CACHEKEY_H_
|
||||
|
||||
|
||||
+#include <cstdint>
|
||||
#include <utility>
|
||||
|
||||
|
||||
#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
|
||||
@ -143,10 +296,10 @@ index 90077421d..f303f9e8b 100644
|
||||
@@ -15,6 +15,7 @@
|
||||
#ifndef SRC_TINT_READER_SPIRV_ENTRY_POINT_INFO_H_
|
||||
#define SRC_TINT_READER_SPIRV_ENTRY_POINT_INFO_H_
|
||||
|
||||
|
||||
+#include <cstdint>
|
||||
#include <string>
|
||||
|
||||
|
||||
#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
|
||||
@ -155,7 +308,7 @@ index 7a20e8738..655f69ce3 100644
|
||||
@@ -15,6 +15,7 @@
|
||||
#ifndef SRC_TINT_READER_SPIRV_NAMER_H_
|
||||
#define SRC_TINT_READER_SPIRV_NAMER_H_
|
||||
|
||||
|
||||
+#include <cstdint>
|
||||
#include <string>
|
||||
#include <unordered_map>
|
||||
@ -167,11 +320,11 @@ index 8e0306b6a..0fc0cc2b0 100644
|
||||
@@ -15,6 +15,7 @@
|
||||
#ifndef SRC_TINT_READER_WGSL_LEXER_H_
|
||||
#define SRC_TINT_READER_WGSL_LEXER_H_
|
||||
|
||||
|
||||
+#include <cstdint>
|
||||
#include <string>
|
||||
#include <vector>
|
||||
|
||||
|
||||
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
|
||||
--- a/src/3rdparty/chromium/third_party/dawn/src/tint/reader/wgsl/token.h
|
||||
@ -179,7 +332,7 @@ index 4cf9aad1b..3fa13e216 100644
|
||||
@@ -15,6 +15,7 @@
|
||||
#ifndef SRC_TINT_READER_WGSL_TOKEN_H_
|
||||
#define SRC_TINT_READER_WGSL_TOKEN_H_
|
||||
|
||||
|
||||
+#include <cstdint>
|
||||
#include <string>
|
||||
#include <string_view>
|
||||
@ -191,7 +344,7 @@ index 0601ca068..ac9dde64e 100644
|
||||
@@ -15,6 +15,7 @@
|
||||
#ifndef SRC_TINT_WRITER_SPIRV_OPERAND_H_
|
||||
#define SRC_TINT_WRITER_SPIRV_OPERAND_H_
|
||||
|
||||
|
||||
+#include <cstdint>
|
||||
#include <cstring>
|
||||
#include <string>
|
||||
@ -207,7 +360,32 @@ index a3099e15d..2e6f0eea7 100644
|
||||
+#include <cstdio>
|
||||
#include <new>
|
||||
#include <utility>
|
||||
|
||||
|
||||
diff --git a/src/3rdparty/chromium/third_party/pdfium/constants/annotation_flags.h b/src/3rdparty/chromium/third_party/pdfium/constants/annotation_flags.h
|
||||
index d2731dac7..46bc87ef9 100644
|
||||
--- a/src/3rdparty/chromium/third_party/pdfium/constants/annotation_flags.h
|
||||
+++ b/src/3rdparty/chromium/third_party/pdfium/constants/annotation_flags.h
|
||||
@@ -5,6 +5,8 @@
|
||||
#ifndef CONSTANTS_ANNOTATION_FLAGS_H_
|
||||
#define CONSTANTS_ANNOTATION_FLAGS_H_
|
||||
|
||||
+#include <cstdint>
|
||||
+
|
||||
namespace pdfium {
|
||||
namespace annotation_flags {
|
||||
|
||||
diff --git a/src/3rdparty/chromium/third_party/perfetto/include/perfetto/ext/base/uuid.h b/src/3rdparty/chromium/third_party/perfetto/include/perfetto/ext/base/uuid.h
|
||||
index 1b4c53815..472042fab 100644
|
||||
--- a/src/3rdparty/chromium/third_party/perfetto/include/perfetto/ext/base/uuid.h
|
||||
+++ b/src/3rdparty/chromium/third_party/perfetto/include/perfetto/ext/base/uuid.h
|
||||
@@ -18,6 +18,7 @@
|
||||
#define INCLUDE_PERFETTO_EXT_BASE_UUID_H_
|
||||
|
||||
#include <array>
|
||||
+#include <cstdint>
|
||||
#include <string>
|
||||
|
||||
#include "perfetto/ext/base/optional.h"
|
||||
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
|
||||
--- a/src/3rdparty/chromium/third_party/perfetto/src/trace_processor/importers/proto/proto_importer_module.h
|
||||
@ -215,11 +393,11 @@ index d047de1bf..d7fc91a59 100644
|
||||
@@ -21,6 +21,8 @@
|
||||
#include "perfetto/trace_processor/status.h"
|
||||
#include "src/trace_processor/importers/common/trace_parser.h"
|
||||
|
||||
|
||||
+#include <cstdint>
|
||||
+
|
||||
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
|
||||
@ -228,7 +406,7 @@ index 0101632c5..3f04a2dd2 100644
|
||||
@@ -15,6 +15,10 @@
|
||||
#include <iterator>
|
||||
#include <string>
|
||||
|
||||
|
||||
+#include <string.h>
|
||||
+#include <algorithm>
|
||||
+#include <iterator>
|
||||
@ -237,13 +415,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 b7c586b80..d950214c3 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 <cstdio>
|
||||
+
|
||||
#ifdef __cplusplus
|
||||
@ -254,13 +432,25 @@ 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
|
||||
@@ -13,6 +13,7 @@
|
||||
|
||||
|
||||
#include <gio/gio.h>
|
||||
|
||||
|
||||
+#include <cstdint>
|
||||
#include <string>
|
||||
|
||||
|
||||
namespace webrtc {
|
||||
diff --git a/src/3rdparty/chromium/third_party/webrtc/rtc_base/third_party/base64/base64.h b/src/3rdparty/chromium/third_party/webrtc/rtc_base/third_party/base64/base64.h
|
||||
index 4190a79dc..5a9285f00 100644
|
||||
--- a/src/3rdparty/chromium/third_party/webrtc/rtc_base/third_party/base64/base64.h
|
||||
+++ b/src/3rdparty/chromium/third_party/webrtc/rtc_base/third_party/base64/base64.h
|
||||
@@ -12,6 +12,7 @@
|
||||
#ifndef RTC_BASE_THIRD_PARTY_BASE64_BASE64_H_
|
||||
#define RTC_BASE_THIRD_PARTY_BASE64_BASE64_H_
|
||||
|
||||
+#include <cstdint>
|
||||
#include <string>
|
||||
#include <vector>
|
||||
|
||||
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
|
||||
--- a/src/3rdparty/chromium/ui/events/gesture_event_details.h
|
||||
@ -268,23 +458,36 @@ index 41ff9906d..1864e9e21 100644
|
||||
@@ -5,6 +5,7 @@
|
||||
#ifndef UI_EVENTS_GESTURE_EVENT_DETAILS_H_
|
||||
#define UI_EVENTS_GESTURE_EVENT_DETAILS_H_
|
||||
|
||||
|
||||
+#include <cstdint>
|
||||
#include <string.h>
|
||||
|
||||
|
||||
#include "base/check_op.h"
|
||||
diff --git a/src/3rdparty/chromium/ui/events/types/scroll_types.h b/src/3rdparty/chromium/ui/events/types/scroll_types.h
|
||||
index be6b2779f..dbe2e5cf7 100644
|
||||
--- a/src/3rdparty/chromium/ui/events/types/scroll_types.h
|
||||
+++ b/src/3rdparty/chromium/ui/events/types/scroll_types.h
|
||||
@@ -5,6 +5,8 @@
|
||||
#ifndef UI_EVENTS_TYPES_SCROLL_TYPES_H_
|
||||
#define UI_EVENTS_TYPES_SCROLL_TYPES_H_
|
||||
|
||||
+#include <cstdint>
|
||||
+
|
||||
namespace ui {
|
||||
|
||||
enum class ScrollGranularity : uint8_t {
|
||||
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 65cd4cb07..210c4318e 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_
|
||||
|
||||
|
||||
+#include <cstdint>
|
||||
#include <array>
|
||||
#include <cstdint>
|
||||
#include <string>
|
||||
|
||||
diff --git a/src/3rdparty/chromium/v8/src/base/macros.h b/src/3rdparty/chromium/v8/src/base/macros.h
|
||||
index cd5b91f74..a74c0021f 100644
|
||||
--- a/src/3rdparty/chromium/v8/src/base/macros.h
|
||||
@ -292,21 +495,21 @@ index cd5b91f74..a74c0021f 100644
|
||||
@@ -5,6 +5,7 @@
|
||||
#ifndef V8_BASE_MACROS_H_
|
||||
#define V8_BASE_MACROS_H_
|
||||
|
||||
|
||||
+#include <cstdint>
|
||||
#include <limits>
|
||||
#include <type_traits>
|
||||
|
||||
|
||||
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 4e690ffb1..dfa884cd6 100644
|
||||
--- a/src/core/browsing_data_remover_delegate_qt.h
|
||||
+++ b/src/core/browsing_data_remover_delegate_qt.h
|
||||
@@ -8,6 +8,8 @@
|
||||
|
||||
@@ -6,6 +6,8 @@
|
||||
|
||||
#include "content/public/browser/browsing_data_remover_delegate.h"
|
||||
|
||||
|
||||
+#include <cstdint>
|
||||
+
|
||||
namespace QtWebEngineCore {
|
||||
|
||||
|
||||
class BrowsingDataRemoverDelegateQt : public content::BrowsingDataRemoverDelegate {
|
||||
|
||||
@ -1,27 +0,0 @@
|
||||
From 45c6d06ced023d2be72a845ec85d0e7207c007a3 Mon Sep 17 00:00:00 2001
|
||||
From: desert-sailor <dongxing.wang_a@thundersoft.com>
|
||||
Date: Tue, 20 Feb 2024 18:25:13 +0800
|
||||
Subject: [PATCH] fix compile error caused by icu upgrade
|
||||
|
||||
---
|
||||
.../blink/renderer/platform/text/text_break_iterator.cc | 4 +++-
|
||||
1 file changed, 3 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/src/3rdparty/chromium/third_party/blink/renderer/platform/text/text_break_iterator.cc b/src/3rdparty/chromium/third_party/blink/renderer/platform/text/text_break_iterator.cc
|
||||
index d305427d0..3c797c71e 100644
|
||||
--- a/src/3rdparty/chromium/third_party/blink/renderer/platform/text/text_break_iterator.cc
|
||||
+++ b/src/3rdparty/chromium/third_party/blink/renderer/platform/text/text_break_iterator.cc
|
||||
@@ -161,7 +161,9 @@ static const unsigned char kAsciiLineBreakTable[][(kAsciiLineBreakTableLastChar
|
||||
};
|
||||
// clang-format on
|
||||
|
||||
-#if U_ICU_VERSION_MAJOR_NUM >= 58
|
||||
+#if U_ICU_VERSION_MAJOR_NUM >= 74
|
||||
+#define BA_LB_COUNT (U_LB_COUNT - 8)
|
||||
+#elif U_ICU_VERSION_MAJOR_NUM >= 58
|
||||
#define BA_LB_COUNT (U_LB_COUNT - 3)
|
||||
#else
|
||||
#define BA_LB_COUNT U_LB_COUNT
|
||||
--
|
||||
2.43.0
|
||||
|
||||
@ -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,6 +95,35 @@ 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
|
||||
@ -117,7 +146,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 @@
|
||||
@ -132,32 +161,3 @@ index 000000000..e8a3727a0
|
||||
+#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
|
||||
|
||||
@ -1,27 +0,0 @@
|
||||
Index: chromium/third_party/angle/gni/angle.gni
|
||||
===================================================================
|
||||
--- chromium/third_party/angle/gni/angle.gni
|
||||
+++ chromium/third_party/angle/gni/angle.gni
|
||||
@@ -97,7 +97,8 @@ declare_args() {
|
||||
|
||||
if (current_cpu == "arm64" || current_cpu == "x64" ||
|
||||
current_cpu == "mips64el" || current_cpu == "s390x" ||
|
||||
- current_cpu == "ppc64" || current_cpu == "loong64") {
|
||||
+ current_cpu == "ppc64" || current_cpu == "loong64" ||
|
||||
+ current_cpu == "riscv64") {
|
||||
angle_64bit_current_cpu = true
|
||||
} else if (current_cpu == "arm" || current_cpu == "x86" ||
|
||||
current_cpu == "mipsel" || current_cpu == "s390" ||
|
||||
Index: chromium/third_party/angle/src/common/platform.h
|
||||
===================================================================
|
||||
--- chromium/third_party/angle/src/common/platform.h
|
||||
+++ chromium/third_party/angle/src/common/platform.h
|
||||
@@ -102,7 +102,7 @@
|
||||
#endif
|
||||
|
||||
// Mips and arm devices need to include stddef for size_t.
|
||||
-#if defined(__mips__) || defined(__arm__) || defined(__aarch64__)
|
||||
+#if defined(__mips__) || defined(__arm__) || defined(__aarch64__) || defined(__riscv)
|
||||
# include <stddef.h>
|
||||
#endif
|
||||
|
||||
@ -1,569 +0,0 @@
|
||||
Index: chromium/third_party/breakpad/breakpad/src/client/linux/dump_writer_common/raw_context_cpu.h
|
||||
===================================================================
|
||||
--- chromium/third_party/breakpad/breakpad/src/client/linux/dump_writer_common/raw_context_cpu.h
|
||||
+++ chromium/third_party/breakpad/breakpad/src/client/linux/dump_writer_common/raw_context_cpu.h
|
||||
@@ -44,6 +44,8 @@ typedef MDRawContextARM RawContextCPU;
|
||||
typedef MDRawContextARM64_Old RawContextCPU;
|
||||
#elif defined(__mips__)
|
||||
typedef MDRawContextMIPS RawContextCPU;
|
||||
+#elif defined(__riscv)
|
||||
+typedef MDRawContextRISCV64 RawContextCPU;
|
||||
#else
|
||||
#error "This code has not been ported to your platform yet."
|
||||
#endif
|
||||
Index: chromium/third_party/breakpad/breakpad/src/client/linux/dump_writer_common/thread_info.cc
|
||||
===================================================================
|
||||
--- chromium/third_party/breakpad/breakpad/src/client/linux/dump_writer_common/thread_info.cc
|
||||
+++ chromium/third_party/breakpad/breakpad/src/client/linux/dump_writer_common/thread_info.cc
|
||||
@@ -270,7 +270,23 @@ void ThreadInfo::FillCPUContext(RawConte
|
||||
out->float_save.fir = mcontext.fpc_eir;
|
||||
#endif
|
||||
}
|
||||
-#endif // __mips__
|
||||
+#elif defined(__riscv)
|
||||
+
|
||||
+uintptr_t ThreadInfo::GetInstructionPointer() const {
|
||||
+ return mcontext.__gregs[REG_PC];
|
||||
+}
|
||||
+
|
||||
+void ThreadInfo::FillCPUContext(RawContextCPU* out) const {
|
||||
+ out->context_flags = MD_CONTEXT_RISCV64_FULL;
|
||||
+
|
||||
+ my_memcpy (out->iregs, mcontext.__gregs, MD_CONTEXT_RISCV64_GPR_COUNT * 8);
|
||||
+
|
||||
+ out->float_save.fcsr = mcontext.__fpregs.__d.__fcsr;
|
||||
+ my_memcpy(&out->float_save.regs, &mcontext.__fpregs.__d.__f,
|
||||
+ MD_FLOATINGSAVEAREA_RISCV64_FPR_COUNT * 8);
|
||||
+}
|
||||
+
|
||||
+#endif // __riscv
|
||||
|
||||
void ThreadInfo::GetGeneralPurposeRegisters(void** gp_regs, size_t* size) {
|
||||
assert(gp_regs || size);
|
||||
@@ -279,6 +295,11 @@ void ThreadInfo::GetGeneralPurposeRegist
|
||||
*gp_regs = mcontext.gregs;
|
||||
if (size)
|
||||
*size = sizeof(mcontext.gregs);
|
||||
+#elif defined(__riscv)
|
||||
+ if (gp_regs)
|
||||
+ *gp_regs = mcontext.__gregs;
|
||||
+ if (size)
|
||||
+ *size = sizeof(mcontext.__gregs);
|
||||
#else
|
||||
if (gp_regs)
|
||||
*gp_regs = ®s;
|
||||
@@ -294,6 +315,11 @@ void ThreadInfo::GetFloatingPointRegiste
|
||||
*fp_regs = &mcontext.fpregs;
|
||||
if (size)
|
||||
*size = sizeof(mcontext.fpregs);
|
||||
+#elif defined(__riscv)
|
||||
+ if (fp_regs)
|
||||
+ *fp_regs = &mcontext.__fpregs;
|
||||
+ if (size)
|
||||
+ *size = sizeof(mcontext.__fpregs);
|
||||
#else
|
||||
if (fp_regs)
|
||||
*fp_regs = &fpregs;
|
||||
Index: chromium/third_party/breakpad/breakpad/src/client/linux/dump_writer_common/thread_info.h
|
||||
===================================================================
|
||||
--- chromium/third_party/breakpad/breakpad/src/client/linux/dump_writer_common/thread_info.h
|
||||
+++ chromium/third_party/breakpad/breakpad/src/client/linux/dump_writer_common/thread_info.h
|
||||
@@ -68,7 +68,7 @@ struct ThreadInfo {
|
||||
// Use the structures defined in <sys/user.h>
|
||||
struct user_regs_struct regs;
|
||||
struct user_fpsimd_struct fpregs;
|
||||
-#elif defined(__mips__)
|
||||
+#elif defined(__mips__) || defined(__riscv)
|
||||
// Use the structure defined in <sys/ucontext.h>.
|
||||
mcontext_t mcontext;
|
||||
#endif
|
||||
Index: chromium/third_party/breakpad/breakpad/src/client/linux/dump_writer_common/ucontext_reader.cc
|
||||
===================================================================
|
||||
--- chromium/third_party/breakpad/breakpad/src/client/linux/dump_writer_common/ucontext_reader.cc
|
||||
+++ chromium/third_party/breakpad/breakpad/src/client/linux/dump_writer_common/ucontext_reader.cc
|
||||
@@ -254,6 +254,27 @@ void UContextReader::FillCPUContext(RawC
|
||||
out->float_save.fir = uc->uc_mcontext.fpc_eir; // Unused.
|
||||
#endif
|
||||
}
|
||||
+
|
||||
+#elif defined(__riscv)
|
||||
+
|
||||
+uintptr_t UContextReader::GetStackPointer(const ucontext_t* uc) {
|
||||
+ return uc->uc_mcontext.__gregs[REG_SP];
|
||||
+}
|
||||
+
|
||||
+uintptr_t UContextReader::GetInstructionPointer(const ucontext_t* uc) {
|
||||
+ return uc->uc_mcontext.__gregs[REG_PC];
|
||||
+}
|
||||
+
|
||||
+void UContextReader::FillCPUContext(RawContextCPU* out, const ucontext_t* uc) {
|
||||
+ out->context_flags = MD_CONTEXT_RISCV64_FULL;
|
||||
+
|
||||
+ for (int i = 0; i < MD_CONTEXT_RISCV64_GPR_COUNT; ++i)
|
||||
+ out->iregs[i] = uc->uc_mcontext.__gregs[i];
|
||||
+
|
||||
+ out->float_save.fcsr = uc->uc_mcontext.__fpregs.__d.__fcsr;
|
||||
+ for (int i = 0; i < MD_FLOATINGSAVEAREA_RISCV64_FPR_COUNT; ++i)
|
||||
+ out->float_save.regs[i] = uc->uc_mcontext.__fpregs.__d.__f[i];
|
||||
+}
|
||||
#endif
|
||||
|
||||
} // namespace google_breakpad
|
||||
Index: chromium/third_party/breakpad/breakpad/src/client/linux/handler/exception_handler.cc
|
||||
===================================================================
|
||||
--- chromium/third_party/breakpad/breakpad/src/client/linux/handler/exception_handler.cc
|
||||
+++ chromium/third_party/breakpad/breakpad/src/client/linux/handler/exception_handler.cc
|
||||
@@ -461,7 +461,7 @@ bool ExceptionHandler::HandleSignal(int
|
||||
memcpy(&g_crash_context_.float_state, fp_ptr,
|
||||
sizeof(g_crash_context_.float_state));
|
||||
}
|
||||
-#elif !defined(__ARM_EABI__) && !defined(__mips__)
|
||||
+#elif !defined(__ARM_EABI__) && !defined(__mips__) && !defined(__riscv)
|
||||
// FP state is not part of user ABI on ARM Linux.
|
||||
// In case of MIPS Linux FP state is already part of ucontext_t
|
||||
// and 'float_state' is not a member of CrashContext.
|
||||
@@ -701,7 +701,7 @@ bool ExceptionHandler::WriteMinidump() {
|
||||
}
|
||||
#endif
|
||||
|
||||
-#if !defined(__ARM_EABI__) && !defined(__aarch64__) && !defined(__mips__)
|
||||
+#if !defined(__ARM_EABI__) && !defined(__aarch64__) && !defined(__mips__) && !defined(__riscv)
|
||||
// FPU state is not part of ARM EABI ucontext_t.
|
||||
memcpy(&context.float_state, context.context.uc_mcontext.fpregs,
|
||||
sizeof(context.float_state));
|
||||
@@ -726,6 +726,9 @@ bool ExceptionHandler::WriteMinidump() {
|
||||
#elif defined(__mips__)
|
||||
context.siginfo.si_addr =
|
||||
reinterpret_cast<void*>(context.context.uc_mcontext.pc);
|
||||
+#elif defined(__riscv)
|
||||
+ context.siginfo.si_addr =
|
||||
+ reinterpret_cast<void*>(context.context.uc_mcontext.__gregs[REG_PC]);
|
||||
#else
|
||||
#error "This code has not been ported to your platform yet."
|
||||
#endif
|
||||
Index: chromium/third_party/breakpad/breakpad/src/client/linux/handler/exception_handler.h
|
||||
===================================================================
|
||||
--- chromium/third_party/breakpad/breakpad/src/client/linux/handler/exception_handler.h
|
||||
+++ chromium/third_party/breakpad/breakpad/src/client/linux/handler/exception_handler.h
|
||||
@@ -192,7 +192,7 @@ class ExceptionHandler {
|
||||
siginfo_t siginfo;
|
||||
pid_t tid; // the crashing thread.
|
||||
ucontext_t context;
|
||||
-#if !defined(__ARM_EABI__) && !defined(__mips__)
|
||||
+#if !defined(__ARM_EABI__) && !defined(__mips__) && !defined(__riscv)
|
||||
// #ifdef this out because FP state is not part of user ABI for Linux ARM.
|
||||
// In case of MIPS Linux FP state is already part of ucontext_t so
|
||||
// 'float_state' is not required.
|
||||
Index: chromium/third_party/breakpad/breakpad/src/client/linux/microdump_writer/microdump_writer.cc
|
||||
===================================================================
|
||||
--- chromium/third_party/breakpad/breakpad/src/client/linux/microdump_writer/microdump_writer.cc
|
||||
+++ chromium/third_party/breakpad/breakpad/src/client/linux/microdump_writer/microdump_writer.cc
|
||||
@@ -138,7 +138,7 @@ class MicrodumpWriter {
|
||||
const MicrodumpExtraInfo& microdump_extra_info,
|
||||
LinuxDumper* dumper)
|
||||
: ucontext_(context ? &context->context : NULL),
|
||||
-#if !defined(__ARM_EABI__) && !defined(__mips__)
|
||||
+#if !defined(__ARM_EABI__) && !defined(__mips__) && !defined(__riscv)
|
||||
float_state_(context ? &context->float_state : NULL),
|
||||
#endif
|
||||
dumper_(dumper),
|
||||
@@ -337,6 +337,12 @@ class MicrodumpWriter {
|
||||
# else
|
||||
# error "This mips ABI is currently not supported (n32)"
|
||||
#endif
|
||||
+#elif defined(__riscv)
|
||||
+# if __riscv_xlen == 64
|
||||
+ const char kArch[] = "riscv64";
|
||||
+# else
|
||||
+# error "This RISC-V ABI is currently not supported"
|
||||
+#endif
|
||||
#else
|
||||
#error "This code has not been ported to your platform yet"
|
||||
#endif
|
||||
@@ -409,7 +415,7 @@ class MicrodumpWriter {
|
||||
void DumpCPUState() {
|
||||
RawContextCPU cpu;
|
||||
my_memset(&cpu, 0, sizeof(RawContextCPU));
|
||||
-#if !defined(__ARM_EABI__) && !defined(__mips__)
|
||||
+#if !defined(__ARM_EABI__) && !defined(__mips__) && !defined(__riscv)
|
||||
UContextReader::FillCPUContext(&cpu, ucontext_, float_state_);
|
||||
#else
|
||||
UContextReader::FillCPUContext(&cpu, ucontext_);
|
||||
@@ -605,7 +611,7 @@ class MicrodumpWriter {
|
||||
void* Alloc(unsigned bytes) { return dumper_->allocator()->Alloc(bytes); }
|
||||
|
||||
const ucontext_t* const ucontext_;
|
||||
-#if !defined(__ARM_EABI__) && !defined(__mips__)
|
||||
+#if !defined(__ARM_EABI__) && !defined(__mips__) && !defined(__riscv)
|
||||
const google_breakpad::fpstate_t* const float_state_;
|
||||
#endif
|
||||
LinuxDumper* dumper_;
|
||||
Index: chromium/third_party/breakpad/breakpad/src/client/linux/minidump_writer/linux_core_dumper.cc
|
||||
===================================================================
|
||||
--- chromium/third_party/breakpad/breakpad/src/client/linux/minidump_writer/linux_core_dumper.cc
|
||||
+++ chromium/third_party/breakpad/breakpad/src/client/linux/minidump_writer/linux_core_dumper.cc
|
||||
@@ -112,6 +112,9 @@ bool LinuxCoreDumper::GetThreadInfoByInd
|
||||
#elif defined(__mips__)
|
||||
stack_pointer =
|
||||
reinterpret_cast<uint8_t*>(info->mcontext.gregs[MD_CONTEXT_MIPS_REG_SP]);
|
||||
+#elif defined(__riscv)
|
||||
+ stack_pointer =
|
||||
+ reinterpret_cast<uint8_t*>(info->mcontext.__gregs[MD_CONTEXT_RISCV64_REG_SP]);
|
||||
#else
|
||||
#error "This code hasn't been ported to your platform yet."
|
||||
#endif
|
||||
@@ -218,6 +221,8 @@ bool LinuxCoreDumper::EnumerateThreads()
|
||||
info.mcontext.mdlo = status->pr_reg[EF_LO];
|
||||
info.mcontext.mdhi = status->pr_reg[EF_HI];
|
||||
info.mcontext.pc = status->pr_reg[EF_CP0_EPC];
|
||||
+#elif defined(__riscv)
|
||||
+ memcpy(info.mcontext.__gregs, status->pr_reg, sizeof(info.mcontext.__gregs));
|
||||
#else // __mips__
|
||||
memcpy(&info.regs, status->pr_reg, sizeof(info.regs));
|
||||
#endif // __mips__
|
||||
Index: chromium/third_party/breakpad/breakpad/src/client/linux/minidump_writer/linux_dumper.h
|
||||
===================================================================
|
||||
--- chromium/third_party/breakpad/breakpad/src/client/linux/minidump_writer/linux_dumper.h
|
||||
+++ chromium/third_party/breakpad/breakpad/src/client/linux/minidump_writer/linux_dumper.h
|
||||
@@ -63,7 +63,8 @@ namespace google_breakpad {
|
||||
(defined(__mips__) && _MIPS_SIM == _ABIO32)
|
||||
typedef Elf32_auxv_t elf_aux_entry;
|
||||
#elif defined(__x86_64) || defined(__aarch64__) || \
|
||||
- (defined(__mips__) && _MIPS_SIM != _ABIO32)
|
||||
+ (defined(__mips__) && _MIPS_SIM != _ABIO32) || \
|
||||
+ (defined(__riscv) && __riscv_xlen == 64)
|
||||
typedef Elf64_auxv_t elf_aux_entry;
|
||||
#endif
|
||||
|
||||
Index: chromium/third_party/breakpad/breakpad/src/client/linux/minidump_writer/linux_ptrace_dumper.cc
|
||||
===================================================================
|
||||
--- chromium/third_party/breakpad/breakpad/src/client/linux/minidump_writer/linux_ptrace_dumper.cc
|
||||
+++ chromium/third_party/breakpad/breakpad/src/client/linux/minidump_writer/linux_ptrace_dumper.cc
|
||||
@@ -298,6 +298,9 @@ bool LinuxPtraceDumper::GetThreadInfoByI
|
||||
#elif defined(__mips__)
|
||||
stack_pointer =
|
||||
reinterpret_cast<uint8_t*>(info->mcontext.gregs[MD_CONTEXT_MIPS_REG_SP]);
|
||||
+#elif defined(__riscv)
|
||||
+ stack_pointer =
|
||||
+ reinterpret_cast<uint8_t*>(info->mcontext.__gregs[MD_CONTEXT_RISCV64_REG_SP]);
|
||||
#else
|
||||
#error "This code hasn't been ported to your platform yet."
|
||||
#endif
|
||||
Index: chromium/third_party/breakpad/breakpad/src/client/linux/minidump_writer/minidump_writer.cc
|
||||
===================================================================
|
||||
--- chromium/third_party/breakpad/breakpad/src/client/linux/minidump_writer/minidump_writer.cc
|
||||
+++ chromium/third_party/breakpad/breakpad/src/client/linux/minidump_writer/minidump_writer.cc
|
||||
@@ -141,7 +141,7 @@ class MinidumpWriter {
|
||||
: fd_(minidump_fd),
|
||||
path_(minidump_path),
|
||||
ucontext_(context ? &context->context : NULL),
|
||||
-#if !defined(__ARM_EABI__) && !defined(__mips__)
|
||||
+#if !defined(__ARM_EABI__) && !defined(__mips__) && !defined(__riscv)
|
||||
float_state_(context ? &context->float_state : NULL),
|
||||
#endif
|
||||
dumper_(dumper),
|
||||
@@ -473,7 +473,7 @@ class MinidumpWriter {
|
||||
if (!cpu.Allocate())
|
||||
return false;
|
||||
my_memset(cpu.get(), 0, sizeof(RawContextCPU));
|
||||
-#if !defined(__ARM_EABI__) && !defined(__mips__)
|
||||
+#if !defined(__ARM_EABI__) && !defined(__mips__) && !defined(__riscv)
|
||||
UContextReader::FillCPUContext(cpu.get(), ucontext_, float_state_);
|
||||
#else
|
||||
UContextReader::FillCPUContext(cpu.get(), ucontext_);
|
||||
@@ -950,7 +950,7 @@ class MinidumpWriter {
|
||||
dirent->location.rva = 0;
|
||||
}
|
||||
|
||||
-#if defined(__i386__) || defined(__x86_64__) || defined(__mips__)
|
||||
+#if defined(__i386__) || defined(__x86_64__) || defined(__mips__) || defined(__riscv)
|
||||
bool WriteCPUInformation(MDRawSystemInfo* sys_info) {
|
||||
char vendor_id[sizeof(sys_info->cpu.x86_cpu_info.vendor_id) + 1] = {0};
|
||||
static const char vendor_id_name[] = "vendor_id";
|
||||
@@ -978,6 +978,12 @@ class MinidumpWriter {
|
||||
# else
|
||||
# error "This mips ABI is currently not supported (n32)"
|
||||
#endif
|
||||
+#elif defined(__riscv)
|
||||
+# if __riscv_xlen == 64
|
||||
+ MD_CPU_ARCHITECTURE_RISCV64;
|
||||
+# else
|
||||
+# error "This RISC-V ABI is currently not supported"
|
||||
+# endif
|
||||
#elif defined(__i386__)
|
||||
MD_CPU_ARCHITECTURE_X86;
|
||||
#else
|
||||
@@ -1386,7 +1392,7 @@ class MinidumpWriter {
|
||||
const char* path_; // Path to the file where the minidum should be written.
|
||||
|
||||
const ucontext_t* const ucontext_; // also from the signal handler
|
||||
-#if !defined(__ARM_EABI__) && !defined(__mips__)
|
||||
+#if !defined(__ARM_EABI__) && !defined(__mips__) && !defined(__riscv)
|
||||
const google_breakpad::fpstate_t* const float_state_; // ditto
|
||||
#endif
|
||||
LinuxDumper* dumper_;
|
||||
Index: chromium/third_party/breakpad/breakpad/src/client/linux/minidump_writer/minidump_writer.h
|
||||
===================================================================
|
||||
--- chromium/third_party/breakpad/breakpad/src/client/linux/minidump_writer/minidump_writer.h
|
||||
+++ chromium/third_party/breakpad/breakpad/src/client/linux/minidump_writer/minidump_writer.h
|
||||
@@ -48,7 +48,7 @@ class ExceptionHandler;
|
||||
|
||||
#if defined(__aarch64__)
|
||||
typedef struct fpsimd_context fpstate_t;
|
||||
-#elif !defined(__ARM_EABI__) && !defined(__mips__)
|
||||
+#elif !defined(__ARM_EABI__) && !defined(__mips__) && !defined(__riscv)
|
||||
typedef std::remove_pointer<fpregset_t>::type fpstate_t;
|
||||
#endif
|
||||
|
||||
Index: chromium/third_party/breakpad/breakpad/src/common/linux/breakpad_getcontext.S
|
||||
===================================================================
|
||||
--- chromium/third_party/breakpad/breakpad/src/common/linux/breakpad_getcontext.S
|
||||
+++ chromium/third_party/breakpad/breakpad/src/common/linux/breakpad_getcontext.S
|
||||
@@ -527,6 +527,68 @@ breakpad_getcontext:
|
||||
.cfi_endproc
|
||||
.size breakpad_getcontext, . - breakpad_getcontext
|
||||
|
||||
+#elif defined(__riscv) && __riscv_xlen == 64
|
||||
+
|
||||
+#define __NR_rt_sigprocmask 135
|
||||
+#define _NSIG8 64 / 8
|
||||
+#define SIG_BLOCK 0
|
||||
+
|
||||
+ .text
|
||||
+ .global breakpad_getcontext
|
||||
+ .hidden breakpad_getcontext
|
||||
+ .type breakpad_getcontext, @function
|
||||
+ .align 2
|
||||
+breakpad_getcontext:
|
||||
+ sd ra, MCONTEXT_GREGS_OFFSET + 0*8(a0)
|
||||
+ sd ra, MCONTEXT_GREGS_OFFSET + 1*8(a0)
|
||||
+ sd sp, MCONTEXT_GREGS_OFFSET + 2*8(a0)
|
||||
+ sd s0, MCONTEXT_GREGS_OFFSET + 8*8(a0)
|
||||
+ sd s1, MCONTEXT_GREGS_OFFSET + 9*8(a0)
|
||||
+ sd x0, MCONTEXT_GREGS_OFFSET + 10*8(a0) /* return 0 by overwriting a0. */
|
||||
+ sd s2, MCONTEXT_GREGS_OFFSET + 18*8(a0)
|
||||
+ sd s3, MCONTEXT_GREGS_OFFSET + 19*8(a0)
|
||||
+ sd s4, MCONTEXT_GREGS_OFFSET + 20*8(a0)
|
||||
+ sd s5, MCONTEXT_GREGS_OFFSET + 21*8(a0)
|
||||
+ sd s6, MCONTEXT_GREGS_OFFSET + 22*8(a0)
|
||||
+ sd s7, MCONTEXT_GREGS_OFFSET + 23*8(a0)
|
||||
+ sd s8, MCONTEXT_GREGS_OFFSET + 24*8(a0)
|
||||
+ sd s9, MCONTEXT_GREGS_OFFSET + 25*8(a0)
|
||||
+ sd s10, MCONTEXT_GREGS_OFFSET + 26*8(a0)
|
||||
+ sd s11, MCONTEXT_GREGS_OFFSET + 27*8(a0)
|
||||
+
|
||||
+#ifndef __riscv_float_abi_soft
|
||||
+ frsr a1
|
||||
+
|
||||
+ fsd fs0, MCONTEXT_FPREGS_OFFSET + 8*8(a0)
|
||||
+ fsd fs1, MCONTEXT_FPREGS_OFFSET + 9*8(a0)
|
||||
+ fsd fs2, MCONTEXT_FPREGS_OFFSET + 18*8(a0)
|
||||
+ fsd fs3, MCONTEXT_FPREGS_OFFSET + 19*8(a0)
|
||||
+ fsd fs4, MCONTEXT_FPREGS_OFFSET + 20*8(a0)
|
||||
+ fsd fs5, MCONTEXT_FPREGS_OFFSET + 21*8(a0)
|
||||
+ fsd fs6, MCONTEXT_FPREGS_OFFSET + 22*8(a0)
|
||||
+ fsd fs7, MCONTEXT_FPREGS_OFFSET + 23*8(a0)
|
||||
+ fsd fs8, MCONTEXT_FPREGS_OFFSET + 24*8(a0)
|
||||
+ fsd fs9, MCONTEXT_FPREGS_OFFSET + 25*8(a0)
|
||||
+ fsd fs10, MCONTEXT_FPREGS_OFFSET + 26*8(a0)
|
||||
+ fsd fs11, MCONTEXT_FPREGS_OFFSET + 27*8(a0)
|
||||
+
|
||||
+ sw a1, MCONTEXT_FSR_OFFSET(a0)
|
||||
+#endif /* __riscv_float_abi_soft */
|
||||
+
|
||||
+/* rt_sigprocmask (SIG_BLOCK, NULL, &ucp->uc_sigmask, _NSIG / 8) */
|
||||
+ li a3, _NSIG8
|
||||
+ add a2, a0, UCONTEXT_SIGMASK_OFFSET
|
||||
+ mv a1, zero
|
||||
+ li a0, SIG_BLOCK
|
||||
+
|
||||
+ li a7, __NR_rt_sigprocmask
|
||||
+ scall
|
||||
+
|
||||
+ /* Always return 0 for success, even if sigprocmask failed. */
|
||||
+ mv a0, zero
|
||||
+ ret
|
||||
+ .size breakpad_getcontext, . - breakpad_getcontext
|
||||
+
|
||||
#else
|
||||
#error "This file has not been ported for your CPU!"
|
||||
#endif
|
||||
Index: chromium/third_party/breakpad/breakpad/src/common/linux/memory_mapped_file.cc
|
||||
===================================================================
|
||||
--- chromium/third_party/breakpad/breakpad/src/common/linux/memory_mapped_file.cc
|
||||
+++ chromium/third_party/breakpad/breakpad/src/common/linux/memory_mapped_file.cc
|
||||
@@ -65,7 +65,8 @@ bool MemoryMappedFile::Map(const char* p
|
||||
}
|
||||
|
||||
#if defined(__x86_64__) || defined(__aarch64__) || \
|
||||
- (defined(__mips__) && _MIPS_SIM == _ABI64)
|
||||
+ (defined(__mips__) && _MIPS_SIM == _ABI64) || \
|
||||
+ (defined(__riscv) && __riscv_xlen == 64)
|
||||
|
||||
struct kernel_stat st;
|
||||
if (sys_fstat(fd, &st) == -1 || st.st_size < 0) {
|
||||
Index: chromium/third_party/breakpad/breakpad/src/common/linux/ucontext_constants.h
|
||||
===================================================================
|
||||
--- chromium/third_party/breakpad/breakpad/src/common/linux/ucontext_constants.h
|
||||
+++ chromium/third_party/breakpad/breakpad/src/common/linux/ucontext_constants.h
|
||||
@@ -146,6 +146,14 @@
|
||||
#endif
|
||||
#define FPREGS_OFFSET_MXCSR 24
|
||||
|
||||
+#elif defined(__riscv)
|
||||
+
|
||||
+#define UCONTEXT_SIGMASK_OFFSET 40
|
||||
+
|
||||
+#define MCONTEXT_GREGS_OFFSET 176
|
||||
+#define MCONTEXT_FPREGS_OFFSET 432
|
||||
+#define MCONTEXT_FSR_OFFSET (MCONTEXT_FPREGS_OFFSET + 32*8)
|
||||
+
|
||||
#else
|
||||
#error "This header has not been ported for your CPU"
|
||||
#endif
|
||||
Index: chromium/third_party/breakpad/breakpad/src/google_breakpad/common/minidump_cpu_riscv64.h
|
||||
===================================================================
|
||||
--- /dev/null
|
||||
+++ chromium/third_party/breakpad/breakpad/src/google_breakpad/common/minidump_cpu_riscv64.h
|
||||
@@ -0,0 +1,121 @@
|
||||
+/* Copyright 2013 Google Inc.
|
||||
+ * All rights reserved.
|
||||
+ *
|
||||
+ * Redistribution and use in source and binary forms, with or without
|
||||
+ * modification, are permitted provided that the following conditions are
|
||||
+ * met:
|
||||
+ *
|
||||
+ * * Redistributions of source code must retain the above copyright
|
||||
+ * notice, this list of conditions and the following disclaimer.
|
||||
+ * * 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.
|
||||
+ * * Neither the name of Google Inc. nor the names of its
|
||||
+ * contributors may be used to endorse or promote products derived from
|
||||
+ * this software without specific prior written permission.
|
||||
+ *
|
||||
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
+ * "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 COPYRIGHT
|
||||
+ * OWNER 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. */
|
||||
+
|
||||
+/* minidump_format.h: A cross-platform reimplementation of minidump-related
|
||||
+ * portions of DbgHelp.h from the Windows Platform SDK.
|
||||
+ *
|
||||
+ * (This is C99 source, please don't corrupt it with C++.)
|
||||
+ *
|
||||
+ * This file contains the necessary definitions to read minidump files
|
||||
+ * produced on ARM. These files may be read on any platform provided
|
||||
+ * that the alignments of these structures on the processing system are
|
||||
+ * identical to the alignments of these structures on the producing system.
|
||||
+ * For this reason, precise-sized types are used. The structures defined
|
||||
+ * by this file have been laid out to minimize alignment problems by
|
||||
+ * ensuring that all members are aligned on their natural boundaries.
|
||||
+ * In some cases, tail-padding may be significant when different ABIs specify
|
||||
+ * different tail-padding behaviors. To avoid problems when reading or
|
||||
+ * writing affected structures, MD_*_SIZE macros are provided where needed,
|
||||
+ * containing the useful size of the structures without padding.
|
||||
+ *
|
||||
+ * Structures that are defined by Microsoft to contain a zero-length array
|
||||
+ * are instead defined here to contain an array with one element, as
|
||||
+ * zero-length arrays are forbidden by standard C and C++. In these cases,
|
||||
+ * *_minsize constants are provided to be used in place of sizeof. For a
|
||||
+ * cleaner interface to these sizes when using C++, see minidump_size.h.
|
||||
+ *
|
||||
+ * These structures are also sufficient to populate minidump files.
|
||||
+ *
|
||||
+ * Because precise data type sizes are crucial for this implementation to
|
||||
+ * function properly and portably, a set of primitive types with known sizes
|
||||
+ * are used as the basis of each structure defined by this file.
|
||||
+ *
|
||||
+ * Author: Colin Blundell
|
||||
+ */
|
||||
+
|
||||
+/*
|
||||
+ * RISCV64 support
|
||||
+ */
|
||||
+
|
||||
+#ifndef GOOGLE_BREAKPAD_COMMON_MINIDUMP_CPU_RISCV64_H__
|
||||
+#define GOOGLE_BREAKPAD_COMMON_MINIDUMP_CPU_RISCV64_H__
|
||||
+
|
||||
+#include "google_breakpad/common/breakpad_types.h"
|
||||
+
|
||||
+#define MD_FLOATINGSAVEAREA_RISCV64_FPR_COUNT 32
|
||||
+#define MD_CONTEXT_RISCV64_GPR_COUNT 32
|
||||
+
|
||||
+typedef struct {
|
||||
+ /* 32 64-bit floating point registers, f0 .. f31. */
|
||||
+ uint64_t regs[MD_FLOATINGSAVEAREA_RISCV64_FPR_COUNT];
|
||||
+
|
||||
+ uint32_t fcsr; /* FPU control and status register */
|
||||
+} MDFloatingSaveAreaRISCV64;
|
||||
+
|
||||
+/* For (MDRawContextRISCV64).context_flags. These values indicate the type of
|
||||
+ * context stored in the structure. */
|
||||
+#define MD_CONTEXT_RISCV64 0x00400000
|
||||
+#define MD_CONTEXT_RISCV64_CONTROL (MD_CONTEXT_RISCV64 | 0x00000001)
|
||||
+#define MD_CONTEXT_RISCV64_INTEGER (MD_CONTEXT_RISCV64 | 0x00000002)
|
||||
+#define MD_CONTEXT_RISCV64_FLOATING_POINT (MD_CONTEXT_RISCV64 | 0x00000004)
|
||||
+#define MD_CONTEXT_RISCV64_DEBUG (MD_CONTEXT_RISCV64 | 0x00000008)
|
||||
+#define MD_CONTEXT_RISCV64_FULL (MD_CONTEXT_RISCV64_CONTROL | \
|
||||
+ MD_CONTEXT_RISCV64_INTEGER | \
|
||||
+ MD_CONTEXT_RISCV64_FLOATING_POINT)
|
||||
+#define MD_CONTEXT_RISCV64_ALL (MD_CONTEXT_RISCV64_FULL | MD_CONTEXT_RISCV64_DEBUG)
|
||||
+
|
||||
+typedef struct {
|
||||
+ /* Determines which fields of this struct are populated */
|
||||
+ uint32_t context_flags;
|
||||
+
|
||||
+ /* 32 64-bit integer registers, x1 .. x31 + the PC
|
||||
+ * Note the following fixed uses:
|
||||
+ * x8 is the frame pointer
|
||||
+ * x1 is the link register
|
||||
+ * x2 is the stack pointer
|
||||
+ * The PC is effectively x0.
|
||||
+ */
|
||||
+ uint64_t iregs[MD_CONTEXT_RISCV64_GPR_COUNT];
|
||||
+
|
||||
+ /* The next field is included with MD_CONTEXT64_ARM_FLOATING_POINT */
|
||||
+ MDFloatingSaveAreaRISCV64 float_save;
|
||||
+
|
||||
+} MDRawContextRISCV64;
|
||||
+
|
||||
+/* Indices into iregs for registers with a dedicated or conventional
|
||||
+ * purpose.
|
||||
+ */
|
||||
+enum MDRISCV64RegisterNumbers {
|
||||
+ MD_CONTEXT_RISCV64_REG_FP = 8,
|
||||
+ MD_CONTEXT_RISCV64_REG_RA = 1,
|
||||
+ MD_CONTEXT_RISCV64_REG_SP = 2,
|
||||
+ MD_CONTEXT_RISCV64_REG_PC = 0
|
||||
+};
|
||||
+
|
||||
+#endif /* GOOGLE_BREAKPAD_COMMON_MINIDUMP_CPU_RISCV64_H__ */
|
||||
Index: chromium/third_party/breakpad/breakpad/src/google_breakpad/common/minidump_format.h
|
||||
===================================================================
|
||||
--- chromium/third_party/breakpad/breakpad/src/google_breakpad/common/minidump_format.h
|
||||
+++ chromium/third_party/breakpad/breakpad/src/google_breakpad/common/minidump_format.h
|
||||
@@ -118,6 +118,7 @@ typedef struct {
|
||||
#include "minidump_cpu_mips.h"
|
||||
#include "minidump_cpu_ppc.h"
|
||||
#include "minidump_cpu_ppc64.h"
|
||||
+#include "minidump_cpu_riscv64.h"
|
||||
#include "minidump_cpu_sparc.h"
|
||||
#include "minidump_cpu_x86.h"
|
||||
|
||||
@@ -684,6 +685,7 @@ typedef enum {
|
||||
MD_CPU_ARCHITECTURE_PPC64 = 0x8002, /* Breakpad-defined value for PPC64 */
|
||||
MD_CPU_ARCHITECTURE_ARM64_OLD = 0x8003, /* Breakpad-defined value for ARM64 */
|
||||
MD_CPU_ARCHITECTURE_MIPS64 = 0x8004, /* Breakpad-defined value for MIPS64 */
|
||||
+ MD_CPU_ARCHITECTURE_RISCV64 = 0x8005, /* Breakpad-defined value for RISCV64 */
|
||||
MD_CPU_ARCHITECTURE_UNKNOWN = 0xffff /* PROCESSOR_ARCHITECTURE_UNKNOWN */
|
||||
} MDCPUArchitecture;
|
||||
|
||||
@ -1,777 +0,0 @@
|
||||
Index: chromium/third_party/crashpad/crashpad/minidump/minidump_context.h
|
||||
===================================================================
|
||||
--- chromium/third_party/crashpad/crashpad/minidump/minidump_context.h
|
||||
+++ chromium/third_party/crashpad/crashpad/minidump/minidump_context.h
|
||||
@@ -637,6 +637,41 @@ struct MinidumpContextMIPS64 {
|
||||
uint64_t fir;
|
||||
};
|
||||
|
||||
+//! \brief 64bit RISC-V-specifc flags for MinidumpContextRISCV64::context_flags.
|
||||
+//! Based on minidump_cpu_riscv64.h from breakpad
|
||||
+enum MinidumpContextRISCV64Flags : uint32_t {
|
||||
+ //! \brief Identifies the context structure as RISCV64.
|
||||
+ kMinidumpContextRISCV64 = 0x00080000,
|
||||
+
|
||||
+ //! \brief Indicates the validity of integer registers.
|
||||
+ //!
|
||||
+ //! Registers `x1`-`x31` and pc are valid.
|
||||
+ kMinidumpContextRISCV64Integer = kMinidumpContextRISCV64 | 0x00000002,
|
||||
+
|
||||
+ //! \brief Indicates the validity of floating point registers.
|
||||
+ //!
|
||||
+ //! Floating point registers `f0`-`f31`, and `fcsr` are valid
|
||||
+ kMinidumpContextRISCV64FloatingPoint = kMinidumpContextRISCV64 | 0x00000004,
|
||||
+
|
||||
+ //! \brief Indicates the validity of all registers.
|
||||
+ kMinidumpContextRISCV64All = kMinidumpContextRISCV64Integer |
|
||||
+ kMinidumpContextRISCV64FloatingPoint,
|
||||
+};
|
||||
+
|
||||
+//! \brief A 64bit RISCV CPU context (register state) carried in a minidump file.
|
||||
+struct MinidumpContextRISCV64 {
|
||||
+ uint64_t context_flags;
|
||||
+
|
||||
+ //! \brief General purpose registers.
|
||||
+ uint64_t regs[32];
|
||||
+
|
||||
+ //! \brief FPU registers.
|
||||
+ uint64_t fpregs[32];
|
||||
+
|
||||
+ //! \brief FPU status register.
|
||||
+ uint64_t fcsr;
|
||||
+};
|
||||
+
|
||||
} // namespace crashpad
|
||||
|
||||
#endif // CRASHPAD_MINIDUMP_MINIDUMP_CONTEXT_H_
|
||||
Index: chromium/third_party/crashpad/crashpad/minidump/minidump_context_writer.cc
|
||||
===================================================================
|
||||
--- chromium/third_party/crashpad/crashpad/minidump/minidump_context_writer.cc
|
||||
+++ chromium/third_party/crashpad/crashpad/minidump/minidump_context_writer.cc
|
||||
@@ -102,6 +102,13 @@ MinidumpContextWriter::CreateFromSnapsho
|
||||
break;
|
||||
}
|
||||
|
||||
+ case kCPUArchitectureRISCV64: {
|
||||
+ context = std::make_unique<MinidumpContextRISCV64Writer>();
|
||||
+ reinterpret_cast<MinidumpContextRISCV64Writer*>(context.get())
|
||||
+ ->InitializeFromSnapshot(context_snapshot->riscv64);
|
||||
+ break;
|
||||
+ }
|
||||
+
|
||||
default: {
|
||||
LOG(ERROR) << "unknown context architecture "
|
||||
<< context_snapshot->architecture;
|
||||
@@ -555,5 +562,42 @@ size_t MinidumpContextMIPS64Writer::Cont
|
||||
DCHECK_GE(state(), kStateFrozen);
|
||||
return sizeof(context_);
|
||||
}
|
||||
+
|
||||
+MinidumpContextRISCV64Writer::MinidumpContextRISCV64Writer()
|
||||
+ : MinidumpContextWriter(), context_() {
|
||||
+ context_.context_flags = kMinidumpContextRISCV64;
|
||||
+}
|
||||
+
|
||||
+MinidumpContextRISCV64Writer::~MinidumpContextRISCV64Writer() = default;
|
||||
+
|
||||
+void MinidumpContextRISCV64Writer::InitializeFromSnapshot(
|
||||
+ const CPUContextRISCV64* context_snapshot) {
|
||||
+ DCHECK_EQ(state(), kStateMutable);
|
||||
+ DCHECK_EQ(context_.context_flags, kMinidumpContextRISCV64);
|
||||
+
|
||||
+ context_.context_flags = kMinidumpContextRISCV64All;
|
||||
+
|
||||
+ static_assert(sizeof(context_.regs) == sizeof(context_snapshot->regs),
|
||||
+ "GPRs size mismatch");
|
||||
+ memcpy(context_.regs, context_snapshot->regs, sizeof(context_.regs));
|
||||
+
|
||||
+ static_assert(sizeof(context_.fpregs) == sizeof(context_snapshot->fpregs),
|
||||
+ "FPRs size mismatch");
|
||||
+ memcpy(context_.fpregs,
|
||||
+ context_snapshot->fpregs,
|
||||
+ sizeof(context_.fpregs));
|
||||
+ context_.fcsr = context_snapshot->fcsr;
|
||||
+}
|
||||
+
|
||||
+bool MinidumpContextRISCV64Writer::WriteObject(
|
||||
+ FileWriterInterface* file_writer) {
|
||||
+ DCHECK_EQ(state(), kStateWritable);
|
||||
+ return file_writer->Write(&context_, sizeof(context_));
|
||||
+}
|
||||
+
|
||||
+size_t MinidumpContextRISCV64Writer::ContextSize() const {
|
||||
+ DCHECK_GE(state(), kStateFrozen);
|
||||
+ return sizeof(context_);
|
||||
+}
|
||||
|
||||
} // namespace crashpad
|
||||
Index: chromium/third_party/crashpad/crashpad/minidump/minidump_context_writer.h
|
||||
===================================================================
|
||||
--- chromium/third_party/crashpad/crashpad/minidump/minidump_context_writer.h
|
||||
+++ chromium/third_party/crashpad/crashpad/minidump/minidump_context_writer.h
|
||||
@@ -369,6 +369,49 @@ class MinidumpContextMIPS64Writer final
|
||||
MinidumpContextMIPS64 context_;
|
||||
};
|
||||
|
||||
+//! \brief The writer for a MinidumpContextRISCV64 structure in a minidump file.
|
||||
+class MinidumpContextRISCV64Writer final : public MinidumpContextWriter {
|
||||
+ public:
|
||||
+ MinidumpContextRISCV64Writer();
|
||||
+
|
||||
+ MinidumpContextRISCV64Writer(const MinidumpContextRISCV64Writer&) = delete;
|
||||
+ MinidumpContextRISCV64Writer& operator=(const MinidumpContextRISCV64Writer&) =
|
||||
+ delete;
|
||||
+
|
||||
+ ~MinidumpContextRISCV64Writer() override;
|
||||
+
|
||||
+ //! \brief Initializes the MinidumpContextRISCV 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 CPUContextRISCV64* 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.
|
||||
+ MinidumpContextRISCV64* context() { return &context_; }
|
||||
+
|
||||
+ protected:
|
||||
+ // MinidumpWritable:
|
||||
+ bool WriteObject(FileWriterInterface* file_writer) override;
|
||||
+
|
||||
+ // MinidumpContextWriter:
|
||||
+ size_t ContextSize() const override;
|
||||
+
|
||||
+ private:
|
||||
+ MinidumpContextRISCV64 context_;
|
||||
+};
|
||||
+
|
||||
} // namespace crashpad
|
||||
|
||||
#endif // CRASHPAD_MINIDUMP_MINIDUMP_CONTEXT_WRITER_H_
|
||||
Index: chromium/third_party/crashpad/crashpad/minidump/minidump_misc_info_writer.cc
|
||||
===================================================================
|
||||
--- chromium/third_party/crashpad/crashpad/minidump/minidump_misc_info_writer.cc
|
||||
+++ chromium/third_party/crashpad/crashpad/minidump/minidump_misc_info_writer.cc
|
||||
@@ -175,6 +175,10 @@ std::string MinidumpMiscInfoDebugBuildSt
|
||||
static constexpr char kCPU[] = "mips";
|
||||
#elif defined(ARCH_CPU_MIPS64EL)
|
||||
static constexpr char kCPU[] = "mips64";
|
||||
+#elif defined(ARCH_CPU_RISCV32)
|
||||
+ static constexpr char kCPU[] = "riscv32";
|
||||
+#elif defined(ARCH_CPU_RISCV64)
|
||||
+ static constexpr char kCPU[] = "riscv64";
|
||||
#else
|
||||
#error define kCPU for this CPU
|
||||
#endif
|
||||
Index: chromium/third_party/crashpad/crashpad/snapshot/capture_memory.cc
|
||||
===================================================================
|
||||
--- chromium/third_party/crashpad/crashpad/snapshot/capture_memory.cc
|
||||
+++ chromium/third_party/crashpad/crashpad/snapshot/capture_memory.cc
|
||||
@@ -117,6 +117,16 @@ void CaptureMemory::PointedToByContext(c
|
||||
for (size_t i = 0; i < std::size(context.mipsel->regs); ++i) {
|
||||
MaybeCaptureMemoryAround(delegate, context.mipsel->regs[i]);
|
||||
}
|
||||
+#elif defined(ARCH_CPU_RISCV_FAMILY)
|
||||
+ if (context.architecture == kCPUArchitectureRISCV64) {
|
||||
+ for (size_t i = 0; i < std::size(context.riscv64->regs); ++i) {
|
||||
+ MaybeCaptureMemoryAround(delegate, context.riscv64->regs[i]);
|
||||
+ }
|
||||
+ } else {
|
||||
+ for (size_t i = 0; i < std::size(context.riscv32->regs); ++i) {
|
||||
+ MaybeCaptureMemoryAround(delegate, context.riscv32->regs[i]);
|
||||
+ }
|
||||
+ }
|
||||
#else
|
||||
#error Port.
|
||||
#endif
|
||||
Index: chromium/third_party/crashpad/crashpad/snapshot/cpu_architecture.h
|
||||
===================================================================
|
||||
--- chromium/third_party/crashpad/crashpad/snapshot/cpu_architecture.h
|
||||
+++ chromium/third_party/crashpad/crashpad/snapshot/cpu_architecture.h
|
||||
@@ -43,7 +43,13 @@ enum CPUArchitecture {
|
||||
kCPUArchitectureMIPSEL,
|
||||
|
||||
//! \brief 64-bit MIPSEL.
|
||||
- kCPUArchitectureMIPS64EL
|
||||
+ kCPUArchitectureMIPS64EL,
|
||||
+
|
||||
+ //! \brief 32-bit RISCV.
|
||||
+ kCPUArchitectureRISCV32,
|
||||
+
|
||||
+ //! \brief 64-bit RISCV.
|
||||
+ kCPUArchitectureRISCV64
|
||||
};
|
||||
|
||||
} // namespace crashpad
|
||||
Index: chromium/third_party/crashpad/crashpad/snapshot/cpu_context.cc
|
||||
===================================================================
|
||||
--- chromium/third_party/crashpad/crashpad/snapshot/cpu_context.cc
|
||||
+++ chromium/third_party/crashpad/crashpad/snapshot/cpu_context.cc
|
||||
@@ -226,10 +226,12 @@ bool CPUContext::Is64Bit() const {
|
||||
case kCPUArchitectureX86_64:
|
||||
case kCPUArchitectureARM64:
|
||||
case kCPUArchitectureMIPS64EL:
|
||||
+ case kCPUArchitectureRISCV64:
|
||||
return true;
|
||||
case kCPUArchitectureX86:
|
||||
case kCPUArchitectureARM:
|
||||
case kCPUArchitectureMIPSEL:
|
||||
+ case kCPUArchitectureRISCV32:
|
||||
return false;
|
||||
default:
|
||||
NOTREACHED();
|
||||
Index: chromium/third_party/crashpad/crashpad/snapshot/cpu_context.h
|
||||
===================================================================
|
||||
--- chromium/third_party/crashpad/crashpad/snapshot/cpu_context.h
|
||||
+++ chromium/third_party/crashpad/crashpad/snapshot/cpu_context.h
|
||||
@@ -362,6 +362,20 @@ struct CPUContextMIPS64 {
|
||||
uint64_t fir;
|
||||
};
|
||||
|
||||
+//! \brief A context structure carrying RISCV32 CPU state.
|
||||
+struct CPUContextRISCV32 {
|
||||
+ uint32_t regs[32];
|
||||
+ uint64_t fpregs[32];
|
||||
+ uint32_t fcsr;
|
||||
+};
|
||||
+
|
||||
+//! \brief A context structure carrying RISCV64 CPU state.
|
||||
+struct CPUContextRISCV64 {
|
||||
+ uint64_t regs[32];
|
||||
+ uint64_t fpregs[32];
|
||||
+ uint32_t fcsr;
|
||||
+};
|
||||
+
|
||||
//! \brief A context structure capable of carrying the context of any supported
|
||||
//! CPU architecture.
|
||||
struct CPUContext {
|
||||
@@ -402,6 +416,8 @@ struct CPUContext {
|
||||
CPUContextARM64* arm64;
|
||||
CPUContextMIPS* mipsel;
|
||||
CPUContextMIPS64* mips64;
|
||||
+ CPUContextRISCV32* riscv32;
|
||||
+ CPUContextRISCV64* riscv64;
|
||||
};
|
||||
};
|
||||
|
||||
Index: chromium/third_party/crashpad/crashpad/snapshot/linux/cpu_context_linux.cc
|
||||
===================================================================
|
||||
--- chromium/third_party/crashpad/crashpad/snapshot/linux/cpu_context_linux.cc
|
||||
+++ chromium/third_party/crashpad/crashpad/snapshot/linux/cpu_context_linux.cc
|
||||
@@ -266,6 +266,30 @@ void InitializeCPUContextARM64_OnlyFPSIM
|
||||
context->fpcr = float_context.fpcr;
|
||||
}
|
||||
|
||||
+#elif defined(ARCH_CPU_RISCV_FAMILY)
|
||||
+
|
||||
+template <typename Traits>
|
||||
+void InitializeCPUContextRISCV(
|
||||
+ const typename Traits::SignalThreadContext& thread_context,
|
||||
+ const typename Traits::SignalFloatContext& float_context,
|
||||
+ typename Traits::CPUContext* context) {
|
||||
+ static_assert(sizeof(context->regs) == sizeof(thread_context),
|
||||
+ "registers size mismatch");
|
||||
+ static_assert(sizeof(context->fpregs) == sizeof(float_context.f),
|
||||
+ "fp registers size mismatch");
|
||||
+ memcpy(&context->regs, &thread_context, sizeof(context->regs));
|
||||
+ memcpy(&context->fpregs, &float_context.f, sizeof(context->fpregs));
|
||||
+ context->fcsr = float_context.fcsr;
|
||||
+}
|
||||
+template void InitializeCPUContextRISCV<ContextTraits32>(
|
||||
+ const ContextTraits32::SignalThreadContext& thread_context,
|
||||
+ const ContextTraits32::SignalFloatContext& float_context,
|
||||
+ ContextTraits32::CPUContext* context);
|
||||
+template void InitializeCPUContextRISCV<ContextTraits64>(
|
||||
+ const ContextTraits64::SignalThreadContext& thread_context,
|
||||
+ const ContextTraits64::SignalFloatContext& float_context,
|
||||
+ ContextTraits64::CPUContext* context);
|
||||
+
|
||||
#endif // ARCH_CPU_X86_FAMILY
|
||||
|
||||
} // namespace internal
|
||||
Index: chromium/third_party/crashpad/crashpad/snapshot/linux/cpu_context_linux.h
|
||||
===================================================================
|
||||
--- chromium/third_party/crashpad/crashpad/snapshot/linux/cpu_context_linux.h
|
||||
+++ chromium/third_party/crashpad/crashpad/snapshot/linux/cpu_context_linux.h
|
||||
@@ -174,6 +174,22 @@ void InitializeCPUContextMIPS(
|
||||
|
||||
#endif // ARCH_CPU_MIPS_FAMILY || DOXYGEN
|
||||
|
||||
+#if defined(ARCH_CPU_RISCV_FAMILY) || DOXYGEN
|
||||
+
|
||||
+//! \brief Initializes a CPUContextRISCV structure from native context
|
||||
+//! structures on Linux.
|
||||
+//!
|
||||
+//! \param[in] thread_context The native thread context.
|
||||
+//! \param[in] float_context The native float context.
|
||||
+//! \param[out] context The CPUContextRISCV structure to initialize.
|
||||
+template <typename Traits>
|
||||
+void InitializeCPUContextRISCV(
|
||||
+ const typename Traits::SignalThreadContext& thread_context,
|
||||
+ const typename Traits::SignalFloatContext& float_context,
|
||||
+ typename Traits::CPUContext* context);
|
||||
+
|
||||
+#endif // ARCH_CPU_RISCV_FAMILY || DOXYGEN
|
||||
+
|
||||
} // namespace internal
|
||||
} // namespace crashpad
|
||||
|
||||
Index: chromium/third_party/crashpad/crashpad/snapshot/linux/exception_snapshot_linux.cc
|
||||
===================================================================
|
||||
--- chromium/third_party/crashpad/crashpad/snapshot/linux/exception_snapshot_linux.cc
|
||||
+++ chromium/third_party/crashpad/crashpad/snapshot/linux/exception_snapshot_linux.cc
|
||||
@@ -325,6 +325,61 @@ bool ExceptionSnapshotLinux::ReadContext
|
||||
reader, context_address, context_.mips64);
|
||||
}
|
||||
|
||||
+#elif defined(ARCH_CPU_RISCV_FAMILY)
|
||||
+
|
||||
+template <typename Traits>
|
||||
+static bool ReadContext(ProcessReaderLinux* reader,
|
||||
+ LinuxVMAddress context_address,
|
||||
+ typename Traits::CPUContext* dest_context) {
|
||||
+ const ProcessMemory* memory = reader->Memory();
|
||||
+
|
||||
+ LinuxVMAddress gregs_address = context_address +
|
||||
+ offsetof(UContext<Traits>, mcontext) +
|
||||
+ offsetof(typename Traits::MContext, gregs);
|
||||
+
|
||||
+ typename Traits::SignalThreadContext thread_context;
|
||||
+ if (!memory->Read(gregs_address, sizeof(thread_context), &thread_context)) {
|
||||
+ LOG(ERROR) << "Couldn't read gregs";
|
||||
+ return false;
|
||||
+ }
|
||||
+
|
||||
+ LinuxVMAddress fpregs_address = context_address +
|
||||
+ offsetof(UContext<Traits>, mcontext) +
|
||||
+ offsetof(typename Traits::MContext, fpregs);
|
||||
+
|
||||
+ typename Traits::SignalFloatContext fp_context;
|
||||
+ if (!memory->Read(fpregs_address, sizeof(fp_context), &fp_context)) {
|
||||
+ LOG(ERROR) << "Couldn't read fpregs";
|
||||
+ return false;
|
||||
+ }
|
||||
+
|
||||
+ InitializeCPUContextRISCV<Traits>(thread_context, fp_context, dest_context);
|
||||
+
|
||||
+ return true;
|
||||
+}
|
||||
+
|
||||
+template <>
|
||||
+bool ExceptionSnapshotLinux::ReadContext<ContextTraits32>(
|
||||
+ ProcessReaderLinux* reader,
|
||||
+ LinuxVMAddress context_address) {
|
||||
+ context_.architecture = kCPUArchitectureRISCV32;
|
||||
+ context_.riscv32 = &context_union_.riscv32;
|
||||
+
|
||||
+ return internal::ReadContext<ContextTraits32>(
|
||||
+ reader, context_address, context_.riscv32);
|
||||
+}
|
||||
+
|
||||
+template <>
|
||||
+bool ExceptionSnapshotLinux::ReadContext<ContextTraits64>(
|
||||
+ ProcessReaderLinux* reader,
|
||||
+ LinuxVMAddress context_address) {
|
||||
+ context_.architecture = kCPUArchitectureRISCV64;
|
||||
+ context_.riscv64 = &context_union_.riscv64;
|
||||
+
|
||||
+ return internal::ReadContext<ContextTraits64>(
|
||||
+ reader, context_address, context_.riscv64);
|
||||
+}
|
||||
+
|
||||
#endif // ARCH_CPU_X86_FAMILY
|
||||
|
||||
bool ExceptionSnapshotLinux::Initialize(
|
||||
Index: chromium/third_party/crashpad/crashpad/snapshot/linux/exception_snapshot_linux.h
|
||||
===================================================================
|
||||
--- chromium/third_party/crashpad/crashpad/snapshot/linux/exception_snapshot_linux.h
|
||||
+++ chromium/third_party/crashpad/crashpad/snapshot/linux/exception_snapshot_linux.h
|
||||
@@ -89,6 +89,9 @@ class ExceptionSnapshotLinux final : pub
|
||||
#elif defined(ARCH_CPU_MIPS_FAMILY)
|
||||
CPUContextMIPS mipsel;
|
||||
CPUContextMIPS64 mips64;
|
||||
+#elif defined(ARCH_CPU_RISCV_FAMILY)
|
||||
+ CPUContextRISCV32 riscv32;
|
||||
+ CPUContextRISCV64 riscv64;
|
||||
#endif
|
||||
} context_union_;
|
||||
CPUContext context_;
|
||||
Index: chromium/third_party/crashpad/crashpad/snapshot/linux/process_reader_linux.cc
|
||||
===================================================================
|
||||
--- chromium/third_party/crashpad/crashpad/snapshot/linux/process_reader_linux.cc
|
||||
+++ chromium/third_party/crashpad/crashpad/snapshot/linux/process_reader_linux.cc
|
||||
@@ -127,6 +127,9 @@ void ProcessReaderLinux::Thread::Initial
|
||||
#elif defined(ARCH_CPU_MIPS_FAMILY)
|
||||
stack_pointer = reader->Is64Bit() ? thread_info.thread_context.t64.regs[29]
|
||||
: thread_info.thread_context.t32.regs[29];
|
||||
+#elif defined(ARCH_CPU_RISCV_FAMILY)
|
||||
+ stack_pointer = reader->Is64Bit() ? thread_info.thread_context.t64.sp
|
||||
+ : thread_info.thread_context.t32.sp;
|
||||
#else
|
||||
#error Port.
|
||||
#endif
|
||||
Index: chromium/third_party/crashpad/crashpad/snapshot/linux/signal_context.h
|
||||
===================================================================
|
||||
--- chromium/third_party/crashpad/crashpad/snapshot/linux/signal_context.h
|
||||
+++ chromium/third_party/crashpad/crashpad/snapshot/linux/signal_context.h
|
||||
@@ -422,6 +422,67 @@ static_assert(offsetof(UContext<ContextT
|
||||
"context offset mismatch");
|
||||
#endif
|
||||
|
||||
+#elif defined(ARCH_CPU_RISCV_FAMILY)
|
||||
+
|
||||
+struct MContext32 {
|
||||
+ uint32_t gregs[32];
|
||||
+ uint64_t fpregs[32];
|
||||
+ unsigned int fcsr;
|
||||
+};
|
||||
+
|
||||
+struct MContext64 {
|
||||
+ uint64_t gregs[32];
|
||||
+ uint64_t fpregs[32];
|
||||
+ unsigned int fcsr;
|
||||
+};
|
||||
+
|
||||
+struct ContextTraits32 : public Traits32 {
|
||||
+ using MContext = MContext32;
|
||||
+ using SignalThreadContext = ThreadContext::t32_t;
|
||||
+ using SignalFloatContext = FloatContext::f32_t;
|
||||
+ using CPUContext = CPUContextRISCV32;
|
||||
+};
|
||||
+
|
||||
+struct ContextTraits64 : public Traits64 {
|
||||
+ using MContext = MContext64;
|
||||
+ using SignalThreadContext = ThreadContext::t64_t;
|
||||
+ using SignalFloatContext = FloatContext::f64_t;
|
||||
+ using CPUContext = CPUContextRISCV64;
|
||||
+};
|
||||
+
|
||||
+template <typename Traits>
|
||||
+struct UContext {
|
||||
+ typename Traits::ULong flags;
|
||||
+ typename Traits::Address link;
|
||||
+ SignalStack<Traits> stack;
|
||||
+ Sigset<Traits> sigmask;
|
||||
+ char padding[128 - sizeof(sigmask)];
|
||||
+ typename Traits::Char_64Only padding2[8];
|
||||
+ typename Traits::MContext mcontext;
|
||||
+};
|
||||
+
|
||||
+#if defined(ARCH_CPU_RISCV32)
|
||||
+static_assert(offsetof(UContext<ContextTraits32>, mcontext) ==
|
||||
+ offsetof(ucontext_t, uc_mcontext),
|
||||
+ "context offset mismatch");
|
||||
+static_assert(offsetof(UContext<ContextTraits32>, mcontext.gregs) ==
|
||||
+ offsetof(ucontext_t, uc_mcontext.__gregs),
|
||||
+ "context offset mismatch");
|
||||
+static_assert(offsetof(UContext<ContextTraits32>, mcontext.fpregs) ==
|
||||
+ offsetof(ucontext_t, uc_mcontext.__fpregs),
|
||||
+ "context offset mismatch");
|
||||
+#elif defined(ARCH_CPU_RISCV64)
|
||||
+static_assert(offsetof(UContext<ContextTraits64>, mcontext) ==
|
||||
+ offsetof(ucontext_t, uc_mcontext),
|
||||
+ "context offset mismatch");
|
||||
+static_assert(offsetof(UContext<ContextTraits64>, mcontext.gregs) ==
|
||||
+ offsetof(ucontext_t, uc_mcontext.__gregs),
|
||||
+ "context offset mismatch");
|
||||
+static_assert(offsetof(UContext<ContextTraits64>, mcontext.fpregs) ==
|
||||
+ offsetof(ucontext_t, uc_mcontext.__fpregs),
|
||||
+ "context offset mismatch");
|
||||
+#endif
|
||||
+
|
||||
#else
|
||||
#error Port.
|
||||
#endif // ARCH_CPU_X86_FAMILY
|
||||
Index: chromium/third_party/crashpad/crashpad/snapshot/linux/system_snapshot_linux.cc
|
||||
===================================================================
|
||||
--- chromium/third_party/crashpad/crashpad/snapshot/linux/system_snapshot_linux.cc
|
||||
+++ chromium/third_party/crashpad/crashpad/snapshot/linux/system_snapshot_linux.cc
|
||||
@@ -205,6 +205,9 @@ CPUArchitecture SystemSnapshotLinux::Get
|
||||
#elif defined(ARCH_CPU_MIPS_FAMILY)
|
||||
return process_reader_->Is64Bit() ? kCPUArchitectureMIPS64EL
|
||||
: kCPUArchitectureMIPSEL;
|
||||
+#elif defined(ARCH_CPU_RISCV_FAMILY)
|
||||
+ return process_reader_->Is64Bit() ? kCPUArchitectureRISCV64
|
||||
+ : kCPUArchitectureRISCV32;
|
||||
#else
|
||||
#error port to your architecture
|
||||
#endif
|
||||
@@ -220,6 +223,9 @@ uint32_t SystemSnapshotLinux::CPURevisio
|
||||
#elif defined(ARCH_CPU_MIPS_FAMILY)
|
||||
// Not implementable on MIPS
|
||||
return 0;
|
||||
+#elif defined(ARCH_CPU_RISCV_FAMILY)
|
||||
+ // Not implementable on RISCV
|
||||
+ return 0;
|
||||
#else
|
||||
#error port to your architecture
|
||||
#endif
|
||||
@@ -240,6 +246,9 @@ std::string SystemSnapshotLinux::CPUVend
|
||||
#elif defined(ARCH_CPU_MIPS_FAMILY)
|
||||
// Not implementable on MIPS
|
||||
return std::string();
|
||||
+#elif defined(ARCH_CPU_RISCV_FAMILY)
|
||||
+ // Not implementable on RISCV
|
||||
+ return std::string();
|
||||
#else
|
||||
#error port to your architecture
|
||||
#endif
|
||||
@@ -373,6 +382,9 @@ bool SystemSnapshotLinux::NXEnabled() co
|
||||
#elif defined(ARCH_CPU_MIPS_FAMILY)
|
||||
// Not implementable on MIPS
|
||||
return false;
|
||||
+#elif defined(ARCH_CPU_RISCV_FAMILY)
|
||||
+ // Not implementable on RISCV
|
||||
+ return false;
|
||||
#else
|
||||
#error Port.
|
||||
#endif // ARCH_CPU_X86_FAMILY
|
||||
Index: chromium/third_party/crashpad/crashpad/snapshot/linux/thread_snapshot_linux.cc
|
||||
===================================================================
|
||||
--- chromium/third_party/crashpad/crashpad/snapshot/linux/thread_snapshot_linux.cc
|
||||
+++ chromium/third_party/crashpad/crashpad/snapshot/linux/thread_snapshot_linux.cc
|
||||
@@ -190,6 +190,22 @@ bool ThreadSnapshotLinux::Initialize(
|
||||
thread.thread_info.float_context.f32,
|
||||
context_.mipsel);
|
||||
}
|
||||
+#elif defined(ARCH_CPU_RISCV_FAMILY)
|
||||
+ if (process_reader->Is64Bit()) {
|
||||
+ context_.architecture = kCPUArchitectureRISCV64;
|
||||
+ context_.riscv64 = &context_union_.riscv64;
|
||||
+ InitializeCPUContextRISCV<ContextTraits64>(
|
||||
+ thread.thread_info.thread_context.t64,
|
||||
+ thread.thread_info.float_context.f64,
|
||||
+ context_.riscv64);
|
||||
+ } else {
|
||||
+ context_.architecture = kCPUArchitectureRISCV32;
|
||||
+ context_.riscv32 = &context_union_.riscv32;
|
||||
+ InitializeCPUContextRISCV<ContextTraits32>(
|
||||
+ thread.thread_info.thread_context.t32,
|
||||
+ thread.thread_info.float_context.f32,
|
||||
+ context_.riscv32);
|
||||
+ }
|
||||
#else
|
||||
#error Port.
|
||||
#endif
|
||||
Index: chromium/third_party/crashpad/crashpad/snapshot/linux/thread_snapshot_linux.h
|
||||
===================================================================
|
||||
--- chromium/third_party/crashpad/crashpad/snapshot/linux/thread_snapshot_linux.h
|
||||
+++ chromium/third_party/crashpad/crashpad/snapshot/linux/thread_snapshot_linux.h
|
||||
@@ -74,6 +74,9 @@ class ThreadSnapshotLinux final : public
|
||||
#elif defined(ARCH_CPU_MIPS_FAMILY)
|
||||
CPUContextMIPS mipsel;
|
||||
CPUContextMIPS64 mips64;
|
||||
+#elif defined(ARCH_CPU_RISCV_FAMILY)
|
||||
+ CPUContextRISCV32 riscv32;
|
||||
+ CPUContextRISCV64 riscv64;
|
||||
#else
|
||||
#error Port.
|
||||
#endif // ARCH_CPU_X86_FAMILY
|
||||
Index: chromium/third_party/crashpad/crashpad/util/linux/ptracer.cc
|
||||
===================================================================
|
||||
--- chromium/third_party/crashpad/crashpad/util/linux/ptracer.cc
|
||||
+++ chromium/third_party/crashpad/crashpad/util/linux/ptracer.cc
|
||||
@@ -398,6 +398,51 @@ bool GetThreadArea64(pid_t tid,
|
||||
return true;
|
||||
}
|
||||
|
||||
+#elif defined(ARCH_CPU_RISCV_FAMILY)
|
||||
+
|
||||
+template <typename Destination>
|
||||
+bool GetRegisterSet(pid_t tid, int set, Destination* dest, bool can_log) {
|
||||
+ iovec iov;
|
||||
+ iov.iov_base = dest;
|
||||
+ iov.iov_len = sizeof(*dest);
|
||||
+ if (ptrace(PTRACE_GETREGSET, tid, reinterpret_cast<void*>(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 GetFloatingPointRegisters32(pid_t tid,
|
||||
+ FloatContext* context,
|
||||
+ bool can_log) {
|
||||
+ return false;
|
||||
+}
|
||||
+
|
||||
+bool GetFloatingPointRegisters64(pid_t tid,
|
||||
+ FloatContext* context,
|
||||
+ bool can_log) {
|
||||
+ return GetRegisterSet(tid, NT_PRFPREG, &context->f64.f, can_log);
|
||||
+}
|
||||
+
|
||||
+bool GetThreadArea32(pid_t tid,
|
||||
+ const ThreadContext& context,
|
||||
+ LinuxVMAddress* address,
|
||||
+ bool can_log) {
|
||||
+ return false;
|
||||
+}
|
||||
+
|
||||
+bool GetThreadArea64(pid_t tid,
|
||||
+ const ThreadContext& context,
|
||||
+ LinuxVMAddress* address,
|
||||
+ bool can_log) {
|
||||
+ *address = context.t64.tp;
|
||||
+ return true;
|
||||
+}
|
||||
+
|
||||
#else
|
||||
#error Port.
|
||||
#endif // ARCH_CPU_X86_FAMILY
|
||||
Index: chromium/third_party/crashpad/crashpad/util/linux/thread_info.h
|
||||
===================================================================
|
||||
--- chromium/third_party/crashpad/crashpad/util/linux/thread_info.h
|
||||
+++ chromium/third_party/crashpad/crashpad/util/linux/thread_info.h
|
||||
@@ -79,6 +79,40 @@ union ThreadContext {
|
||||
uint32_t cp0_status;
|
||||
uint32_t cp0_cause;
|
||||
uint32_t padding1_;
|
||||
+#elif defined(ARCH_CPU_RISCV_FAMILY)
|
||||
+ // Reflects user_regs_struct in asm/ptrace.h.
|
||||
+ uint32_t pc;
|
||||
+ uint32_t ra;
|
||||
+ uint32_t sp;
|
||||
+ uint32_t gp;
|
||||
+ uint32_t tp;
|
||||
+ uint32_t t0;
|
||||
+ uint32_t t1;
|
||||
+ uint32_t t2;
|
||||
+ uint32_t s0;
|
||||
+ uint32_t s1;
|
||||
+ uint32_t a0;
|
||||
+ uint32_t a1;
|
||||
+ uint32_t a2;
|
||||
+ uint32_t a3;
|
||||
+ uint32_t a4;
|
||||
+ uint32_t a5;
|
||||
+ uint32_t a6;
|
||||
+ uint32_t a7;
|
||||
+ uint32_t s2;
|
||||
+ uint32_t s3;
|
||||
+ uint32_t s4;
|
||||
+ uint32_t s5;
|
||||
+ uint32_t s6;
|
||||
+ uint32_t s7;
|
||||
+ uint32_t s8;
|
||||
+ uint32_t s9;
|
||||
+ uint32_t s10;
|
||||
+ uint32_t s11;
|
||||
+ uint32_t t3;
|
||||
+ uint32_t t4;
|
||||
+ uint32_t t5;
|
||||
+ uint32_t t6;
|
||||
#else
|
||||
#error Port.
|
||||
#endif // ARCH_CPU_X86_FAMILY
|
||||
@@ -132,6 +166,40 @@ union ThreadContext {
|
||||
uint64_t cp0_badvaddr;
|
||||
uint64_t cp0_status;
|
||||
uint64_t cp0_cause;
|
||||
+#elif defined(ARCH_CPU_RISCV_FAMILY)
|
||||
+ // Reflects user_regs_struct in asm/ptrace.h.
|
||||
+ uint64_t pc;
|
||||
+ uint64_t ra;
|
||||
+ uint64_t sp;
|
||||
+ uint64_t gp;
|
||||
+ uint64_t tp;
|
||||
+ uint64_t t0;
|
||||
+ uint64_t t1;
|
||||
+ uint64_t t2;
|
||||
+ uint64_t s0;
|
||||
+ uint64_t s1;
|
||||
+ uint64_t a0;
|
||||
+ uint64_t a1;
|
||||
+ uint64_t a2;
|
||||
+ uint64_t a3;
|
||||
+ uint64_t a4;
|
||||
+ uint64_t a5;
|
||||
+ uint64_t a6;
|
||||
+ uint64_t a7;
|
||||
+ uint64_t s2;
|
||||
+ uint64_t s3;
|
||||
+ uint64_t s4;
|
||||
+ uint64_t s5;
|
||||
+ uint64_t s6;
|
||||
+ uint64_t s7;
|
||||
+ uint64_t s8;
|
||||
+ uint64_t s9;
|
||||
+ uint64_t s10;
|
||||
+ uint64_t s11;
|
||||
+ uint64_t t3;
|
||||
+ uint64_t t4;
|
||||
+ uint64_t t5;
|
||||
+ uint64_t t6;
|
||||
#else
|
||||
#error Port.
|
||||
#endif // ARCH_CPU_X86_FAMILY
|
||||
@@ -143,11 +211,12 @@ union ThreadContext {
|
||||
using NativeThreadContext = user_regs;
|
||||
#elif defined(ARCH_CPU_MIPS_FAMILY)
|
||||
// No appropriate NativeThreadsContext type available for MIPS
|
||||
+#elif defined(ARCH_CPU_RISCV_FAMILY)
|
||||
#else
|
||||
#error Port.
|
||||
#endif // ARCH_CPU_X86_FAMILY || ARCH_CPU_ARM64
|
||||
|
||||
-#if !defined(ARCH_CPU_MIPS_FAMILY)
|
||||
+#if !defined(ARCH_CPU_MIPS_FAMILY) && !defined(ARCH_CPU_RISCV_FAMILY)
|
||||
#if defined(ARCH_CPU_32_BITS)
|
||||
static_assert(sizeof(t32_t) == sizeof(NativeThreadContext), "Size mismatch");
|
||||
#else // ARCH_CPU_64_BITS
|
||||
@@ -218,6 +287,9 @@ union FloatContext {
|
||||
} fpregs[32];
|
||||
uint32_t fpcsr;
|
||||
uint32_t fpu_id;
|
||||
+#elif defined(ARCH_CPU_RISCV_FAMILY)
|
||||
+ uint64_t f[32];
|
||||
+ uint32_t fcsr;
|
||||
#else
|
||||
#error Port.
|
||||
#endif // ARCH_CPU_X86_FAMILY
|
||||
@@ -252,6 +324,9 @@ union FloatContext {
|
||||
double fpregs[32];
|
||||
uint32_t fpcsr;
|
||||
uint32_t fpu_id;
|
||||
+#elif defined(ARCH_CPU_RISCV_FAMILY)
|
||||
+ uint64_t f[32];
|
||||
+ uint32_t fcsr;
|
||||
#else
|
||||
#error Port.
|
||||
#endif // ARCH_CPU_X86_FAMILY
|
||||
@@ -281,6 +356,7 @@ union FloatContext {
|
||||
static_assert(sizeof(f64) == sizeof(user_fpsimd_struct), "Size mismatch");
|
||||
#elif defined(ARCH_CPU_MIPS_FAMILY)
|
||||
// No appropriate floating point context native type for available MIPS.
|
||||
+#elif defined(ARCH_CPU_RISCV_FAMILY)
|
||||
#else
|
||||
#error Port.
|
||||
#endif // ARCH_CPU_X86
|
||||
Index: chromium/third_party/crashpad/crashpad/util/net/http_transport_libcurl.cc
|
||||
===================================================================
|
||||
--- chromium/third_party/crashpad/crashpad/util/net/http_transport_libcurl.cc
|
||||
+++ chromium/third_party/crashpad/crashpad/util/net/http_transport_libcurl.cc
|
||||
@@ -237,6 +237,8 @@ std::string UserAgent() {
|
||||
#elif defined(ARCH_CPU_BIG_ENDIAN)
|
||||
static constexpr char arch[] = "aarch64_be";
|
||||
#endif
|
||||
+#elif defined(ARCH_CPU_RISCV64)
|
||||
+ static constexpr char arch[] = "riscv64";
|
||||
#else
|
||||
#error Port
|
||||
#endif
|
||||
@ -1,43 +0,0 @@
|
||||
Index: chromium/third_party/dav1d/config/linux/riscv64/config.h
|
||||
===================================================================
|
||||
--- /dev/null
|
||||
+++ chromium/third_party/dav1d/config/linux/riscv64/config.h
|
||||
@@ -0,0 +1,38 @@
|
||||
+/*
|
||||
+ * Autogenerated by the Meson build system.
|
||||
+ * Do not edit, your changes will be lost.
|
||||
+ */
|
||||
+
|
||||
+#pragma once
|
||||
+
|
||||
+#define ARCH_AARCH64 0
|
||||
+
|
||||
+#define ARCH_ARM 0
|
||||
+
|
||||
+#define ARCH_PPC64LE 0
|
||||
+
|
||||
+#define ARCH_X86 0
|
||||
+
|
||||
+#define ARCH_X86_32 0
|
||||
+
|
||||
+#define ARCH_X86_64 0
|
||||
+
|
||||
+#define CONFIG_16BPC 1
|
||||
+
|
||||
+#define CONFIG_8BPC 1
|
||||
+
|
||||
+// #define CONFIG_LOG 1 -- Logging is controlled by Chromium
|
||||
+
|
||||
+#define ENDIANNESS_BIG 0
|
||||
+
|
||||
+#define HAVE_ASM 0
|
||||
+
|
||||
+#define HAVE_AS_FUNC 0
|
||||
+
|
||||
+#define HAVE_CLOCK_GETTIME 1
|
||||
+
|
||||
+#define HAVE_GETAUXVAL 1
|
||||
+
|
||||
+#define HAVE_POSIX_MEMALIGN 1
|
||||
+
|
||||
+#define HAVE_UNISTD_H 1
|
||||
1955
riscv-sandbox.patch
1955
riscv-sandbox.patch
File diff suppressed because it is too large
Load Diff
Loading…
x
Reference in New Issue
Block a user