Backport and create more of the GCC fixes

This commit is contained in:
Tomas Popela 2019-08-15 21:14:35 +02:00
parent cfc50a59ed
commit 6ab36cdf55
5 changed files with 159 additions and 0 deletions

View File

@ -0,0 +1,53 @@
From 719df31ffd4d52b473509cf77acd9c02ec112acb Mon Sep 17 00:00:00 2001
From: Jose Dapena Paz <jose.dapena@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

View File

@ -0,0 +1,42 @@
From abe74a7f0c53a43a9706a42d71b7ff4a5da53380 Mon Sep 17 00:00:00 2001
From: Jose Dapena Paz <jose.dapena@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_; }

View File

@ -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*,

View File

@ -0,0 +1,36 @@
From d08ea83acc2f5ff395c1fe54f52687e92fe51c3b Mon Sep 17 00:00:00 2001
From: Jose Dapena Paz <jose.dapena@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;

View File

@ -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/+/7dc76c8d9f4cfbce7cf11424120aa6f6094916dc
Patch57: chromium-76.0.3809.100-gcc-initialization-order.patch
# https://chromium.googlesource.com/chromium/src.git/+/138904af5d6a4158ef4247fda816a8035e621e59
Patch58: chromium-76.0.3809.100-gcc-history-move-noexcept.patch
# https://chromium.googlesource.com/chromium/src.git/+/bdc24128b75008743d819e298557a53205706e7c
Patch59: chromium-76.0.3809.100-gcc-accountinfo-move-noexcept.patch
# https://chromium.googlesource.com/chromium/src.git/+/5d7f227fa844e79568df64e495e7ef958c12d7b2
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=a5bcc05a48f6cc6299edfaf0179278aa03653ee4&l=103)
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