[oe] [meta-browser][PATCH] chromium: fix gcc5 compile issues
Zoltan Kuscsik
zoltan.kuscsik at linaro.org
Thu Nov 5 06:31:25 UTC 2015
Why not using pragma in both cases?
See the discussion on the issue in Chromium upstream:
https://groups.google.com/a/chromium.org/forum/#!topic/chromium-dev/3uwBwunIa7g
Z
On 5 November 2015 at 02:10, Khem Raj <raj.khem at gmail.com> wrote:
>
> > On Nov 4, 2015, at 1:50 PM, Max Krummenacher <max.oss.09 at gmail.com>
> wrote:
> >
> > 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.
> >
>
> this is ok
>
> > 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
> >
> > --
> > _______________________________________________
> > Openembedded-devel mailing list
> > Openembedded-devel at lists.openembedded.org
> > http://lists.openembedded.org/mailman/listinfo/openembedded-devel
>
>
> --
> _______________________________________________
> Openembedded-devel mailing list
> Openembedded-devel at lists.openembedded.org
> http://lists.openembedded.org/mailman/listinfo/openembedded-devel
>
>
--
Zoltan Kuscsik
Senior Software Developer, Linaro Digital Home Group
email: zoltan.kuscsik at linaro.org
IRC: zoli_ on irc.linaro.org
More information about the Openembedded-devel
mailing list