From f953b3f37b00bd26f4b2c3558a83ccdb0f241bca Mon Sep 17 00:00:00 2001 From: Tom Callaway Date: Tue, 15 May 2018 15:05:11 -0400 Subject: [PATCH] fix gcc8 alignof issue on i686 --- chromium-66.0.3359.170-gcc8-alignof.patch | 18 ++++++++++++++++++ chromium.spec | 6 ++++++ 2 files changed, 24 insertions(+) create mode 100644 chromium-66.0.3359.170-gcc8-alignof.patch diff --git a/chromium-66.0.3359.170-gcc8-alignof.patch b/chromium-66.0.3359.170-gcc8-alignof.patch new file mode 100644 index 00000000..0c2b356d --- /dev/null +++ b/chromium-66.0.3359.170-gcc8-alignof.patch @@ -0,0 +1,18 @@ +diff -up chromium-66.0.3359.170/mojo/public/c/system/macros.h.gcc8-alignof chromium-66.0.3359.170/mojo/public/c/system/macros.h +--- chromium-66.0.3359.170/mojo/public/c/system/macros.h.gcc8-alignof 2018-05-15 14:58:46.448912634 -0400 ++++ chromium-66.0.3359.170/mojo/public/c/system/macros.h 2018-05-15 14:58:52.041784613 -0400 +@@ -18,7 +18,13 @@ + #endif + + // Like the C++11 |alignof| operator. +-#if __cplusplus >= 201103L ++#if defined(__GNUC__) && __GNUC__ >= 8 ++// GCC 8 has changed the alignof operator to return the minimal alignment ++// required by the target ABI, instead of the preferred alignment. ++// This means that on 32-bit x86, it will return 4 instead of 8. ++// Use __alignof__ instead to avoid this. ++#define MOJO_ALIGNOF(type) __alignof__(type) ++#elif __cplusplus >= 201103L + #define MOJO_ALIGNOF(type) alignof(type) + #elif defined(__GNUC__) + #define MOJO_ALIGNOF(type) __alignof__(type) diff --git a/chromium.spec b/chromium.spec index b5926143..396593f5 100644 --- a/chromium.spec +++ b/chromium.spec @@ -244,6 +244,10 @@ Patch95: chromium-65.0.3325.146-GCC-IDB-methods-String-renamed-to-GetString.patc Patch96: chromium-66.0.3359.117-GCC-do-not-use-initializer-list-for-NoDestructor-of-.patch # https://chromium.googlesource.com/chromium/src/+/b84682f31dc99b9c90f5a04947075815697c68d9%5E%21/#F0 Patch97: chromium-66.0.3359.139-arm-init-fix.patch +# GCC8 has changed the alignof operator to return the minimal alignment required by the target ABI +# instead of the preferred alignment. This means int64_t is now 4 on i686 (instead of 8). +# Use __alignof__ to get the value we expect (and chromium checks for). +Patch98: chromium-66.0.3359.170-gcc8-alignof.patch # Use chromium-latest.py to generate clean tarball from released build tarballs, found here: @@ -727,6 +731,7 @@ udev. %patch95 -p1 -b .gcc-getstring %patch96 -p1 -b .flatsetfix %patch97 -p1 -b .arm-init-fix +%patch98 -p1 -b .gcc8-alignof # Change shebang in all relevant files in this directory and all subdirectories # See `man find` for how the `-exec command {} +` syntax works @@ -1625,6 +1630,7 @@ getent group chrome-remote-desktop >/dev/null || groupadd -r chrome-remote-deskt %changelog * Tue May 15 2018 Tom Callaway 66.0.3359.170-2 - only x86_64 i686 have swiftshader +- fix gcc8 alignof issue on i686 * Mon May 14 2018 Tom Callaway 66.0.3359.170-1 - update to 66.0.3359.170