From dd85381a32ddc4b1acee269d2c86927317e82f5d Mon Sep 17 00:00:00 2001 From: Mark Mentovai Date: Fri, 11 Nov 2016 12:35:16 -0500 Subject: [PATCH] GCC fix: Disable -Wmultichar warning throughout Crashpad -Wmultichar is enabled by default with GCC (but not clang). It is impossible to disable this warning with #pragma GCC diagnostic ignored. See https://gcc.gnu.org/bugzilla/show_bug.cgi?id=53431 While compiling, for example, minidump_file_writer.cc: In file included from ../../minidump/minidump_extensions.h:25:0, from ../../minidump/minidump_file_writer.h:27, from ../../minidump/minidump_file_writer.cc:15: ../../util/misc/pdb_structures.h:45:38: error: multi-character character constan t [-Werror=multichar] static const uint32_t kSignature = '01BN'; ^~~~~~ ../../util/misc/pdb_structures.h:106:38: error: multi-character character consta nt [-Werror=multichar] static const uint32_t kSignature = 'SDSR'; ^~~~~~ ../../minidump/minidump_file_writer.cc:190:23: error: multi-character character constant [-Werror=multichar] header_.Signature = MINIDUMP_SIGNATURE; ^~~~~~~~~~~~~~~~~~ doc/developing.md is also updated to provide GCC build instructions for Android. Tested with: - GCC 4.9 from NDK r13 targeting arm with SDK 16 - GCC 4.9 from NDK r13 targeting arm64 with SDK 21 - GCC 6.2 targeting x86_64 BUG=crashpad:30 Change-Id: I9e7993761f5461281c9f4d8b4c56e8407e2c5b47 Reviewed-on: https://chromium-review.googlesource.com/409776 Reviewed-by: Robert Sesek --- build/crashpad.gypi | 11 +++++++++++ doc/developing.md | 7 ++++++- 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/build/crashpad.gypi b/build/crashpad.gypi index 027c7b68..166e768f 100644 --- a/build/crashpad.gypi +++ b/build/crashpad.gypi @@ -25,5 +25,16 @@ 4201, # nonstandard extension used : nameless struct/union. 4324, # structure was padded due to __declspec(align()). ], + 'conditions': [ + ['OS=="linux" or OS=="android"', { + 'conditions': [ + ['clang==0', { + 'cflags': [ + '-Wno-multichar', + ], + }], + ], + }], + ], }, } diff --git a/doc/developing.md b/doc/developing.md index 229e7b00..9f881678 100644 --- a/doc/developing.md +++ b/doc/developing.md @@ -154,7 +154,12 @@ $ CC_target=~/android-ndk-r13_arm64_api21/bin/clang \ --generator-output=out_android_arm64_api21 -f ninja-android ``` -Target “triplets” to use for `ar`, `nm`, and `readelf` are: +It is also possible to use GCC instead of Clang by making the appropriate +substitutions: `aarch64-linux-android-gcc` for `CC_target`; +`aarch64-linux-android-g++` for `CXX_target`; and `-Dclang=0` as an argument to +`gyp_crashpad.py`. + +Target “triplets” to use for `ar`, `nm`, `readelf`, `gcc`, and `g++` are: | Architecture | Target “triplet” | |:-------------|:------------------------|