[oe] [meta-browser][PATCH] chromium: fix gcc5 compile issues
Max Krummenacher
max.oss.09 at gmail.com
Wed Nov 4 21:50:03 UTC 2015
A chromium build with gcc5 fails with warnings treated as errors.
bignum.cc, image_util.cc: strict-overflow warning
Compiles and runs on qemux86-64 with gcc 5.2.0 and still compiles on
armv7a with gcc linaro-4.9.4.
Signed-off-by: Max Krummenacher <max.oss.09 at gmail.com>
---
.../0001-bignum.cc-fix-warning-from-gcc-5.patch | 56 ++++++++++++++++++++++
...-image_util.cc-disable-warning-from-gcc-5.patch | 37 ++++++++++++++
recipes-browser/chromium/chromium_40.0.2214.91.bb | 3 ++
3 files changed, 96 insertions(+)
create mode 100644 recipes-browser/chromium/chromium/chromium-40/0001-bignum.cc-fix-warning-from-gcc-5.patch
create mode 100644 recipes-browser/chromium/chromium/chromium-40/0002-image_util.cc-disable-warning-from-gcc-5.patch
diff --git a/recipes-browser/chromium/chromium/chromium-40/0001-bignum.cc-fix-warning-from-gcc-5.patch b/recipes-browser/chromium/chromium/chromium-40/0001-bignum.cc-fix-warning-from-gcc-5.patch
new file mode 100644
index 0000000..f3d7f77
--- /dev/null
+++ b/recipes-browser/chromium/chromium/chromium-40/0001-bignum.cc-fix-warning-from-gcc-5.patch
@@ -0,0 +1,56 @@
+From 689576b2f5c6398f6ef5203fe52edcf86b452790 Mon Sep 17 00:00:00 2001
+From: Max Krummenacher <max.oss.09 at gmail.com>
+Date: Tue, 3 Nov 2015 20:51:04 +0100
+Subject: [PATCH 1/2] bignum.cc: fix warning from gcc 5
+
+Refactoring the source seems to workaround the compiler warning.
+
+addresses:
+ ../../third_party/WebKit/Source/wtf/dtoa/bignum.cc:105:10: error: assuming
+ signed overflow does not occur when assuming that (X + c) < X is always
+ false [-Werror=strict-overflow]
+ void Bignum::AssignDecimalString(Vector<const char> value) {
+ ^
+
+Signed-off-by: Max Krummenacher <max.oss.09 at gmail.com>
+Upstream-Status: Pending
+
+---
+ third_party/WebKit/Source/wtf/dtoa/bignum.cc | 15 +++++++--------
+ 1 file changed, 7 insertions(+), 8 deletions(-)
+
+diff --git a/third_party/WebKit/Source/wtf/dtoa/bignum.cc b/third_party/WebKit/Source/wtf/dtoa/bignum.cc
+index a000b46..e5426dd 100644
+--- a/third_party/WebKit/Source/wtf/dtoa/bignum.cc
++++ b/third_party/WebKit/Source/wtf/dtoa/bignum.cc
+@@ -105,20 +105,19 @@ namespace double_conversion {
+ void Bignum::AssignDecimalString(Vector<const char> value) {
+ // 2^64 = 18446744073709551616 > 10^19
+ const int kMaxUint64DecimalDigits = 19;
++ int currentLen;
+ Zero();
+ int length = value.length();
+ int pos = 0;
+ // Let's just say that each digit needs 4 bits.
+- while (length >= kMaxUint64DecimalDigits) {
+- uint64_t digits = ReadUInt64(value, pos, kMaxUint64DecimalDigits);
+- pos += kMaxUint64DecimalDigits;
+- length -= kMaxUint64DecimalDigits;
+- MultiplyByPowerOfTen(kMaxUint64DecimalDigits);
++ while (length > 0) {
++ currentLen = length > kMaxUint64DecimalDigits ? kMaxUint64DecimalDigits : length;
++ uint64_t digits = ReadUInt64(value, pos, currentLen);
++ MultiplyByPowerOfTen(currentLen);
+ AddUInt64(digits);
++ pos += currentLen;
++ length -= currentLen;
+ }
+- uint64_t digits = ReadUInt64(value, pos, length);
+- MultiplyByPowerOfTen(length);
+- AddUInt64(digits);
+ Clamp();
+ }
+
+--
+1.8.4.5
+
diff --git a/recipes-browser/chromium/chromium/chromium-40/0002-image_util.cc-disable-warning-from-gcc-5.patch b/recipes-browser/chromium/chromium/chromium-40/0002-image_util.cc-disable-warning-from-gcc-5.patch
new file mode 100644
index 0000000..d62645b
--- /dev/null
+++ b/recipes-browser/chromium/chromium/chromium-40/0002-image_util.cc-disable-warning-from-gcc-5.patch
@@ -0,0 +1,37 @@
+From 2f674d980a116075dc7123a3e243b1451e4a732d Mon Sep 17 00:00:00 2001
+From: Max Krummenacher <max.oss.09 at gmail.com>
+Date: Tue, 3 Nov 2015 22:13:40 +0100
+Subject: [PATCH 2/2] image_util.cc: disable warning from gcc 5
+
+addresses:
+ ../../ui/gfx/image/image_util.cc:50:6: error: assuming signed overflow does
+ not occur when assuming that (X - c) <= X is always true
+ [-Werror=strict-overflow]
+ bool VisibleMargins(const ImageSkia& image, int* leading, int* trailing) {
+ ^
+
+Signed-off-by: Max Krummenacher <max.oss.09 at gmail.com>
+Upstream-Status: Pending
+
+---
+ ui/gfx/image/image_util.cc | 3 +++
+ 1 file changed, 3 insertions(+)
+
+diff --git a/ui/gfx/image/image_util.cc b/ui/gfx/image/image_util.cc
+index 89a3f8c..d595da3 100644
+--- a/ui/gfx/image/image_util.cc
++++ b/ui/gfx/image/image_util.cc
+@@ -68,7 +68,10 @@ bool VisibleMargins(const ImageSkia& image, int* leading, int* trailing) {
+ int inner_min = bitmap.width();
+ for (int x = 0; x < bitmap.width(); ++x) {
+ for (int y = 0; y < bitmap.height(); ++y) {
++#pragma GCC diagnostic push
++#pragma GCC diagnostic warning "-Wstrict-overflow"
+ if (SkColorGetA(bitmap.getColor(x, y)) > kMinimumVisibleOpacity) {
++#pragma GCC diagnostic pop
+ inner_min = x;
+ break;
+ }
+--
+1.8.4.5
+
diff --git a/recipes-browser/chromium/chromium_40.0.2214.91.bb b/recipes-browser/chromium/chromium_40.0.2214.91.bb
index 8bc05ee..3e00b8d 100644
--- a/recipes-browser/chromium/chromium_40.0.2214.91.bb
+++ b/recipes-browser/chromium/chromium_40.0.2214.91.bb
@@ -28,7 +28,10 @@ SRC_URI = "\
file://google-chrome.desktop \
file://chromium-40/fix-build-error-with-GCC-in-Debug-mode.patch \
file://chromium-40/add_missing_stat_h_include.patch \
+ file://chromium-40/0001-bignum.cc-fix-warning-from-gcc-5.patch \
+ file://chromium-40/0002-image_util.cc-disable-warning-from-gcc-5.patch \
"
+
#
# * use-egl : Without this packageconfig, the Chromium build will use GLX for creating an OpenGL context in X11,
# and regular OpenGL for painting operations. Neither are desirable on embedded platforms. With this
--
1.8.4.5
More information about the Openembedded-devel
mailing list