[oe] [meta-browser][PATCH] chromium: fix gcc5 compile issues

Max Krummenacher max.oss.09 at gmail.com
Thu Nov 5 13:14:37 UTC 2015


Hi Zoltan, Khem

2015-11-05 7:31 GMT+01:00 Zoltan Kuscsik <zoltan.kuscsik at linaro.org>:
> Why not using pragma in both cases?

Because I started bignum.cc and found a quick fix without the pragma.
And in the second case I did not.

I will rework the patch to silence the warning with a pragma in both
cases without touching the code.

> See the discussion on the issue in Chromium upstream:
>
> https://groups.google.com/a/chromium.org/forum/#!topic/chromium-dev/3uwBwunIa7g

I looked at the upstream git repo and googled but did not find the
discussion already going on.

I'll will rework the upstream status to point to this URL also.

>
> 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

Thanks.

>>
>> > 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
> --
> _______________________________________________
> Openembedded-devel mailing list
> Openembedded-devel at lists.openembedded.org
> http://lists.openembedded.org/mailman/listinfo/openembedded-devel

Regards
Max



More information about the Openembedded-devel mailing list