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 <[email protected]> --- .../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 <[email protected]> +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 <[email protected]> +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 <[email protected]> +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 <[email protected]> +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 [email protected] http://lists.openembedded.org/mailman/listinfo/openembedded-devel
