aboutsummaryrefslogtreecommitdiff
path: root/src/processor
diff options
context:
space:
mode:
authorNico Weber <thakis@chromium.org>2018-01-31 11:38:18 -0500
committerMike Frysinger <vapier@chromium.org>2018-01-31 16:39:12 +0000
commitfd99ff473cc5ea247e24651abc91255cff388aa2 (patch)
tree65efc83cfebc38c4127c54198ba022b53d570f9d /src/processor
parentDo not use non-standard stdext::checked_array_iterator with libc++. (diff)
downloadbreakpad-fd99ff473cc5ea247e24651abc91255cff388aa2.tar.xz
Make breakpad build with -Wimplicit-fallthrough (on linux)
Fixes a bug where MD_EXCEPTION_CODE_MAC_PPC_ALTIVEC_ASSIST would unintentionally get two reason strings appended. Bug: 177475 Change-Id: I4957268328a242c7c75bbff8add98e9a48ba83ad Reviewed-on: https://chromium-review.googlesource.com/895705 Reviewed-by: Mike Frysinger <vapier@chromium.org> Reviewed-by: Mark Mentovai <mark@chromium.org>
Diffstat (limited to 'src/processor')
-rw-r--r--src/processor/minidump.cc19
-rw-r--r--src/processor/minidump_processor.cc1
2 files changed, 19 insertions, 1 deletions
diff --git a/src/processor/minidump.cc b/src/processor/minidump.cc
index 5defe41d..f62f74c2 100644
--- a/src/processor/minidump.cc
+++ b/src/processor/minidump.cc
@@ -61,6 +61,22 @@
#include "processor/basic_code_modules.h"
#include "processor/logging.h"
+// All intentional fallthroughs in breakpad are in this file, so define
+// this macro locally.
+// If you ever move this to a .h file, make sure it's defined in a
+// private header file: clang suggests the first macro expanding to
+// [[clang::fallthrough]] in its diagnostics, so if BP_FALLTHROUGH
+// is visible in code depending on breakpad, clang would suggest
+// BP_FALLTHROUGH for code depending on breakpad, instead of the
+// client code's own fallthrough macro.
+// TODO(thakis): Once everyone uses C++17, use its [[fallthrough]] instead.
+#if defined(__clang__)
+#define BP_FALLTHROUGH [[clang::fallthrough]]
+#else
+#define BP_FALLTHROUGH
+#endif
+
+
namespace google_breakpad {
@@ -1969,6 +1985,7 @@ string MinidumpModule::code_identifier() const {
break;
}
// Otherwise fall through to the case below.
+ BP_FALLTHROUGH;
}
case MD_OS_MAC_OS_X:
@@ -5199,7 +5216,7 @@ bool Minidump::Read() {
stream_type << ", but can only deal with one";
return false;
}
- // Fall through to default
+ BP_FALLTHROUGH;
}
default: {
diff --git a/src/processor/minidump_processor.cc b/src/processor/minidump_processor.cc
index c522adff..f2360e62 100644
--- a/src/processor/minidump_processor.cc
+++ b/src/processor/minidump_processor.cc
@@ -893,6 +893,7 @@ string MinidumpProcessor::GetCrashReason(Minidump *dump, uint64_t *address) {
break;
case MD_EXCEPTION_CODE_MAC_PPC_ALTIVEC_ASSIST:
reason.append("EXC_PPC_ALTIVECASSIST");
+ break;
default:
reason.append(flags_string);
BPLOG(INFO) << "Unknown exception reason " << reason;