aboutsummaryrefslogtreecommitdiff
path: root/src/client/ios
diff options
context:
space:
mode:
authormark@chromium.org <mark@chromium.org@4c0a9323-5329-0410-9bdc-e9ce6186880e>2012-12-11 13:46:41 +0000
committermark@chromium.org <mark@chromium.org@4c0a9323-5329-0410-9bdc-e9ce6186880e>2012-12-11 13:46:41 +0000
commitd4df92aedcae7a152926b06de2f661085b47bb0f (patch)
treeebb54798ba686cb3392aee603537990f0e6fc499 /src/client/ios
parentThe Google-breakpad processor rejects (ignores) context records that lack CPU... (diff)
downloadbreakpad-d4df92aedcae7a152926b06de2f661085b47bb0f.tar.xz
Allow the Mac and iOS Breakpad clients to build without exceptions when the C++ standard library is not provided by libstdc++. libc++, for example, does
not provide its own try and catch replacement macros when exceptions are disabled. BUG=509 Review URL: https://breakpad.appspot.com/503002 git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@1089 4c0a9323-5329-0410-9bdc-e9ce6186880e
Diffstat (limited to 'src/client/ios')
-rw-r--r--src/client/ios/Breakpad.mm26
1 files changed, 19 insertions, 7 deletions
diff --git a/src/client/ios/Breakpad.mm b/src/client/ios/Breakpad.mm
index f3554063..c3758a9f 100644
--- a/src/client/ios/Breakpad.mm
+++ b/src/client/ios/Breakpad.mm
@@ -38,20 +38,32 @@
#define DEBUGLOG if (gDebugLog) fprintf
#define IGNORE_DEBUGGER "BREAKPAD_IGNORE_DEBUGGER"
-#import "common/mac/SimpleStringDictionary.h"
+#import "client/ios/Breakpad.h"
+
+#import <Foundation/Foundation.h>
+#include <pthread.h>
+#include <sys/stat.h>
+#include <sys/sysctl.h>
#import "client/mac/crash_generation/ConfigFile.h"
-#import "client/mac/sender/uploader.h"
#import "client/mac/handler/exception_handler.h"
#import "client/mac/handler/minidump_generator.h"
-#import "client/ios/Breakpad.h"
+#import "client/mac/sender/uploader.h"
+#import "common/mac/SimpleStringDictionary.h"
#import "client/ios/handler/ios_exception_minidump_generator.h"
#import "client/mac/handler/protected_memory_allocator.h"
-#import <sys/stat.h>
-#import <sys/sysctl.h>
-
-#import <Foundation/Foundation.h>
+#ifndef __EXCEPTIONS
+// This file uses C++ try/catch (but shouldn't). Duplicate the macros from
+// <c++/4.2.1/exception_defines.h> allowing this file to work properly with
+// exceptions disabled even when other C++ libraries are used. #undef the try
+// and catch macros first in case libstdc++ is in use and has already provided
+// its own definitions.
+#undef try
+#define try if (true)
+#undef catch
+#define catch(X) if (false)
+#endif // __EXCEPTIONS
using google_breakpad::ConfigFile;
using google_breakpad::EnsureDirectoryPathExists;