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 <rsesek@chromium.org>
This commit is contained in:
Mark Mentovai 2016-11-11 12:35:16 -05:00
parent 1382618fbe
commit dd85381a32
2 changed files with 17 additions and 1 deletions

View File

@ -25,5 +25,16 @@
4201, # nonstandard extension used : nameless struct/union. 4201, # nonstandard extension used : nameless struct/union.
4324, # structure was padded due to __declspec(align()). 4324, # structure was padded due to __declspec(align()).
], ],
'conditions': [
['OS=="linux" or OS=="android"', {
'conditions': [
['clang==0', {
'cflags': [
'-Wno-multichar',
],
}],
],
}],
],
}, },
} }

View File

@ -154,7 +154,12 @@ $ CC_target=~/android-ndk-r13_arm64_api21/bin/clang \
--generator-output=out_android_arm64_api21 -f ninja-android --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” | | Architecture | Target “triplet” |
|:-------------|:------------------------| |:-------------|:------------------------|