commit 1196d0d541965da13ee93b40cae1dc08167faab5
Author: Tomas Popela <tpopela(a)redhat.com>
Date: Thu Aug 15 21:14:35 2019 +0200
Backport and create more of the GCC fixes
....0.3809.100-gcc-accountinfo-move-noexcept.patch | 53 ++++++++++++++++++++++
...m-76.0.3809.100-gcc-history-move-noexcept.patch | 42 +++++++++++++++++
...m-76.0.3809.100-gcc-no-alignas-and-export.patch | 14 ++++++
...m-76.0.3809.100-gcc-themeservice-includes.patch | 36 +++++++++++++++
chromium.spec | 14 ++++++
5 files changed, 159 insertions(+)
---
diff --git a/chromium-76.0.3809.100-gcc-accountinfo-move-noexcept.patch
b/chromium-76.0.3809.100-gcc-accountinfo-move-noexcept.patch
new file mode 100644
index 0000000..5f45a8f
--- /dev/null
+++ b/chromium-76.0.3809.100-gcc-accountinfo-move-noexcept.patch
@@ -0,0 +1,53 @@
+From 719df31ffd4d52b473509cf77acd9c02ec112acb Mon Sep 17 00:00:00 2001
+From: Jose Dapena Paz <jose.dapena(a)lge.com>
+Date: Tue, 04 Jun 2019 18:38:12 +0200
+Subject: [PATCH] GCC: fix noexcept from move constructor and assign operators of
AccountInfo
+
+AccountInfo declares them as noexcept and uses default implementation,
+so all its members (including AccountId) should be noexcept. But AccountId
+is not noexcept. To fix it we just need to make CoreAccountId move
+operator/assign operator noexcept.
+
+Bug: 819294
+Change-Id: Ice38654ab7cf3b9eaa6f54aa36e1fec329264f98
+---
+
+diff --git a/google_apis/gaia/core_account_id.cc b/google_apis/gaia/core_account_id.cc
+index d808082..12eefe3 100644
+--- a/google_apis/gaia/core_account_id.cc
++++ b/google_apis/gaia/core_account_id.cc
+@@ -6,8 +6,16 @@
+
+ CoreAccountId::CoreAccountId() = default;
+
++CoreAccountId::CoreAccountId(const CoreAccountId&) = default;
++
++CoreAccountId::CoreAccountId(CoreAccountId&&) noexcept = default;
++
+ CoreAccountId::~CoreAccountId() = default;
+
++CoreAccountId& CoreAccountId::operator=(const CoreAccountId&) = default;
++
++CoreAccountId& CoreAccountId::operator=(CoreAccountId&&) noexcept =
default;
++
+ CoreAccountId::CoreAccountId(const char* id) : id(id) {}
+
+ CoreAccountId::CoreAccountId(std::string&& id) : id(std::move(id)) {}
+diff --git a/google_apis/gaia/core_account_id.h b/google_apis/gaia/core_account_id.h
+index 5ea602a..c2d1911 100644
+--- a/google_apis/gaia/core_account_id.h
++++ b/google_apis/gaia/core_account_id.h
+@@ -14,8 +14,13 @@
+ // for design and tracking).
+ struct CoreAccountId {
+ CoreAccountId();
++ CoreAccountId(const CoreAccountId&);
++ CoreAccountId(CoreAccountId&&) noexcept;
+ ~CoreAccountId();
+
++ CoreAccountId& operator=(const CoreAccountId&);
++ CoreAccountId& operator=(CoreAccountId&&) noexcept;
++
+ // Those implicit constructor and conversion operator allow to
+ // progressively migrate the code to use this struct. Removing
+ // them is tracked by
https://crbug.com/959161
diff --git a/chromium-76.0.3809.100-gcc-history-move-noexcept.patch
b/chromium-76.0.3809.100-gcc-history-move-noexcept.patch
new file mode 100644
index 0000000..2876de4
--- /dev/null
+++ b/chromium-76.0.3809.100-gcc-history-move-noexcept.patch
@@ -0,0 +1,42 @@
+From abe74a7f0c53a43a9706a42d71b7ff4a5da53380 Mon Sep 17 00:00:00 2001
+From: Jose Dapena Paz <jose.dapena(a)lge.com>
+Date: Tue, 11 Jun 2019 10:27:19 +0200
+Subject: [PATCH] GCC: add noexcept move assignment in history::URLRow
+
+In GCC, build is failing because history::QueryURLResult declares its move
+assignment operator as noexcept using default implementation. That requires
+its members to provide a move assignment operator that is noexcept too.
+
+But URLRow was missing noexcept declaration in move assignment operator (even
+though it was providing noexcept to its move constructor).
+
+Bug: 819294
+Change-Id: I726e3cf7a4a50c9206a5d0fba8a561d363483d4f
+---
+
+diff --git a/components/history/core/browser/url_row.cc
b/components/history/core/browser/url_row.cc
+index 44c22fd..aec0101 100644
+--- a/components/history/core/browser/url_row.cc
++++ b/components/history/core/browser/url_row.cc
+@@ -26,7 +26,7 @@
+ }
+
+ URLRow& URLRow::operator=(const URLRow& other) = default;
+-URLRow& URLRow::operator=(URLRow&& other) = default;
++URLRow& URLRow::operator=(URLRow&& other) noexcept = default;
+
+ void URLRow::Swap(URLRow* other) {
+ std::swap(id_, other->id_);
+diff --git a/components/history/core/browser/url_row.h
b/components/history/core/browser/url_row.h
+index 8f6f9cf..31a1ef8 100644
+--- a/components/history/core/browser/url_row.h
++++ b/components/history/core/browser/url_row.h
+@@ -35,7 +35,7 @@
+
+ virtual ~URLRow();
+ URLRow& operator=(const URLRow& other);
+- URLRow& operator=(URLRow&& other);
++ URLRow& operator=(URLRow&& other) noexcept;
+
+ URLID id() const { return id_; }
+
diff --git a/chromium-76.0.3809.100-gcc-no-alignas-and-export.patch
b/chromium-76.0.3809.100-gcc-no-alignas-and-export.patch
new file mode 100644
index 0000000..cc91d1e
--- /dev/null
+++ b/chromium-76.0.3809.100-gcc-no-alignas-and-export.patch
@@ -0,0 +1,14 @@
+diff -up
chromium-76.0.3809.100/third_party/blink/renderer/core/css/css_property_value_set.h.gcc-no-alignas
chromium-76.0.3809.100/third_party/blink/renderer/core/css/css_property_value_set.h
+---
chromium-76.0.3809.100/third_party/blink/renderer/core/css/css_property_value_set.h.gcc-no-alignas 2019-08-09
16:48:13.000000000 +0200
++++
chromium-76.0.3809.100/third_party/blink/renderer/core/css/css_property_value_set.h 2019-08-15
21:04:30.231532746 +0200
+@@ -176,8 +176,8 @@ class CSSLazyPropertyParser
+ DISALLOW_COPY_AND_ASSIGN(CSSLazyPropertyParser);
+ };
+
+-class CORE_EXPORT alignas(Member<const CSSValue>) alignas(
+- CSSPropertyValueMetadata) ImmutableCSSPropertyValueSet
++class CORE_EXPORT ALIGNAS(alignof(Member<const CSSValue>))
++ ALIGNAS(alignof(CSSPropertyValueMetadata)) ImmutableCSSPropertyValueSet
+ : public CSSPropertyValueSet {
+ public:
+ ImmutableCSSPropertyValueSet(const CSSPropertyValue*,
diff --git a/chromium-76.0.3809.100-gcc-themeservice-includes.patch
b/chromium-76.0.3809.100-gcc-themeservice-includes.patch
new file mode 100644
index 0000000..ad40bb9
--- /dev/null
+++ b/chromium-76.0.3809.100-gcc-themeservice-includes.patch
@@ -0,0 +1,36 @@
+From d08ea83acc2f5ff395c1fe54f52687e92fe51c3b Mon Sep 17 00:00:00 2001
+From: Jose Dapena Paz <jose.dapena(a)lge.com>
+Date: Tue, 04 Jun 2019 22:01:03 +0200
+Subject: [PATCH] IWYU: ThemeService requires NativeTheme
+
+As ThemeService referes to NativeTheme through a ScopedObserver,
+the full declaration is required.
+
+Bug: 819294
+Change-Id: I9d5bd2e87cfaa76e87f9b5509daea24848906a63
+---
+
+diff --git a/chrome/browser/themes/theme_service.cc
b/chrome/browser/themes/theme_service.cc
+index d65388e2..23dc86d 100644
+--- a/chrome/browser/themes/theme_service.cc
++++ b/chrome/browser/themes/theme_service.cc
+@@ -54,7 +54,6 @@
+ #include "ui/gfx/color_palette.h"
+ #include "ui/gfx/image/image_skia.h"
+ #include "ui/native_theme/common_theme.h"
+-#include "ui/native_theme/native_theme.h"
+
+ #if BUILDFLAG(ENABLE_EXTENSIONS)
+ #include "base/scoped_observer.h"
+diff --git a/chrome/browser/themes/theme_service.h
b/chrome/browser/themes/theme_service.h
+index 6c79c72..f93dc0d 100644
+--- a/chrome/browser/themes/theme_service.h
++++ b/chrome/browser/themes/theme_service.h
+@@ -25,6 +25,7 @@
+ #include "extensions/buildflags/buildflags.h"
+ #include "extensions/common/extension_id.h"
+ #include "ui/base/theme_provider.h"
++#include "ui/native_theme/native_theme.h"
+ #include "ui/native_theme/native_theme_observer.h"
+
+ class BrowserThemePack;
diff --git a/chromium.spec b/chromium.spec
index 64e3243..de9e05b 100644
--- a/chromium.spec
+++ b/chromium.spec
@@ -291,6 +291,16 @@ Patch55: chromium-76.0.3809.100-gcc-hasfraction-constexpr.patch
Patch56: chromium-76.0.3809.100-gcc-move-explicit-initialization.patch
#
https://chromium.googlesource.com/chromium/src.git/+/7dc76c8d9f4cfbce7cf1...
Patch57: chromium-76.0.3809.100-gcc-initialization-order.patch
+#
https://chromium.googlesource.com/chromium/src.git/+/138904af5d6a4158ef42...
+Patch58: chromium-76.0.3809.100-gcc-history-move-noexcept.patch
+#
https://chromium.googlesource.com/chromium/src.git/+/bdc24128b75008743d81...
+Patch59: chromium-76.0.3809.100-gcc-accountinfo-move-noexcept.patch
+#
https://chromium.googlesource.com/chromium/src.git/+/5d7f227fa844e79568df...
+Patch60: chromium-76.0.3809.100-gcc-themeservice-includes.patch
+# TBD - need to submit it
+# In GCC one can't use alignas() for exported classes (as described in
+#
https://cs.chromium.org/chromium/src/base/compiler_specific.h?rcl=a5bcc05...)
+Patch61: chromium-76.0.3809.100-gcc-no-alignas-and-export.patch
# Apply these changes to work around EPEL7 compiler issues
Patch100: chromium-62.0.3202.62-kmaxskip-constexpr.patch
@@ -860,6 +870,10 @@ udev.
%patch55 -p1 -b .gcc-hasfraction-constexpr
%patch56 -p1 -b .gcc-move-explicit-initialization
%patch57 -p1 -b .gcc-initialization-order
+%patch58 -p1 -b .gcc-history-move-noexcept
+%patch59 -p1 -b .gcc-accountinfo-move-noexcept
+%patch60 -p1 -b .gcc-themeservice-includes
+%patch61 -p1 -b .gcc-no-alignas-and-export
# EPEL specific patches
%if 0%{?rhel} == 7