bug 465329 - sync to breakpad revision 299 (just the breakpad changes). r+a=bsmedberg
authorTed Mielczarek <ted.mielczarek@gmail.com>
Tue, 25 Nov 2008 09:19:44 -0500
changeset 22454 90de655f50026320a19f28d0b0eb29fed3a71fa5
parent 22453 b89527e653520041b405c2a31ad1d03a8c3273e0
child 22455 55a4f47fcb1e306402c3de7f9bdb2cd832d7b7b6
push id234
push usertmielczarek@mozilla.com
push dateMon, 22 Dec 2008 18:20:18 +0000
bugs465329
milestone1.9.1b3pre
bug 465329 - sync to breakpad revision 299 (just the breakpad changes). r+a=bsmedberg
toolkit/crashreporter/google-breakpad/AUTHORS
toolkit/crashreporter/google-breakpad/COPYING
toolkit/crashreporter/google-breakpad/ChangeLog
toolkit/crashreporter/google-breakpad/INSTALL
toolkit/crashreporter/google-breakpad/Makefile.am
toolkit/crashreporter/google-breakpad/Makefile.in
toolkit/crashreporter/google-breakpad/NEWS
toolkit/crashreporter/google-breakpad/README
toolkit/crashreporter/google-breakpad/aclocal.m4
toolkit/crashreporter/google-breakpad/configure.ac
toolkit/crashreporter/google-breakpad/src/client/linux/handler/exception_handler.cc
toolkit/crashreporter/google-breakpad/src/client/linux/handler/exception_handler.h
toolkit/crashreporter/google-breakpad/src/client/mac/handler/breakpad_exc_server.c
toolkit/crashreporter/google-breakpad/src/client/mac/handler/breakpad_exc_server.h
toolkit/crashreporter/google-breakpad/src/client/mac/handler/breakpad_nlist_64.cc
toolkit/crashreporter/google-breakpad/src/client/mac/handler/breakpad_nlist_64.h
toolkit/crashreporter/google-breakpad/src/client/mac/handler/dynamic_images.cc
toolkit/crashreporter/google-breakpad/src/client/mac/handler/dynamic_images.h
toolkit/crashreporter/google-breakpad/src/client/mac/handler/exception_handler.cc
toolkit/crashreporter/google-breakpad/src/client/mac/handler/exception_handler.h
toolkit/crashreporter/google-breakpad/src/client/mac/handler/minidump_generator.cc
toolkit/crashreporter/google-breakpad/src/client/mac/handler/minidump_generator.h
toolkit/crashreporter/google-breakpad/src/client/mac/handler/minidump_generator_test.cc
toolkit/crashreporter/google-breakpad/src/client/mac/handler/minidump_test.xcodeproj/project.pbxproj
toolkit/crashreporter/google-breakpad/src/client/mac/handler/minidump_tests32-Info.plist
toolkit/crashreporter/google-breakpad/src/client/mac/handler/minidump_tests64-Info.plist
toolkit/crashreporter/google-breakpad/src/client/mac/handler/obj-cTestCases-Info.plist
toolkit/crashreporter/google-breakpad/src/client/mac/handler/testcases/DynamicImagesTests.cc
toolkit/crashreporter/google-breakpad/src/client/mac/handler/testcases/DynamicImagesTests.h
toolkit/crashreporter/google-breakpad/src/client/mac/handler/testcases/breakpad_nlist_test.cc
toolkit/crashreporter/google-breakpad/src/client/mac/handler/testcases/breakpad_nlist_test.h
toolkit/crashreporter/google-breakpad/src/client/mac/handler/testcases/dwarftests.h
toolkit/crashreporter/google-breakpad/src/client/mac/handler/testcases/dwarftests.mm
toolkit/crashreporter/google-breakpad/src/client/mac/handler/testcases/testdata/dump_syms_dwarf_data
toolkit/crashreporter/google-breakpad/src/client/mac/handler/testcases/testdata/dump_syms_i386_breakpad.sym
toolkit/crashreporter/google-breakpad/src/client/minidump_file_writer-inl.h
toolkit/crashreporter/google-breakpad/src/client/minidump_file_writer.cc
toolkit/crashreporter/google-breakpad/src/client/minidump_file_writer.h
toolkit/crashreporter/google-breakpad/src/client/minidump_file_writer_unittest.cc
toolkit/crashreporter/google-breakpad/src/client/windows/breakpad_client.sln
toolkit/crashreporter/google-breakpad/src/client/windows/common/auto_critical_section.h
toolkit/crashreporter/google-breakpad/src/client/windows/common/ipc_protocol.h
toolkit/crashreporter/google-breakpad/src/client/windows/crash_generation/ReadMe.txt
toolkit/crashreporter/google-breakpad/src/client/windows/crash_generation/client_info.cc
toolkit/crashreporter/google-breakpad/src/client/windows/crash_generation/client_info.h
toolkit/crashreporter/google-breakpad/src/client/windows/crash_generation/crash_generation.vcproj
toolkit/crashreporter/google-breakpad/src/client/windows/crash_generation/crash_generation_client.cc
toolkit/crashreporter/google-breakpad/src/client/windows/crash_generation/crash_generation_client.h
toolkit/crashreporter/google-breakpad/src/client/windows/crash_generation/crash_generation_server.cc
toolkit/crashreporter/google-breakpad/src/client/windows/crash_generation/crash_generation_server.h
toolkit/crashreporter/google-breakpad/src/client/windows/crash_generation/minidump_generator.cc
toolkit/crashreporter/google-breakpad/src/client/windows/crash_generation/minidump_generator.h
toolkit/crashreporter/google-breakpad/src/client/windows/handler/exception_handler.cc
toolkit/crashreporter/google-breakpad/src/client/windows/handler/exception_handler.h
toolkit/crashreporter/google-breakpad/src/client/windows/handler/exception_handler.vcproj
toolkit/crashreporter/google-breakpad/src/client/windows/sender/crash_report_sender.cc
toolkit/crashreporter/google-breakpad/src/client/windows/sender/crash_report_sender.h
toolkit/crashreporter/google-breakpad/src/client/windows/sender/crash_report_sender.vcproj
toolkit/crashreporter/google-breakpad/src/client/windows/tests/crash_generation_app/abstract_class.cc
toolkit/crashreporter/google-breakpad/src/client/windows/tests/crash_generation_app/abstract_class.h
toolkit/crashreporter/google-breakpad/src/client/windows/tests/crash_generation_app/crash_generation_app.cc
toolkit/crashreporter/google-breakpad/src/client/windows/tests/crash_generation_app/crash_generation_app.h
toolkit/crashreporter/google-breakpad/src/client/windows/tests/crash_generation_app/crash_generation_app.ico
toolkit/crashreporter/google-breakpad/src/client/windows/tests/crash_generation_app/crash_generation_app.rc
toolkit/crashreporter/google-breakpad/src/client/windows/tests/crash_generation_app/crash_generation_app.sln
toolkit/crashreporter/google-breakpad/src/client/windows/tests/crash_generation_app/crash_generation_app.vcproj
toolkit/crashreporter/google-breakpad/src/client/windows/tests/crash_generation_app/precompile.cc
toolkit/crashreporter/google-breakpad/src/client/windows/tests/crash_generation_app/precompile.h
toolkit/crashreporter/google-breakpad/src/client/windows/tests/crash_generation_app/resource.h
toolkit/crashreporter/google-breakpad/src/client/windows/tests/crash_generation_app/small.ico
toolkit/crashreporter/google-breakpad/src/common/linux/dump_symbols.cc
toolkit/crashreporter/google-breakpad/src/common/mac/dump_syms.h
toolkit/crashreporter/google-breakpad/src/common/mac/dump_syms.mm
toolkit/crashreporter/google-breakpad/src/common/mac/dwarf/bytereader-inl.h
toolkit/crashreporter/google-breakpad/src/common/mac/dwarf/bytereader.cc
toolkit/crashreporter/google-breakpad/src/common/mac/dwarf/bytereader.h
toolkit/crashreporter/google-breakpad/src/common/mac/dwarf/dwarf2enums.h
toolkit/crashreporter/google-breakpad/src/common/mac/dwarf/dwarf2reader.cc
toolkit/crashreporter/google-breakpad/src/common/mac/dwarf/dwarf2reader.h
toolkit/crashreporter/google-breakpad/src/common/mac/dwarf/functioninfo.cc
toolkit/crashreporter/google-breakpad/src/common/mac/dwarf/functioninfo.h
toolkit/crashreporter/google-breakpad/src/common/mac/dwarf/line_state_machine.h
toolkit/crashreporter/google-breakpad/src/common/mac/dwarf/types.h
toolkit/crashreporter/google-breakpad/src/common/windows/guid_string.cc
toolkit/crashreporter/google-breakpad/src/common/windows/guid_string.h
toolkit/crashreporter/google-breakpad/src/common/windows/http_upload.cc
toolkit/crashreporter/google-breakpad/src/common/windows/http_upload.h
toolkit/crashreporter/google-breakpad/src/common/windows/pdb_source_line_writer.cc
toolkit/crashreporter/google-breakpad/src/common/windows/pdb_source_line_writer.h
toolkit/crashreporter/google-breakpad/src/common/windows/string_utils-inl.h
toolkit/crashreporter/google-breakpad/src/config.h.in
toolkit/crashreporter/google-breakpad/src/google_breakpad/common/minidump_cpu_ppc.h
toolkit/crashreporter/google-breakpad/src/google_breakpad/processor/minidump.h
toolkit/crashreporter/google-breakpad/src/processor/address_map-inl.h
toolkit/crashreporter/google-breakpad/src/processor/address_map.h
toolkit/crashreporter/google-breakpad/src/processor/address_map_unittest.cc
toolkit/crashreporter/google-breakpad/src/processor/call_stack.cc
toolkit/crashreporter/google-breakpad/src/processor/contained_range_map-inl.h
toolkit/crashreporter/google-breakpad/src/processor/contained_range_map.h
toolkit/crashreporter/google-breakpad/src/processor/contained_range_map_unittest.cc
toolkit/crashreporter/google-breakpad/src/processor/linked_ptr.h
toolkit/crashreporter/google-breakpad/src/processor/minidump.cc
toolkit/crashreporter/google-breakpad/src/processor/minidump_dump.cc
toolkit/crashreporter/google-breakpad/src/processor/minidump_processor.cc
toolkit/crashreporter/google-breakpad/src/processor/minidump_processor_unittest.cc
toolkit/crashreporter/google-breakpad/src/processor/minidump_stackwalk.cc
toolkit/crashreporter/google-breakpad/src/processor/pathname_stripper.cc
toolkit/crashreporter/google-breakpad/src/processor/pathname_stripper.h
toolkit/crashreporter/google-breakpad/src/processor/pathname_stripper_unittest.cc
toolkit/crashreporter/google-breakpad/src/processor/postfix_evaluator-inl.h
toolkit/crashreporter/google-breakpad/src/processor/postfix_evaluator.h
toolkit/crashreporter/google-breakpad/src/processor/postfix_evaluator_unittest.cc
toolkit/crashreporter/google-breakpad/src/processor/process_state.cc
toolkit/crashreporter/google-breakpad/src/processor/range_map-inl.h
toolkit/crashreporter/google-breakpad/src/processor/range_map.h
toolkit/crashreporter/google-breakpad/src/processor/range_map_unittest.cc
toolkit/crashreporter/google-breakpad/src/processor/scoped_ptr.h
toolkit/crashreporter/google-breakpad/src/processor/simple_symbol_supplier.cc
toolkit/crashreporter/google-breakpad/src/processor/simple_symbol_supplier.h
toolkit/crashreporter/google-breakpad/src/processor/stack_frame_info.h
toolkit/crashreporter/google-breakpad/src/processor/stackwalker.cc
toolkit/crashreporter/google-breakpad/src/processor/stackwalker_ppc.cc
toolkit/crashreporter/google-breakpad/src/processor/stackwalker_ppc.h
toolkit/crashreporter/google-breakpad/src/processor/stackwalker_selftest.cc
toolkit/crashreporter/google-breakpad/src/processor/stackwalker_x86.cc
toolkit/crashreporter/google-breakpad/src/processor/stackwalker_x86.h
toolkit/crashreporter/google-breakpad/src/processor/testdata/minidump2.dmp
toolkit/crashreporter/google-breakpad/src/processor/testdata/minidump2.dump.out
toolkit/crashreporter/google-breakpad/src/processor/testdata/minidump2.stackwalk.out
toolkit/crashreporter/google-breakpad/src/processor/testdata/module1.out
toolkit/crashreporter/google-breakpad/src/processor/testdata/module2.out
toolkit/crashreporter/google-breakpad/src/processor/testdata/module3_bad.out
toolkit/crashreporter/google-breakpad/src/processor/testdata/symbols/kernel32.pdb/BCE8785C57B44245A669896B6A19B9542/kernel32.sym
toolkit/crashreporter/google-breakpad/src/processor/testdata/symbols/test_app.pdb/5A9832E5287241C1838ED98914E9B7FF1/test_app.sym
toolkit/crashreporter/google-breakpad/src/processor/testdata/test_app.cc
toolkit/crashreporter/google-breakpad/src/tools/mac/crash_report/crash_report.mm
toolkit/crashreporter/google-breakpad/src/tools/mac/crash_report/crash_report.xcodeproj/project.pbxproj
toolkit/crashreporter/google-breakpad/src/tools/mac/dump_syms/dump_syms.xcodeproj/project.pbxproj
toolkit/crashreporter/google-breakpad/src/tools/mac/dump_syms/dump_syms_tool.mm
toolkit/crashreporter/google-breakpad/src/tools/mac/symupload/symupload.m
toolkit/crashreporter/google-breakpad/src/tools/windows/converter/ms_symbol_server_converter.cc
toolkit/crashreporter/google-breakpad/src/tools/windows/converter/ms_symbol_server_converter.vcproj
toolkit/crashreporter/google-breakpad/src/tools/windows/dump_syms/dump_syms.cc
toolkit/crashreporter/google-breakpad/src/tools/windows/dump_syms/dump_syms.vcproj
toolkit/crashreporter/google-breakpad/src/tools/windows/dump_syms/testdata/dump_syms_regtest.pdb
toolkit/crashreporter/google-breakpad/src/tools/windows/symupload/symupload.cc
toolkit/crashreporter/google-breakpad/src/tools/windows/symupload/symupload.vcproj
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
old mode 100755
new mode 100644
--- a/toolkit/crashreporter/google-breakpad/src/client/linux/handler/exception_handler.cc
+++ b/toolkit/crashreporter/google-breakpad/src/client/linux/handler/exception_handler.cc
@@ -113,17 +113,19 @@ ExceptionHandler::~ExceptionHandler() {
     // clean up the handler stack.
     delete handler_stack_;
     handler_stack_ = NULL;
   }
   pthread_mutex_unlock(&handler_stack_mutex_);
 }
 
 bool ExceptionHandler::WriteMinidump() {
-  return InternalWriteMinidump(0, 0, NULL);
+  bool success = InternalWriteMinidump(0, 0, NULL);
+  UpdateNextID();
+  return success;
 }
 
 // static
 bool ExceptionHandler::WriteMinidump(const string &dump_path,
                    MinidumpCallback callback,
                    void *callback_context) {
   ExceptionHandler handler(dump_path, NULL, callback,
                            callback_context, false);
@@ -221,46 +223,54 @@ void ExceptionHandler::HandleException(i
 }
 
 bool ExceptionHandler::InternalWriteMinidump(int signo,
                                              uintptr_t sighandler_ebp,
                                              struct sigcontext **sig_ctx) {
   if (filter_ && !filter_(callback_context_))
     return false;
 
+  bool success = false;
+  // Block all the signals we want to process when writting minidump.
+  // We don't want it to be interrupted.
+  sigset_t sig_blocked, sig_old;
+  bool blocked = true;
+  sigfillset(&sig_blocked);
+  for (size_t i = 0; i < sizeof(SigTable) / sizeof(SigTable[0]); ++i)
+    sigdelset(&sig_blocked, SigTable[i]);
+  if (sigprocmask(SIG_BLOCK, &sig_blocked, &sig_old) != 0) {
+    blocked = false;
+    fprintf(stderr, "google_breakpad::ExceptionHandler::HandleException: "
+                    "failed to block signals.\n");
+  }
+
+  success = minidump_generator_.WriteMinidumpToFile(
+                     next_minidump_path_c_, signo, sighandler_ebp, sig_ctx);
+
+  // Unblock the signals.
+  if (blocked) {
+    sigprocmask(SIG_SETMASK, &sig_old, &sig_old);
+  }
+
+  if (callback_)
+    success = callback_(dump_path_c_, next_minidump_id_c_,
+                          callback_context_, success);
+  return success;
+}
+
+void ExceptionHandler::UpdateNextID() {
   GUID guid;
-  bool success = false;;
   char guid_str[kGUIDStringLength + 1];
   if (CreateGUID(&guid) && GUIDToString(&guid, guid_str, sizeof(guid_str))) {
+    next_minidump_id_ = guid_str;
+    next_minidump_id_c_ = next_minidump_id_.c_str();
+
     char minidump_path[PATH_MAX];
     snprintf(minidump_path, sizeof(minidump_path), "%s/%s.dmp",
              dump_path_c_,
              guid_str);
 
-    // Block all the signals we want to process when writting minidump.
-    // We don't want it to be interrupted.
-    sigset_t sig_blocked, sig_old;
-    bool blocked = true;
-    sigfillset(&sig_blocked);
-    for (size_t i = 0; i < sizeof(SigTable) / sizeof(SigTable[0]); ++i)
-      sigdelset(&sig_blocked, SigTable[i]);
-    if (sigprocmask(SIG_BLOCK, &sig_blocked, &sig_old) != 0) {
-      blocked = false;
-      fprintf(stderr, "google_breakpad::ExceptionHandler::HandleException: "
-                      "failed to block signals.\n");
-    }
-
-    success = minidump_generator_.WriteMinidumpToFile(
-                       minidump_path, signo, sighandler_ebp, sig_ctx);
-
-    // Unblock the signals.
-    if (blocked) {
-      sigprocmask(SIG_SETMASK, &sig_old, &sig_old);
-    }
-
-    if (callback_)
-      success = callback_(dump_path_c_, guid_str,
-                          callback_context_, success);
+    next_minidump_path_ = minidump_path;
+    next_minidump_path_c_ = next_minidump_path_.c_str();
   }
-  return success;
 }
 
 }  // namespace google_breakpad
--- a/toolkit/crashreporter/google-breakpad/src/client/linux/handler/exception_handler.h
+++ b/toolkit/crashreporter/google-breakpad/src/client/linux/handler/exception_handler.h
@@ -121,16 +121,17 @@ class ExceptionHandler {
                    bool install_handler);
   ~ExceptionHandler();
 
   // Get and set the minidump path.
   string dump_path() const { return dump_path_; }
   void set_dump_path(const string &dump_path) {
     dump_path_ = dump_path;
     dump_path_c_ = dump_path_.c_str();
+    UpdateNextID();
   }
 
   // Writes a minidump immediately.  This can be used to capture the
   // execution state independently of a crash.  Returns true on success.
   bool WriteMinidump();
 
   // Convenience form of WriteMinidump which does not require an
   // ExceptionHandler instance.
@@ -155,27 +156,42 @@ class ExceptionHandler {
   // that signal handler's frame, and sig_ctx is an out parameter
   // that will be set to point at the sigcontext that was placed
   // on the stack by the kernel.  You can pass zero and NULL
   // for the second and third parameters if you are not calling
   // this from a signal handler.
   bool InternalWriteMinidump(int signo, uintptr_t sighandler_ebp,
                              struct sigcontext **sig_ctx);
 
+  // Generates a new ID and stores it in next_minidump_id, and stores the
+  // path of the next minidump to be written in next_minidump_path_.
+  void UpdateNextID();
+
  private:
   FilterCallback filter_;
   MinidumpCallback callback_;
   void *callback_context_;
 
   // The directory in which a minidump will be written, set by the dump_path
   // argument to the constructor, or set_dump_path.
   string dump_path_;
-  // C style dump path. Keep this when setting dump path, since calling
-  // c_str() of std::string when crashing may not be safe.
+
+  // The basename of the next minidump to be written, without the extension
+  string next_minidump_id_;
+
+  // The full pathname of the next minidump to be written, including the file
+  // extension
+  string next_minidump_path_;
+
+  // Pointers to C-string representations of the above. These are set
+  // when the above are set so we can avoid calling c_str during
+  // an exception.
   const char *dump_path_c_;
+  const char *next_minidump_id_c_;
+  const char *next_minidump_path_c_;
 
   // True if the ExceptionHandler installed an unhandled exception filter
   // when created (with an install_handler parameter set to true).
   bool installed_handler_;
 
   // Keep the previous handlers for the signal.
   typedef void (*sighandler_t)(int);
   std::map<int, sighandler_t> old_handlers_;
new file mode 100644
--- /dev/null
+++ b/toolkit/crashreporter/google-breakpad/src/client/mac/handler/breakpad_exc_server.c
@@ -0,0 +1,1750 @@
+/*
+ * IDENTIFICATION:
+ * stub generated Mon Jun 16 18:08:10 2008
+ * with a MiG generated Tue Feb 19 02:01:43 PST 2008 by root@b75.local
+ * OPTIONS: 
+ */
+
+/* Module exc */
+
+#define	__MIG_check__Request__exc_subsystem__ 1
+#define	__NDR_convert__Request__exc_subsystem__ 1
+
+#include <string.h>
+#include <mach/ndr.h>
+#include <mach/boolean.h>
+#include <mach/kern_return.h>
+#include <mach/notify.h>
+#include <mach/mach_types.h>
+#include <mach/message.h>
+#include <mach/mig_errors.h>
+#include <mach/port.h>
+
+#include <mach/std_types.h>
+#include <mach/mig.h>
+#include <mach/mig.h>
+#include <mach/mach_types.h>
+
+#ifndef	mig_internal
+#define	mig_internal	static __inline__
+#endif	/* mig_internal */
+
+#ifndef	mig_external
+#define mig_external
+#endif	/* mig_external */
+
+#if	!defined(__MigTypeCheck) && defined(TypeCheck)
+#define	__MigTypeCheck		TypeCheck	/* Legacy setting */
+#endif	/* !defined(__MigTypeCheck) */
+
+#if	!defined(__MigKernelSpecificCode) && defined(_MIG_KERNEL_SPECIFIC_CODE_)
+#define	__MigKernelSpecificCode	_MIG_KERNEL_SPECIFIC_CODE_	/* Legacy setting */
+#endif	/* !defined(__MigKernelSpecificCode) */
+
+#ifndef	LimitCheck
+#define	LimitCheck 0
+#endif	/* LimitCheck */
+
+#ifndef	min
+#define	min(a,b)  ( ((a) < (b))? (a): (b) )
+#endif	/* min */
+
+#if !defined(_WALIGN_)
+#define _WALIGN_(x) (((x) + 3) & ~3)
+#endif /* !defined(_WALIGN_) */
+
+#if !defined(_WALIGNSZ_)
+#define _WALIGNSZ_(x) _WALIGN_(sizeof(x))
+#endif /* !defined(_WALIGNSZ_) */
+
+#ifndef	UseStaticTemplates
+#define	UseStaticTemplates	0
+#endif	/* UseStaticTemplates */
+
+#ifndef	__DeclareRcvRpc
+#define	__DeclareRcvRpc(_NUM_, _NAME_)
+#endif	/* __DeclareRcvRpc */
+
+#ifndef	__BeforeRcvRpc
+#define	__BeforeRcvRpc(_NUM_, _NAME_)
+#endif	/* __BeforeRcvRpc */
+
+#ifndef	__AfterRcvRpc
+#define	__AfterRcvRpc(_NUM_, _NAME_)
+#endif	/* __AfterRcvRpc */
+
+#ifndef	__DeclareRcvSimple
+#define	__DeclareRcvSimple(_NUM_, _NAME_)
+#endif	/* __DeclareRcvSimple */
+
+#ifndef	__BeforeRcvSimple
+#define	__BeforeRcvSimple(_NUM_, _NAME_)
+#endif	/* __BeforeRcvSimple */
+
+#ifndef	__AfterRcvSimple
+#define	__AfterRcvSimple(_NUM_, _NAME_)
+#endif	/* __AfterRcvSimple */
+
+#define novalue void
+
+#define msgh_request_port	msgh_local_port
+#define MACH_MSGH_BITS_REQUEST(bits)	MACH_MSGH_BITS_LOCAL(bits)
+#define msgh_reply_port		msgh_remote_port
+#define MACH_MSGH_BITS_REPLY(bits)	MACH_MSGH_BITS_REMOTE(bits)
+
+#define MIG_RETURN_ERROR(X, code)	{\
+				((mig_reply_error_t *)X)->RetCode = code;\
+				((mig_reply_error_t *)X)->NDR = NDR_record;\
+				return;\
+				}
+
+/* typedefs for all requests */
+
+#ifndef __Request__exc_subsystem__defined
+#define __Request__exc_subsystem__defined
+
+#ifdef  __MigPackStructs
+#pragma pack(4)
+#endif
+	typedef struct {
+		mach_msg_header_t Head;
+		/* start of the kernel processed data */
+		mach_msg_body_t msgh_body;
+		mach_msg_port_descriptor_t thread;
+		mach_msg_port_descriptor_t task;
+		/* end of the kernel processed data */
+		NDR_record_t NDR;
+		exception_type_t exception;
+		mach_msg_type_number_t codeCnt;
+		integer_t code[2];
+	} __Request__exception_raise_t;
+#ifdef  __MigPackStructs
+#pragma pack()
+#endif
+
+#ifdef  __MigPackStructs
+#pragma pack(4)
+#endif
+	typedef struct {
+		mach_msg_header_t Head;
+		NDR_record_t NDR;
+		exception_type_t exception;
+		mach_msg_type_number_t codeCnt;
+		integer_t code[2];
+		int flavor;
+		mach_msg_type_number_t old_stateCnt;
+		natural_t old_state[144];
+	} __Request__exception_raise_state_t;
+#ifdef  __MigPackStructs
+#pragma pack()
+#endif
+
+#ifdef  __MigPackStructs
+#pragma pack(4)
+#endif
+	typedef struct {
+		mach_msg_header_t Head;
+		/* start of the kernel processed data */
+		mach_msg_body_t msgh_body;
+		mach_msg_port_descriptor_t thread;
+		mach_msg_port_descriptor_t task;
+		/* end of the kernel processed data */
+		NDR_record_t NDR;
+		exception_type_t exception;
+		mach_msg_type_number_t codeCnt;
+		integer_t code[2];
+		int flavor;
+		mach_msg_type_number_t old_stateCnt;
+		natural_t old_state[144];
+	} __Request__exception_raise_state_identity_t;
+#ifdef  __MigPackStructs
+#pragma pack()
+#endif
+#endif /* !__Request__exc_subsystem__defined */
+
+/* typedefs for all replies */
+
+#ifndef __Reply__exc_subsystem__defined
+#define __Reply__exc_subsystem__defined
+
+#ifdef  __MigPackStructs
+#pragma pack(4)
+#endif
+	typedef struct {
+		mach_msg_header_t Head;
+		NDR_record_t NDR;
+		kern_return_t RetCode;
+	} __Reply__exception_raise_t;
+#ifdef  __MigPackStructs
+#pragma pack()
+#endif
+
+#ifdef  __MigPackStructs
+#pragma pack(4)
+#endif
+	typedef struct {
+		mach_msg_header_t Head;
+		NDR_record_t NDR;
+		kern_return_t RetCode;
+		int flavor;
+		mach_msg_type_number_t new_stateCnt;
+		natural_t new_state[144];
+	} __Reply__exception_raise_state_t;
+#ifdef  __MigPackStructs
+#pragma pack()
+#endif
+
+#ifdef  __MigPackStructs
+#pragma pack(4)
+#endif
+	typedef struct {
+		mach_msg_header_t Head;
+		NDR_record_t NDR;
+		kern_return_t RetCode;
+		int flavor;
+		mach_msg_type_number_t new_stateCnt;
+		natural_t new_state[144];
+	} __Reply__exception_raise_state_identity_t;
+#ifdef  __MigPackStructs
+#pragma pack()
+#endif
+#endif /* !__Reply__exc_subsystem__defined */
+
+
+/* union of all replies */
+
+#ifndef __ReplyUnion__breakpad_exc_subsystem__defined
+#define __ReplyUnion__breakpad_exc_subsystem__defined
+union __ReplyUnion__breakpad_exc_subsystem {
+	__Reply__exception_raise_t Reply_exception_raise;
+	__Reply__exception_raise_state_t Reply_exception_raise_state;
+	__Reply__exception_raise_state_identity_t Reply_exception_raise_state_identity;
+};
+#endif /* __RequestUnion__breakpad_exc_subsystem__defined */
+/* Forward Declarations */
+
+
+mig_internal novalue _Xexception_raise
+	(mach_msg_header_t *InHeadP, mach_msg_header_t *OutHeadP);
+
+mig_internal novalue _Xexception_raise_state
+	(mach_msg_header_t *InHeadP, mach_msg_header_t *OutHeadP);
+
+mig_internal novalue _Xexception_raise_state_identity
+	(mach_msg_header_t *InHeadP, mach_msg_header_t *OutHeadP);
+
+
+#if ( __MigTypeCheck || __NDR_convert__ )
+#if __MIG_check__Request__exc_subsystem__
+#if !defined(__MIG_check__Request__exception_raise_t__defined)
+#define __MIG_check__Request__exception_raise_t__defined
+#ifndef __NDR_convert__int_rep__Request__exception_raise_t__exception__defined
+#if	defined(__NDR_convert__int_rep__exc__exception_type_t__defined)
+#define	__NDR_convert__int_rep__Request__exception_raise_t__exception__defined
+#define	__NDR_convert__int_rep__Request__exception_raise_t__exception(a, f) \
+	__NDR_convert__int_rep__exc__exception_type_t((exception_type_t *)(a), f)
+#elif	defined(__NDR_convert__int_rep__exception_type_t__defined)
+#define	__NDR_convert__int_rep__Request__exception_raise_t__exception__defined
+#define	__NDR_convert__int_rep__Request__exception_raise_t__exception(a, f) \
+	__NDR_convert__int_rep__exception_type_t((exception_type_t *)(a), f)
+#elif	defined(__NDR_convert__int_rep__exc__int__defined)
+#define	__NDR_convert__int_rep__Request__exception_raise_t__exception__defined
+#define	__NDR_convert__int_rep__Request__exception_raise_t__exception(a, f) \
+	__NDR_convert__int_rep__exc__int((int *)(a), f)
+#elif	defined(__NDR_convert__int_rep__int__defined)
+#define	__NDR_convert__int_rep__Request__exception_raise_t__exception__defined
+#define	__NDR_convert__int_rep__Request__exception_raise_t__exception(a, f) \
+	__NDR_convert__int_rep__int((int *)(a), f)
+#elif	defined(__NDR_convert__int_rep__exc__int32_t__defined)
+#define	__NDR_convert__int_rep__Request__exception_raise_t__exception__defined
+#define	__NDR_convert__int_rep__Request__exception_raise_t__exception(a, f) \
+	__NDR_convert__int_rep__exc__int32_t((int32_t *)(a), f)
+#elif	defined(__NDR_convert__int_rep__int32_t__defined)
+#define	__NDR_convert__int_rep__Request__exception_raise_t__exception__defined
+#define	__NDR_convert__int_rep__Request__exception_raise_t__exception(a, f) \
+	__NDR_convert__int_rep__int32_t((int32_t *)(a), f)
+#endif /* defined(__NDR_convert__*__defined) */
+#endif /* __NDR_convert__int_rep__Request__exception_raise_t__exception__defined */
+
+#ifndef __NDR_convert__int_rep__Request__exception_raise_t__code__defined
+#if	defined(__NDR_convert__int_rep__exc__exception_data_t__defined)
+#define	__NDR_convert__int_rep__Request__exception_raise_t__code__defined
+#define	__NDR_convert__int_rep__Request__exception_raise_t__code(a, f, c) \
+	__NDR_convert__int_rep__exc__exception_data_t((exception_data_t *)(a), f, c)
+#elif	defined(__NDR_convert__int_rep__exception_data_t__defined)
+#define	__NDR_convert__int_rep__Request__exception_raise_t__code__defined
+#define	__NDR_convert__int_rep__Request__exception_raise_t__code(a, f, c) \
+	__NDR_convert__int_rep__exception_data_t((exception_data_t *)(a), f, c)
+#elif	defined(__NDR_convert__int_rep__exc__integer_t__defined)
+#define	__NDR_convert__int_rep__Request__exception_raise_t__code__defined
+#define	__NDR_convert__int_rep__Request__exception_raise_t__code(a, f, c) \
+	__NDR_convert__ARRAY((integer_t *)(a), f, c, __NDR_convert__int_rep__exc__integer_t)
+#elif	defined(__NDR_convert__int_rep__integer_t__defined)
+#define	__NDR_convert__int_rep__Request__exception_raise_t__code__defined
+#define	__NDR_convert__int_rep__Request__exception_raise_t__code(a, f, c) \
+	__NDR_convert__ARRAY((integer_t *)(a), f, c, __NDR_convert__int_rep__integer_t)
+#elif	defined(__NDR_convert__int_rep__exc__int32_t__defined)
+#define	__NDR_convert__int_rep__Request__exception_raise_t__code__defined
+#define	__NDR_convert__int_rep__Request__exception_raise_t__code(a, f, c) \
+	__NDR_convert__ARRAY((int32_t *)(a), f, c, __NDR_convert__int_rep__exc__int32_t)
+#elif	defined(__NDR_convert__int_rep__int32_t__defined)
+#define	__NDR_convert__int_rep__Request__exception_raise_t__code__defined
+#define	__NDR_convert__int_rep__Request__exception_raise_t__code(a, f, c) \
+	__NDR_convert__ARRAY((int32_t *)(a), f, c, __NDR_convert__int_rep__int32_t)
+#endif /* defined(__NDR_convert__*__defined) */
+#endif /* __NDR_convert__int_rep__Request__exception_raise_t__code__defined */
+
+#ifndef __NDR_convert__int_rep__Request__exception_raise_t__codeCnt__defined
+#if	defined(__NDR_convert__int_rep__exc__mach_msg_type_number_t__defined)
+#define	__NDR_convert__int_rep__Request__exception_raise_t__codeCnt__defined
+#define	__NDR_convert__int_rep__Request__exception_raise_t__codeCnt(a, f) \
+	__NDR_convert__int_rep__exc__mach_msg_type_number_t((mach_msg_type_number_t *)(a), f)
+#elif	defined(__NDR_convert__int_rep__mach_msg_type_number_t__defined)
+#define	__NDR_convert__int_rep__Request__exception_raise_t__codeCnt__defined
+#define	__NDR_convert__int_rep__Request__exception_raise_t__codeCnt(a, f) \
+	__NDR_convert__int_rep__mach_msg_type_number_t((mach_msg_type_number_t *)(a), f)
+#endif /* defined(__NDR_convert__*__defined) */
+#endif /* __NDR_convert__int_rep__Request__exception_raise_t__codeCnt__defined */
+
+#ifndef __NDR_convert__char_rep__Request__exception_raise_t__exception__defined
+#if	defined(__NDR_convert__char_rep__exc__exception_type_t__defined)
+#define	__NDR_convert__char_rep__Request__exception_raise_t__exception__defined
+#define	__NDR_convert__char_rep__Request__exception_raise_t__exception(a, f) \
+	__NDR_convert__char_rep__exc__exception_type_t((exception_type_t *)(a), f)
+#elif	defined(__NDR_convert__char_rep__exception_type_t__defined)
+#define	__NDR_convert__char_rep__Request__exception_raise_t__exception__defined
+#define	__NDR_convert__char_rep__Request__exception_raise_t__exception(a, f) \
+	__NDR_convert__char_rep__exception_type_t((exception_type_t *)(a), f)
+#elif	defined(__NDR_convert__char_rep__exc__int__defined)
+#define	__NDR_convert__char_rep__Request__exception_raise_t__exception__defined
+#define	__NDR_convert__char_rep__Request__exception_raise_t__exception(a, f) \
+	__NDR_convert__char_rep__exc__int((int *)(a), f)
+#elif	defined(__NDR_convert__char_rep__int__defined)
+#define	__NDR_convert__char_rep__Request__exception_raise_t__exception__defined
+#define	__NDR_convert__char_rep__Request__exception_raise_t__exception(a, f) \
+	__NDR_convert__char_rep__int((int *)(a), f)
+#elif	defined(__NDR_convert__char_rep__exc__int32_t__defined)
+#define	__NDR_convert__char_rep__Request__exception_raise_t__exception__defined
+#define	__NDR_convert__char_rep__Request__exception_raise_t__exception(a, f) \
+	__NDR_convert__char_rep__exc__int32_t((int32_t *)(a), f)
+#elif	defined(__NDR_convert__char_rep__int32_t__defined)
+#define	__NDR_convert__char_rep__Request__exception_raise_t__exception__defined
+#define	__NDR_convert__char_rep__Request__exception_raise_t__exception(a, f) \
+	__NDR_convert__char_rep__int32_t((int32_t *)(a), f)
+#endif /* defined(__NDR_convert__*__defined) */
+#endif /* __NDR_convert__char_rep__Request__exception_raise_t__exception__defined */
+
+#ifndef __NDR_convert__char_rep__Request__exception_raise_t__code__defined
+#if	defined(__NDR_convert__char_rep__exc__exception_data_t__defined)
+#define	__NDR_convert__char_rep__Request__exception_raise_t__code__defined
+#define	__NDR_convert__char_rep__Request__exception_raise_t__code(a, f, c) \
+	__NDR_convert__char_rep__exc__exception_data_t((exception_data_t *)(a), f, c)
+#elif	defined(__NDR_convert__char_rep__exception_data_t__defined)
+#define	__NDR_convert__char_rep__Request__exception_raise_t__code__defined
+#define	__NDR_convert__char_rep__Request__exception_raise_t__code(a, f, c) \
+	__NDR_convert__char_rep__exception_data_t((exception_data_t *)(a), f, c)
+#elif	defined(__NDR_convert__char_rep__exc__integer_t__defined)
+#define	__NDR_convert__char_rep__Request__exception_raise_t__code__defined
+#define	__NDR_convert__char_rep__Request__exception_raise_t__code(a, f, c) \
+	__NDR_convert__ARRAY((integer_t *)(a), f, c, __NDR_convert__char_rep__exc__integer_t)
+#elif	defined(__NDR_convert__char_rep__integer_t__defined)
+#define	__NDR_convert__char_rep__Request__exception_raise_t__code__defined
+#define	__NDR_convert__char_rep__Request__exception_raise_t__code(a, f, c) \
+	__NDR_convert__ARRAY((integer_t *)(a), f, c, __NDR_convert__char_rep__integer_t)
+#elif	defined(__NDR_convert__char_rep__exc__int32_t__defined)
+#define	__NDR_convert__char_rep__Request__exception_raise_t__code__defined
+#define	__NDR_convert__char_rep__Request__exception_raise_t__code(a, f, c) \
+	__NDR_convert__ARRAY((int32_t *)(a), f, c, __NDR_convert__char_rep__exc__int32_t)
+#elif	defined(__NDR_convert__char_rep__int32_t__defined)
+#define	__NDR_convert__char_rep__Request__exception_raise_t__code__defined
+#define	__NDR_convert__char_rep__Request__exception_raise_t__code(a, f, c) \
+	__NDR_convert__ARRAY((int32_t *)(a), f, c, __NDR_convert__char_rep__int32_t)
+#endif /* defined(__NDR_convert__*__defined) */
+#endif /* __NDR_convert__char_rep__Request__exception_raise_t__code__defined */
+
+#ifndef __NDR_convert__float_rep__Request__exception_raise_t__exception__defined
+#if	defined(__NDR_convert__float_rep__exc__exception_type_t__defined)
+#define	__NDR_convert__float_rep__Request__exception_raise_t__exception__defined
+#define	__NDR_convert__float_rep__Request__exception_raise_t__exception(a, f) \
+	__NDR_convert__float_rep__exc__exception_type_t((exception_type_t *)(a), f)
+#elif	defined(__NDR_convert__float_rep__exception_type_t__defined)
+#define	__NDR_convert__float_rep__Request__exception_raise_t__exception__defined
+#define	__NDR_convert__float_rep__Request__exception_raise_t__exception(a, f) \
+	__NDR_convert__float_rep__exception_type_t((exception_type_t *)(a), f)
+#elif	defined(__NDR_convert__float_rep__exc__int__defined)
+#define	__NDR_convert__float_rep__Request__exception_raise_t__exception__defined
+#define	__NDR_convert__float_rep__Request__exception_raise_t__exception(a, f) \
+	__NDR_convert__float_rep__exc__int((int *)(a), f)
+#elif	defined(__NDR_convert__float_rep__int__defined)
+#define	__NDR_convert__float_rep__Request__exception_raise_t__exception__defined
+#define	__NDR_convert__float_rep__Request__exception_raise_t__exception(a, f) \
+	__NDR_convert__float_rep__int((int *)(a), f)
+#elif	defined(__NDR_convert__float_rep__exc__int32_t__defined)
+#define	__NDR_convert__float_rep__Request__exception_raise_t__exception__defined
+#define	__NDR_convert__float_rep__Request__exception_raise_t__exception(a, f) \
+	__NDR_convert__float_rep__exc__int32_t((int32_t *)(a), f)
+#elif	defined(__NDR_convert__float_rep__int32_t__defined)
+#define	__NDR_convert__float_rep__Request__exception_raise_t__exception__defined
+#define	__NDR_convert__float_rep__Request__exception_raise_t__exception(a, f) \
+	__NDR_convert__float_rep__int32_t((int32_t *)(a), f)
+#endif /* defined(__NDR_convert__*__defined) */
+#endif /* __NDR_convert__float_rep__Request__exception_raise_t__exception__defined */
+
+#ifndef __NDR_convert__float_rep__Request__exception_raise_t__code__defined
+#if	defined(__NDR_convert__float_rep__exc__exception_data_t__defined)
+#define	__NDR_convert__float_rep__Request__exception_raise_t__code__defined
+#define	__NDR_convert__float_rep__Request__exception_raise_t__code(a, f, c) \
+	__NDR_convert__float_rep__exc__exception_data_t((exception_data_t *)(a), f, c)
+#elif	defined(__NDR_convert__float_rep__exception_data_t__defined)
+#define	__NDR_convert__float_rep__Request__exception_raise_t__code__defined
+#define	__NDR_convert__float_rep__Request__exception_raise_t__code(a, f, c) \
+	__NDR_convert__float_rep__exception_data_t((exception_data_t *)(a), f, c)
+#elif	defined(__NDR_convert__float_rep__exc__integer_t__defined)
+#define	__NDR_convert__float_rep__Request__exception_raise_t__code__defined
+#define	__NDR_convert__float_rep__Request__exception_raise_t__code(a, f, c) \
+	__NDR_convert__ARRAY((integer_t *)(a), f, c, __NDR_convert__float_rep__exc__integer_t)
+#elif	defined(__NDR_convert__float_rep__integer_t__defined)
+#define	__NDR_convert__float_rep__Request__exception_raise_t__code__defined
+#define	__NDR_convert__float_rep__Request__exception_raise_t__code(a, f, c) \
+	__NDR_convert__ARRAY((integer_t *)(a), f, c, __NDR_convert__float_rep__integer_t)
+#elif	defined(__NDR_convert__float_rep__exc__int32_t__defined)
+#define	__NDR_convert__float_rep__Request__exception_raise_t__code__defined
+#define	__NDR_convert__float_rep__Request__exception_raise_t__code(a, f, c) \
+	__NDR_convert__ARRAY((int32_t *)(a), f, c, __NDR_convert__float_rep__exc__int32_t)
+#elif	defined(__NDR_convert__float_rep__int32_t__defined)
+#define	__NDR_convert__float_rep__Request__exception_raise_t__code__defined
+#define	__NDR_convert__float_rep__Request__exception_raise_t__code(a, f, c) \
+	__NDR_convert__ARRAY((int32_t *)(a), f, c, __NDR_convert__float_rep__int32_t)
+#endif /* defined(__NDR_convert__*__defined) */
+#endif /* __NDR_convert__float_rep__Request__exception_raise_t__code__defined */
+
+
+mig_internal kern_return_t __MIG_check__Request__exception_raise_t(__attribute__((__unused__)) __Request__exception_raise_t *In0P)
+{
+
+	typedef __Request__exception_raise_t __Request;
+#if	__MigTypeCheck
+	unsigned int msgh_size;
+#endif	/* __MigTypeCheck */
+
+#if	__MigTypeCheck
+	msgh_size = In0P->Head.msgh_size;
+	if (!(In0P->Head.msgh_bits & MACH_MSGH_BITS_COMPLEX) ||
+	    (In0P->msgh_body.msgh_descriptor_count != 2) ||
+	    (msgh_size < (mach_msg_size_t)(sizeof(__Request) - 8)) ||  (msgh_size > (mach_msg_size_t)sizeof(__Request))
+)
+		return MIG_BAD_ARGUMENTS;
+#endif	/* __MigTypeCheck */
+
+#if	__MigTypeCheck
+	if (In0P->thread.type != MACH_MSG_PORT_DESCRIPTOR ||
+	    In0P->thread.disposition != 17)
+		return MIG_TYPE_ERROR;
+#endif	/* __MigTypeCheck */
+
+#if	__MigTypeCheck
+	if (In0P->task.type != MACH_MSG_PORT_DESCRIPTOR ||
+	    In0P->task.disposition != 17)
+		return MIG_TYPE_ERROR;
+#endif	/* __MigTypeCheck */
+
+#if defined(__NDR_convert__int_rep__Request__exception_raise_t__codeCnt__defined)
+	if (In0P->NDR.int_rep != NDR_record.int_rep)
+		__NDR_convert__int_rep__Request__exception_raise_t__codeCnt(&In0P->codeCnt, In0P->NDR.int_rep);
+#endif	/* __NDR_convert__int_rep__Request__exception_raise_t__codeCnt__defined */
+#if	__MigTypeCheck
+	if (msgh_size != (mach_msg_size_t)(sizeof(__Request) - 8) + ((4 * In0P->codeCnt)))
+		return MIG_BAD_ARGUMENTS;
+#endif	/* __MigTypeCheck */
+
+#if	defined(__NDR_convert__int_rep__Request__exception_raise_t__exception__defined) || \
+	defined(__NDR_convert__int_rep__Request__exception_raise_t__code__defined) || \
+	defined(__NDR_convert__int_rep__Request__exception_raise_t__codeCnt__defined)
+	if (In0P->NDR.int_rep != NDR_record.int_rep) {
+#if defined(__NDR_convert__int_rep__Request__exception_raise_t__exception__defined)
+		__NDR_convert__int_rep__Request__exception_raise_t__exception(&In0P->exception, In0P->NDR.int_rep);
+#endif	/* __NDR_convert__int_rep__Request__exception_raise_t__exception__defined */
+#if defined(__NDR_convert__int_rep__Request__exception_raise_t__code__defined)
+		__NDR_convert__int_rep__Request__exception_raise_t__code(&In0P->code, In0P->NDR.int_rep, In0P->codeCnt);
+#endif	/* __NDR_convert__int_rep__Request__exception_raise_t__code__defined */
+	}
+#endif	/* defined(__NDR_convert__int_rep...) */
+
+#if	defined(__NDR_convert__char_rep__Request__exception_raise_t__exception__defined) || \
+	defined(__NDR_convert__char_rep__Request__exception_raise_t__code__defined) || \
+	0
+	if (In0P->NDR.char_rep != NDR_record.char_rep) {
+#if defined(__NDR_convert__char_rep__Request__exception_raise_t__exception__defined)
+		__NDR_convert__char_rep__Request__exception_raise_t__exception(&In0P->exception, In0P->NDR.char_rep);
+#endif	/* __NDR_convert__char_rep__Request__exception_raise_t__exception__defined */
+#if defined(__NDR_convert__char_rep__Request__exception_raise_t__code__defined)
+		__NDR_convert__char_rep__Request__exception_raise_t__code(&In0P->code, In0P->NDR.char_rep, In0P->codeCnt);
+#endif	/* __NDR_convert__char_rep__Request__exception_raise_t__code__defined */
+	}
+#endif	/* defined(__NDR_convert__char_rep...) */
+
+#if	defined(__NDR_convert__float_rep__Request__exception_raise_t__exception__defined) || \
+	defined(__NDR_convert__float_rep__Request__exception_raise_t__code__defined) || \
+	0
+	if (In0P->NDR.float_rep != NDR_record.float_rep) {
+#if defined(__NDR_convert__float_rep__Request__exception_raise_t__exception__defined)
+		__NDR_convert__float_rep__Request__exception_raise_t__exception(&In0P->exception, In0P->NDR.float_rep);
+#endif	/* __NDR_convert__float_rep__Request__exception_raise_t__exception__defined */
+#if defined(__NDR_convert__float_rep__Request__exception_raise_t__code__defined)
+		__NDR_convert__float_rep__Request__exception_raise_t__code(&In0P->code, In0P->NDR.float_rep, In0P->codeCnt);
+#endif	/* __NDR_convert__float_rep__Request__exception_raise_t__code__defined */
+	}
+#endif	/* defined(__NDR_convert__float_rep...) */
+
+	return MACH_MSG_SUCCESS;
+}
+#endif /* !defined(__MIG_check__Request__exception_raise_t__defined) */
+#endif /* __MIG_check__Request__exc_subsystem__ */
+#endif /* ( __MigTypeCheck || __NDR_convert__ ) */
+
+
+/* Routine exception_raise */
+#ifdef	mig_external
+mig_external
+#else
+extern
+#endif	/* mig_external */
+kern_return_t breakpad_exception_raise
+(
+	mach_port_t exception_port,
+	mach_port_t thread,
+	mach_port_t task,
+	exception_type_t exception,
+	exception_data_t code,
+	mach_msg_type_number_t codeCnt
+);
+
+/* Routine exception_raise */
+mig_internal novalue _Xexception_raise
+	(mach_msg_header_t *InHeadP, mach_msg_header_t *OutHeadP)
+{
+
+#ifdef  __MigPackStructs
+#pragma pack(4)
+#endif
+	typedef struct {
+		mach_msg_header_t Head;
+		/* start of the kernel processed data */
+		mach_msg_body_t msgh_body;
+		mach_msg_port_descriptor_t thread;
+		mach_msg_port_descriptor_t task;
+		/* end of the kernel processed data */
+		NDR_record_t NDR;
+		exception_type_t exception;
+		mach_msg_type_number_t codeCnt;
+		integer_t code[2];
+		mach_msg_trailer_t trailer;
+	} Request;
+#ifdef  __MigPackStructs
+#pragma pack()
+#endif
+	typedef __Request__exception_raise_t __Request;
+	typedef __Reply__exception_raise_t Reply;
+
+	/*
+	 * typedef struct {
+	 * 	mach_msg_header_t Head;
+	 * 	NDR_record_t NDR;
+	 * 	kern_return_t RetCode;
+	 * } mig_reply_error_t;
+	 */
+
+	Request *In0P = (Request *) InHeadP;
+	Reply *OutP = (Reply *) OutHeadP;
+#ifdef	__MIG_check__Request__exception_raise_t__defined
+	kern_return_t check_result;
+#endif	/* __MIG_check__Request__exception_raise_t__defined */
+
+	__DeclareRcvRpc(2401, "exception_raise")
+	__BeforeRcvRpc(2401, "exception_raise")
+
+#if	defined(__MIG_check__Request__exception_raise_t__defined)
+	check_result = __MIG_check__Request__exception_raise_t((__Request *)In0P);
+	if (check_result != MACH_MSG_SUCCESS)
+		{ MIG_RETURN_ERROR(OutP, check_result); }
+#endif	/* defined(__MIG_check__Request__exception_raise_t__defined) */
+
+	OutP->RetCode = breakpad_exception_raise(In0P->Head.msgh_request_port, In0P->thread.name, In0P->task.name, In0P->exception, In0P->code, In0P->codeCnt);
+
+	OutP->NDR = NDR_record;
+
+
+	__AfterRcvRpc(2401, "exception_raise")
+}
+
+#if ( __MigTypeCheck || __NDR_convert__ )
+#if __MIG_check__Request__exc_subsystem__
+#if !defined(__MIG_check__Request__exception_raise_state_t__defined)
+#define __MIG_check__Request__exception_raise_state_t__defined
+#ifndef __NDR_convert__int_rep__Request__exception_raise_state_t__exception__defined
+#if	defined(__NDR_convert__int_rep__exc__exception_type_t__defined)
+#define	__NDR_convert__int_rep__Request__exception_raise_state_t__exception__defined
+#define	__NDR_convert__int_rep__Request__exception_raise_state_t__exception(a, f) \
+	__NDR_convert__int_rep__exc__exception_type_t((exception_type_t *)(a), f)
+#elif	defined(__NDR_convert__int_rep__exception_type_t__defined)
+#define	__NDR_convert__int_rep__Request__exception_raise_state_t__exception__defined
+#define	__NDR_convert__int_rep__Request__exception_raise_state_t__exception(a, f) \
+	__NDR_convert__int_rep__exception_type_t((exception_type_t *)(a), f)
+#elif	defined(__NDR_convert__int_rep__exc__int__defined)
+#define	__NDR_convert__int_rep__Request__exception_raise_state_t__exception__defined
+#define	__NDR_convert__int_rep__Request__exception_raise_state_t__exception(a, f) \
+	__NDR_convert__int_rep__exc__int((int *)(a), f)
+#elif	defined(__NDR_convert__int_rep__int__defined)
+#define	__NDR_convert__int_rep__Request__exception_raise_state_t__exception__defined
+#define	__NDR_convert__int_rep__Request__exception_raise_state_t__exception(a, f) \
+	__NDR_convert__int_rep__int((int *)(a), f)
+#elif	defined(__NDR_convert__int_rep__exc__int32_t__defined)
+#define	__NDR_convert__int_rep__Request__exception_raise_state_t__exception__defined
+#define	__NDR_convert__int_rep__Request__exception_raise_state_t__exception(a, f) \
+	__NDR_convert__int_rep__exc__int32_t((int32_t *)(a), f)
+#elif	defined(__NDR_convert__int_rep__int32_t__defined)
+#define	__NDR_convert__int_rep__Request__exception_raise_state_t__exception__defined
+#define	__NDR_convert__int_rep__Request__exception_raise_state_t__exception(a, f) \
+	__NDR_convert__int_rep__int32_t((int32_t *)(a), f)
+#endif /* defined(__NDR_convert__*__defined) */
+#endif /* __NDR_convert__int_rep__Request__exception_raise_state_t__exception__defined */
+
+#ifndef __NDR_convert__int_rep__Request__exception_raise_state_t__code__defined
+#if	defined(__NDR_convert__int_rep__exc__exception_data_t__defined)
+#define	__NDR_convert__int_rep__Request__exception_raise_state_t__code__defined
+#define	__NDR_convert__int_rep__Request__exception_raise_state_t__code(a, f, c) \
+	__NDR_convert__int_rep__exc__exception_data_t((exception_data_t *)(a), f, c)
+#elif	defined(__NDR_convert__int_rep__exception_data_t__defined)
+#define	__NDR_convert__int_rep__Request__exception_raise_state_t__code__defined
+#define	__NDR_convert__int_rep__Request__exception_raise_state_t__code(a, f, c) \
+	__NDR_convert__int_rep__exception_data_t((exception_data_t *)(a), f, c)
+#elif	defined(__NDR_convert__int_rep__exc__integer_t__defined)
+#define	__NDR_convert__int_rep__Request__exception_raise_state_t__code__defined
+#define	__NDR_convert__int_rep__Request__exception_raise_state_t__code(a, f, c) \
+	__NDR_convert__ARRAY((integer_t *)(a), f, c, __NDR_convert__int_rep__exc__integer_t)
+#elif	defined(__NDR_convert__int_rep__integer_t__defined)
+#define	__NDR_convert__int_rep__Request__exception_raise_state_t__code__defined
+#define	__NDR_convert__int_rep__Request__exception_raise_state_t__code(a, f, c) \
+	__NDR_convert__ARRAY((integer_t *)(a), f, c, __NDR_convert__int_rep__integer_t)
+#elif	defined(__NDR_convert__int_rep__exc__int32_t__defined)
+#define	__NDR_convert__int_rep__Request__exception_raise_state_t__code__defined
+#define	__NDR_convert__int_rep__Request__exception_raise_state_t__code(a, f, c) \
+	__NDR_convert__ARRAY((int32_t *)(a), f, c, __NDR_convert__int_rep__exc__int32_t)
+#elif	defined(__NDR_convert__int_rep__int32_t__defined)
+#define	__NDR_convert__int_rep__Request__exception_raise_state_t__code__defined
+#define	__NDR_convert__int_rep__Request__exception_raise_state_t__code(a, f, c) \
+	__NDR_convert__ARRAY((int32_t *)(a), f, c, __NDR_convert__int_rep__int32_t)
+#endif /* defined(__NDR_convert__*__defined) */
+#endif /* __NDR_convert__int_rep__Request__exception_raise_state_t__code__defined */
+
+#ifndef __NDR_convert__int_rep__Request__exception_raise_state_t__codeCnt__defined
+#if	defined(__NDR_convert__int_rep__exc__mach_msg_type_number_t__defined)
+#define	__NDR_convert__int_rep__Request__exception_raise_state_t__codeCnt__defined
+#define	__NDR_convert__int_rep__Request__exception_raise_state_t__codeCnt(a, f) \
+	__NDR_convert__int_rep__exc__mach_msg_type_number_t((mach_msg_type_number_t *)(a), f)
+#elif	defined(__NDR_convert__int_rep__mach_msg_type_number_t__defined)
+#define	__NDR_convert__int_rep__Request__exception_raise_state_t__codeCnt__defined
+#define	__NDR_convert__int_rep__Request__exception_raise_state_t__codeCnt(a, f) \
+	__NDR_convert__int_rep__mach_msg_type_number_t((mach_msg_type_number_t *)(a), f)
+#endif /* defined(__NDR_convert__*__defined) */
+#endif /* __NDR_convert__int_rep__Request__exception_raise_state_t__codeCnt__defined */
+
+#ifndef __NDR_convert__int_rep__Request__exception_raise_state_t__flavor__defined
+#if	defined(__NDR_convert__int_rep__exc__int__defined)
+#define	__NDR_convert__int_rep__Request__exception_raise_state_t__flavor__defined
+#define	__NDR_convert__int_rep__Request__exception_raise_state_t__flavor(a, f) \
+	__NDR_convert__int_rep__exc__int((int *)(a), f)
+#elif	defined(__NDR_convert__int_rep__int__defined)
+#define	__NDR_convert__int_rep__Request__exception_raise_state_t__flavor__defined
+#define	__NDR_convert__int_rep__Request__exception_raise_state_t__flavor(a, f) \
+	__NDR_convert__int_rep__int((int *)(a), f)
+#elif	defined(__NDR_convert__int_rep__exc__int32_t__defined)
+#define	__NDR_convert__int_rep__Request__exception_raise_state_t__flavor__defined
+#define	__NDR_convert__int_rep__Request__exception_raise_state_t__flavor(a, f) \
+	__NDR_convert__int_rep__exc__int32_t((int32_t *)(a), f)
+#elif	defined(__NDR_convert__int_rep__int32_t__defined)
+#define	__NDR_convert__int_rep__Request__exception_raise_state_t__flavor__defined
+#define	__NDR_convert__int_rep__Request__exception_raise_state_t__flavor(a, f) \
+	__NDR_convert__int_rep__int32_t((int32_t *)(a), f)
+#endif /* defined(__NDR_convert__*__defined) */
+#endif /* __NDR_convert__int_rep__Request__exception_raise_state_t__flavor__defined */
+
+#ifndef __NDR_convert__int_rep__Request__exception_raise_state_t__old_state__defined
+#if	defined(__NDR_convert__int_rep__exc__thread_state_t__defined)
+#define	__NDR_convert__int_rep__Request__exception_raise_state_t__old_state__defined
+#define	__NDR_convert__int_rep__Request__exception_raise_state_t__old_state(a, f, c) \
+	__NDR_convert__int_rep__exc__thread_state_t((thread_state_t *)(a), f, c)
+#elif	defined(__NDR_convert__int_rep__thread_state_t__defined)
+#define	__NDR_convert__int_rep__Request__exception_raise_state_t__old_state__defined
+#define	__NDR_convert__int_rep__Request__exception_raise_state_t__old_state(a, f, c) \
+	__NDR_convert__int_rep__thread_state_t((thread_state_t *)(a), f, c)
+#elif	defined(__NDR_convert__int_rep__exc__natural_t__defined)
+#define	__NDR_convert__int_rep__Request__exception_raise_state_t__old_state__defined
+#define	__NDR_convert__int_rep__Request__exception_raise_state_t__old_state(a, f, c) \
+	__NDR_convert__ARRAY((natural_t *)(a), f, c, __NDR_convert__int_rep__exc__natural_t)
+#elif	defined(__NDR_convert__int_rep__natural_t__defined)
+#define	__NDR_convert__int_rep__Request__exception_raise_state_t__old_state__defined
+#define	__NDR_convert__int_rep__Request__exception_raise_state_t__old_state(a, f, c) \
+	__NDR_convert__ARRAY((natural_t *)(a), f, c, __NDR_convert__int_rep__natural_t)
+#elif	defined(__NDR_convert__int_rep__exc__uint32_t__defined)
+#define	__NDR_convert__int_rep__Request__exception_raise_state_t__old_state__defined
+#define	__NDR_convert__int_rep__Request__exception_raise_state_t__old_state(a, f, c) \
+	__NDR_convert__ARRAY((uint32_t *)(a), f, c, __NDR_convert__int_rep__exc__uint32_t)
+#elif	defined(__NDR_convert__int_rep__uint32_t__defined)
+#define	__NDR_convert__int_rep__Request__exception_raise_state_t__old_state__defined
+#define	__NDR_convert__int_rep__Request__exception_raise_state_t__old_state(a, f, c) \
+	__NDR_convert__ARRAY((uint32_t *)(a), f, c, __NDR_convert__int_rep__uint32_t)
+#endif /* defined(__NDR_convert__*__defined) */
+#endif /* __NDR_convert__int_rep__Request__exception_raise_state_t__old_state__defined */
+
+#ifndef __NDR_convert__int_rep__Request__exception_raise_state_t__old_stateCnt__defined
+#if	defined(__NDR_convert__int_rep__exc__mach_msg_type_number_t__defined)
+#define	__NDR_convert__int_rep__Request__exception_raise_state_t__old_stateCnt__defined
+#define	__NDR_convert__int_rep__Request__exception_raise_state_t__old_stateCnt(a, f) \
+	__NDR_convert__int_rep__exc__mach_msg_type_number_t((mach_msg_type_number_t *)(a), f)
+#elif	defined(__NDR_convert__int_rep__mach_msg_type_number_t__defined)
+#define	__NDR_convert__int_rep__Request__exception_raise_state_t__old_stateCnt__defined
+#define	__NDR_convert__int_rep__Request__exception_raise_state_t__old_stateCnt(a, f) \
+	__NDR_convert__int_rep__mach_msg_type_number_t((mach_msg_type_number_t *)(a), f)
+#endif /* defined(__NDR_convert__*__defined) */
+#endif /* __NDR_convert__int_rep__Request__exception_raise_state_t__old_stateCnt__defined */
+
+#ifndef __NDR_convert__char_rep__Request__exception_raise_state_t__exception__defined
+#if	defined(__NDR_convert__char_rep__exc__exception_type_t__defined)
+#define	__NDR_convert__char_rep__Request__exception_raise_state_t__exception__defined
+#define	__NDR_convert__char_rep__Request__exception_raise_state_t__exception(a, f) \
+	__NDR_convert__char_rep__exc__exception_type_t((exception_type_t *)(a), f)
+#elif	defined(__NDR_convert__char_rep__exception_type_t__defined)
+#define	__NDR_convert__char_rep__Request__exception_raise_state_t__exception__defined
+#define	__NDR_convert__char_rep__Request__exception_raise_state_t__exception(a, f) \
+	__NDR_convert__char_rep__exception_type_t((exception_type_t *)(a), f)
+#elif	defined(__NDR_convert__char_rep__exc__int__defined)
+#define	__NDR_convert__char_rep__Request__exception_raise_state_t__exception__defined
+#define	__NDR_convert__char_rep__Request__exception_raise_state_t__exception(a, f) \
+	__NDR_convert__char_rep__exc__int((int *)(a), f)
+#elif	defined(__NDR_convert__char_rep__int__defined)
+#define	__NDR_convert__char_rep__Request__exception_raise_state_t__exception__defined
+#define	__NDR_convert__char_rep__Request__exception_raise_state_t__exception(a, f) \
+	__NDR_convert__char_rep__int((int *)(a), f)
+#elif	defined(__NDR_convert__char_rep__exc__int32_t__defined)
+#define	__NDR_convert__char_rep__Request__exception_raise_state_t__exception__defined
+#define	__NDR_convert__char_rep__Request__exception_raise_state_t__exception(a, f) \
+	__NDR_convert__char_rep__exc__int32_t((int32_t *)(a), f)
+#elif	defined(__NDR_convert__char_rep__int32_t__defined)
+#define	__NDR_convert__char_rep__Request__exception_raise_state_t__exception__defined
+#define	__NDR_convert__char_rep__Request__exception_raise_state_t__exception(a, f) \
+	__NDR_convert__char_rep__int32_t((int32_t *)(a), f)
+#endif /* defined(__NDR_convert__*__defined) */
+#endif /* __NDR_convert__char_rep__Request__exception_raise_state_t__exception__defined */
+
+#ifndef __NDR_convert__char_rep__Request__exception_raise_state_t__code__defined
+#if	defined(__NDR_convert__char_rep__exc__exception_data_t__defined)
+#define	__NDR_convert__char_rep__Request__exception_raise_state_t__code__defined
+#define	__NDR_convert__char_rep__Request__exception_raise_state_t__code(a, f, c) \
+	__NDR_convert__char_rep__exc__exception_data_t((exception_data_t *)(a), f, c)
+#elif	defined(__NDR_convert__char_rep__exception_data_t__defined)
+#define	__NDR_convert__char_rep__Request__exception_raise_state_t__code__defined
+#define	__NDR_convert__char_rep__Request__exception_raise_state_t__code(a, f, c) \
+	__NDR_convert__char_rep__exception_data_t((exception_data_t *)(a), f, c)
+#elif	defined(__NDR_convert__char_rep__exc__integer_t__defined)
+#define	__NDR_convert__char_rep__Request__exception_raise_state_t__code__defined
+#define	__NDR_convert__char_rep__Request__exception_raise_state_t__code(a, f, c) \
+	__NDR_convert__ARRAY((integer_t *)(a), f, c, __NDR_convert__char_rep__exc__integer_t)
+#elif	defined(__NDR_convert__char_rep__integer_t__defined)
+#define	__NDR_convert__char_rep__Request__exception_raise_state_t__code__defined
+#define	__NDR_convert__char_rep__Request__exception_raise_state_t__code(a, f, c) \
+	__NDR_convert__ARRAY((integer_t *)(a), f, c, __NDR_convert__char_rep__integer_t)
+#elif	defined(__NDR_convert__char_rep__exc__int32_t__defined)
+#define	__NDR_convert__char_rep__Request__exception_raise_state_t__code__defined
+#define	__NDR_convert__char_rep__Request__exception_raise_state_t__code(a, f, c) \
+	__NDR_convert__ARRAY((int32_t *)(a), f, c, __NDR_convert__char_rep__exc__int32_t)
+#elif	defined(__NDR_convert__char_rep__int32_t__defined)
+#define	__NDR_convert__char_rep__Request__exception_raise_state_t__code__defined
+#define	__NDR_convert__char_rep__Request__exception_raise_state_t__code(a, f, c) \
+	__NDR_convert__ARRAY((int32_t *)(a), f, c, __NDR_convert__char_rep__int32_t)
+#endif /* defined(__NDR_convert__*__defined) */
+#endif /* __NDR_convert__char_rep__Request__exception_raise_state_t__code__defined */
+
+#ifndef __NDR_convert__char_rep__Request__exception_raise_state_t__flavor__defined
+#if	defined(__NDR_convert__char_rep__exc__int__defined)
+#define	__NDR_convert__char_rep__Request__exception_raise_state_t__flavor__defined
+#define	__NDR_convert__char_rep__Request__exception_raise_state_t__flavor(a, f) \
+	__NDR_convert__char_rep__exc__int((int *)(a), f)
+#elif	defined(__NDR_convert__char_rep__int__defined)
+#define	__NDR_convert__char_rep__Request__exception_raise_state_t__flavor__defined
+#define	__NDR_convert__char_rep__Request__exception_raise_state_t__flavor(a, f) \
+	__NDR_convert__char_rep__int((int *)(a), f)
+#elif	defined(__NDR_convert__char_rep__exc__int32_t__defined)
+#define	__NDR_convert__char_rep__Request__exception_raise_state_t__flavor__defined
+#define	__NDR_convert__char_rep__Request__exception_raise_state_t__flavor(a, f) \
+	__NDR_convert__char_rep__exc__int32_t((int32_t *)(a), f)
+#elif	defined(__NDR_convert__char_rep__int32_t__defined)
+#define	__NDR_convert__char_rep__Request__exception_raise_state_t__flavor__defined
+#define	__NDR_convert__char_rep__Request__exception_raise_state_t__flavor(a, f) \
+	__NDR_convert__char_rep__int32_t((int32_t *)(a), f)
+#endif /* defined(__NDR_convert__*__defined) */
+#endif /* __NDR_convert__char_rep__Request__exception_raise_state_t__flavor__defined */
+
+#ifndef __NDR_convert__char_rep__Request__exception_raise_state_t__old_state__defined
+#if	defined(__NDR_convert__char_rep__exc__thread_state_t__defined)
+#define	__NDR_convert__char_rep__Request__exception_raise_state_t__old_state__defined
+#define	__NDR_convert__char_rep__Request__exception_raise_state_t__old_state(a, f, c) \
+	__NDR_convert__char_rep__exc__thread_state_t((thread_state_t *)(a), f, c)
+#elif	defined(__NDR_convert__char_rep__thread_state_t__defined)
+#define	__NDR_convert__char_rep__Request__exception_raise_state_t__old_state__defined
+#define	__NDR_convert__char_rep__Request__exception_raise_state_t__old_state(a, f, c) \
+	__NDR_convert__char_rep__thread_state_t((thread_state_t *)(a), f, c)
+#elif	defined(__NDR_convert__char_rep__exc__natural_t__defined)
+#define	__NDR_convert__char_rep__Request__exception_raise_state_t__old_state__defined
+#define	__NDR_convert__char_rep__Request__exception_raise_state_t__old_state(a, f, c) \
+	__NDR_convert__ARRAY((natural_t *)(a), f, c, __NDR_convert__char_rep__exc__natural_t)
+#elif	defined(__NDR_convert__char_rep__natural_t__defined)
+#define	__NDR_convert__char_rep__Request__exception_raise_state_t__old_state__defined
+#define	__NDR_convert__char_rep__Request__exception_raise_state_t__old_state(a, f, c) \
+	__NDR_convert__ARRAY((natural_t *)(a), f, c, __NDR_convert__char_rep__natural_t)
+#elif	defined(__NDR_convert__char_rep__exc__uint32_t__defined)
+#define	__NDR_convert__char_rep__Request__exception_raise_state_t__old_state__defined
+#define	__NDR_convert__char_rep__Request__exception_raise_state_t__old_state(a, f, c) \
+	__NDR_convert__ARRAY((uint32_t *)(a), f, c, __NDR_convert__char_rep__exc__uint32_t)
+#elif	defined(__NDR_convert__char_rep__uint32_t__defined)
+#define	__NDR_convert__char_rep__Request__exception_raise_state_t__old_state__defined
+#define	__NDR_convert__char_rep__Request__exception_raise_state_t__old_state(a, f, c) \
+	__NDR_convert__ARRAY((uint32_t *)(a), f, c, __NDR_convert__char_rep__uint32_t)
+#endif /* defined(__NDR_convert__*__defined) */
+#endif /* __NDR_convert__char_rep__Request__exception_raise_state_t__old_state__defined */
+
+#ifndef __NDR_convert__float_rep__Request__exception_raise_state_t__exception__defined
+#if	defined(__NDR_convert__float_rep__exc__exception_type_t__defined)
+#define	__NDR_convert__float_rep__Request__exception_raise_state_t__exception__defined
+#define	__NDR_convert__float_rep__Request__exception_raise_state_t__exception(a, f) \
+	__NDR_convert__float_rep__exc__exception_type_t((exception_type_t *)(a), f)
+#elif	defined(__NDR_convert__float_rep__exception_type_t__defined)
+#define	__NDR_convert__float_rep__Request__exception_raise_state_t__exception__defined
+#define	__NDR_convert__float_rep__Request__exception_raise_state_t__exception(a, f) \
+	__NDR_convert__float_rep__exception_type_t((exception_type_t *)(a), f)
+#elif	defined(__NDR_convert__float_rep__exc__int__defined)
+#define	__NDR_convert__float_rep__Request__exception_raise_state_t__exception__defined
+#define	__NDR_convert__float_rep__Request__exception_raise_state_t__exception(a, f) \
+	__NDR_convert__float_rep__exc__int((int *)(a), f)
+#elif	defined(__NDR_convert__float_rep__int__defined)
+#define	__NDR_convert__float_rep__Request__exception_raise_state_t__exception__defined
+#define	__NDR_convert__float_rep__Request__exception_raise_state_t__exception(a, f) \
+	__NDR_convert__float_rep__int((int *)(a), f)
+#elif	defined(__NDR_convert__float_rep__exc__int32_t__defined)
+#define	__NDR_convert__float_rep__Request__exception_raise_state_t__exception__defined
+#define	__NDR_convert__float_rep__Request__exception_raise_state_t__exception(a, f) \
+	__NDR_convert__float_rep__exc__int32_t((int32_t *)(a), f)
+#elif	defined(__NDR_convert__float_rep__int32_t__defined)
+#define	__NDR_convert__float_rep__Request__exception_raise_state_t__exception__defined
+#define	__NDR_convert__float_rep__Request__exception_raise_state_t__exception(a, f) \
+	__NDR_convert__float_rep__int32_t((int32_t *)(a), f)
+#endif /* defined(__NDR_convert__*__defined) */
+#endif /* __NDR_convert__float_rep__Request__exception_raise_state_t__exception__defined */
+
+#ifndef __NDR_convert__float_rep__Request__exception_raise_state_t__code__defined
+#if	defined(__NDR_convert__float_rep__exc__exception_data_t__defined)
+#define	__NDR_convert__float_rep__Request__exception_raise_state_t__code__defined
+#define	__NDR_convert__float_rep__Request__exception_raise_state_t__code(a, f, c) \
+	__NDR_convert__float_rep__exc__exception_data_t((exception_data_t *)(a), f, c)
+#elif	defined(__NDR_convert__float_rep__exception_data_t__defined)
+#define	__NDR_convert__float_rep__Request__exception_raise_state_t__code__defined
+#define	__NDR_convert__float_rep__Request__exception_raise_state_t__code(a, f, c) \
+	__NDR_convert__float_rep__exception_data_t((exception_data_t *)(a), f, c)
+#elif	defined(__NDR_convert__float_rep__exc__integer_t__defined)
+#define	__NDR_convert__float_rep__Request__exception_raise_state_t__code__defined
+#define	__NDR_convert__float_rep__Request__exception_raise_state_t__code(a, f, c) \
+	__NDR_convert__ARRAY((integer_t *)(a), f, c, __NDR_convert__float_rep__exc__integer_t)
+#elif	defined(__NDR_convert__float_rep__integer_t__defined)
+#define	__NDR_convert__float_rep__Request__exception_raise_state_t__code__defined
+#define	__NDR_convert__float_rep__Request__exception_raise_state_t__code(a, f, c) \
+	__NDR_convert__ARRAY((integer_t *)(a), f, c, __NDR_convert__float_rep__integer_t)
+#elif	defined(__NDR_convert__float_rep__exc__int32_t__defined)
+#define	__NDR_convert__float_rep__Request__exception_raise_state_t__code__defined
+#define	__NDR_convert__float_rep__Request__exception_raise_state_t__code(a, f, c) \
+	__NDR_convert__ARRAY((int32_t *)(a), f, c, __NDR_convert__float_rep__exc__int32_t)
+#elif	defined(__NDR_convert__float_rep__int32_t__defined)
+#define	__NDR_convert__float_rep__Request__exception_raise_state_t__code__defined
+#define	__NDR_convert__float_rep__Request__exception_raise_state_t__code(a, f, c) \
+	__NDR_convert__ARRAY((int32_t *)(a), f, c, __NDR_convert__float_rep__int32_t)
+#endif /* defined(__NDR_convert__*__defined) */
+#endif /* __NDR_convert__float_rep__Request__exception_raise_state_t__code__defined */
+
+#ifndef __NDR_convert__float_rep__Request__exception_raise_state_t__flavor__defined
+#if	defined(__NDR_convert__float_rep__exc__int__defined)
+#define	__NDR_convert__float_rep__Request__exception_raise_state_t__flavor__defined
+#define	__NDR_convert__float_rep__Request__exception_raise_state_t__flavor(a, f) \
+	__NDR_convert__float_rep__exc__int((int *)(a), f)
+#elif	defined(__NDR_convert__float_rep__int__defined)
+#define	__NDR_convert__float_rep__Request__exception_raise_state_t__flavor__defined
+#define	__NDR_convert__float_rep__Request__exception_raise_state_t__flavor(a, f) \
+	__NDR_convert__float_rep__int((int *)(a), f)
+#elif	defined(__NDR_convert__float_rep__exc__int32_t__defined)
+#define	__NDR_convert__float_rep__Request__exception_raise_state_t__flavor__defined
+#define	__NDR_convert__float_rep__Request__exception_raise_state_t__flavor(a, f) \
+	__NDR_convert__float_rep__exc__int32_t((int32_t *)(a), f)
+#elif	defined(__NDR_convert__float_rep__int32_t__defined)
+#define	__NDR_convert__float_rep__Request__exception_raise_state_t__flavor__defined
+#define	__NDR_convert__float_rep__Request__exception_raise_state_t__flavor(a, f) \
+	__NDR_convert__float_rep__int32_t((int32_t *)(a), f)
+#endif /* defined(__NDR_convert__*__defined) */
+#endif /* __NDR_convert__float_rep__Request__exception_raise_state_t__flavor__defined */
+
+#ifndef __NDR_convert__float_rep__Request__exception_raise_state_t__old_state__defined
+#if	defined(__NDR_convert__float_rep__exc__thread_state_t__defined)
+#define	__NDR_convert__float_rep__Request__exception_raise_state_t__old_state__defined
+#define	__NDR_convert__float_rep__Request__exception_raise_state_t__old_state(a, f, c) \
+	__NDR_convert__float_rep__exc__thread_state_t((thread_state_t *)(a), f, c)
+#elif	defined(__NDR_convert__float_rep__thread_state_t__defined)
+#define	__NDR_convert__float_rep__Request__exception_raise_state_t__old_state__defined
+#define	__NDR_convert__float_rep__Request__exception_raise_state_t__old_state(a, f, c) \
+	__NDR_convert__float_rep__thread_state_t((thread_state_t *)(a), f, c)
+#elif	defined(__NDR_convert__float_rep__exc__natural_t__defined)
+#define	__NDR_convert__float_rep__Request__exception_raise_state_t__old_state__defined
+#define	__NDR_convert__float_rep__Request__exception_raise_state_t__old_state(a, f, c) \
+	__NDR_convert__ARRAY((natural_t *)(a), f, c, __NDR_convert__float_rep__exc__natural_t)
+#elif	defined(__NDR_convert__float_rep__natural_t__defined)
+#define	__NDR_convert__float_rep__Request__exception_raise_state_t__old_state__defined
+#define	__NDR_convert__float_rep__Request__exception_raise_state_t__old_state(a, f, c) \
+	__NDR_convert__ARRAY((natural_t *)(a), f, c, __NDR_convert__float_rep__natural_t)
+#elif	defined(__NDR_convert__float_rep__exc__uint32_t__defined)
+#define	__NDR_convert__float_rep__Request__exception_raise_state_t__old_state__defined
+#define	__NDR_convert__float_rep__Request__exception_raise_state_t__old_state(a, f, c) \
+	__NDR_convert__ARRAY((uint32_t *)(a), f, c, __NDR_convert__float_rep__exc__uint32_t)
+#elif	defined(__NDR_convert__float_rep__uint32_t__defined)
+#define	__NDR_convert__float_rep__Request__exception_raise_state_t__old_state__defined
+#define	__NDR_convert__float_rep__Request__exception_raise_state_t__old_state(a, f, c) \
+	__NDR_convert__ARRAY((uint32_t *)(a), f, c, __NDR_convert__float_rep__uint32_t)
+#endif /* defined(__NDR_convert__*__defined) */
+#endif /* __NDR_convert__float_rep__Request__exception_raise_state_t__old_state__defined */
+
+
+mig_internal kern_return_t __MIG_check__Request__exception_raise_state_t(__attribute__((__unused__)) __Request__exception_raise_state_t *In0P, __attribute__((__unused__)) __Request__exception_raise_state_t **In1PP)
+{
+
+	typedef __Request__exception_raise_state_t __Request;
+	__Request *In1P;
+#if	__MigTypeCheck
+	unsigned int msgh_size;
+#endif	/* __MigTypeCheck */
+	unsigned int msgh_size_delta;
+
+#if	__MigTypeCheck
+	msgh_size = In0P->Head.msgh_size;
+	if ((In0P->Head.msgh_bits & MACH_MSGH_BITS_COMPLEX) ||
+	    (msgh_size < (mach_msg_size_t)(sizeof(__Request) - 584)) ||  (msgh_size > (mach_msg_size_t)sizeof(__Request)))
+		return MIG_BAD_ARGUMENTS;
+#endif	/* __MigTypeCheck */
+
+#if defined(__NDR_convert__int_rep__Request__exception_raise_state_t__codeCnt__defined)
+	if (In0P->NDR.int_rep != NDR_record.int_rep)
+		__NDR_convert__int_rep__Request__exception_raise_state_t__codeCnt(&In0P->codeCnt, In0P->NDR.int_rep);
+#endif	/* __NDR_convert__int_rep__Request__exception_raise_state_t__codeCnt__defined */
+	msgh_size_delta = (4 * In0P->codeCnt);
+#if	__MigTypeCheck
+	if (msgh_size < (mach_msg_size_t)(sizeof(__Request) - 584) + msgh_size_delta)
+		return MIG_BAD_ARGUMENTS;
+	msgh_size -= msgh_size_delta;
+#endif	/* __MigTypeCheck */
+
+	*In1PP = In1P = (__Request *) ((pointer_t) In0P + msgh_size_delta - 8);
+
+#if defined(__NDR_convert__int_rep__Request__exception_raise_state_t__old_stateCnt__defined)
+	if (In0P->NDR.int_rep != NDR_record.int_rep)
+		__NDR_convert__int_rep__Request__exception_raise_state_t__old_stateCnt(&In1P->old_stateCnt, In1P->NDR.int_rep);
+#endif	/* __NDR_convert__int_rep__Request__exception_raise_state_t__old_stateCnt__defined */
+#if	__MigTypeCheck
+	if (msgh_size != (mach_msg_size_t)(sizeof(__Request) - 584) + ((4 * In1P->old_stateCnt)))
+		return MIG_BAD_ARGUMENTS;
+#endif	/* __MigTypeCheck */
+
+#if	defined(__NDR_convert__int_rep__Request__exception_raise_state_t__exception__defined) || \
+	defined(__NDR_convert__int_rep__Request__exception_raise_state_t__code__defined) || \
+	defined(__NDR_convert__int_rep__Request__exception_raise_state_t__codeCnt__defined) || \
+	defined(__NDR_convert__int_rep__Request__exception_raise_state_t__flavor__defined) || \
+	defined(__NDR_convert__int_rep__Request__exception_raise_state_t__old_state__defined) || \
+	defined(__NDR_convert__int_rep__Request__exception_raise_state_t__old_stateCnt__defined)
+	if (In0P->NDR.int_rep != NDR_record.int_rep) {
+#if defined(__NDR_convert__int_rep__Request__exception_raise_state_t__exception__defined)
+		__NDR_convert__int_rep__Request__exception_raise_state_t__exception(&In0P->exception, In0P->NDR.int_rep);
+#endif	/* __NDR_convert__int_rep__Request__exception_raise_state_t__exception__defined */
+#if defined(__NDR_convert__int_rep__Request__exception_raise_state_t__code__defined)
+		__NDR_convert__int_rep__Request__exception_raise_state_t__code(&In0P->code, In0P->NDR.int_rep, In0P->codeCnt);
+#endif	/* __NDR_convert__int_rep__Request__exception_raise_state_t__code__defined */
+#if defined(__NDR_convert__int_rep__Request__exception_raise_state_t__flavor__defined)
+		__NDR_convert__int_rep__Request__exception_raise_state_t__flavor(&In1P->flavor, In0P->NDR.int_rep);
+#endif	/* __NDR_convert__int_rep__Request__exception_raise_state_t__flavor__defined */
+#if defined(__NDR_convert__int_rep__Request__exception_raise_state_t__old_state__defined)
+		__NDR_convert__int_rep__Request__exception_raise_state_t__old_state(&In1P->old_state, In0P->NDR.int_rep, In1P->old_stateCnt);
+#endif	/* __NDR_convert__int_rep__Request__exception_raise_state_t__old_state__defined */
+	}
+#endif	/* defined(__NDR_convert__int_rep...) */
+
+#if	defined(__NDR_convert__char_rep__Request__exception_raise_state_t__exception__defined) || \
+	defined(__NDR_convert__char_rep__Request__exception_raise_state_t__code__defined) || \
+	0 || \
+	defined(__NDR_convert__char_rep__Request__exception_raise_state_t__flavor__defined) || \
+	defined(__NDR_convert__char_rep__Request__exception_raise_state_t__old_state__defined) || \
+	0
+	if (In0P->NDR.char_rep != NDR_record.char_rep) {
+#if defined(__NDR_convert__char_rep__Request__exception_raise_state_t__exception__defined)
+		__NDR_convert__char_rep__Request__exception_raise_state_t__exception(&In0P->exception, In0P->NDR.char_rep);
+#endif	/* __NDR_convert__char_rep__Request__exception_raise_state_t__exception__defined */
+#if defined(__NDR_convert__char_rep__Request__exception_raise_state_t__code__defined)
+		__NDR_convert__char_rep__Request__exception_raise_state_t__code(&In0P->code, In0P->NDR.char_rep, In0P->codeCnt);
+#endif	/* __NDR_convert__char_rep__Request__exception_raise_state_t__code__defined */
+#if defined(__NDR_convert__char_rep__Request__exception_raise_state_t__flavor__defined)
+		__NDR_convert__char_rep__Request__exception_raise_state_t__flavor(&In1P->flavor, In0P->NDR.char_rep);
+#endif	/* __NDR_convert__char_rep__Request__exception_raise_state_t__flavor__defined */
+#if defined(__NDR_convert__char_rep__Request__exception_raise_state_t__old_state__defined)
+		__NDR_convert__char_rep__Request__exception_raise_state_t__old_state(&In1P->old_state, In0P->NDR.char_rep, In1P->old_stateCnt);
+#endif	/* __NDR_convert__char_rep__Request__exception_raise_state_t__old_state__defined */
+	}
+#endif	/* defined(__NDR_convert__char_rep...) */
+
+#if	defined(__NDR_convert__float_rep__Request__exception_raise_state_t__exception__defined) || \
+	defined(__NDR_convert__float_rep__Request__exception_raise_state_t__code__defined) || \
+	0 || \
+	defined(__NDR_convert__float_rep__Request__exception_raise_state_t__flavor__defined) || \
+	defined(__NDR_convert__float_rep__Request__exception_raise_state_t__old_state__defined) || \
+	0
+	if (In0P->NDR.float_rep != NDR_record.float_rep) {
+#if defined(__NDR_convert__float_rep__Request__exception_raise_state_t__exception__defined)
+		__NDR_convert__float_rep__Request__exception_raise_state_t__exception(&In0P->exception, In0P->NDR.float_rep);
+#endif	/* __NDR_convert__float_rep__Request__exception_raise_state_t__exception__defined */
+#if defined(__NDR_convert__float_rep__Request__exception_raise_state_t__code__defined)
+		__NDR_convert__float_rep__Request__exception_raise_state_t__code(&In0P->code, In0P->NDR.float_rep, In0P->codeCnt);
+#endif	/* __NDR_convert__float_rep__Request__exception_raise_state_t__code__defined */
+#if defined(__NDR_convert__float_rep__Request__exception_raise_state_t__flavor__defined)
+		__NDR_convert__float_rep__Request__exception_raise_state_t__flavor(&In1P->flavor, In0P->NDR.float_rep);
+#endif	/* __NDR_convert__float_rep__Request__exception_raise_state_t__flavor__defined */
+#if defined(__NDR_convert__float_rep__Request__exception_raise_state_t__old_state__defined)
+		__NDR_convert__float_rep__Request__exception_raise_state_t__old_state(&In1P->old_state, In0P->NDR.float_rep, In1P->old_stateCnt);
+#endif	/* __NDR_convert__float_rep__Request__exception_raise_state_t__old_state__defined */
+	}
+#endif	/* defined(__NDR_convert__float_rep...) */
+
+	return MACH_MSG_SUCCESS;
+}
+#endif /* !defined(__MIG_check__Request__exception_raise_state_t__defined) */
+#endif /* __MIG_check__Request__exc_subsystem__ */
+#endif /* ( __MigTypeCheck || __NDR_convert__ ) */
+
+
+/* Routine exception_raise_state */
+#ifdef	mig_external
+mig_external
+#else
+extern
+#endif	/* mig_external */
+kern_return_t breakpad_exception_raise_state
+(
+	mach_port_t exception_port,
+	exception_type_t exception,
+	const exception_data_t code,
+	mach_msg_type_number_t codeCnt,
+	int *flavor,
+	const thread_state_t old_state,
+	mach_msg_type_number_t old_stateCnt,
+	thread_state_t new_state,
+	mach_msg_type_number_t *new_stateCnt
+);
+
+/* Routine exception_raise_state */
+mig_internal novalue _Xexception_raise_state
+	(mach_msg_header_t *InHeadP, mach_msg_header_t *OutHeadP)
+{
+
+#ifdef  __MigPackStructs
+#pragma pack(4)
+#endif
+	typedef struct {
+		mach_msg_header_t Head;
+		NDR_record_t NDR;
+		exception_type_t exception;
+		mach_msg_type_number_t codeCnt;
+		integer_t code[2];
+		int flavor;
+		mach_msg_type_number_t old_stateCnt;
+		natural_t old_state[144];
+		mach_msg_trailer_t trailer;
+	} Request;
+#ifdef  __MigPackStructs
+#pragma pack()
+#endif
+	typedef __Request__exception_raise_state_t __Request;
+	typedef __Reply__exception_raise_state_t Reply;
+
+	/*
+	 * typedef struct {
+	 * 	mach_msg_header_t Head;
+	 * 	NDR_record_t NDR;
+	 * 	kern_return_t RetCode;
+	 * } mig_reply_error_t;
+	 */
+
+	Request *In0P = (Request *) InHeadP;
+	Request *In1P;
+	Reply *OutP = (Reply *) OutHeadP;
+#ifdef	__MIG_check__Request__exception_raise_state_t__defined
+	kern_return_t check_result;
+#endif	/* __MIG_check__Request__exception_raise_state_t__defined */
+
+	__DeclareRcvRpc(2402, "exception_raise_state")
+	__BeforeRcvRpc(2402, "exception_raise_state")
+
+#if	defined(__MIG_check__Request__exception_raise_state_t__defined)
+	check_result = __MIG_check__Request__exception_raise_state_t((__Request *)In0P, (__Request **)&In1P);
+	if (check_result != MACH_MSG_SUCCESS)
+		{ MIG_RETURN_ERROR(OutP, check_result); }
+#endif	/* defined(__MIG_check__Request__exception_raise_state_t__defined) */
+
+	OutP->new_stateCnt = 144;
+
+	OutP->RetCode = breakpad_exception_raise_state(In0P->Head.msgh_request_port, In0P->exception, In0P->code, In0P->codeCnt, &In1P->flavor, In1P->old_state, In1P->old_stateCnt, OutP->new_state, &OutP->new_stateCnt);
+	if (OutP->RetCode != KERN_SUCCESS) {
+		MIG_RETURN_ERROR(OutP, OutP->RetCode);
+	}
+
+	OutP->NDR = NDR_record;
+
+
+	OutP->flavor = In1P->flavor;
+	OutP->Head.msgh_size = (mach_msg_size_t)(sizeof(Reply) - 576) + (((4 * OutP->new_stateCnt)));
+
+	__AfterRcvRpc(2402, "exception_raise_state")
+}
+
+#if ( __MigTypeCheck || __NDR_convert__ )
+#if __MIG_check__Request__exc_subsystem__
+#if !defined(__MIG_check__Request__exception_raise_state_identity_t__defined)
+#define __MIG_check__Request__exception_raise_state_identity_t__defined
+#ifndef __NDR_convert__int_rep__Request__exception_raise_state_identity_t__exception__defined
+#if	defined(__NDR_convert__int_rep__exc__exception_type_t__defined)
+#define	__NDR_convert__int_rep__Request__exception_raise_state_identity_t__exception__defined
+#define	__NDR_convert__int_rep__Request__exception_raise_state_identity_t__exception(a, f) \
+	__NDR_convert__int_rep__exc__exception_type_t((exception_type_t *)(a), f)
+#elif	defined(__NDR_convert__int_rep__exception_type_t__defined)
+#define	__NDR_convert__int_rep__Request__exception_raise_state_identity_t__exception__defined
+#define	__NDR_convert__int_rep__Request__exception_raise_state_identity_t__exception(a, f) \
+	__NDR_convert__int_rep__exception_type_t((exception_type_t *)(a), f)
+#elif	defined(__NDR_convert__int_rep__exc__int__defined)
+#define	__NDR_convert__int_rep__Request__exception_raise_state_identity_t__exception__defined
+#define	__NDR_convert__int_rep__Request__exception_raise_state_identity_t__exception(a, f) \
+	__NDR_convert__int_rep__exc__int((int *)(a), f)
+#elif	defined(__NDR_convert__int_rep__int__defined)
+#define	__NDR_convert__int_rep__Request__exception_raise_state_identity_t__exception__defined
+#define	__NDR_convert__int_rep__Request__exception_raise_state_identity_t__exception(a, f) \
+	__NDR_convert__int_rep__int((int *)(a), f)
+#elif	defined(__NDR_convert__int_rep__exc__int32_t__defined)
+#define	__NDR_convert__int_rep__Request__exception_raise_state_identity_t__exception__defined
+#define	__NDR_convert__int_rep__Request__exception_raise_state_identity_t__exception(a, f) \
+	__NDR_convert__int_rep__exc__int32_t((int32_t *)(a), f)
+#elif	defined(__NDR_convert__int_rep__int32_t__defined)
+#define	__NDR_convert__int_rep__Request__exception_raise_state_identity_t__exception__defined
+#define	__NDR_convert__int_rep__Request__exception_raise_state_identity_t__exception(a, f) \
+	__NDR_convert__int_rep__int32_t((int32_t *)(a), f)
+#endif /* defined(__NDR_convert__*__defined) */
+#endif /* __NDR_convert__int_rep__Request__exception_raise_state_identity_t__exception__defined */
+
+#ifndef __NDR_convert__int_rep__Request__exception_raise_state_identity_t__code__defined
+#if	defined(__NDR_convert__int_rep__exc__exception_data_t__defined)
+#define	__NDR_convert__int_rep__Request__exception_raise_state_identity_t__code__defined
+#define	__NDR_convert__int_rep__Request__exception_raise_state_identity_t__code(a, f, c) \
+	__NDR_convert__int_rep__exc__exception_data_t((exception_data_t *)(a), f, c)
+#elif	defined(__NDR_convert__int_rep__exception_data_t__defined)
+#define	__NDR_convert__int_rep__Request__exception_raise_state_identity_t__code__defined
+#define	__NDR_convert__int_rep__Request__exception_raise_state_identity_t__code(a, f, c) \
+	__NDR_convert__int_rep__exception_data_t((exception_data_t *)(a), f, c)
+#elif	defined(__NDR_convert__int_rep__exc__integer_t__defined)
+#define	__NDR_convert__int_rep__Request__exception_raise_state_identity_t__code__defined
+#define	__NDR_convert__int_rep__Request__exception_raise_state_identity_t__code(a, f, c) \
+	__NDR_convert__ARRAY((integer_t *)(a), f, c, __NDR_convert__int_rep__exc__integer_t)
+#elif	defined(__NDR_convert__int_rep__integer_t__defined)
+#define	__NDR_convert__int_rep__Request__exception_raise_state_identity_t__code__defined
+#define	__NDR_convert__int_rep__Request__exception_raise_state_identity_t__code(a, f, c) \
+	__NDR_convert__ARRAY((integer_t *)(a), f, c, __NDR_convert__int_rep__integer_t)
+#elif	defined(__NDR_convert__int_rep__exc__int32_t__defined)
+#define	__NDR_convert__int_rep__Request__exception_raise_state_identity_t__code__defined
+#define	__NDR_convert__int_rep__Request__exception_raise_state_identity_t__code(a, f, c) \
+	__NDR_convert__ARRAY((int32_t *)(a), f, c, __NDR_convert__int_rep__exc__int32_t)
+#elif	defined(__NDR_convert__int_rep__int32_t__defined)
+#define	__NDR_convert__int_rep__Request__exception_raise_state_identity_t__code__defined
+#define	__NDR_convert__int_rep__Request__exception_raise_state_identity_t__code(a, f, c) \
+	__NDR_convert__ARRAY((int32_t *)(a), f, c, __NDR_convert__int_rep__int32_t)
+#endif /* defined(__NDR_convert__*__defined) */
+#endif /* __NDR_convert__int_rep__Request__exception_raise_state_identity_t__code__defined */
+
+#ifndef __NDR_convert__int_rep__Request__exception_raise_state_identity_t__codeCnt__defined
+#if	defined(__NDR_convert__int_rep__exc__mach_msg_type_number_t__defined)
+#define	__NDR_convert__int_rep__Request__exception_raise_state_identity_t__codeCnt__defined
+#define	__NDR_convert__int_rep__Request__exception_raise_state_identity_t__codeCnt(a, f) \
+	__NDR_convert__int_rep__exc__mach_msg_type_number_t((mach_msg_type_number_t *)(a), f)
+#elif	defined(__NDR_convert__int_rep__mach_msg_type_number_t__defined)
+#define	__NDR_convert__int_rep__Request__exception_raise_state_identity_t__codeCnt__defined
+#define	__NDR_convert__int_rep__Request__exception_raise_state_identity_t__codeCnt(a, f) \
+	__NDR_convert__int_rep__mach_msg_type_number_t((mach_msg_type_number_t *)(a), f)
+#endif /* defined(__NDR_convert__*__defined) */
+#endif /* __NDR_convert__int_rep__Request__exception_raise_state_identity_t__codeCnt__defined */
+
+#ifndef __NDR_convert__int_rep__Request__exception_raise_state_identity_t__flavor__defined
+#if	defined(__NDR_convert__int_rep__exc__int__defined)
+#define	__NDR_convert__int_rep__Request__exception_raise_state_identity_t__flavor__defined
+#define	__NDR_convert__int_rep__Request__exception_raise_state_identity_t__flavor(a, f) \
+	__NDR_convert__int_rep__exc__int((int *)(a), f)
+#elif	defined(__NDR_convert__int_rep__int__defined)
+#define	__NDR_convert__int_rep__Request__exception_raise_state_identity_t__flavor__defined
+#define	__NDR_convert__int_rep__Request__exception_raise_state_identity_t__flavor(a, f) \
+	__NDR_convert__int_rep__int((int *)(a), f)
+#elif	defined(__NDR_convert__int_rep__exc__int32_t__defined)
+#define	__NDR_convert__int_rep__Request__exception_raise_state_identity_t__flavor__defined
+#define	__NDR_convert__int_rep__Request__exception_raise_state_identity_t__flavor(a, f) \
+	__NDR_convert__int_rep__exc__int32_t((int32_t *)(a), f)
+#elif	defined(__NDR_convert__int_rep__int32_t__defined)
+#define	__NDR_convert__int_rep__Request__exception_raise_state_identity_t__flavor__defined
+#define	__NDR_convert__int_rep__Request__exception_raise_state_identity_t__flavor(a, f) \
+	__NDR_convert__int_rep__int32_t((int32_t *)(a), f)
+#endif /* defined(__NDR_convert__*__defined) */
+#endif /* __NDR_convert__int_rep__Request__exception_raise_state_identity_t__flavor__defined */
+
+#ifndef __NDR_convert__int_rep__Request__exception_raise_state_identity_t__old_state__defined
+#if	defined(__NDR_convert__int_rep__exc__thread_state_t__defined)
+#define	__NDR_convert__int_rep__Request__exception_raise_state_identity_t__old_state__defined
+#define	__NDR_convert__int_rep__Request__exception_raise_state_identity_t__old_state(a, f, c) \
+	__NDR_convert__int_rep__exc__thread_state_t((thread_state_t *)(a), f, c)
+#elif	defined(__NDR_convert__int_rep__thread_state_t__defined)
+#define	__NDR_convert__int_rep__Request__exception_raise_state_identity_t__old_state__defined
+#define	__NDR_convert__int_rep__Request__exception_raise_state_identity_t__old_state(a, f, c) \
+	__NDR_convert__int_rep__thread_state_t((thread_state_t *)(a), f, c)
+#elif	defined(__NDR_convert__int_rep__exc__natural_t__defined)
+#define	__NDR_convert__int_rep__Request__exception_raise_state_identity_t__old_state__defined
+#define	__NDR_convert__int_rep__Request__exception_raise_state_identity_t__old_state(a, f, c) \
+	__NDR_convert__ARRAY((natural_t *)(a), f, c, __NDR_convert__int_rep__exc__natural_t)
+#elif	defined(__NDR_convert__int_rep__natural_t__defined)
+#define	__NDR_convert__int_rep__Request__exception_raise_state_identity_t__old_state__defined
+#define	__NDR_convert__int_rep__Request__exception_raise_state_identity_t__old_state(a, f, c) \
+	__NDR_convert__ARRAY((natural_t *)(a), f, c, __NDR_convert__int_rep__natural_t)
+#elif	defined(__NDR_convert__int_rep__exc__uint32_t__defined)
+#define	__NDR_convert__int_rep__Request__exception_raise_state_identity_t__old_state__defined
+#define	__NDR_convert__int_rep__Request__exception_raise_state_identity_t__old_state(a, f, c) \
+	__NDR_convert__ARRAY((uint32_t *)(a), f, c, __NDR_convert__int_rep__exc__uint32_t)
+#elif	defined(__NDR_convert__int_rep__uint32_t__defined)
+#define	__NDR_convert__int_rep__Request__exception_raise_state_identity_t__old_state__defined
+#define	__NDR_convert__int_rep__Request__exception_raise_state_identity_t__old_state(a, f, c) \
+	__NDR_convert__ARRAY((uint32_t *)(a), f, c, __NDR_convert__int_rep__uint32_t)
+#endif /* defined(__NDR_convert__*__defined) */
+#endif /* __NDR_convert__int_rep__Request__exception_raise_state_identity_t__old_state__defined */
+
+#ifndef __NDR_convert__int_rep__Request__exception_raise_state_identity_t__old_stateCnt__defined
+#if	defined(__NDR_convert__int_rep__exc__mach_msg_type_number_t__defined)
+#define	__NDR_convert__int_rep__Request__exception_raise_state_identity_t__old_stateCnt__defined
+#define	__NDR_convert__int_rep__Request__exception_raise_state_identity_t__old_stateCnt(a, f) \
+	__NDR_convert__int_rep__exc__mach_msg_type_number_t((mach_msg_type_number_t *)(a), f)
+#elif	defined(__NDR_convert__int_rep__mach_msg_type_number_t__defined)
+#define	__NDR_convert__int_rep__Request__exception_raise_state_identity_t__old_stateCnt__defined
+#define	__NDR_convert__int_rep__Request__exception_raise_state_identity_t__old_stateCnt(a, f) \
+	__NDR_convert__int_rep__mach_msg_type_number_t((mach_msg_type_number_t *)(a), f)
+#endif /* defined(__NDR_convert__*__defined) */
+#endif /* __NDR_convert__int_rep__Request__exception_raise_state_identity_t__old_stateCnt__defined */
+
+#ifndef __NDR_convert__char_rep__Request__exception_raise_state_identity_t__exception__defined
+#if	defined(__NDR_convert__char_rep__exc__exception_type_t__defined)
+#define	__NDR_convert__char_rep__Request__exception_raise_state_identity_t__exception__defined
+#define	__NDR_convert__char_rep__Request__exception_raise_state_identity_t__exception(a, f) \
+	__NDR_convert__char_rep__exc__exception_type_t((exception_type_t *)(a), f)
+#elif	defined(__NDR_convert__char_rep__exception_type_t__defined)
+#define	__NDR_convert__char_rep__Request__exception_raise_state_identity_t__exception__defined
+#define	__NDR_convert__char_rep__Request__exception_raise_state_identity_t__exception(a, f) \
+	__NDR_convert__char_rep__exception_type_t((exception_type_t *)(a), f)
+#elif	defined(__NDR_convert__char_rep__exc__int__defined)
+#define	__NDR_convert__char_rep__Request__exception_raise_state_identity_t__exception__defined
+#define	__NDR_convert__char_rep__Request__exception_raise_state_identity_t__exception(a, f) \
+	__NDR_convert__char_rep__exc__int((int *)(a), f)
+#elif	defined(__NDR_convert__char_rep__int__defined)
+#define	__NDR_convert__char_rep__Request__exception_raise_state_identity_t__exception__defined
+#define	__NDR_convert__char_rep__Request__exception_raise_state_identity_t__exception(a, f) \
+	__NDR_convert__char_rep__int((int *)(a), f)
+#elif	defined(__NDR_convert__char_rep__exc__int32_t__defined)
+#define	__NDR_convert__char_rep__Request__exception_raise_state_identity_t__exception__defined
+#define	__NDR_convert__char_rep__Request__exception_raise_state_identity_t__exception(a, f) \
+	__NDR_convert__char_rep__exc__int32_t((int32_t *)(a), f)
+#elif	defined(__NDR_convert__char_rep__int32_t__defined)
+#define	__NDR_convert__char_rep__Request__exception_raise_state_identity_t__exception__defined
+#define	__NDR_convert__char_rep__Request__exception_raise_state_identity_t__exception(a, f) \
+	__NDR_convert__char_rep__int32_t((int32_t *)(a), f)
+#endif /* defined(__NDR_convert__*__defined) */
+#endif /* __NDR_convert__char_rep__Request__exception_raise_state_identity_t__exception__defined */
+
+#ifndef __NDR_convert__char_rep__Request__exception_raise_state_identity_t__code__defined
+#if	defined(__NDR_convert__char_rep__exc__exception_data_t__defined)
+#define	__NDR_convert__char_rep__Request__exception_raise_state_identity_t__code__defined
+#define	__NDR_convert__char_rep__Request__exception_raise_state_identity_t__code(a, f, c) \
+	__NDR_convert__char_rep__exc__exception_data_t((exception_data_t *)(a), f, c)
+#elif	defined(__NDR_convert__char_rep__exception_data_t__defined)
+#define	__NDR_convert__char_rep__Request__exception_raise_state_identity_t__code__defined
+#define	__NDR_convert__char_rep__Request__exception_raise_state_identity_t__code(a, f, c) \
+	__NDR_convert__char_rep__exception_data_t((exception_data_t *)(a), f, c)
+#elif	defined(__NDR_convert__char_rep__exc__integer_t__defined)
+#define	__NDR_convert__char_rep__Request__exception_raise_state_identity_t__code__defined
+#define	__NDR_convert__char_rep__Request__exception_raise_state_identity_t__code(a, f, c) \
+	__NDR_convert__ARRAY((integer_t *)(a), f, c, __NDR_convert__char_rep__exc__integer_t)
+#elif	defined(__NDR_convert__char_rep__integer_t__defined)
+#define	__NDR_convert__char_rep__Request__exception_raise_state_identity_t__code__defined
+#define	__NDR_convert__char_rep__Request__exception_raise_state_identity_t__code(a, f, c) \
+	__NDR_convert__ARRAY((integer_t *)(a), f, c, __NDR_convert__char_rep__integer_t)
+#elif	defined(__NDR_convert__char_rep__exc__int32_t__defined)
+#define	__NDR_convert__char_rep__Request__exception_raise_state_identity_t__code__defined
+#define	__NDR_convert__char_rep__Request__exception_raise_state_identity_t__code(a, f, c) \
+	__NDR_convert__ARRAY((int32_t *)(a), f, c, __NDR_convert__char_rep__exc__int32_t)
+#elif	defined(__NDR_convert__char_rep__int32_t__defined)
+#define	__NDR_convert__char_rep__Request__exception_raise_state_identity_t__code__defined
+#define	__NDR_convert__char_rep__Request__exception_raise_state_identity_t__code(a, f, c) \
+	__NDR_convert__ARRAY((int32_t *)(a), f, c, __NDR_convert__char_rep__int32_t)
+#endif /* defined(__NDR_convert__*__defined) */
+#endif /* __NDR_convert__char_rep__Request__exception_raise_state_identity_t__code__defined */
+
+#ifndef __NDR_convert__char_rep__Request__exception_raise_state_identity_t__flavor__defined
+#if	defined(__NDR_convert__char_rep__exc__int__defined)
+#define	__NDR_convert__char_rep__Request__exception_raise_state_identity_t__flavor__defined
+#define	__NDR_convert__char_rep__Request__exception_raise_state_identity_t__flavor(a, f) \
+	__NDR_convert__char_rep__exc__int((int *)(a), f)
+#elif	defined(__NDR_convert__char_rep__int__defined)
+#define	__NDR_convert__char_rep__Request__exception_raise_state_identity_t__flavor__defined
+#define	__NDR_convert__char_rep__Request__exception_raise_state_identity_t__flavor(a, f) \
+	__NDR_convert__char_rep__int((int *)(a), f)
+#elif	defined(__NDR_convert__char_rep__exc__int32_t__defined)
+#define	__NDR_convert__char_rep__Request__exception_raise_state_identity_t__flavor__defined
+#define	__NDR_convert__char_rep__Request__exception_raise_state_identity_t__flavor(a, f) \
+	__NDR_convert__char_rep__exc__int32_t((int32_t *)(a), f)
+#elif	defined(__NDR_convert__char_rep__int32_t__defined)
+#define	__NDR_convert__char_rep__Request__exception_raise_state_identity_t__flavor__defined
+#define	__NDR_convert__char_rep__Request__exception_raise_state_identity_t__flavor(a, f) \
+	__NDR_convert__char_rep__int32_t((int32_t *)(a), f)
+#endif /* defined(__NDR_convert__*__defined) */
+#endif /* __NDR_convert__char_rep__Request__exception_raise_state_identity_t__flavor__defined */
+
+#ifndef __NDR_convert__char_rep__Request__exception_raise_state_identity_t__old_state__defined
+#if	defined(__NDR_convert__char_rep__exc__thread_state_t__defined)
+#define	__NDR_convert__char_rep__Request__exception_raise_state_identity_t__old_state__defined
+#define	__NDR_convert__char_rep__Request__exception_raise_state_identity_t__old_state(a, f, c) \
+	__NDR_convert__char_rep__exc__thread_state_t((thread_state_t *)(a), f, c)
+#elif	defined(__NDR_convert__char_rep__thread_state_t__defined)
+#define	__NDR_convert__char_rep__Request__exception_raise_state_identity_t__old_state__defined
+#define	__NDR_convert__char_rep__Request__exception_raise_state_identity_t__old_state(a, f, c) \
+	__NDR_convert__char_rep__thread_state_t((thread_state_t *)(a), f, c)
+#elif	defined(__NDR_convert__char_rep__exc__natural_t__defined)
+#define	__NDR_convert__char_rep__Request__exception_raise_state_identity_t__old_state__defined
+#define	__NDR_convert__char_rep__Request__exception_raise_state_identity_t__old_state(a, f, c) \
+	__NDR_convert__ARRAY((natural_t *)(a), f, c, __NDR_convert__char_rep__exc__natural_t)
+#elif	defined(__NDR_convert__char_rep__natural_t__defined)
+#define	__NDR_convert__char_rep__Request__exception_raise_state_identity_t__old_state__defined
+#define	__NDR_convert__char_rep__Request__exception_raise_state_identity_t__old_state(a, f, c) \
+	__NDR_convert__ARRAY((natural_t *)(a), f, c, __NDR_convert__char_rep__natural_t)
+#elif	defined(__NDR_convert__char_rep__exc__uint32_t__defined)
+#define	__NDR_convert__char_rep__Request__exception_raise_state_identity_t__old_state__defined
+#define	__NDR_convert__char_rep__Request__exception_raise_state_identity_t__old_state(a, f, c) \
+	__NDR_convert__ARRAY((uint32_t *)(a), f, c, __NDR_convert__char_rep__exc__uint32_t)
+#elif	defined(__NDR_convert__char_rep__uint32_t__defined)
+#define	__NDR_convert__char_rep__Request__exception_raise_state_identity_t__old_state__defined
+#define	__NDR_convert__char_rep__Request__exception_raise_state_identity_t__old_state(a, f, c) \
+	__NDR_convert__ARRAY((uint32_t *)(a), f, c, __NDR_convert__char_rep__uint32_t)
+#endif /* defined(__NDR_convert__*__defined) */
+#endif /* __NDR_convert__char_rep__Request__exception_raise_state_identity_t__old_state__defined */
+
+#ifndef __NDR_convert__float_rep__Request__exception_raise_state_identity_t__exception__defined
+#if	defined(__NDR_convert__float_rep__exc__exception_type_t__defined)
+#define	__NDR_convert__float_rep__Request__exception_raise_state_identity_t__exception__defined
+#define	__NDR_convert__float_rep__Request__exception_raise_state_identity_t__exception(a, f) \
+	__NDR_convert__float_rep__exc__exception_type_t((exception_type_t *)(a), f)
+#elif	defined(__NDR_convert__float_rep__exception_type_t__defined)
+#define	__NDR_convert__float_rep__Request__exception_raise_state_identity_t__exception__defined
+#define	__NDR_convert__float_rep__Request__exception_raise_state_identity_t__exception(a, f) \
+	__NDR_convert__float_rep__exception_type_t((exception_type_t *)(a), f)
+#elif	defined(__NDR_convert__float_rep__exc__int__defined)
+#define	__NDR_convert__float_rep__Request__exception_raise_state_identity_t__exception__defined
+#define	__NDR_convert__float_rep__Request__exception_raise_state_identity_t__exception(a, f) \
+	__NDR_convert__float_rep__exc__int((int *)(a), f)
+#elif	defined(__NDR_convert__float_rep__int__defined)
+#define	__NDR_convert__float_rep__Request__exception_raise_state_identity_t__exception__defined
+#define	__NDR_convert__float_rep__Request__exception_raise_state_identity_t__exception(a, f) \
+	__NDR_convert__float_rep__int((int *)(a), f)
+#elif	defined(__NDR_convert__float_rep__exc__int32_t__defined)
+#define	__NDR_convert__float_rep__Request__exception_raise_state_identity_t__exception__defined
+#define	__NDR_convert__float_rep__Request__exception_raise_state_identity_t__exception(a, f) \
+	__NDR_convert__float_rep__exc__int32_t((int32_t *)(a), f)
+#elif	defined(__NDR_convert__float_rep__int32_t__defined)
+#define	__NDR_convert__float_rep__Request__exception_raise_state_identity_t__exception__defined
+#define	__NDR_convert__float_rep__Request__exception_raise_state_identity_t__exception(a, f) \
+	__NDR_convert__float_rep__int32_t((int32_t *)(a), f)
+#endif /* defined(__NDR_convert__*__defined) */
+#endif /* __NDR_convert__float_rep__Request__exception_raise_state_identity_t__exception__defined */
+
+#ifndef __NDR_convert__float_rep__Request__exception_raise_state_identity_t__code__defined
+#if	defined(__NDR_convert__float_rep__exc__exception_data_t__defined)
+#define	__NDR_convert__float_rep__Request__exception_raise_state_identity_t__code__defined
+#define	__NDR_convert__float_rep__Request__exception_raise_state_identity_t__code(a, f, c) \
+	__NDR_convert__float_rep__exc__exception_data_t((exception_data_t *)(a), f, c)
+#elif	defined(__NDR_convert__float_rep__exception_data_t__defined)
+#define	__NDR_convert__float_rep__Request__exception_raise_state_identity_t__code__defined
+#define	__NDR_convert__float_rep__Request__exception_raise_state_identity_t__code(a, f, c) \
+	__NDR_convert__float_rep__exception_data_t((exception_data_t *)(a), f, c)
+#elif	defined(__NDR_convert__float_rep__exc__integer_t__defined)
+#define	__NDR_convert__float_rep__Request__exception_raise_state_identity_t__code__defined
+#define	__NDR_convert__float_rep__Request__exception_raise_state_identity_t__code(a, f, c) \
+	__NDR_convert__ARRAY((integer_t *)(a), f, c, __NDR_convert__float_rep__exc__integer_t)
+#elif	defined(__NDR_convert__float_rep__integer_t__defined)
+#define	__NDR_convert__float_rep__Request__exception_raise_state_identity_t__code__defined
+#define	__NDR_convert__float_rep__Request__exception_raise_state_identity_t__code(a, f, c) \
+	__NDR_convert__ARRAY((integer_t *)(a), f, c, __NDR_convert__float_rep__integer_t)
+#elif	defined(__NDR_convert__float_rep__exc__int32_t__defined)
+#define	__NDR_convert__float_rep__Request__exception_raise_state_identity_t__code__defined
+#define	__NDR_convert__float_rep__Request__exception_raise_state_identity_t__code(a, f, c) \
+	__NDR_convert__ARRAY((int32_t *)(a), f, c, __NDR_convert__float_rep__exc__int32_t)
+#elif	defined(__NDR_convert__float_rep__int32_t__defined)
+#define	__NDR_convert__float_rep__Request__exception_raise_state_identity_t__code__defined
+#define	__NDR_convert__float_rep__Request__exception_raise_state_identity_t__code(a, f, c) \
+	__NDR_convert__ARRAY((int32_t *)(a), f, c, __NDR_convert__float_rep__int32_t)
+#endif /* defined(__NDR_convert__*__defined) */
+#endif /* __NDR_convert__float_rep__Request__exception_raise_state_identity_t__code__defined */
+
+#ifndef __NDR_convert__float_rep__Request__exception_raise_state_identity_t__flavor__defined
+#if	defined(__NDR_convert__float_rep__exc__int__defined)
+#define	__NDR_convert__float_rep__Request__exception_raise_state_identity_t__flavor__defined
+#define	__NDR_convert__float_rep__Request__exception_raise_state_identity_t__flavor(a, f) \
+	__NDR_convert__float_rep__exc__int((int *)(a), f)
+#elif	defined(__NDR_convert__float_rep__int__defined)
+#define	__NDR_convert__float_rep__Request__exception_raise_state_identity_t__flavor__defined
+#define	__NDR_convert__float_rep__Request__exception_raise_state_identity_t__flavor(a, f) \
+	__NDR_convert__float_rep__int((int *)(a), f)
+#elif	defined(__NDR_convert__float_rep__exc__int32_t__defined)
+#define	__NDR_convert__float_rep__Request__exception_raise_state_identity_t__flavor__defined
+#define	__NDR_convert__float_rep__Request__exception_raise_state_identity_t__flavor(a, f) \
+	__NDR_convert__float_rep__exc__int32_t((int32_t *)(a), f)
+#elif	defined(__NDR_convert__float_rep__int32_t__defined)
+#define	__NDR_convert__float_rep__Request__exception_raise_state_identity_t__flavor__defined
+#define	__NDR_convert__float_rep__Request__exception_raise_state_identity_t__flavor(a, f) \
+	__NDR_convert__float_rep__int32_t((int32_t *)(a), f)
+#endif /* defined(__NDR_convert__*__defined) */
+#endif /* __NDR_convert__float_rep__Request__exception_raise_state_identity_t__flavor__defined */
+
+#ifndef __NDR_convert__float_rep__Request__exception_raise_state_identity_t__old_state__defined
+#if	defined(__NDR_convert__float_rep__exc__thread_state_t__defined)
+#define	__NDR_convert__float_rep__Request__exception_raise_state_identity_t__old_state__defined
+#define	__NDR_convert__float_rep__Request__exception_raise_state_identity_t__old_state(a, f, c) \
+	__NDR_convert__float_rep__exc__thread_state_t((thread_state_t *)(a), f, c)
+#elif	defined(__NDR_convert__float_rep__thread_state_t__defined)
+#define	__NDR_convert__float_rep__Request__exception_raise_state_identity_t__old_state__defined
+#define	__NDR_convert__float_rep__Request__exception_raise_state_identity_t__old_state(a, f, c) \
+	__NDR_convert__float_rep__thread_state_t((thread_state_t *)(a), f, c)
+#elif	defined(__NDR_convert__float_rep__exc__natural_t__defined)
+#define	__NDR_convert__float_rep__Request__exception_raise_state_identity_t__old_state__defined
+#define	__NDR_convert__float_rep__Request__exception_raise_state_identity_t__old_state(a, f, c) \
+	__NDR_convert__ARRAY((natural_t *)(a), f, c, __NDR_convert__float_rep__exc__natural_t)
+#elif	defined(__NDR_convert__float_rep__natural_t__defined)
+#define	__NDR_convert__float_rep__Request__exception_raise_state_identity_t__old_state__defined
+#define	__NDR_convert__float_rep__Request__exception_raise_state_identity_t__old_state(a, f, c) \
+	__NDR_convert__ARRAY((natural_t *)(a), f, c, __NDR_convert__float_rep__natural_t)
+#elif	defined(__NDR_convert__float_rep__exc__uint32_t__defined)
+#define	__NDR_convert__float_rep__Request__exception_raise_state_identity_t__old_state__defined
+#define	__NDR_convert__float_rep__Request__exception_raise_state_identity_t__old_state(a, f, c) \
+	__NDR_convert__ARRAY((uint32_t *)(a), f, c, __NDR_convert__float_rep__exc__uint32_t)
+#elif	defined(__NDR_convert__float_rep__uint32_t__defined)
+#define	__NDR_convert__float_rep__Request__exception_raise_state_identity_t__old_state__defined
+#define	__NDR_convert__float_rep__Request__exception_raise_state_identity_t__old_state(a, f, c) \
+	__NDR_convert__ARRAY((uint32_t *)(a), f, c, __NDR_convert__float_rep__uint32_t)
+#endif /* defined(__NDR_convert__*__defined) */
+#endif /* __NDR_convert__float_rep__Request__exception_raise_state_identity_t__old_state__defined */
+
+
+mig_internal kern_return_t __MIG_check__Request__exception_raise_state_identity_t(__attribute__((__unused__)) __Request__exception_raise_state_identity_t *In0P, __attribute__((__unused__)) __Request__exception_raise_state_identity_t **In1PP)
+{
+
+	typedef __Request__exception_raise_state_identity_t __Request;
+	__Request *In1P;
+#if	__MigTypeCheck
+	unsigned int msgh_size;
+#endif	/* __MigTypeCheck */
+	unsigned int msgh_size_delta;
+
+#if	__MigTypeCheck
+	msgh_size = In0P->Head.msgh_size;
+	if (!(In0P->Head.msgh_bits & MACH_MSGH_BITS_COMPLEX) ||
+	    (In0P->msgh_body.msgh_descriptor_count != 2) ||
+	    (msgh_size < (mach_msg_size_t)(sizeof(__Request) - 584)) ||  (msgh_size > (mach_msg_size_t)sizeof(__Request))
+)
+		return MIG_BAD_ARGUMENTS;
+#endif	/* __MigTypeCheck */
+
+#if	__MigTypeCheck
+	if (In0P->thread.type != MACH_MSG_PORT_DESCRIPTOR ||
+	    In0P->thread.disposition != 17)
+		return MIG_TYPE_ERROR;
+#endif	/* __MigTypeCheck */
+
+#if	__MigTypeCheck
+	if (In0P->task.type != MACH_MSG_PORT_DESCRIPTOR ||
+	    In0P->task.disposition != 17)
+		return MIG_TYPE_ERROR;
+#endif	/* __MigTypeCheck */
+
+#if defined(__NDR_convert__int_rep__Request__exception_raise_state_identity_t__codeCnt__defined)
+	if (In0P->NDR.int_rep != NDR_record.int_rep)
+		__NDR_convert__int_rep__Request__exception_raise_state_identity_t__codeCnt(&In0P->codeCnt, In0P->NDR.int_rep);
+#endif	/* __NDR_convert__int_rep__Request__exception_raise_state_identity_t__codeCnt__defined */
+	msgh_size_delta = (4 * In0P->codeCnt);
+#if	__MigTypeCheck
+	if (msgh_size < (mach_msg_size_t)(sizeof(__Request) - 584) + msgh_size_delta)
+		return MIG_BAD_ARGUMENTS;
+	msgh_size -= msgh_size_delta;
+#endif	/* __MigTypeCheck */
+
+	*In1PP = In1P = (__Request *) ((pointer_t) In0P + msgh_size_delta - 8);
+
+#if defined(__NDR_convert__int_rep__Request__exception_raise_state_identity_t__old_stateCnt__defined)
+	if (In0P->NDR.int_rep != NDR_record.int_rep)
+		__NDR_convert__int_rep__Request__exception_raise_state_identity_t__old_stateCnt(&In1P->old_stateCnt, In1P->NDR.int_rep);
+#endif	/* __NDR_convert__int_rep__Request__exception_raise_state_identity_t__old_stateCnt__defined */
+#if	__MigTypeCheck
+	if (msgh_size != (mach_msg_size_t)(sizeof(__Request) - 584) + ((4 * In1P->old_stateCnt)))
+		return MIG_BAD_ARGUMENTS;
+#endif	/* __MigTypeCheck */
+
+#if	defined(__NDR_convert__int_rep__Request__exception_raise_state_identity_t__exception__defined) || \
+	defined(__NDR_convert__int_rep__Request__exception_raise_state_identity_t__code__defined) || \
+	defined(__NDR_convert__int_rep__Request__exception_raise_state_identity_t__codeCnt__defined) || \
+	defined(__NDR_convert__int_rep__Request__exception_raise_state_identity_t__flavor__defined) || \
+	defined(__NDR_convert__int_rep__Request__exception_raise_state_identity_t__old_state__defined) || \
+	defined(__NDR_convert__int_rep__Request__exception_raise_state_identity_t__old_stateCnt__defined)
+	if (In0P->NDR.int_rep != NDR_record.int_rep) {
+#if defined(__NDR_convert__int_rep__Request__exception_raise_state_identity_t__exception__defined)
+		__NDR_convert__int_rep__Request__exception_raise_state_identity_t__exception(&In0P->exception, In0P->NDR.int_rep);
+#endif	/* __NDR_convert__int_rep__Request__exception_raise_state_identity_t__exception__defined */
+#if defined(__NDR_convert__int_rep__Request__exception_raise_state_identity_t__code__defined)
+		__NDR_convert__int_rep__Request__exception_raise_state_identity_t__code(&In0P->code, In0P->NDR.int_rep, In0P->codeCnt);
+#endif	/* __NDR_convert__int_rep__Request__exception_raise_state_identity_t__code__defined */
+#if defined(__NDR_convert__int_rep__Request__exception_raise_state_identity_t__flavor__defined)
+		__NDR_convert__int_rep__Request__exception_raise_state_identity_t__flavor(&In1P->flavor, In0P->NDR.int_rep);
+#endif	/* __NDR_convert__int_rep__Request__exception_raise_state_identity_t__flavor__defined */
+#if defined(__NDR_convert__int_rep__Request__exception_raise_state_identity_t__old_state__defined)
+		__NDR_convert__int_rep__Request__exception_raise_state_identity_t__old_state(&In1P->old_state, In0P->NDR.int_rep, In1P->old_stateCnt);
+#endif	/* __NDR_convert__int_rep__Request__exception_raise_state_identity_t__old_state__defined */
+	}
+#endif	/* defined(__NDR_convert__int_rep...) */
+
+#if	defined(__NDR_convert__char_rep__Request__exception_raise_state_identity_t__exception__defined) || \
+	defined(__NDR_convert__char_rep__Request__exception_raise_state_identity_t__code__defined) || \
+	0 || \
+	defined(__NDR_convert__char_rep__Request__exception_raise_state_identity_t__flavor__defined) || \
+	defined(__NDR_convert__char_rep__Request__exception_raise_state_identity_t__old_state__defined) || \
+	0
+	if (In0P->NDR.char_rep != NDR_record.char_rep) {
+#if defined(__NDR_convert__char_rep__Request__exception_raise_state_identity_t__exception__defined)
+		__NDR_convert__char_rep__Request__exception_raise_state_identity_t__exception(&In0P->exception, In0P->NDR.char_rep);
+#endif	/* __NDR_convert__char_rep__Request__exception_raise_state_identity_t__exception__defined */
+#if defined(__NDR_convert__char_rep__Request__exception_raise_state_identity_t__code__defined)
+		__NDR_convert__char_rep__Request__exception_raise_state_identity_t__code(&In0P->code, In0P->NDR.char_rep, In0P->codeCnt);
+#endif	/* __NDR_convert__char_rep__Request__exception_raise_state_identity_t__code__defined */
+#if defined(__NDR_convert__char_rep__Request__exception_raise_state_identity_t__flavor__defined)
+		__NDR_convert__char_rep__Request__exception_raise_state_identity_t__flavor(&In1P->flavor, In0P->NDR.char_rep);
+#endif	/* __NDR_convert__char_rep__Request__exception_raise_state_identity_t__flavor__defined */
+#if defined(__NDR_convert__char_rep__Request__exception_raise_state_identity_t__old_state__defined)
+		__NDR_convert__char_rep__Request__exception_raise_state_identity_t__old_state(&In1P->old_state, In0P->NDR.char_rep, In1P->old_stateCnt);
+#endif	/* __NDR_convert__char_rep__Request__exception_raise_state_identity_t__old_state__defined */
+	}
+#endif	/* defined(__NDR_convert__char_rep...) */
+
+#if	defined(__NDR_convert__float_rep__Request__exception_raise_state_identity_t__exception__defined) || \
+	defined(__NDR_convert__float_rep__Request__exception_raise_state_identity_t__code__defined) || \
+	0 || \
+	defined(__NDR_convert__float_rep__Request__exception_raise_state_identity_t__flavor__defined) || \
+	defined(__NDR_convert__float_rep__Request__exception_raise_state_identity_t__old_state__defined) || \
+	0
+	if (In0P->NDR.float_rep != NDR_record.float_rep) {
+#if defined(__NDR_convert__float_rep__Request__exception_raise_state_identity_t__exception__defined)
+		__NDR_convert__float_rep__Request__exception_raise_state_identity_t__exception(&In0P->exception, In0P->NDR.float_rep);
+#endif	/* __NDR_convert__float_rep__Request__exception_raise_state_identity_t__exception__defined */
+#if defined(__NDR_convert__float_rep__Request__exception_raise_state_identity_t__code__defined)
+		__NDR_convert__float_rep__Request__exception_raise_state_identity_t__code(&In0P->code, In0P->NDR.float_rep, In0P->codeCnt);
+#endif	/* __NDR_convert__float_rep__Request__exception_raise_state_identity_t__code__defined */
+#if defined(__NDR_convert__float_rep__Request__exception_raise_state_identity_t__flavor__defined)
+		__NDR_convert__float_rep__Request__exception_raise_state_identity_t__flavor(&In1P->flavor, In0P->NDR.float_rep);
+#endif	/* __NDR_convert__float_rep__Request__exception_raise_state_identity_t__flavor__defined */
+#if defined(__NDR_convert__float_rep__Request__exception_raise_state_identity_t__old_state__defined)
+		__NDR_convert__float_rep__Request__exception_raise_state_identity_t__old_state(&In1P->old_state, In0P->NDR.float_rep, In1P->old_stateCnt);
+#endif	/* __NDR_convert__float_rep__Request__exception_raise_state_identity_t__old_state__defined */
+	}
+#endif	/* defined(__NDR_convert__float_rep...) */
+
+	return MACH_MSG_SUCCESS;
+}
+#endif /* !defined(__MIG_check__Request__exception_raise_state_identity_t__defined) */
+#endif /* __MIG_check__Request__exc_subsystem__ */
+#endif /* ( __MigTypeCheck || __NDR_convert__ ) */
+
+
+/* Routine exception_raise_state_identity */
+#ifdef	mig_external
+mig_external
+#else
+extern
+#endif	/* mig_external */
+kern_return_t breakpad_exception_raise_state_identity
+(
+	mach_port_t exception_port,
+	mach_port_t thread,
+	mach_port_t task,
+	exception_type_t exception,
+	exception_data_t code,
+	mach_msg_type_number_t codeCnt,
+	int *flavor,
+	thread_state_t old_state,
+	mach_msg_type_number_t old_stateCnt,
+	thread_state_t new_state,
+	mach_msg_type_number_t *new_stateCnt
+);
+
+/* Routine exception_raise_state_identity */
+mig_internal novalue _Xexception_raise_state_identity
+	(mach_msg_header_t *InHeadP, mach_msg_header_t *OutHeadP)
+{
+
+#ifdef  __MigPackStructs
+#pragma pack(4)
+#endif
+	typedef struct {
+		mach_msg_header_t Head;
+		/* start of the kernel processed data */
+		mach_msg_body_t msgh_body;
+		mach_msg_port_descriptor_t thread;
+		mach_msg_port_descriptor_t task;
+		/* end of the kernel processed data */
+		NDR_record_t NDR;
+		exception_type_t exception;
+		mach_msg_type_number_t codeCnt;
+		integer_t code[2];
+		int flavor;
+		mach_msg_type_number_t old_stateCnt;
+		natural_t old_state[144];
+		mach_msg_trailer_t trailer;
+	} Request;
+#ifdef  __MigPackStructs
+#pragma pack()
+#endif
+	typedef __Request__exception_raise_state_identity_t __Request;
+	typedef __Reply__exception_raise_state_identity_t Reply;
+
+	/*
+	 * typedef struct {
+	 * 	mach_msg_header_t Head;
+	 * 	NDR_record_t NDR;
+	 * 	kern_return_t RetCode;
+	 * } mig_reply_error_t;
+	 */
+
+	Request *In0P = (Request *) InHeadP;
+	Request *In1P;
+	Reply *OutP = (Reply *) OutHeadP;
+#ifdef	__MIG_check__Request__exception_raise_state_identity_t__defined
+	kern_return_t check_result;
+#endif	/* __MIG_check__Request__exception_raise_state_identity_t__defined */
+
+	__DeclareRcvRpc(2403, "exception_raise_state_identity")
+	__BeforeRcvRpc(2403, "exception_raise_state_identity")
+
+#if	defined(__MIG_check__Request__exception_raise_state_identity_t__defined)
+	check_result = __MIG_check__Request__exception_raise_state_identity_t((__Request *)In0P, (__Request **)&In1P);
+	if (check_result != MACH_MSG_SUCCESS)
+		{ MIG_RETURN_ERROR(OutP, check_result); }
+#endif	/* defined(__MIG_check__Request__exception_raise_state_identity_t__defined) */
+
+	OutP->new_stateCnt = 144;
+
+	OutP->RetCode = breakpad_exception_raise_state_identity(In0P->Head.msgh_request_port, In0P->thread.name, In0P->task.name, In0P->exception, In0P->code, In0P->codeCnt, &In1P->flavor, In1P->old_state, In1P->old_stateCnt, OutP->new_state, &OutP->new_stateCnt);
+	if (OutP->RetCode != KERN_SUCCESS) {
+		MIG_RETURN_ERROR(OutP, OutP->RetCode);
+	}
+
+	OutP->NDR = NDR_record;
+
+
+	OutP->flavor = In1P->flavor;
+	OutP->Head.msgh_size = (mach_msg_size_t)(sizeof(Reply) - 576) + (((4 * OutP->new_stateCnt)));
+
+	__AfterRcvRpc(2403, "exception_raise_state_identity")
+}
+
+
+extern boolean_t exc_server(
+		mach_msg_header_t *InHeadP,
+		mach_msg_header_t *OutHeadP);
+
+extern mig_routine_t exc_server_routine(
+		mach_msg_header_t *InHeadP);
+
+
+/* Description of this subsystem, for use in direct RPC */
+const struct breakpad_exc_subsystem {
+	mig_server_routine_t 	server;	/* Server routine */
+	mach_msg_id_t	start;	/* Min routine number */
+	mach_msg_id_t	end;	/* Max routine number + 1 */
+	unsigned int	maxsize;	/* Max msg size */
+	vm_address_t	reserved;	/* Reserved */
+	struct routine_descriptor	/*Array of routine descriptors */
+		routine[3];
+} breakpad_exc_subsystem = {
+	exc_server_routine,
+	2401,
+	2404,
+	(mach_msg_size_t)sizeof(union __ReplyUnion__breakpad_exc_subsystem),
+	(vm_address_t)0,
+	{
+          { (mig_impl_routine_t) 0,
+            (mig_stub_routine_t) _Xexception_raise, 6, 0, (routine_arg_descriptor_t)0, (mach_msg_size_t)sizeof(__Reply__exception_raise_t)},
+          { (mig_impl_routine_t) 0,
+            (mig_stub_routine_t) _Xexception_raise_state, 9, 0, (routine_arg_descriptor_t)0, (mach_msg_size_t)sizeof(__Reply__exception_raise_state_t)},
+          { (mig_impl_routine_t) 0,
+            (mig_stub_routine_t) _Xexception_raise_state_identity, 11, 0, (routine_arg_descriptor_t)0, (mach_msg_size_t)sizeof(__Reply__exception_raise_state_identity_t)},
+	}
+};
+
+mig_external boolean_t exc_server
+	(mach_msg_header_t *InHeadP, mach_msg_header_t *OutHeadP)
+{
+	/*
+	 * typedef struct {
+	 * 	mach_msg_header_t Head;
+	 * 	NDR_record_t NDR;
+	 * 	kern_return_t RetCode;
+	 * } mig_reply_error_t;
+	 */
+
+	register mig_routine_t routine;
+
+	OutHeadP->msgh_bits = MACH_MSGH_BITS(MACH_MSGH_BITS_REPLY(InHeadP->msgh_bits), 0);
+	OutHeadP->msgh_remote_port = InHeadP->msgh_reply_port;
+	/* Minimal size: routine() will update it if different */
+	OutHeadP->msgh_size = (mach_msg_size_t)sizeof(mig_reply_error_t);
+	OutHeadP->msgh_local_port = MACH_PORT_NULL;
+	OutHeadP->msgh_id = InHeadP->msgh_id + 100;
+
+	if ((InHeadP->msgh_id > 2403) || (InHeadP->msgh_id < 2401) ||
+	    ((routine = breakpad_exc_subsystem.routine[InHeadP->msgh_id - 2401].stub_routine) == 0)) {
+		((mig_reply_error_t *)OutHeadP)->NDR = NDR_record;
+		((mig_reply_error_t *)OutHeadP)->RetCode = MIG_BAD_ID;
+		return FALSE;
+	}
+	(*routine) (InHeadP, OutHeadP);
+	return TRUE;
+}
+
+mig_external mig_routine_t exc_server_routine
+	(mach_msg_header_t *InHeadP)
+{
+	register int msgh_id;
+
+	msgh_id = InHeadP->msgh_id - 2401;
+
+	if ((msgh_id > 2) || (msgh_id < 0))
+		return 0;
+
+	return breakpad_exc_subsystem.routine[msgh_id].stub_routine;
+}
new file mode 100644
--- /dev/null
+++ b/toolkit/crashreporter/google-breakpad/src/client/mac/handler/breakpad_exc_server.h
@@ -0,0 +1,258 @@
+#ifndef	_exc_user_
+#define	_exc_user_
+
+/* Module exc */
+
+#include <string.h>
+#include <mach/ndr.h>
+#include <mach/boolean.h>
+#include <mach/kern_return.h>
+#include <mach/notify.h>
+#include <mach/mach_types.h>
+#include <mach/message.h>
+#include <mach/mig_errors.h>
+#include <mach/port.h>
+
+#ifdef AUTOTEST
+#ifndef FUNCTION_PTR_T
+#define FUNCTION_PTR_T
+typedef void (*function_ptr_t)(mach_port_t, char *, mach_msg_type_number_t);
+typedef struct {
+        char            *name;
+        function_ptr_t  function;
+} function_table_entry;
+typedef function_table_entry 	*function_table_t;
+#endif /* FUNCTION_PTR_T */
+#endif /* AUTOTEST */
+
+#ifndef	exc_MSG_COUNT
+#define	exc_MSG_COUNT	3
+#endif	/* exc_MSG_COUNT */
+
+#include <mach/std_types.h>
+#include <mach/mig.h>
+#include <mach/mig.h>
+#include <mach/mach_types.h>
+
+#ifdef __BeforeMigUserHeader
+__BeforeMigUserHeader
+#endif /* __BeforeMigUserHeader */
+
+#include <sys/cdefs.h>
+__BEGIN_DECLS
+
+
+/* Routine exception_raise */
+#ifdef	mig_external
+mig_external
+#else
+extern
+#endif	/* mig_external */
+kern_return_t exception_raise
+(
+	mach_port_t exception_port,
+	mach_port_t thread,
+	mach_port_t task,
+	exception_type_t exception,
+	exception_data_t code,
+	mach_msg_type_number_t codeCnt
+);
+
+/* Routine exception_raise_state */
+#ifdef	mig_external
+mig_external
+#else
+extern
+#endif	/* mig_external */
+kern_return_t exception_raise_state
+(
+	mach_port_t exception_port,
+	exception_type_t exception,
+	const exception_data_t code,
+	mach_msg_type_number_t codeCnt,
+	int *flavor,
+	const thread_state_t old_state,
+	mach_msg_type_number_t old_stateCnt,
+	thread_state_t new_state,
+	mach_msg_type_number_t *new_stateCnt
+);
+
+/* Routine exception_raise_state_identity */
+#ifdef	mig_external
+mig_external
+#else
+extern
+#endif	/* mig_external */
+kern_return_t exception_raise_state_identity
+(
+	mach_port_t exception_port,
+	mach_port_t thread,
+	mach_port_t task,
+	exception_type_t exception,
+	exception_data_t code,
+	mach_msg_type_number_t codeCnt,
+	int *flavor,
+	thread_state_t old_state,
+	mach_msg_type_number_t old_stateCnt,
+	thread_state_t new_state,
+	mach_msg_type_number_t *new_stateCnt
+);
+
+__END_DECLS
+
+/********************** Caution **************************/
+/* The following data types should be used to calculate  */
+/* maximum message sizes only. The actual message may be */
+/* smaller, and the position of the arguments within the */
+/* message layout may vary from what is presented here.  */
+/* For example, if any of the arguments are variable-    */
+/* sized, and less than the maximum is sent, the data    */
+/* will be packed tight in the actual message to reduce  */
+/* the presence of holes.                                */
+/********************** Caution **************************/
+
+/* typedefs for all requests */
+
+#ifndef __Request__exc_subsystem__defined
+#define __Request__exc_subsystem__defined
+
+#ifdef  __MigPackStructs
+#pragma pack(4)
+#endif
+	typedef struct {
+		mach_msg_header_t Head;
+		/* start of the kernel processed data */
+		mach_msg_body_t msgh_body;
+		mach_msg_port_descriptor_t thread;
+		mach_msg_port_descriptor_t task;
+		/* end of the kernel processed data */
+		NDR_record_t NDR;
+		exception_type_t exception;
+		mach_msg_type_number_t codeCnt;
+		integer_t code[2];
+	} __Request__exception_raise_t;
+#ifdef  __MigPackStructs
+#pragma pack()
+#endif
+
+#ifdef  __MigPackStructs
+#pragma pack(4)
+#endif
+	typedef struct {
+		mach_msg_header_t Head;
+		NDR_record_t NDR;
+		exception_type_t exception;
+		mach_msg_type_number_t codeCnt;
+		integer_t code[2];
+		int flavor;
+		mach_msg_type_number_t old_stateCnt;
+		natural_t old_state[144];
+	} __Request__exception_raise_state_t;
+#ifdef  __MigPackStructs
+#pragma pack()
+#endif
+
+#ifdef  __MigPackStructs
+#pragma pack(4)
+#endif
+	typedef struct {
+		mach_msg_header_t Head;
+		/* start of the kernel processed data */
+		mach_msg_body_t msgh_body;
+		mach_msg_port_descriptor_t thread;
+		mach_msg_port_descriptor_t task;
+		/* end of the kernel processed data */
+		NDR_record_t NDR;
+		exception_type_t exception;
+		mach_msg_type_number_t codeCnt;
+		integer_t code[2];
+		int flavor;
+		mach_msg_type_number_t old_stateCnt;
+		natural_t old_state[144];
+	} __Request__exception_raise_state_identity_t;
+#ifdef  __MigPackStructs
+#pragma pack()
+#endif
+#endif /* !__Request__exc_subsystem__defined */
+
+/* union of all requests */
+
+#ifndef __RequestUnion__exc_subsystem__defined
+#define __RequestUnion__exc_subsystem__defined
+union __RequestUnion__exc_subsystem {
+	__Request__exception_raise_t Request_exception_raise;
+	__Request__exception_raise_state_t Request_exception_raise_state;
+	__Request__exception_raise_state_identity_t Request_exception_raise_state_identity;
+};
+#endif /* !__RequestUnion__exc_subsystem__defined */
+/* typedefs for all replies */
+
+#ifndef __Reply__exc_subsystem__defined
+#define __Reply__exc_subsystem__defined
+
+#ifdef  __MigPackStructs
+#pragma pack(4)
+#endif
+	typedef struct {
+		mach_msg_header_t Head;
+		NDR_record_t NDR;
+		kern_return_t RetCode;
+	} __Reply__exception_raise_t;
+#ifdef  __MigPackStructs
+#pragma pack()
+#endif
+
+#ifdef  __MigPackStructs
+#pragma pack(4)
+#endif
+	typedef struct {
+		mach_msg_header_t Head;
+		NDR_record_t NDR;
+		kern_return_t RetCode;
+		int flavor;
+		mach_msg_type_number_t new_stateCnt;
+		natural_t new_state[144];
+	} __Reply__exception_raise_state_t;
+#ifdef  __MigPackStructs
+#pragma pack()
+#endif
+
+#ifdef  __MigPackStructs
+#pragma pack(4)
+#endif
+	typedef struct {
+		mach_msg_header_t Head;
+		NDR_record_t NDR;
+		kern_return_t RetCode;
+		int flavor;
+		mach_msg_type_number_t new_stateCnt;
+		natural_t new_state[144];
+	} __Reply__exception_raise_state_identity_t;
+#ifdef  __MigPackStructs
+#pragma pack()
+#endif
+#endif /* !__Reply__exc_subsystem__defined */
+
+/* union of all replies */
+
+#ifndef __ReplyUnion__exc_subsystem__defined
+#define __ReplyUnion__exc_subsystem__defined
+union __ReplyUnion__exc_subsystem {
+	__Reply__exception_raise_t Reply_exception_raise;
+	__Reply__exception_raise_state_t Reply_exception_raise_state;
+	__Reply__exception_raise_state_identity_t Reply_exception_raise_state_identity;
+};
+#endif /* !__RequestUnion__exc_subsystem__defined */
+
+#ifndef subsystem_to_name_map_exc
+#define subsystem_to_name_map_exc \
+    { "exception_raise", 2401 },\
+    { "exception_raise_state", 2402 },\
+    { "exception_raise_state_identity", 2403 }
+#endif
+
+#ifdef __AfterMigUserHeader
+__AfterMigUserHeader
+#endif /* __AfterMigUserHeader */
+
+#endif	 /* _exc_user_ */
new file mode 100644
--- /dev/null
+++ b/toolkit/crashreporter/google-breakpad/src/client/mac/handler/breakpad_nlist_64.cc
@@ -0,0 +1,381 @@
+/*
+ * Copyright (c) 1999 Apple Computer, Inc. All rights reserved.
+ *
+ * @APPLE_LICENSE_HEADER_START@
+ * 
+ * This file contains Original Code and/or Modifications of Original Code
+ * as defined in and that are subject to the Apple Public Source License
+ * Version 2.0 (the 'License'). You may not use this file except in
+ * compliance with the License. Please obtain a copy of the License at
+ * http://www.opensource.apple.com/apsl/ and read it before using this
+ * file.
+ * 
+ * The Original Code and all software distributed under the License are
+ * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
+ * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
+ * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
+ * Please see the License for the specific language governing rights and
+ * limitations under the License.
+ * 
+ * @APPLE_LICENSE_HEADER_END@
+ */
+/*
+ * Copyright (c) 1989, 1993
+ * The Regents of the University of California.  All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. All advertising materials mentioning features or use of this software
+ *    must display the following acknowledgement:
+ *      This product includes software developed by the University of
+ *      California, Berkeley and its contributors.
+ * 4. Neither the name of the University nor the names of its contributors
+ *    may be used to endorse or promote products derived from this software
+ *    without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+
+/* nealsid:
+ * This file was copied from libc/gen/nlist.c from Darwin's source code       
+ * The version of nlist used as a base is from 10.5.2, libc-498               
+ * http://www.opensource.apple.com/darwinsource/10.5.2/Libc-498/gen/nlist.c   
+ *                                                                            
+ * The full tarball is at:                                                    
+ * http://www.opensource.apple.com/darwinsource/tarballs/apsl/Libc-498.tar.gz 
+ *                                                                            
+ * I've modified it to be compatible with 64-bit images. However,
+ * 32-bit compatibility has not been retained. 
+*/
+
+#ifdef __LP64__
+
+#include <mach-o/nlist.h>
+#include <mach-o/loader.h>
+#include <mach-o/fat.h>
+#include <stdlib.h>
+#include <fcntl.h>
+#include <sys/types.h>
+#include <sys/uio.h>
+#include <unistd.h>
+#include "breakpad_nlist_64.h"
+#include <TargetConditionals.h>
+#include <stdio.h>
+#include <mach/mach.h>
+
+/* Stuff lifted from <a.out.h> and <sys/exec.h> since they are gone */
+/*
+ * Header prepended to each a.out file.
+ */
+struct exec {
+  unsigned short  a_machtype;     /* machine type */
+  unsigned short  a_magic;        /* magic number */
+  unsigned long a_text;         /* size of text segment */
+  unsigned long a_data;         /* size of initialized data */
+  unsigned long a_bss;          /* size of uninitialized data */
+  unsigned long a_syms;         /* size of symbol table */
+  unsigned long a_entry;        /* entry point */
+  unsigned long a_trsize;       /* size of text relocation */
+  unsigned long a_drsize;       /* size of data relocation */
+};
+
+#define OMAGIC  0407            /* old impure format */
+#define NMAGIC  0410            /* read-only text */
+#define ZMAGIC  0413            /* demand load format */
+
+#define N_BADMAG(x)                                                     \
+  (((x).a_magic)!=OMAGIC && ((x).a_magic)!=NMAGIC && ((x).a_magic)!=ZMAGIC)
+#define N_TXTOFF(x)                                     \
+  ((x).a_magic==ZMAGIC ? 0 : sizeof (struct exec))
+#define N_SYMOFF(x)                                                     \
+  (N_TXTOFF(x) + (x).a_text+(x).a_data + (x).a_trsize+(x).a_drsize)
+
+int
+__breakpad_fdnlist_64(int fd, breakpad_nlist *list, const char **symbolNames);
+
+/*
+ * nlist - retreive attributes from name list (string table version)
+ */
+
+int
+breakpad_nlist_64(const char *name,
+                  breakpad_nlist *list,
+                  const char **symbolNames) {
+  int fd, n;
+
+  fd = open(name, O_RDONLY, 0);
+  if (fd < 0)
+    return (-1);
+  n = __breakpad_fdnlist_64(fd, list, symbolNames);
+  (void)close(fd);
+  return (n);
+}
+
+/* Note: __fdnlist() is called from kvm_nlist in libkvm's kvm.c */
+
+int
+__breakpad_fdnlist_64(int fd, breakpad_nlist *list, const char **symbolNames) {
+  register breakpad_nlist *p, *q;
+  breakpad_nlist space[BUFSIZ/sizeof (breakpad_nlist)];
+
+  const register char *s1, *s2;
+  register int n, m;
+  int maxlen, nreq;
+  off_t sa;             /* symbol address */
+  off_t ss;             /* start of strings */
+  struct exec buf;
+  unsigned  arch_offset = 0;
+
+  maxlen = 500;
+  for (q = list, nreq = 0;
+       symbolNames[q-list] && symbolNames[q-list][0];
+       q++, nreq++) {
+
+    q->n_type = 0;
+    q->n_value = 0;
+    q->n_desc = 0;
+    q->n_sect = 0;
+    q->n_un.n_strx = 0;
+  }
+
+  if (read(fd, (char *)&buf, sizeof(buf)) != sizeof(buf) ||
+      (N_BADMAG(buf) && *((long *)&buf) != MH_MAGIC &&
+       NXSwapBigLongToHost(*((long *)&buf)) != FAT_MAGIC) &&
+      /* nealsid: The following is the big-endian ppc64 check */
+      (*((uint32_t*)&buf)) != FAT_MAGIC) {
+    return (-1);
+  }
+
+  /* Deal with fat file if necessary */
+  if (NXSwapBigLongToHost(*((long *)&buf)) == FAT_MAGIC ||
+      /* nealsid: The following is the big-endian ppc64 check */
+      *((int*)&buf) == FAT_MAGIC) {
+    struct host_basic_info hbi;
+    struct fat_header fh;
+    struct fat_arch *fat_archs, *fap;
+    unsigned i;
+    host_t host;
+
+    /* Get our host info */
+    host = mach_host_self();
+    i = HOST_BASIC_INFO_COUNT;
+    kern_return_t kr;
+    if ((kr=host_info(host, HOST_BASIC_INFO,
+                      (host_info_t)(&hbi), &i)) != KERN_SUCCESS) {
+      return (-1);
+    }
+    mach_port_deallocate(mach_task_self(), host);
+
+    /* Read in the fat header */
+    lseek(fd, 0, SEEK_SET);
+    if (read(fd, (char *)&fh, sizeof(fh)) != sizeof(fh)) {
+      return (-1);
+    }
+
+    /* Convert fat_narchs to host byte order */
+    fh.nfat_arch = NXSwapBigLongToHost(fh.nfat_arch);
+
+    /* Read in the fat archs */
+    fat_archs = (struct fat_arch *)malloc(fh.nfat_arch *
+                                          sizeof(struct fat_arch));
+    if (fat_archs == NULL) {
+      return (-1);
+    }
+    if (read(fd, (char *)fat_archs,
+             sizeof(struct fat_arch) * fh.nfat_arch) !=
+        sizeof(struct fat_arch) * fh.nfat_arch) {
+      free(fat_archs);
+      return (-1);
+    }
+
+    /*
+     * Convert archs to host byte ordering (a constraint of
+     * cpusubtype_getbestarch()
+     */
+    for (i = 0; i < fh.nfat_arch; i++) {
+      fat_archs[i].cputype =
+        NXSwapBigLongToHost(fat_archs[i].cputype);
+      fat_archs[i].cpusubtype =
+        NXSwapBigLongToHost(fat_archs[i].cpusubtype);
+      fat_archs[i].offset =
+        NXSwapBigLongToHost(fat_archs[i].offset);
+      fat_archs[i].size =
+        NXSwapBigLongToHost(fat_archs[i].size);
+      fat_archs[i].align =
+        NXSwapBigLongToHost(fat_archs[i].align);
+    }
+
+    fap = NULL;
+    for (i = 0; i < fh.nfat_arch; i++) {
+      /* nealsid: Although the original Apple code uses host_info */
+      /* to retrieve the CPU type, the host_info will still return */
+      /* CPU_TYPE_X86 even if running as an x86_64 binary. Given that */
+      /* this code isn't necessary on i386, I've decided to hardcode */
+      /* looking for a 64-bit binary */
+#if TARGET_CPU_X86_64
+      if (fat_archs[i].cputype == CPU_TYPE_X86_64) {
+#elif TARGET_CPU_PPC64
+      if (fat_archs[i].cputype == CPU_TYPE_POWERPC64) {
+#else
+#error undefined cpu!
+        {
+#endif
+          fap = &fat_archs[i];
+          break;
+        }
+      }
+
+      if (!fap) {
+        free(fat_archs);
+        return (-1);
+      }
+      arch_offset = fap->offset;
+      free(fat_archs);
+
+      /* Read in the beginning of the architecture-specific file */
+      lseek(fd, arch_offset, SEEK_SET);
+      if (read(fd, (char *)&buf, sizeof(buf)) != sizeof(buf)) {
+        return (-1);
+      }
+    }
+
+    if (*((int *)&buf) == MH_MAGIC_64) {
+      struct mach_header_64 mh;
+      struct load_command *load_commands, *lcp;
+      struct symtab_command *stp;
+      long i;
+
+      lseek(fd, arch_offset, SEEK_SET);
+      if (read(fd, (char *)&mh, sizeof(mh)) != sizeof(mh)) {
+        return (-1);
+      }
+      load_commands = (struct load_command *)malloc(mh.sizeofcmds);
+      if (load_commands == NULL) {
+        return (-1);
+      }
+      if (read(fd, (char *)load_commands, mh.sizeofcmds) !=
+          mh.sizeofcmds) {
+        free(load_commands);
+        return (-1);
+      }
+      stp = NULL;
+      lcp = load_commands;
+      // nealsid:iterate through all load commands, looking for
+      // LC_SYMTAB load command
+      for (i = 0; i < mh.ncmds; i++) {
+        if (lcp->cmdsize % sizeof(long) != 0 ||
+            lcp->cmdsize <= 0 ||
+            (char *)lcp + lcp->cmdsize >
+            (char *)load_commands + mh.sizeofcmds) {
+          free(load_commands);
+          return (-1);
+        }
+        if (lcp->cmd == LC_SYMTAB) {
+          if (lcp->cmdsize !=
+              sizeof(struct symtab_command)) {
+            free(load_commands);
+            return (-1);
+          }
+          stp = (struct symtab_command *)lcp;
+          break;
+        }
+        lcp = (struct load_command *)
+          ((char *)lcp + lcp->cmdsize);
+      }
+      if (stp == NULL) {
+        free(load_commands);
+        return (-1);
+      }
+      // sa points to the beginning of the symbol table
+      sa = stp->symoff + arch_offset;
+      // ss points to the beginning of the string table
+      ss = stp->stroff + arch_offset;
+      // n is the number of bytes in the symbol table
+      // each symbol table entry is an nlist structure
+      n = stp->nsyms * sizeof(breakpad_nlist);
+      free(load_commands);
+    }
+    else {
+      sa = N_SYMOFF(buf) + arch_offset;
+      ss = sa + buf.a_syms + arch_offset;
+      n = buf.a_syms;
+    }
+
+    lseek(fd, sa, SEEK_SET);
+
+    // the algorithm here is to read the nlist entries in m-sized
+    // chunks into q.  q is then iterated over. for each entry in q,
+    // use the string table index(q->n_un.n_strx) to read the symbol 
+    // name, then scan the nlist entries passed in by the user(via p),
+    // and look for a match
+    while (n) {
+      long savpos;
+
+      m = sizeof (space);
+      if (n < m)
+        m = n;
+      if (read(fd, (char *)space, m) != m)
+        break;
+      n -= m;
+      savpos = lseek(fd, 0, SEEK_CUR);
+      for (q = space; (m -= sizeof(breakpad_nlist)) >= 0; q++) {
+        char nambuf[BUFSIZ];
+
+        if (q->n_un.n_strx == 0 || q->n_type & N_STAB)
+          continue;
+
+        // seek to the location in the binary where the symbol
+        // name is stored & read it into memory
+        lseek(fd, ss+q->n_un.n_strx, SEEK_SET);
+        read(fd, nambuf, maxlen+1);
+        s2 = nambuf;
+        for (p = list; 
+             symbolNames[p-list] && 
+               symbolNames[p-list][0]; 
+             p++) {
+          // get the symbol name the user has passed in that 
+          // corresponds to the nlist entry that we're looking at
+          s1 = symbolNames[p - list];
+          while (*s1) {
+            if (*s1++ != *s2++)
+              goto cont;
+          }
+          if (*s2)
+            goto cont;
+
+          p->n_value = q->n_value;
+          p->n_type = q->n_type;
+          p->n_desc = q->n_desc;
+          p->n_sect = q->n_sect;
+          p->n_un.n_strx = q->n_un.n_strx;
+          if (--nreq == 0)
+            return (nreq);
+
+          break;
+        cont:           ;
+        }
+      }
+      lseek(fd, savpos, SEEK_SET);
+    }
+    return (nreq);
+  }
+
+#endif  /* __LP64__ */
new file mode 100644
--- /dev/null
+++ b/toolkit/crashreporter/google-breakpad/src/client/mac/handler/breakpad_nlist_64.h
@@ -0,0 +1,43 @@
+// Copyright (c) 2008, Google Inc.
+// All rights reserved
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// breakpad_nlist.h
+//
+// This file is meant to provide a header for clients of the modified
+// nlist function implemented to work on 64-bit.
+
+#ifndef CLIENT_MAC_HANDLER_BREAKPAD_NLIST_H__
+
+typedef struct nlist_64 breakpad_nlist;
+
+int
+breakpad_nlist_64(const char *name,
+                  breakpad_nlist *list,
+                  const char **symbolNames);
+
+#endif  /* CLIENT_MAC_HANDLER_BREAKPAD_NLIST_H__ */
--- a/toolkit/crashreporter/google-breakpad/src/client/mac/handler/dynamic_images.cc
+++ b/toolkit/crashreporter/google-breakpad/src/client/mac/handler/dynamic_images.cc
@@ -28,305 +28,410 @@
 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 
 extern "C" { // needed to compile on Leopard
   #include <mach-o/nlist.h>
   #include <stdlib.h>
   #include <stdio.h>
 }
 
+#include "breakpad_nlist_64.h"
+#include <dlfcn.h>
+#include <mach/mach_vm.h>
 #include <algorithm>
 #include "client/mac/handler/dynamic_images.h"
 
 namespace google_breakpad {
-  
+
 //==============================================================================
 // Returns the size of the memory region containing |address| and the
 // number of bytes from |address| to the end of the region.
 // We potentially, will extend the size of the original
 // region by the size of the following region if it's contiguous with the
 // first in order to handle cases when we're reading strings and they
 // straddle two vm regions.
 //
-static vm_size_t GetMemoryRegionSize(task_port_t target_task,
-                                     const void* address,
-                                     vm_size_t *size_to_end) {
-  vm_address_t region_base = (vm_address_t)address;
-  vm_size_t region_size;
+static mach_vm_size_t GetMemoryRegionSize(task_port_t target_task,
+                                          const void* address,
+                                          mach_vm_size_t *size_to_end) {
+  mach_vm_address_t region_base = (mach_vm_address_t)address;
+  mach_vm_size_t region_size;
   natural_t nesting_level = 0;
-  vm_region_submap_info submap_info;
-  mach_msg_type_number_t info_count = VM_REGION_SUBMAP_INFO_COUNT;
-  
+  vm_region_submap_info_64 submap_info;
+  mach_msg_type_number_t info_count = VM_REGION_SUBMAP_INFO_COUNT_64;
+
   // Get information about the vm region containing |address|
-  kern_return_t result = 
-    vm_region_recurse(target_task,
-                      &region_base,
-                      &region_size,
-                      &nesting_level, 
-                      reinterpret_cast<vm_region_recurse_info_t>(&submap_info),
-                      &info_count);
-  
+  vm_region_recurse_info_t region_info;
+  region_info = reinterpret_cast<vm_region_recurse_info_t>(&submap_info);
+
+  kern_return_t result =
+    mach_vm_region_recurse(target_task,
+                           &region_base,
+                           &region_size,
+                           &nesting_level,
+                           region_info,
+                           &info_count);
+
   if (result == KERN_SUCCESS) {
     // Get distance from |address| to the end of this region
-    *size_to_end = region_base + region_size -(vm_address_t)address;
+    *size_to_end = region_base + region_size -(mach_vm_address_t)address;
 
     // If we want to handle strings as long as 4096 characters we may need
     // to check if there's a vm region immediately following the first one.
     // If so, we need to extend |*size_to_end| to go all the way to the end
     // of the second region.
     if (*size_to_end < 4096) {
       // Second region starts where the first one ends
-      vm_address_t region_base2 =
-        (vm_address_t)(region_base + region_size);
-      vm_size_t region_size2;
+      mach_vm_address_t region_base2 =
+        (mach_vm_address_t)(region_base + region_size);
+      mach_vm_size_t region_size2;
 
       // Get information about the following vm region
-      result = 
-        vm_region_recurse(
-                      target_task,
-                      &region_base2,
-                      &region_size2,
-                      &nesting_level, 
-                      reinterpret_cast<vm_region_recurse_info_t>(&submap_info),
-                      &info_count);
-      
+      result =
+        mach_vm_region_recurse(target_task,
+                               &region_base2,
+                               &region_size2,
+                               &nesting_level,
+                               region_info,
+                               &info_count);
+
       // Extend region_size to go all the way to the end of the 2nd region
       if (result == KERN_SUCCESS
           && region_base2 == region_base + region_size) {
         region_size += region_size2;
       }
     }
 
-    *size_to_end = region_base + region_size -(vm_address_t)address;
+    *size_to_end = region_base + region_size -(mach_vm_address_t)address;
   } else {
     region_size = 0;
     *size_to_end = 0;
   }
-  
-  return region_size;   
+
+  return region_size;
 }
 
 #define kMaxStringLength 8192
 //==============================================================================
 // Reads a NULL-terminated string from another task.
 //
 // Warning!  This will not read any strings longer than kMaxStringLength-1
 //
 static void* ReadTaskString(task_port_t target_task,
                             const void* address) {
   // The problem is we don't know how much to read until we know how long
   // the string is. And we don't know how long the string is, until we've read
   // the memory!  So, we'll try to read kMaxStringLength bytes
-  // (or as many bytes as we can until we reach the end of the vm region).  
-  vm_size_t size_to_end;
+  // (or as many bytes as we can until we reach the end of the vm region).
+  mach_vm_size_t size_to_end;
   GetMemoryRegionSize(target_task, address, &size_to_end);
-  
+
   if (size_to_end > 0) {
-    vm_size_t size_to_read =
+    mach_vm_size_t size_to_read =
       size_to_end > kMaxStringLength ? kMaxStringLength : size_to_end;
 
-    return ReadTaskMemory(target_task, address, size_to_read);
+    kern_return_t kr;
+    return ReadTaskMemory(target_task, address, size_to_read, &kr);
   }
-  
+
   return NULL;
 }
 
 //==============================================================================
 // Reads an address range from another task.  A block of memory is malloced
 // and should be freed by the caller.
 void* ReadTaskMemory(task_port_t target_task,
                      const void* address,
-                     size_t length) {
+                     size_t length,
+                     kern_return_t *kr) {
   void* result = NULL;
-  vm_address_t page_address = reinterpret_cast<vm_address_t>(address) & (-4096);
-  vm_address_t last_page_address =
-    (reinterpret_cast<vm_address_t>(address) + length + 4095) & (-4096);
-  vm_size_t page_size = last_page_address - page_address;
+  int systemPageSize = getpagesize();
+
+  // use the negative of the page size for the mask to find the page address
+  mach_vm_address_t page_address =
+      reinterpret_cast<mach_vm_address_t>(address) & (-systemPageSize);
+
+  mach_vm_address_t last_page_address =
+      (reinterpret_cast<mach_vm_address_t>(address) + length +
+       (systemPageSize - 1)) & (-systemPageSize);
+
+  mach_vm_size_t page_size = last_page_address - page_address;
   uint8_t* local_start;
   uint32_t local_length;
 
-  kern_return_t r = vm_read(target_task,
-                            page_address,
-                            page_size,
-                            reinterpret_cast<vm_offset_t*>(&local_start),
-                            &local_length);
+  kern_return_t r;
+
+  r = mach_vm_read(target_task,
+                   page_address,
+                   page_size,
+                   reinterpret_cast<vm_offset_t*>(&local_start),
+                   &local_length);
+
+
+  if (kr != NULL) {
+    *kr = r;
+  }
 
   if (r == KERN_SUCCESS) {
     result = malloc(length);
     if (result != NULL) {
-      memcpy(result, &local_start[(uint32_t)address - page_address], length);
+      memcpy(result,
+             &local_start[(mach_vm_address_t)address - page_address],
+             length);
     }
-    vm_deallocate(mach_task_self(), (uintptr_t)local_start, local_length);
+    mach_vm_deallocate(mach_task_self(), (uintptr_t)local_start, local_length);
   }
-  
+
   return result;
 }
 
 #pragma mark -
 
 //==============================================================================
 // Initializes vmaddr_, vmsize_, and slide_
-void DynamicImage::CalculateMemoryInfo() {
-  mach_header *header = GetMachHeader();
+void DynamicImage::CalculateMemoryAndVersionInfo() {
+  breakpad_mach_header *header = GetMachHeader();
+
+  // unless we can process the header, ensure that calls to
+  // IsValid() will return false
+  vmaddr_ = 0;
+  vmsize_ = 0;
+  slide_ = 0;
+  version_ = 0;
+
+  bool foundTextSection = false;
+  bool foundDylibIDCommand = false;
+  
+#if __LP64__
+  if(header->magic != MH_MAGIC_64) {
+    return;
+  }
+#else
+  if(header->magic != MH_MAGIC) {
+    return;
+  }
+#endif
+
+#ifdef __LP64__
+  const uint32_t segmentLoadCommand = LC_SEGMENT_64;
+#else
+  const uint32_t segmentLoadCommand = LC_SEGMENT;
+#endif
 
   const struct load_command *cmd =
     reinterpret_cast<const struct load_command *>(header + 1);
 
   for (unsigned int i = 0; cmd && (i < header->ncmds); ++i) {
-    if (cmd->cmd == LC_SEGMENT) {
-      const struct segment_command *seg =
-        reinterpret_cast<const struct segment_command *>(cmd);
+    if (!foundTextSection) {
+      if (cmd->cmd == segmentLoadCommand) {
+        const breakpad_mach_segment_command *seg =
+            reinterpret_cast<const breakpad_mach_segment_command *>(cmd);
+
+        if (!strcmp(seg->segname, "__TEXT")) {
+          vmaddr_ = seg->vmaddr;
+          vmsize_ = seg->vmsize;
+          slide_ = 0;
 
-      if (!strcmp(seg->segname, "__TEXT")) {
-        vmaddr_ = seg->vmaddr;
-        vmsize_ = seg->vmsize;
-        slide_ = 0;
-        
-        if (seg->fileoff == 0  &&  seg->filesize != 0) {
-          slide_ = (uintptr_t)GetLoadAddress() - (uintptr_t)seg->vmaddr;
+          if (seg->fileoff == 0  &&  seg->filesize != 0) {
+            slide_ = (uintptr_t)GetLoadAddress() - (uintptr_t)seg->vmaddr;
+          }
+          foundTextSection = true;
         }
-        return;
       }
     }
 
+    if (!foundDylibIDCommand) {
+      if (cmd->cmd == LC_ID_DYLIB) {
+        const struct dylib_command *dc =
+            reinterpret_cast<const struct dylib_command *>(cmd);
+
+        version_ = dc->dylib.current_version;
+        foundDylibIDCommand = true;
+      }
+    }
+
+    if (foundDylibIDCommand && foundTextSection) {
+      return;
+    }
+
     cmd = reinterpret_cast<const struct load_command *>
       (reinterpret_cast<const char *>(cmd) + cmd->cmdsize);
   }
-  
-  // we failed - a call to IsValid() will return false
-  vmaddr_ = 0;
-  vmsize_ = 0;
-  slide_ = 0;
+
 }
 
 void DynamicImage::Print() {
   const char *path = GetFilePath();
   if (!path) {
     path = "(unknown)";
   }
   printf("%p: %s\n", GetLoadAddress(), path);
-  mach_header *header = GetMachHeader();
+  breakpad_mach_header *header = GetMachHeader();
   MachHeader(*header).Print();
   printf("vmaddr\t\t: %p\n", reinterpret_cast<void*>(GetVMAddr()));
-  printf("vmsize\t\t: %d\n", GetVMSize());
-  printf("slide\t\t: %d\n", GetVMAddrSlide());
+  printf("vmsize\t\t: %llu\n", GetVMSize());
+  printf("slide\t\t: %td\n", GetVMAddrSlide());
 }
 
 #pragma mark -
 
 //==============================================================================
 // Loads information about dynamically loaded code in the given task.
 DynamicImages::DynamicImages(mach_port_t task)
   : task_(task) {
   ReadImageInfoForTask();
 }
 
-//==============================================================================
-// This code was written using dyld_debug.c (from Darwin) as a guide.
-void DynamicImages::ReadImageInfoForTask() {
+void* DynamicImages::GetDyldAllImageInfosPointer()
+{
+
+  const char *imageSymbolName = "_dyld_all_image_infos";
+  const char *dyldPath = "/usr/lib/dyld";
+#ifndef __LP64__
   struct nlist l[8];
   memset(l, 0, sizeof(l) );
 
   // First we lookup the address of the "_dyld_all_image_infos" struct
   // which lives in "dyld".  This structure contains information about all
   // of the loaded dynamic images.
   struct nlist &list = l[0];
-  list.n_un.n_name = const_cast<char *>("_dyld_all_image_infos");
-  nlist("/usr/lib/dyld", &list);
-  
-  if (list.n_value) {
+  list.n_un.n_name = const_cast<char *>(imageSymbolName);
+  nlist(dyldPath,&list);
+  if(list.n_value) {
+    return reinterpret_cast<void*>(list.n_value);
+  }
+
+  return NULL;
+#else
+  struct nlist_64 l[8];
+  struct nlist_64 &list = l[0];
+
+  memset(l, 0, sizeof(l) );
+
+  const char *symbolNames[2] = { imageSymbolName, "\0" };
+
+  int invalidEntriesCount = breakpad_nlist_64(dyldPath,&list,symbolNames);
+
+  if(invalidEntriesCount != 0) {
+    return NULL;
+  }
+  assert(list.n_value);
+  return reinterpret_cast<void*>(list.n_value);
+#endif
+
+}
+//==============================================================================
+// This code was written using dyld_debug.c (from Darwin) as a guide.
+void DynamicImages::ReadImageInfoForTask() {
+  void *imageList = GetDyldAllImageInfosPointer();
+
+  if (imageList) {
+    kern_return_t kr;
     // Read the structure inside of dyld that contains information about
     // loaded images.  We're reading from the desired task's address space.
 
     // Here we make the assumption that dyld loaded at the same address in
     // the crashed process vs. this one.  This is an assumption made in
     // "dyld_debug.c" and is said to be nearly always valid.
     dyld_all_image_infos *dyldInfo = reinterpret_cast<dyld_all_image_infos*>
       (ReadTaskMemory(task_,
-                      reinterpret_cast<void*>(list.n_value),
-                      sizeof(dyld_all_image_infos)));
+                      reinterpret_cast<void*>(imageList),
+                      sizeof(dyld_all_image_infos), &kr));
 
     if (dyldInfo) {
       // number of loaded images
       int count = dyldInfo->infoArrayCount;
 
       // Read an array of dyld_image_info structures each containing
       // information about a loaded image.
       dyld_image_info *infoArray = reinterpret_cast<dyld_image_info*>
         (ReadTaskMemory(task_,
                         dyldInfo->infoArray,
-                        count*sizeof(dyld_image_info)));
+                        count*sizeof(dyld_image_info), &kr));
 
       image_list_.reserve(count);
 
       for (int i = 0; i < count; ++i) {
         dyld_image_info &info = infoArray[i];
 
         // First read just the mach_header from the image in the task.
-        mach_header *header = reinterpret_cast<mach_header*>
-          (ReadTaskMemory(task_, info.load_address_, sizeof(mach_header)));
+        breakpad_mach_header *header = reinterpret_cast<breakpad_mach_header*>
+          (ReadTaskMemory(task_,
+                          info.load_address_,
+                          sizeof(breakpad_mach_header), &kr));
 
         if (!header)
           break;   // bail on this dynamic image
-		
+
         // Now determine the total amount we really want to read based on the
-        // size of the load commands.  We need the header plus all of the 
+        // size of the load commands.  We need the header plus all of the
         // load commands.
-        unsigned int header_size = sizeof(mach_header) + header->sizeofcmds;
+        unsigned int header_size =
+            sizeof(breakpad_mach_header) + header->sizeofcmds;
+
         free(header);
 
-        header = reinterpret_cast<mach_header*>
-          (ReadTaskMemory(task_, info.load_address_, header_size));
+        header = reinterpret_cast<breakpad_mach_header*>
+          (ReadTaskMemory(task_, info.load_address_, header_size, &kr));
 
         // Read the file name from the task's memory space.
         char *file_path = NULL;
         if (info.file_path_) {
           // Although we're reading kMaxStringLength bytes, it's copied in the
           // the DynamicImage constructor below with the correct string length,
           // so it's not really wasting memory.
           file_path = reinterpret_cast<char*>
             (ReadTaskString(task_, info.file_path_));
         }
- 
+
         // Create an object representing this image and add it to our list.
-        DynamicImage *new_image = new DynamicImage(header,
-                                                   header_size,
-                                                   info.load_address_,
-                                                   file_path,
-                                                   info.file_mod_date_,
-                                                   task_);
+        DynamicImage *new_image;
+        new_image = new DynamicImage(header,
+                                     header_size,
+                                     (breakpad_mach_header*)info.load_address_,
+                                     file_path,
+                                     info.file_mod_date_,
+                                     task_);
 
         if (new_image->IsValid()) {
           image_list_.push_back(DynamicImageRef(new_image));
         } else {
           delete new_image;
         }
-        
+
         if (file_path) {
           free(file_path);
         }
       }
-      
+
       free(dyldInfo);
       free(infoArray);
-      
+
       // sorts based on loading address
       sort(image_list_.begin(), image_list_.end() );
+      // remove duplicates - this happens in certain strange cases
+      // You can see it in DashboardClient when Google Gadgets plugin
+      // is installed.  Apple's crash reporter log and gdb "info shared"
+      // both show the same library multiple times at the same address
+
+      vector<DynamicImageRef>::iterator it = unique(image_list_.begin(),
+                                                    image_list_.end() );
+      image_list_.erase(it, image_list_.end());
     }
-  }  
+  }
 }
 
 //==============================================================================
 DynamicImage  *DynamicImages::GetExecutableImage() {
   int executable_index = GetExecutableImageIndex();
-  
+
   if (executable_index >= 0) {
     return GetImage(executable_index);
   }
-  
+
   return NULL;
 }
 
 //==============================================================================
 // returns -1 if failure to find executable
 int DynamicImages::GetExecutableImageIndex() {
   int image_count = GetImageCount();
 
--- a/toolkit/crashreporter/google-breakpad/src/client/mac/handler/dynamic_images.h
+++ b/toolkit/crashreporter/google-breakpad/src/client/mac/handler/dynamic_images.h
@@ -63,89 +63,99 @@ typedef struct dyld_image_info {
 typedef struct dyld_all_image_infos {
   uint32_t                      version;  // == 1 in Mac OS X 10.4
   uint32_t                      infoArrayCount;
   const struct dyld_image_info  *infoArray;
   void*                         notification;
   bool                          processDetachedFromSharedRegion;
 } dyld_all_image_infos;
 
+// some typedefs to isolate 64/32 bit differences
+#ifdef __LP64__
+typedef mach_header_64 breakpad_mach_header;
+typedef segment_command_64 breakpad_mach_segment_command;
+#else
+typedef mach_header breakpad_mach_header;
+typedef segment_command breakpad_mach_segment_command;
+#endif
+
 //==============================================================================
 // A simple wrapper for a mach_header
 //
 // This could be fleshed out with some more interesting methods.
 class MachHeader {
  public:
-  explicit MachHeader(const mach_header &header) : header_(header) {}
+  explicit MachHeader(const breakpad_mach_header &header) : header_(header) {}
 
   void Print() {
     printf("magic\t\t: %4x\n", header_.magic);
     printf("cputype\t\t: %d\n", header_.cputype);
     printf("cpusubtype\t: %d\n", header_.cpusubtype);
     printf("filetype\t: %d\n", header_.filetype);
     printf("ncmds\t\t: %d\n", header_.ncmds);
     printf("sizeofcmds\t: %d\n", header_.sizeofcmds);
     printf("flags\t\t: %d\n", header_.flags);
   }
 
-  mach_header   header_;
+  breakpad_mach_header   header_;
 };
 
 //==============================================================================
 // Represents a single dynamically loaded mach-o image
 class DynamicImage {
  public:
-  DynamicImage(mach_header *header,       // we take ownership
-               int header_size,           // includes load commands
-               mach_header *load_address,
+  DynamicImage(breakpad_mach_header *header, // we take ownership
+               int header_size,              // includes load commands
+               breakpad_mach_header *load_address,
                char *inFilePath,
                uintptr_t image_mod_date,
                mach_port_t task)
     : header_(header),
       header_size_(header_size),
       load_address_(load_address),
       file_mod_date_(image_mod_date),
       task_(task) {
     InitializeFilePath(inFilePath);
-    CalculateMemoryInfo();
+    CalculateMemoryAndVersionInfo();
   }
 
   ~DynamicImage() {
     if (file_path_) {
       free(file_path_);
     }
     free(header_);
   }
 
   // Returns pointer to a local copy of the mach_header plus load commands
-  mach_header *GetMachHeader() {return header_;}
+  breakpad_mach_header *GetMachHeader() {return header_;}
 
   // Size of mach_header plus load commands
   int GetHeaderSize() const {return header_size_;}
 
   // Full path to mach-o binary
   char *GetFilePath() {return file_path_;}
 
   uintptr_t GetModDate() const {return file_mod_date_;}
 
   // Actual address where the image was loaded
-  mach_header *GetLoadAddress() const {return load_address_;}
+  breakpad_mach_header *GetLoadAddress() const {return load_address_;}
 
   // Address where the image should be loaded
-  uint32_t GetVMAddr() const {return vmaddr_;}
+  mach_vm_address_t GetVMAddr() const {return vmaddr_;}
 
   // Difference between GetLoadAddress() and GetVMAddr()
   ptrdiff_t GetVMAddrSlide() const {return slide_;}
 
   // Size of the image
-  uint32_t GetVMSize() const {return vmsize_;}
+  mach_vm_size_t GetVMSize() const {return vmsize_;}
 
   // Task owning this loaded image
   mach_port_t GetTask() {return task_;}
 
+  uint32_t GetVersion() {return version_;}
   // For sorting
   bool operator<(const DynamicImage &inInfo) {
     return GetLoadAddress() < inInfo.GetLoadAddress();
   }
 
   // Debugging
   void Print();
  
@@ -162,67 +172,53 @@ class DynamicImage {
       file_path_ = reinterpret_cast<char*>(malloc(path_size));
       strlcpy(file_path_, inFilePath, path_size);
     } else {
       file_path_ = NULL;
     }
   }
 
   // Initializes vmaddr_, vmsize_, and slide_
-  void CalculateMemoryInfo();
-
-#if 0   // currently not needed
-  // Copy constructor: we don't want this to be invoked,
-  // but here's the code in case we need to make it public some day.
-  DynamicImage(DynamicImage &inInfo)
-    : load_address_(inInfo.load_address_),
-      vmaddr_(inInfo.vmaddr_),
-      vmsize_(inInfo.vmsize_),
-      slide_(inInfo.slide_),
-      file_mod_date_(inInfo.file_mod_date_),
-      task_(inInfo.task_) {
-    // copy file path string
-    InitializeFilePath(inInfo.GetFilePath());
+  void CalculateMemoryAndVersionInfo();
 
-    // copy mach_header and load commands
-    header_ = reinterpret_cast<mach_header*>(malloc(inInfo.header_size_));
-    memcpy(header_, inInfo.header_, inInfo.header_size_);
-    header_size_ = inInfo.header_size_;
-  }
-#endif
+  breakpad_mach_header    *header_;        // our local copy of the header
+  int                     header_size_;    // mach_header plus load commands
+  breakpad_mach_header    *load_address_;  // base address image is mapped into
+  mach_vm_address_t       vmaddr_;
+  mach_vm_size_t          vmsize_;
+  ptrdiff_t               slide_;
+  uint32_t                version_;        // Dylib version
+  char                    *file_path_;     // path dyld used to load the image
+  uintptr_t               file_mod_date_;  // time_t of image file
 
-  mach_header          *header_;        // our local copy of the header
-  int                   header_size_;    // mach_header plus load commands
-  mach_header          *load_address_;  // base address image is mapped into
-  uint32_t             vmaddr_;
-  uint32_t             vmsize_;
-  ptrdiff_t            slide_;
-
-  char                 *file_path_;     // path dyld used to load the image
-  uintptr_t            file_mod_date_;  // time_t of image file
-
-  mach_port_t          task_;
+  mach_port_t             task_;
 };
 
 //==============================================================================
 // DynamicImageRef is just a simple wrapper for a pointer to
 // DynamicImage.  The reason we use it instead of a simple typedef is so
 // that we can use stl::sort() on a vector of DynamicImageRefs
 // and simple class pointers can't implement operator<().
 //
 class DynamicImageRef {
  public:
   explicit DynamicImageRef(DynamicImage *inP) : p(inP) {}
-  DynamicImageRef(const DynamicImageRef &inRef) : p(inRef.p) {}  // STL required
+  // The copy constructor is required by STL
+  DynamicImageRef(const DynamicImageRef &inRef) : p(inRef.p) {}
 
   bool operator<(const DynamicImageRef &inRef) const {
     return (*const_cast<DynamicImageRef*>(this)->p)
       < (*const_cast<DynamicImageRef&>(inRef).p);
   }
 
+  bool operator==(const DynamicImageRef &inInfo) const {
+    return (*const_cast<DynamicImageRef*>(this)->p).GetLoadAddress() ==
+        (*const_cast<DynamicImageRef&>(inInfo)).GetLoadAddress();
+  }
+
   // Be just like DynamicImage*
   DynamicImage  *operator->() {return p;}
   operator DynamicImage*() {return p;}
 
  private:
   DynamicImage  *p;
 };
 
@@ -261,33 +257,41 @@ class DynamicImages {
   // Debugging
   void Print() {
     for (int i = 0; i < (int)image_list_.size(); ++i) {
       image_list_[i]->Print();
     }
   }
 
   void TestPrint() {
+    const breakpad_mach_header *header;
     for (int i = 0; i < (int)image_list_.size(); ++i) {
       printf("dyld: %p: name = %s\n", _dyld_get_image_header(i),
-        _dyld_get_image_name(i) );
-      const mach_header *header = _dyld_get_image_header(i);
+             _dyld_get_image_name(i) );
+
+      const void *imageHeader = _dyld_get_image_header(i);
+      header = reinterpret_cast<const breakpad_mach_header*>(imageHeader);
+
       MachHeader(*header).Print();
     }
   }
 
  private:
   bool IsOurTask() {return task_ == mach_task_self();}
 
   // Initialization
   void ReadImageInfoForTask();
+  void* GetDyldAllImageInfosPointer();
 
   mach_port_t              task_;
   vector<DynamicImageRef>  image_list_;
 };
 
 // Returns a malloced block containing the contents of memory at a particular
 // location in another task.
-void* ReadTaskMemory(task_port_t target_task, const void* address, size_t len);
+void* ReadTaskMemory(task_port_t target_task,
+                     const void* address,
+                     size_t len,
+                     kern_return_t *kr);
 
 }   // namespace google_breakpad
 
 #endif // CLIENT_MAC_HANDLER_DYNAMIC_IMAGES_H__
--- a/toolkit/crashreporter/google-breakpad/src/client/mac/handler/exception_handler.cc
+++ b/toolkit/crashreporter/google-breakpad/src/client/mac/handler/exception_handler.cc
@@ -78,17 +78,17 @@ struct ExceptionParameters {
 struct ExceptionReplyMessage {
   mach_msg_header_t  header;
   NDR_record_t       ndr;
   kern_return_t      return_code;
 };
 
 // Only catch these three exceptions.  The other ones are nebulously defined
 // and may result in treating a non-fatal exception as fatal.
-exception_mask_t s_exception_mask = EXC_MASK_BAD_ACCESS | 
+exception_mask_t s_exception_mask = EXC_MASK_BAD_ACCESS |
 EXC_MASK_BAD_INSTRUCTION | EXC_MASK_ARITHMETIC | EXC_MASK_BREAKPOINT;
 
 extern "C"
 {
   // Forward declarations for functions that need "C" style compilation
   boolean_t exc_server(mach_msg_header_t *request,
                        mach_msg_header_t *reply);
 
@@ -132,30 +132,105 @@ extern "C"
                                    exception_type_t exception,
                                    exception_data_t exception_code,
                                    mach_msg_type_number_t exception_code_count,
                                    thread_state_flavor_t *target_flavor,
                                    thread_state_t thread_state,
                                    mach_msg_type_number_t thread_state_count,
                                    thread_state_t thread_state,
                                    mach_msg_type_number_t *thread_state_count);
+
+  kern_return_t breakpad_exception_raise_state(mach_port_t exception_port,
+                                               exception_type_t exception,
+                                               const exception_data_t code,
+                                               mach_msg_type_number_t codeCnt,
+                                               int *flavor,
+                                               const thread_state_t old_state,
+                                               mach_msg_type_number_t old_stateCnt,
+                                               thread_state_t new_state,
+                                               mach_msg_type_number_t *new_stateCnt
+                                               );
+
+  kern_return_t breakpad_exception_raise_state_identity(mach_port_t exception_port,
+                                                        mach_port_t thread,
+                                                        mach_port_t task,
+                                                        exception_type_t exception,
+                                                        exception_data_t code,
+                                                        mach_msg_type_number_t codeCnt,
+                                                        int *flavor,
+                                                        thread_state_t old_state,
+                                                        mach_msg_type_number_t old_stateCnt,
+                                                        thread_state_t new_state,
+                                                        mach_msg_type_number_t *new_stateCnt
+                                                        );
+
+  kern_return_t breakpad_exception_raise(mach_port_t port, mach_port_t failed_thread,
+                                         mach_port_t task,
+                                         exception_type_t exception,
+                                         exception_data_t code,
+                                         mach_msg_type_number_t code_count);
 }
 
+
+
+kern_return_t breakpad_exception_raise_state(mach_port_t exception_port,
+					     exception_type_t exception,
+					     const exception_data_t code,
+					     mach_msg_type_number_t codeCnt,
+					     int *flavor,
+					     const thread_state_t old_state,
+					     mach_msg_type_number_t old_stateCnt,
+					     thread_state_t new_state,
+					     mach_msg_type_number_t *new_stateCnt
+                                             )
+{
+  return KERN_SUCCESS;
+}
+
+kern_return_t breakpad_exception_raise_state_identity(mach_port_t exception_port,
+						      mach_port_t thread,
+						      mach_port_t task,
+						      exception_type_t exception,
+						      exception_data_t code,
+						      mach_msg_type_number_t codeCnt,
+						      int *flavor,
+						      thread_state_t old_state,
+						      mach_msg_type_number_t old_stateCnt,
+						      thread_state_t new_state,
+						      mach_msg_type_number_t *new_stateCnt
+                                                      )
+{
+  return KERN_SUCCESS;
+}
+
+kern_return_t breakpad_exception_raise(mach_port_t port, mach_port_t failed_thread,
+                                       mach_port_t task,
+                                       exception_type_t exception,
+                                       exception_data_t code,
+                                       mach_msg_type_number_t code_count) {
+
+  if (task != mach_task_self()) {
+    return KERN_FAILURE;
+  }
+  return ForwardException(task, failed_thread, exception, code, code_count);
+}
+
+
 ExceptionHandler::ExceptionHandler(const string &dump_path,
                                    FilterCallback filter,
                                    MinidumpCallback callback,
                                    void *callback_context,
                                    bool install_handler)
     : dump_path_(),
       filter_(filter),
       callback_(callback),
       callback_context_(callback_context),
       directCallback_(NULL),
       handler_thread_(NULL),
-      handler_port_(0),
+      handler_port_(MACH_PORT_NULL),
       previous_(NULL),
       installed_exception_handler_(false),
       is_in_teardown_(false),
       last_minidump_write_result_(false),
       use_minidump_write_mutex_(false) {
   // This will update to the ID and C-string pointers
   set_dump_path(dump_path);
   MinidumpGenerator::GatherSystemInformation();
@@ -168,17 +243,17 @@ ExceptionHandler::ExceptionHandler(Direc
                                    void *callback_context,
                                    bool install_handler)
     : dump_path_(),
       filter_(NULL),
       callback_(NULL),
       callback_context_(callback_context),
       directCallback_(callback),
       handler_thread_(NULL),
-      handler_port_(0),
+      handler_port_(MACH_PORT_NULL),
       previous_(NULL),
       installed_exception_handler_(false),
       is_in_teardown_(false),
       last_minidump_write_result_(false),
       use_minidump_write_mutex_(false) {
   MinidumpGenerator::GatherSystemInformation();
   Setup(install_handler);
 }
@@ -200,17 +275,17 @@ bool ExceptionHandler::WriteMinidump() {
     // Send an empty message to the handle port so that a minidump will
     // be written
     SendEmptyMachMessage();
 
     // Wait for the minidump writer to complete its writing.  It will unlock
     // the mutex when completed
     pthread_mutex_lock(&minidump_write_mutex_);
   }
-  
+
   use_minidump_write_mutex_ = false;
   UpdateNextID();
   return last_minidump_write_result_;
 }
 
 // static
 bool ExceptionHandler::WriteMinidump(const string &dump_path,
                                      MinidumpCallback callback,
@@ -251,46 +326,46 @@ bool ExceptionHandler::WriteMinidumpWith
       result = md.Write(next_minidump_path_c_);
     }
 
     // Call user specified callback (if any)
     if (callback_) {
       // If the user callback returned true and we're handling an exception
       // (rather than just writing out the file), then we should exit without
       // forwarding the exception to the next handler.
-      if (callback_(dump_path_c_, next_minidump_id_c_, callback_context_, 
+      if (callback_(dump_path_c_, next_minidump_id_c_, callback_context_,
                     result)) {
         if (exception_type && exception_code)
           _exit(exception_type);
       }
     }
   }
-  
+
   return result;
 }
 
 kern_return_t ForwardException(mach_port_t task, mach_port_t failed_thread,
                                exception_type_t exception,
                                exception_data_t code,
                                mach_msg_type_number_t code_count) {
   // At this time, we should have called Uninstall() on the exception handler
-  // so that the current exception ports are the ones that we should be 
+  // so that the current exception ports are the ones that we should be
   // forwarding to.
   ExceptionParameters current;
-  
+
   current.count = EXC_TYPES_COUNT;
   mach_port_t current_task = mach_task_self();
-  kern_return_t result = task_get_exception_ports(current_task, 
+  kern_return_t result = task_get_exception_ports(current_task,
                                                   s_exception_mask,
                                                   current.masks,
                                                   &current.count,
                                                   current.ports,
                                                   current.behaviors,
                                                   current.flavors);
-  
+
   // Find the first exception handler that matches the exception
   unsigned int found;
   for (found = 0; found < current.count; ++found) {
     if (current.masks[found] & (1 << exception)) {
       break;
     }
   }
 
@@ -370,22 +445,22 @@ void *ExceptionHandler::WaitForMessage(v
   while (1) {
     receive.header.msgh_local_port = self->handler_port_;
     receive.header.msgh_size = sizeof(receive);
     kern_return_t result = mach_msg(&(receive.header),
                                     MACH_RCV_MSG | MACH_RCV_LARGE, 0,
                                     sizeof(receive), self->handler_port_,
                                     MACH_MSG_TIMEOUT_NONE, MACH_PORT_NULL);
 
-    
+
     if (result == KERN_SUCCESS) {
       // Uninstall our handler so that we don't get in a loop if the process of
       // writing out a minidump causes an exception.  However, if the exception
       // was caused by a fork'd process, don't uninstall things
-      if (receive.task.name == mach_task_self())
+
       // If the actual exception code is zero, then we're calling this handler
       // in a way that indicates that we want to either exit this thread or
       // generate a minidump
       //
       // While reporting, all threads (except this one) must be suspended
       // to avoid misleading stacks.  If appropriate they will be resumed
       // afterwards.
       if (!receive.exception) {
@@ -413,124 +488,124 @@ void *ExceptionHandler::WaitForMessage(v
         self->ResumeThreads();
 
         if (self->use_minidump_write_mutex_)
           pthread_mutex_unlock(&self->minidump_write_mutex_);
       } else {
 
         // When forking a child process with the exception handler installed,
         // if the child crashes, it will send the exception back to the parent
-        // process.  The check for task == self_task() ensures that only 
-        // exceptions that occur in the parent process are caught and 
-        // processed.
+        // process.  The check for task == self_task() ensures that only
+        // exceptions that occur in the parent process are caught and
+        // processed.  If the exception was not caused by this task, we
+        // still need to call into the exception server and have it return
+        // KERN_FAILURE (see breakpad_exception_raise) in order for the kernel
+        // to move onto the host exception handler for the child task
         if (receive.task.name == mach_task_self()) {
           self->SuspendThreads();
-          
+
 #if USE_PROTECTED_ALLOCATIONS
         if(gBreakpadAllocator)
           gBreakpadAllocator->Unprotect();
 #endif
 
           // Generate the minidump with the exception data.
           self->WriteMinidumpWithException(receive.exception, receive.code[0],
                                            receive.thread.name);
-        
+
           self->UninstallHandler(true);
 
 #if USE_PROTECTED_ALLOCATIONS
         if(gBreakpadAllocator)
           gBreakpadAllocator->Protect();
 #endif
-
-          // Pass along the exception to the server, which will setup the 
-          // message and call catch_exception_raise() and put the KERN_SUCCESS
-          // into the reply.
-          ExceptionReplyMessage reply;
-          if (!exc_server(&receive.header, &reply.header))
-            exit(1);
+        }
+        // Pass along the exception to the server, which will setup the
+        // message and call breakpad_exception_raise() and put the return
+        // code into the reply.
+        ExceptionReplyMessage reply;
+        if (!exc_server(&receive.header, &reply.header))
+          exit(1);
 
-          // Send a reply and exit
-          result = mach_msg(&(reply.header), MACH_SEND_MSG,
-                            reply.header.msgh_size, 0, MACH_PORT_NULL,
-                            MACH_MSG_TIMEOUT_NONE, MACH_PORT_NULL);
-        } else {
-          // An exception occurred in a child process 
-        }
+        // Send a reply and exit
+        result = mach_msg(&(reply.header), MACH_SEND_MSG,
+                          reply.header.msgh_size, 0, MACH_PORT_NULL,
+                          MACH_MSG_TIMEOUT_NONE, MACH_PORT_NULL);
       }
     }
   }
 
   return NULL;
 }
 
 bool ExceptionHandler::InstallHandler() {
   try {
 #if USE_PROTECTED_ALLOCATIONS
     previous_ = new (gBreakpadAllocator->Allocate(sizeof(ExceptionParameters)) )
-      ExceptionParameters();    
+      ExceptionParameters();
 #else
     previous_ = new ExceptionParameters();
 #endif
-  
+
   }
   catch (std::bad_alloc) {
     return false;
   }
 
   // Save the current exception ports so that we can forward to them
   previous_->count = EXC_TYPES_COUNT;
   mach_port_t current_task = mach_task_self();
-  kern_return_t result = task_get_exception_ports(current_task, 
+  kern_return_t result = task_get_exception_ports(current_task,
                                                   s_exception_mask,
                                                   previous_->masks,
                                                   &previous_->count,
                                                   previous_->ports,
                                                   previous_->behaviors,
                                                   previous_->flavors);
-  
+
   // Setup the exception ports on this task
   if (result == KERN_SUCCESS)
     result = task_set_exception_ports(current_task, s_exception_mask,
                                       handler_port_, EXCEPTION_DEFAULT,
                                       THREAD_STATE_NONE);
 
   installed_exception_handler_ = (result == KERN_SUCCESS);
 
   return installed_exception_handler_;
 }
 
 bool ExceptionHandler::UninstallHandler(bool in_exception) {
   kern_return_t result = KERN_SUCCESS;
-  
+
   if (installed_exception_handler_) {
     mach_port_t current_task = mach_task_self();
-    
+
     // Restore the previous ports
     for (unsigned int i = 0; i < previous_->count; ++i) {
        result = task_set_exception_ports(current_task, previous_->masks[i],
                                         previous_->ports[i],
                                         previous_->behaviors[i],
                                         previous_->flavors[i]);
       if (result != KERN_SUCCESS)
         return false;
     }
-    
+
     // this delete should NOT happen if an exception just occurred!
     if (!in_exception) {
 #if USE_PROTECTED_ALLOCATIONS
       previous_->~ExceptionParameters();
 #else
-      delete previous_; 
+      delete previous_;
 #endif
     }
-    
+
     previous_ = NULL;
     installed_exception_handler_ = false;
   }
-  
+
   return result == KERN_SUCCESS;
 }
 
 bool ExceptionHandler::Setup(bool install_handler) {
   if (pthread_mutex_init(&minidump_write_mutex_, NULL))
     return false;
 
   // Create a receive right
@@ -547,42 +622,42 @@ bool ExceptionHandler::Setup(bool instal
     if (!InstallHandler())
       return false;
 
   if (result == KERN_SUCCESS) {
     // Install the handler in its own thread, detached as we won't be joining.
     pthread_attr_t attr;
     pthread_attr_init(&attr);
     pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED);
-    int thread_create_result = pthread_create(&handler_thread_, &attr, 
+    int thread_create_result = pthread_create(&handler_thread_, &attr,
                                               &WaitForMessage, this);
     pthread_attr_destroy(&attr);
     result = thread_create_result ? KERN_FAILURE : KERN_SUCCESS;
   }
 
   return result == KERN_SUCCESS ? true : false;
 }
 
 bool ExceptionHandler::Teardown() {
   kern_return_t result = KERN_SUCCESS;
   is_in_teardown_ = true;
 
   if (!UninstallHandler(false))
     return false;
-  
+
   // Send an empty message so that the handler_thread exits
   if (SendEmptyMachMessage()) {
     mach_port_t current_task = mach_task_self();
     result = mach_port_deallocate(current_task, handler_port_);
     if (result != KERN_SUCCESS)
       return false;
   } else {
     return false;
   }
-  
+
   handler_thread_ = NULL;
   handler_port_ = NULL;
   pthread_mutex_destroy(&minidump_write_mutex_);
 
   return result == KERN_SUCCESS;
 }
 
 bool ExceptionHandler::SendEmptyMachMessage() {
@@ -617,17 +692,17 @@ bool ExceptionHandler::SuspendThreads() 
 
   // suspend all of the threads except for this one
   for (unsigned int i = 0; i < thread_count; ++i) {
     if (threads_for_task[i] != mach_thread_self()) {
       if (thread_suspend(threads_for_task[i]))
         return false;
     }
   }
-  
+
   return true;
 }
 
 bool ExceptionHandler::ResumeThreads() {
   thread_act_port_array_t   threads_for_task;
   mach_msg_type_number_t    thread_count;
 
   if (task_threads(mach_task_self(), &threads_for_task, &thread_count))
@@ -635,13 +710,13 @@ bool ExceptionHandler::ResumeThreads() {
 
   // resume all of the threads except for this one
   for (unsigned int i = 0; i < thread_count; ++i) {
     if (threads_for_task[i] != mach_thread_self()) {
       if (thread_resume(threads_for_task[i]))
         return false;
     }
   }
-  
+
   return true;
 }
 
 }  // namespace google_breakpad
--- a/toolkit/crashreporter/google-breakpad/src/client/mac/handler/exception_handler.h
+++ b/toolkit/crashreporter/google-breakpad/src/client/mac/handler/exception_handler.h
@@ -53,24 +53,24 @@ class ExceptionHandler {
   // a minidump.  context is the parameter supplied by the user as
   // callback_context when the handler was created.
   //
   // If a FilterCallback returns true, Breakpad will continue processing,
   // attempting to write a minidump.  If a FilterCallback returns false, Breakpad
   // will immediately report the exception as unhandled without writing a
   // minidump, allowing another handler the opportunity to handle it.
   typedef bool (*FilterCallback)(void *context);
-  
+
   // A callback function to run after the minidump has been written.
   // |minidump_id| is a unique id for the dump, so the minidump
   // file is <dump_dir>/<minidump_id>.dmp.
-  // |context| is the value passed into the constructor. 
+  // |context| is the value passed into the constructor.
   // |succeeded| indicates whether a minidump file was successfully written.
   // Return true if the exception was fully handled and breakpad should exit.
-  // Return false to allow any other exception handlers to process the 
+  // Return false to allow any other exception handlers to process the
   // exception.
   typedef bool (*MinidumpCallback)(const char *dump_dir,
                                    const char *minidump_id,
                                    void *context, bool succeeded);
 
   // A callback function which will be called directly if an exception occurs.
   // This bypasses the minidump file writing and simply gives the client
   // the exception information.
@@ -80,17 +80,17 @@ class ExceptionHandler {
                                   mach_port_t thread_name);
 
   // Creates a new ExceptionHandler instance to handle writing minidumps.
   // Minidump files will be written to dump_path, and the optional callback
   // is called after writing the dump file, as described above.
   // If install_handler is true, then a minidump will be written whenever
   // an unhandled exception occurs.  If it is false, minidumps will only
   // be written when WriteMinidump is called.
-  ExceptionHandler(const string &dump_path, 
+  ExceptionHandler(const string &dump_path,
                    FilterCallback filter, MinidumpCallback callback,
                    void *callback_context, bool install_handler);
 
   // A special constructor if we want to bypass minidump writing and
   // simply get a callback with the exception information.
   ExceptionHandler(DirectCallback callback,
                    void *callback_context,
                    bool install_handler);
@@ -99,37 +99,37 @@ class ExceptionHandler {
 
   // Get and set the minidump path.
   string dump_path() const { return dump_path_; }
   void set_dump_path(const string &dump_path) {
     dump_path_ = dump_path;
     dump_path_c_ = dump_path_.c_str();
     UpdateNextID();  // Necessary to put dump_path_ in next_minidump_path_.
   }
-  
+
   // Writes a minidump immediately.  This can be used to capture the
   // execution state independently of a crash.  Returns true on success.
   bool WriteMinidump();
 
   // Convenience form of WriteMinidump which does not require an
   // ExceptionHandler instance.
   static bool WriteMinidump(const string &dump_path, MinidumpCallback callback,
                             void *callback_context);
 
  private:
   // Install the mach exception handler
   bool InstallHandler();
 
   // Uninstall the mach exception handler (if any)
   bool UninstallHandler(bool in_exception);
-      
+
   // Setup the handler thread, and if |install_handler| is true, install the
   // mach exception port handler
   bool Setup(bool install_handler);
-    
+
   // Uninstall the mach exception handler (if any) and terminate the helper
   // thread
   bool Teardown();
 
   // Send an "empty" mach message to the exception handler.  Return true on
   // success, false otherwise
   bool SendEmptyMachMessage();
 
@@ -144,30 +144,30 @@ class ExceptionHandler {
   // disallow copy ctor and operator=
   explicit ExceptionHandler(const ExceptionHandler &);
   void operator=(const ExceptionHandler &);
 
   // Generates a new ID and stores it in next_minidump_id_, and stores the
   // path of the next minidump to be written in next_minidump_path_.
   void UpdateNextID();
 
-  // These functions will suspend/resume all threads except for the 
+  // These functions will suspend/resume all threads except for the
   // reporting thread
   bool SuspendThreads();
   bool ResumeThreads();
-  
+
   // The destination directory for the minidump
   string dump_path_;
-  
+
   // The basename of the next minidump w/o extension
   string next_minidump_id_;
-  
+
   // The full path to the next minidump to be written, including extension
   string next_minidump_path_;
-  
+
   // Pointers to the UTF-8 versions of above
   const char *dump_path_c_;
   const char *next_minidump_id_c_;
   const char *next_minidump_path_c_;
 
   // The callback function and pointer to be passed back after the minidump
   // has been written
   FilterCallback filter_;
@@ -186,27 +186,27 @@ class ExceptionHandler {
   mach_port_t handler_port_;
 
   // These variables save the previous exception handler's data so that it
   // can be re-installed when this handler is uninstalled
   ExceptionParameters *previous_;
 
   // True, if we've installed the exception handler
   bool installed_exception_handler_;
-  
+
   // True, if we're in the process of uninstalling the exception handler and
   // the thread.
   bool is_in_teardown_;
-  
+
   // Save the last result of the last minidump
   bool last_minidump_write_result_;
-  
-  // A mutex for use when writing out a minidump that was requested on a 
+
+  // A mutex for use when writing out a minidump that was requested on a
   // thread other than the exception handler.
   pthread_mutex_t minidump_write_mutex_;
-  
+
   // True, if we're using the mutext to indicate when mindump writing occurs
   bool use_minidump_write_mutex_;
 };
 
 }  // namespace google_breakpad
 
 #endif  // CLIENT_MAC_HANDLER_EXCEPTION_HANDLER_H__
--- a/toolkit/crashreporter/google-breakpad/src/client/mac/handler/minidump_generator.cc
+++ b/toolkit/crashreporter/google-breakpad/src/client/mac/handler/minidump_generator.cc
@@ -25,58 +25,62 @@
 // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
 // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 
 #include <cstdio>
 
 #include <mach/host_info.h>
+#include <mach/mach_vm.h>
 #include <mach/vm_statistics.h>
 #include <mach-o/dyld.h>
 #include <mach-o/loader.h>
 #include <sys/sysctl.h>
 #include <sys/resource.h>
+#include <mach/mach_vm.h>
 
 #include <CoreFoundation/CoreFoundation.h>
 
 #include "client/mac/handler/minidump_generator.h"
 #include "client/minidump_file_writer-inl.h"
 #include "common/mac/file_id.h"
 #include "common/mac/string_utilities.h"
 
 using MacStringUtils::ConvertToString;
 using MacStringUtils::IntegerValueAtIndex;
 
 namespace google_breakpad {
 
-// constructor when generating from within the crashed process  
+// constructor when generating from within the crashed process
 MinidumpGenerator::MinidumpGenerator()
     : exception_type_(0),
       exception_code_(0),
       exception_thread_(0),
       crashing_task_(mach_task_self()),
       handler_thread_(mach_thread_self()),
       dynamic_images_(NULL) {
   GatherSystemInformation();
 }
 
-// constructor when generating from a different process than the crashed process  
-MinidumpGenerator::MinidumpGenerator(mach_port_t crashing_task, mach_port_t handler_thread)
+// constructor when generating from a different process than the
+// crashed process
+MinidumpGenerator::MinidumpGenerator(mach_port_t crashing_task,
+                                     mach_port_t handler_thread)
     : exception_type_(0),
       exception_code_(0),
       exception_thread_(0),
       crashing_task_(crashing_task),
       handler_thread_(handler_thread) {
   if (crashing_task != mach_task_self()) {
     dynamic_images_ = new DynamicImages(crashing_task_);
   } else {
     dynamic_images_ = NULL;
   }
-  
+
   GatherSystemInformation();
 }
 
 MinidumpGenerator::~MinidumpGenerator() {
   delete dynamic_images_;
 }
 
 char MinidumpGenerator::build_string_[16];
@@ -84,36 +88,39 @@ int MinidumpGenerator::os_major_version_
 int MinidumpGenerator::os_minor_version_ = 0;
 int MinidumpGenerator::os_build_number_ = 0;
 
 // static
 void MinidumpGenerator::GatherSystemInformation() {
   // If this is non-zero, then we've already gathered the information
   if (os_major_version_)
     return;
-  
+
   // This code extracts the version and build information from the OS
   CFStringRef vers_path =
     CFSTR("/System/Library/CoreServices/SystemVersion.plist");
   CFURLRef sys_vers =
-    CFURLCreateWithFileSystemPath(NULL, vers_path, kCFURLPOSIXPathStyle, false);
+    CFURLCreateWithFileSystemPath(NULL,
+                                  vers_path,
+                                  kCFURLPOSIXPathStyle,
+                                  false);
   CFDataRef data;
   SInt32 error;
   CFURLCreateDataAndPropertiesFromResource(NULL, sys_vers, &data, NULL, NULL,
                                            &error);
-  
+
   if (!data)
     return;
-  
+
   CFDictionaryRef list = static_cast<CFDictionaryRef>
     (CFPropertyListCreateFromXMLData(NULL, data, kCFPropertyListImmutable,
                                      NULL));
   if (!list)
     return;
-  
+
   CFStringRef build_version = static_cast<CFStringRef>
     (CFDictionaryGetValue(list, CFSTR("ProductBuildVersion")));
   CFStringRef product_version = static_cast<CFStringRef>
     (CFDictionaryGetValue(list, CFSTR("ProductVersion")));
   string build_str = ConvertToString(build_version);
   string product_str = ConvertToString(product_version);
 
   CFRelease(list);
@@ -198,112 +205,171 @@ bool MinidumpGenerator::Write(const char
     MDRawDirectory local_dir;
     for (int i = 0; (result) && (i < writer_count); ++i) {
       result = (this->*writers[i])(&local_dir);
 
       if (result)
         dir.CopyIndex(i, &local_dir);
     }
   }
-
   return result;
 }
 
-size_t MinidumpGenerator::CalculateStackSize(vm_address_t start_addr) {
-  vm_address_t stack_region_base = start_addr;
-  vm_size_t stack_region_size;
+size_t MinidumpGenerator::CalculateStackSize(mach_vm_address_t start_addr) {
+  mach_vm_address_t stack_region_base = start_addr;
+  mach_vm_size_t stack_region_size;
   natural_t nesting_level = 0;
-  vm_region_submap_info submap_info;
-  mach_msg_type_number_t info_count = VM_REGION_SUBMAP_INFO_COUNT;
-  kern_return_t result = 
-    vm_region_recurse(crashing_task_, &stack_region_base, &stack_region_size,
-                      &nesting_level, 
-                      reinterpret_cast<vm_region_recurse_info_t>(&submap_info),
-                      &info_count);
+  vm_region_submap_info_64 submap_info;
+  mach_msg_type_number_t info_count = VM_REGION_SUBMAP_INFO_COUNT_64;
 
-  if ((stack_region_base + stack_region_size) == 0xbffff000) {
-    // The stack for thread 0 needs to extend all the way to 0xc0000000
-    // For many processes the stack is first created in one page
-    // from 0xbffff000 - 0xc0000000 and is then later extended to
-    // a much larger size by creating a new VM region immediately below
-    // the initial page
+  vm_region_recurse_info_t region_info;
+  region_info = reinterpret_cast<vm_region_recurse_info_t>(&submap_info);
 
-    // include the original stack frame page (0xbffff000 - 0xc0000000)
-    stack_region_size += 0x1000;  
+  if (start_addr == 0) {
+    return 0;
   }
 
-  return result == KERN_SUCCESS ? 
+  kern_return_t result =
+    mach_vm_region_recurse(crashing_task_, &stack_region_base,
+                           &stack_region_size, &nesting_level,
+                           region_info,
+                           &info_count);
+
+  if (start_addr < stack_region_base) {
+    // probably stack corruption, since mach_vm_region had to go
+    // higher in the process address space to find a valid region.
+    return 0;
+  }
+
+
+  if ((stack_region_base + stack_region_size) == TOP_OF_THREAD0_STACK) {
+    // The stack for thread 0 needs to extend all the way to
+    // 0xc0000000 on 32 bit and 00007fff5fc00000 on 64bit.  HOWEVER,
+    // for many processes, the stack is first created in one page
+    // below this, and is then later extended to a much larger size by
+    // creating a new VM region immediately below the initial page.
+
+    // You can see this for yourself by running vmmap on a "hello,
+    // world" program
+
+    // Because of the above, we'll add 4k to include the original
+    // stack frame page.
+    // This method of finding the stack region needs to be done in
+    // a better way; the breakpad issue 247 is tracking this.
+    stack_region_size += 0x1000;
+  }
+
+  return result == KERN_SUCCESS ?
     stack_region_base + stack_region_size - start_addr : 0;
 }
 
 bool MinidumpGenerator::WriteStackFromStartAddress(
-    vm_address_t start_addr,
+    mach_vm_address_t start_addr,
     MDMemoryDescriptor *stack_location) {
   UntypedMDRVA memory(&writer_);
+
+  bool result = false;
   size_t size = CalculateStackSize(start_addr);
 
-  // If there's an error in the calculation, return at least the current
-  // stack information
-  if (size == 0)
-    size = 16;
+  if (size == 0) {
+      // In some situations the stack address for the thread can come back 0.
+      // In these cases we skip over the threads in question and stuff the
+      // stack with a clearly borked value.
+      start_addr = 0xDEADBEEF;
+      size = 16;
+      if (!memory.Allocate(size))
+        return false;
 
-  if (!memory.Allocate(size))
-    return false;
+      unsigned long long dummy_stack[2];  // Fill dummy stack with 16 bytes of
+                                          // junk.
+      dummy_stack[0] = 0xDEADBEEF;
+      dummy_stack[1] = 0xDEADBEEF;
+
+      result = memory.Copy(dummy_stack, size);
+  } else {
+
+    if (!memory.Allocate(size))
+      return false;
 
-  bool result;
-  if (dynamic_images_) {
-    void *stack_memory = ReadTaskMemory(crashing_task_, (void*)start_addr, size);
-    result = memory.Copy(stack_memory, size);
-    free(stack_memory);
-  } else {
-    result = memory.Copy(reinterpret_cast<const void *>(start_addr), size);
+    if (dynamic_images_) {
+
+      kern_return_t kr;
+
+      void *stack_memory = ReadTaskMemory(crashing_task_,
+                                          (void*)start_addr,
+                                          size,
+                                          &kr);
+
+      if (stack_memory == NULL) {
+        return false;
+      }
+
+      result = memory.Copy(stack_memory, size);
+      free(stack_memory);
+    } else {
+      result = memory.Copy(reinterpret_cast<const void *>(start_addr), size);
+    }
   }
-  
+
   stack_location->start_of_memory_range = start_addr;
   stack_location->memory = memory.location();
 
   return result;
 }
 
-#if TARGET_CPU_PPC
+#if TARGET_CPU_PPC || TARGET_CPU_PPC64
 bool MinidumpGenerator::WriteStack(breakpad_thread_state_data_t state,
                                    MDMemoryDescriptor *stack_location) {
-  ppc_thread_state_t *machine_state =
-    reinterpret_cast<ppc_thread_state_t *>(state);
-  vm_address_t start_addr = machine_state->r1;
+  breakpad_thread_state_t *machine_state =
+    reinterpret_cast<breakpad_thread_state_t *>(state);
+#if TARGET_CPU_PPC
+  mach_vm_address_t start_addr = machine_state->r1;
+#else
+  mach_vm_address_t start_addr = machine_state->__r1;
+#endif
   return WriteStackFromStartAddress(start_addr, stack_location);
 }
 
-u_int64_t MinidumpGenerator::CurrentPCForStack(breakpad_thread_state_data_t state) {
-  ppc_thread_state_t *machine_state =
-    reinterpret_cast<ppc_thread_state_t *>(state);
+u_int64_t
+MinidumpGenerator::CurrentPCForStack(breakpad_thread_state_data_t state) {
+  breakpad_thread_state_t *machine_state =
+    reinterpret_cast<breakpad_thread_state_t *>(state);
 
+#if TARGET_CPU_PPC
   return machine_state->srr0;
+#else
+  return machine_state->__srr0;
+#endif
 }
 
 bool MinidumpGenerator::WriteContext(breakpad_thread_state_data_t state,
                                      MDLocationDescriptor *register_location) {
-  TypedMDRVA<MDRawContextPPC> context(&writer_);
-  ppc_thread_state_t *machine_state =
-    reinterpret_cast<ppc_thread_state_t *>(state);
+  TypedMDRVA<MinidumpContext> context(&writer_);
+  breakpad_thread_state_t *machine_state =
+    reinterpret_cast<breakpad_thread_state_t *>(state);
 
   if (!context.Allocate())
     return false;
 
   *register_location = context.location();
-  MDRawContextPPC *context_ptr = context.get();
+  MinidumpContext *context_ptr = context.get();
   context_ptr->context_flags = MD_CONTEXT_PPC_BASE;
 
+#if TARGET_CPU_PPC64
+#define AddReg(a) context_ptr->a = machine_state->__ ## a
+#define AddGPR(a) context_ptr->gpr[a] = machine_state->__r ## a
+#else
 #define AddReg(a) context_ptr->a = machine_state->a
 #define AddGPR(a) context_ptr->gpr[a] = machine_state->r ## a
+#endif
+ 
   AddReg(srr0);
   AddReg(cr);
   AddReg(xer);
   AddReg(ctr);
-  AddReg(mq);
   AddReg(lr);
   AddReg(vrsave);
 
   AddGPR(0);
   AddGPR(1);
   AddGPR(2);
   AddGPR(3);
   AddGPR(4);
@@ -329,65 +395,118 @@ bool MinidumpGenerator::WriteContext(bre
   AddGPR(24);
   AddGPR(25);
   AddGPR(26);
   AddGPR(27);
   AddGPR(28);
   AddGPR(29);
   AddGPR(30);
   AddGPR(31);
+
+#if TARGET_CPU_PPC
+  /* The mq register  is only for PPC */
+  AddReg(mq);
+#endif
+
+
   return true;
 }
 
-#elif TARGET_CPU_X86
+#elif TARGET_CPU_X86 || TARGET_CPU_X86_64
+
 bool MinidumpGenerator::WriteStack(breakpad_thread_state_data_t state,
                                    MDMemoryDescriptor *stack_location) {
-  i386_thread_state_t *machine_state =
-    reinterpret_cast<i386_thread_state_t *>(state);
-  vm_address_t start_addr = machine_state->esp;
+  breakpad_thread_state_t *machine_state =
+    reinterpret_cast<breakpad_thread_state_t *>(state);
+
+#if TARGET_CPU_X86_64
+  mach_vm_address_t start_addr = machine_state->__rsp;
+#else
+  mach_vm_address_t start_addr = machine_state->esp;
+#endif
   return WriteStackFromStartAddress(start_addr, stack_location);
 }
 
-u_int64_t MinidumpGenerator::CurrentPCForStack(breakpad_thread_state_data_t state) {
-  i386_thread_state_t *machine_state =
-    reinterpret_cast<i386_thread_state_t *>(state);
+u_int64_t
+MinidumpGenerator::CurrentPCForStack(breakpad_thread_state_data_t state) {
+  breakpad_thread_state_t *machine_state =
+    reinterpret_cast<breakpad_thread_state_t *>(state);
 
+#if TARGET_CPU_X86_64
+  return machine_state->__rip;
+#else
   return machine_state->eip;
+#endif
 }
 
 bool MinidumpGenerator::WriteContext(breakpad_thread_state_data_t state,
                                      MDLocationDescriptor *register_location) {
-  TypedMDRVA<MDRawContextX86> context(&writer_);
-  i386_thread_state_t *machine_state =
-    reinterpret_cast<i386_thread_state_t *>(state);
+  TypedMDRVA<MinidumpContext> context(&writer_);
+  breakpad_thread_state_t *machine_state =
+    reinterpret_cast<breakpad_thread_state_t *>(state);
 
   if (!context.Allocate())
     return false;
 
   *register_location = context.location();
-  MDRawContextX86 *context_ptr = context.get();
+  MinidumpContext *context_ptr = context.get();
+
+#if TARGET_CPU_X86
   context_ptr->context_flags = MD_CONTEXT_X86;
+
 #define AddReg(a) context_ptr->a = machine_state->a
+  AddReg(eax);
+  AddReg(ebx);
+  AddReg(ecx);
+  AddReg(edx);
+  AddReg(esi);
+  AddReg(edi);
+  AddReg(ebp);
+  AddReg(esp);
+
   AddReg(cs);
   AddReg(ds);
   AddReg(ss);
   AddReg(es);
   AddReg(fs);
   AddReg(gs);
   AddReg(eflags);
 
   AddReg(eip);
-  AddReg(eax);
-  AddReg(ebx);
-  AddReg(ecx);
-  AddReg(edx);
-  AddReg(esi);
-  AddReg(edi);
-  AddReg(ebp);
-  AddReg(esp);
+#else
+
+#define AddReg(a) context_ptr->a = machine_state->__ ## a
+  context_ptr->context_flags = MD_CONTEXT_AMD64;
+  AddReg(rax);
+  AddReg(rbx);
+  AddReg(rcx);
+  AddReg(rdx);
+  AddReg(rdi);
+  AddReg(rsi);
+  AddReg(rbp);
+  AddReg(rsp);
+  AddReg(r8);
+  AddReg(r9);
+  AddReg(r10);
+  AddReg(r11);
+  AddReg(r12);
+  AddReg(r13);
+  AddReg(r14);
+  AddReg(r15);
+  AddReg(rip);
+  // according to AMD's software developer guide, bits above 18 are
+  // not used in the flags register.  Since the minidump format
+  // specifies 32 bits for the flags register, we can truncate safely
+  // with no loss.
+  context_ptr->eflags = machine_state->__rflags;
+  AddReg(cs);
+  AddReg(fs);
+  AddReg(gs);
+#endif
+
   return true;
 }
 #endif
 
 bool MinidumpGenerator::WriteThreadStream(mach_port_t thread_id,
                                           MDRawThread *thread) {
   breakpad_thread_state_data_t state;
   mach_msg_type_number_t state_count = sizeof(state);
@@ -442,17 +561,18 @@ bool MinidumpGenerator::WriteThreadListS
 
       list.CopyIndexAfterObject(thread_idx++, &thread, sizeof(MDRawThread));
     }
   }
 
   return true;
 }
 
-bool MinidumpGenerator::WriteExceptionStream(MDRawDirectory *exception_stream) {
+bool
+MinidumpGenerator::WriteExceptionStream(MDRawDirectory *exception_stream) {
   TypedMDRVA<MDRawExceptionStream> exception(&writer_);
 
   if (!exception.Allocate())
     return false;
 
   exception_stream->stream_type = MD_EXCEPTION_STREAM;
   exception_stream->location = exception.location();
   MDRawExceptionStream *exception_ptr = exception.get();
@@ -461,17 +581,19 @@ bool MinidumpGenerator::WriteExceptionSt
   // This naming is confusing, but it is the proper translation from
   // mach naming to minidump naming.
   exception_ptr->exception_record.exception_code = exception_type_;
   exception_ptr->exception_record.exception_flags = exception_code_;
 
   breakpad_thread_state_data_t state;
   mach_msg_type_number_t stateCount = sizeof(state);
 
-  if (thread_get_state(exception_thread_, BREAKPAD_MACHINE_THREAD_STATE, state,
+  if (thread_get_state(exception_thread_,
+                       BREAKPAD_MACHINE_THREAD_STATE,
+                       state,
                        &stateCount) != KERN_SUCCESS)
     return false;
 
   if (!WriteContext(state, &exception_ptr->thread_context))
     return false;
 
   exception_ptr->exception_record.exception_address = CurrentPCForStack(state);
 
@@ -503,23 +625,23 @@ bool MinidumpGenerator::WriteSystemInfoS
       break;
     case CPU_TYPE_I386:
       info_ptr->processor_architecture = MD_CPU_ARCHITECTURE_X86;
 #ifdef __i386__
       // ebx is used for PIC code, so we need
       // to preserve it.
 #define cpuid(op,eax,ebx,ecx,edx)      \
   asm ("pushl %%ebx   \n\t"            \
-       "cpuid         \n\t"	       \
-       "movl %%ebx,%1 \n\t"	       \
-       "popl %%ebx"		       \
-       : "=a" (eax),		       \
-         "=g" (ebx),		       \
-         "=c" (ecx),		       \
-         "=d" (edx)		       \
+       "cpuid         \n\t"            \
+       "movl %%ebx,%1 \n\t"            \
+       "popl %%ebx"                    \
+       : "=a" (eax),                   \
+         "=g" (ebx),                   \
+         "=c" (ecx),                   \
+         "=d" (edx)                    \
        : "0" (op))
       int unused, unused2;
       // get vendor id
       cpuid(0, unused, info_ptr->cpu.x86_cpu_info.vendor_id[0],
             info_ptr->cpu.x86_cpu_info.vendor_id[2],
             info_ptr->cpu.x86_cpu_info.vendor_id[1]);
       // get version and feature info
       cpuid(1, info_ptr->cpu.x86_cpu_info.version_information, unused, unused2,
@@ -559,17 +681,17 @@ bool MinidumpGenerator::WriteModuleStrea
                                           MDRawModule *module) {
   if (dynamic_images_) {
     // we're in a different process than the crashed process
     DynamicImage *image = dynamic_images_->GetImage(index);
 
     if (!image)
       return false;
 
-    const mach_header *header = image->GetMachHeader();
+    const breakpad_mach_header *header = image->GetMachHeader();
 
     if (!header)
       return false;
 
     int cpu_type = header->cputype;
 
     memset(module, 0, sizeof(MDRawModule));
 
@@ -578,38 +700,73 @@ bool MinidumpGenerator::WriteModuleStrea
     const char* name = image->GetFilePath();
     if (!writer_.WriteString(name, 0, &string_location))
       return false;
 
     module->base_of_image = image->GetVMAddr() + image->GetVMAddrSlide();
     module->size_of_image = image->GetVMSize();
     module->module_name_rva = string_location.rva;
 
+    // We'll skip the executable module, because they don't have
+    // LC_ID_DYLIB load commands, and the crash processing server gets
+    // version information from the Plist file, anyway.
+    if (index != (uint32_t)FindExecutableModule()) {
+      module->version_info.signature = MD_VSFIXEDFILEINFO_SIGNATURE;
+      module->version_info.struct_version |= MD_VSFIXEDFILEINFO_VERSION;
+      // Convert MAC dylib version format, which is a 32 bit number, to the
+      // format used by minidump.  The mac format is <16 bits>.<8 bits>.<8 bits>
+      // so it fits nicely into the windows version with some massaging
+      // The mapping is:
+      //    1) upper 16 bits of MAC version go to lower 16 bits of product HI
+      //    2) Next most significant 8 bits go to upper 16 bits of product LO
+      //    3) Least significant 8 bits go to lower 16 bits of product LO
+      uint32_t modVersion = image->GetVersion();
+      module->version_info.file_version_hi = 0;
+      module->version_info.file_version_hi = modVersion >> 16;
+      module->version_info.file_version_lo |= (modVersion & 0xff00)  << 8;
+      module->version_info.file_version_lo |= (modVersion & 0xff);
+    }
+
     if (!WriteCVRecord(module, cpu_type, name)) {
       return false;
     }
   } else {
     // we're getting module info in the crashed process
-    const struct mach_header *header = _dyld_get_image_header(index);
 
+    const breakpad_mach_header *header;
+    header = (breakpad_mach_header*)_dyld_get_image_header(index);
     if (!header)
       return false;
 
+#ifdef __LP64__
+    assert(header->magic == MH_MAGIC_64);
+
+    if(header->magic != MH_MAGIC_64)
+      return false;
+#else
+    assert(header->magic == MH_MAGIC);
+
+    if(header->magic != MH_MAGIC)
+      return false;
+#endif
+
     int cpu_type = header->cputype;
     unsigned long slide = _dyld_get_image_vmaddr_slide(index);
     const char* name = _dyld_get_image_name(index);
     const struct load_command *cmd =
       reinterpret_cast<const struct load_command *>(header + 1);
 
     memset(module, 0, sizeof(MDRawModule));
 
     for (unsigned int i = 0; cmd && (i < header->ncmds); i++) {
       if (cmd->cmd == LC_SEGMENT) {
-        const struct segment_command *seg =
-          reinterpret_cast<const struct segment_command *>(cmd);
+
+        const breakpad_mach_segment_command *seg =
+          reinterpret_cast<const breakpad_mach_segment_command *>(cmd);
+
         if (!strcmp(seg->segname, "__TEXT")) {
           MDLocationDescriptor string_location;
 
           if (!writer_.WriteString(name, 0, &string_location))
             return false;
 
           module->base_of_image = seg->vmaddr + slide;
           module->size_of_image = seg->vmsize;
@@ -617,20 +774,20 @@ bool MinidumpGenerator::WriteModuleStrea
 
           if (!WriteCVRecord(module, cpu_type, name))
             return false;
 
           return true;
         }
       }
 
-      cmd = reinterpret_cast<struct load_command *>((char *)cmd + cmd->cmdsize);
+      cmd = reinterpret_cast<struct load_command*>((char *)cmd + cmd->cmdsize);
     }
   }
-  
+
   return true;
 }
 
 int MinidumpGenerator::FindExecutableModule() {
   if (dynamic_images_) {
     int index = dynamic_images_->GetExecutableImageIndex();
 
     if (index >= 0) {
@@ -642,17 +799,17 @@ int MinidumpGenerator::FindExecutableMod
 
     for (int index = 0; index < image_count; ++index) {
       header = _dyld_get_image_header(index);
 
       if (header->filetype == MH_EXECUTE)
         return index;
     }
   }
-  
+
   // failed - just use the first image
   return 0;
 }
 
 bool MinidumpGenerator::WriteCVRecord(MDRawModule *module, int cpu_type,
                                       const char *module_path) {
   TypedMDRVA<MDCVInfoPDB70> cv(&writer_);
 
@@ -676,19 +833,19 @@ bool MinidumpGenerator::WriteCVRecord(MD
   module->cv_record = cv.location();
   MDCVInfoPDB70 *cv_ptr = cv.get();
   cv_ptr->cv_signature = MD_CVINFOPDB70_SIGNATURE;
   cv_ptr->age = 0;
 
   // Get the module identifier
   FileID file_id(module_path);
   unsigned char identifier[16];
-  
+
   if (file_id.MachoIdentifier(cpu_type, identifier)) {
-    cv_ptr->signature.data1 = (uint32_t)identifier[0] << 24 | 
+    cv_ptr->signature.data1 = (uint32_t)identifier[0] << 24 |
       (uint32_t)identifier[1] << 16 | (uint32_t)identifier[2] << 8 |
       (uint32_t)identifier[3];
     cv_ptr->signature.data2 = (uint32_t)identifier[4] << 8 | identifier[5];
     cv_ptr->signature.data3 = (uint32_t)identifier[6] << 8 | identifier[7];
     cv_ptr->signature.data4[0] = identifier[8];
     cv_ptr->signature.data4[1] = identifier[9];
     cv_ptr->signature.data4[2] = identifier[10];
     cv_ptr->signature.data4[3] = identifier[11];
@@ -700,19 +857,16 @@ bool MinidumpGenerator::WriteCVRecord(MD
 
   return true;
 }
 
 bool MinidumpGenerator::WriteModuleListStream(
     MDRawDirectory *module_list_stream) {
   TypedMDRVA<MDRawModuleList> list(&writer_);
 
-  if (!_dyld_present())
-    return false;
-
   int image_count = dynamic_images_ ?
     dynamic_images_->GetImageCount() : _dyld_image_count();
 
   if (!list.AllocateObjectAndArray(image_count, MD_MODULE_SIZE))
     return false;
 
   module_list_stream->stream_type = MD_MODULE_LIST_STREAM;
   module_list_stream->location = list.location();
@@ -765,22 +919,25 @@ bool MinidumpGenerator::WriteMiscInfoStr
   if (getrusage(RUSAGE_SELF, &usage) != -1) {
     // Omit the fractional time since the MDRawMiscInfo only wants seconds
     info_ptr->process_user_time = usage.ru_utime.tv_sec;
     info_ptr->process_kernel_time = usage.ru_stime.tv_sec;
   }
   int mib[4] = { CTL_KERN, KERN_PROC, KERN_PROC_PID, info_ptr->process_id };
   size_t size;
   if (!sysctl(mib, sizeof(mib) / sizeof(mib[0]), NULL, &size, NULL, 0)) {
-    vm_address_t addr;
-    if (vm_allocate(mach_task_self(), &addr, size, true) == KERN_SUCCESS) {
+    mach_vm_address_t addr;
+    if (mach_vm_allocate(mach_task_self(),
+                         &addr,
+                         size,
+                         true) == KERN_SUCCESS) {
       struct kinfo_proc *proc = (struct kinfo_proc *)addr;
       if (!sysctl(mib, sizeof(mib) / sizeof(mib[0]), proc, &size, NULL, 0))
         info_ptr->process_create_time = proc->kp_proc.p_starttime.tv_sec;
-      vm_deallocate(mach_task_self(), addr, size);
+      mach_vm_deallocate(mach_task_self(), addr, size);
     }
   }
 
   // Speed
   uint64_t speed;
   size = sizeof(speed);
   sysctlbyname("hw.cpufrequency_max", &speed, &size, NULL, 0);
   info_ptr->processor_max_mhz = speed / (1000 * 1000);
--- a/toolkit/crashreporter/google-breakpad/src/client/mac/handler/minidump_generator.h
+++ b/toolkit/crashreporter/google-breakpad/src/client/mac/handler/minidump_generator.h
@@ -41,16 +41,36 @@
 #include "common/mac/macho_utilities.h"
 
 #include "dynamic_images.h"
 
 namespace google_breakpad {
 
 using std::string;
 
+#if TARGET_CPU_X86_64 || TARGET_CPU_PPC64
+#define TOP_OF_THREAD0_STACK 0x00007fff5fbff000
+#else
+#define TOP_OF_THREAD0_STACK 0xbffff000
+#endif
+
+#if TARGET_CPU_X86_64
+typedef x86_thread_state64_t breakpad_thread_state_t;
+typedef MDRawContextAMD64 MinidumpContext;
+#elif TARGET_CPU_X86
+typedef  i386_thread_state_t breakpad_thread_state_t;
+typedef MDRawContextX86 MinidumpContext;
+#elif TARGET_CPU_PPC64
+typedef ppc_thread_state64_t breakpad_thread_state_t;
+typedef MDRawContextPPC64 MinidumpContext;
+#elif TARGET_CPU_PPC
+typedef ppc_thread_state_t breakpad_thread_state_t;
+typedef MDRawContextPPC MinidumpContext;
+#endif
+
 // Creates a minidump file of the current process.  If there is exception data,
 // use SetExceptionInformation() to add this to the minidump.  The minidump
 // file is generated by the Write() function.
 // Usage:
 // MinidumpGenerator minidump();
 // minidump.Write("/tmp/minidump");
 //
 class MinidumpGenerator {
@@ -88,27 +108,29 @@ class MinidumpGenerator {
   bool WriteExceptionStream(MDRawDirectory *exception_stream);
   bool WriteSystemInfoStream(MDRawDirectory *system_info_stream);
   bool WriteModuleListStream(MDRawDirectory *module_list_stream);
   bool WriteMiscInfoStream(MDRawDirectory *misc_info_stream);
   bool WriteBreakpadInfoStream(MDRawDirectory *breakpad_info_stream);
 
   // Helpers
   u_int64_t CurrentPCForStack(breakpad_thread_state_data_t state);
-  bool WriteStackFromStartAddress(vm_address_t start_addr,
+  bool WriteStackFromStartAddress(mach_vm_address_t start_addr,
                                   MDMemoryDescriptor *stack_location);
   bool WriteStack(breakpad_thread_state_data_t state,
                   MDMemoryDescriptor *stack_location);
   bool WriteContext(breakpad_thread_state_data_t state,
                     MDLocationDescriptor *register_location);
   bool WriteThreadStream(mach_port_t thread_id, MDRawThread *thread);
   bool WriteCVRecord(MDRawModule *module, int cpu_type, 
                      const char *module_path);
   bool WriteModuleStream(unsigned int index, MDRawModule *module);
-  size_t CalculateStackSize(vm_address_t start_addr);
+
+  size_t CalculateStackSize(mach_vm_address_t start_addr);
+
   int  FindExecutableModule();
 
   // disallow copy ctor and operator=
   explicit MinidumpGenerator(const MinidumpGenerator &);
   void operator=(const MinidumpGenerator &);
 
   // Use this writer to put the data to disk
   MinidumpFileWriter writer_;
--- a/toolkit/crashreporter/google-breakpad/src/client/mac/handler/minidump_generator_test.cc
+++ b/toolkit/crashreporter/google-breakpad/src/client/mac/handler/minidump_generator_test.cc
@@ -43,19 +43,23 @@ using google_breakpad::MinidumpGenerator
 static bool doneWritingReport = false;
 
 static void *Reporter(void *) {
   char buffer[PATH_MAX];
   MinidumpGenerator md;
   struct passwd *user = getpwuid(getuid());
 
   // Write it to the desktop
-  snprintf(buffer, sizeof(buffer), "/Users/%s/Desktop/test.dmp", user->pw_name);
+  snprintf(buffer,
+           sizeof(buffer),
+           "/Users/%s/Desktop/test.dmp",
+           user->pw_name);
+  
   fprintf(stdout, "Writing %s\n", buffer);
-
+  unlink(buffer);
   md.Write(buffer);
   doneWritingReport = true;
 
   return NULL;
 }
 
 static void SleepyFunction() {
   while (!doneWritingReport) {
--- a/toolkit/crashreporter/google-breakpad/src/client/mac/handler/minidump_test.xcodeproj/project.pbxproj
+++ b/toolkit/crashreporter/google-breakpad/src/client/mac/handler/minidump_test.xcodeproj/project.pbxproj
@@ -44,16 +44,34 @@
 		D2F651130BEF951C00920385 /* string_conversion.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 9B35FF590B267D5F008DE8C7 /* string_conversion.h */; };
 		D2F651150BEF953000920385 /* convert_UTF.c in Sources */ = {isa = PBXBuildFile; fileRef = 9B35FF560B267D5F008DE8C7 /* convert_UTF.c */; };
 		D2F651160BEF953100920385 /* convert_UTF.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 9B35FF570B267D5F008DE8C7 /* convert_UTF.h */; };
 		D2F6511B0BEF970E00920385 /* dynamic_images.cc in Sources */ = {isa = PBXBuildFile; fileRef = D2F651070BEF949A00920385 /* dynamic_images.cc */; };
 		D2F6511D0BEF973500920385 /* file_id.cc in Sources */ = {isa = PBXBuildFile; fileRef = D2F650FA0BEF947200920385 /* file_id.cc */; };
 		D2F6511E0BEF973600920385 /* macho_id.cc in Sources */ = {isa = PBXBuildFile; fileRef = D2F650FC0BEF947200920385 /* macho_id.cc */; };
 		D2F6511F0BEF973900920385 /* macho_utilities.cc in Sources */ = {isa = PBXBuildFile; fileRef = D2F650FE0BEF947200920385 /* macho_utilities.cc */; };
 		D2F651210BEF975400920385 /* macho_walker.cc in Sources */ = {isa = PBXBuildFile; fileRef = D2F6510C0BEF94EB00920385 /* macho_walker.cc */; };
+		F93A887D0E8B4C8C0026AF89 /* macho_walker.cc in Sources */ = {isa = PBXBuildFile; fileRef = D2F6510C0BEF94EB00920385 /* macho_walker.cc */; };
+		F93A887E0E8B4C8C0026AF89 /* macho_id.cc in Sources */ = {isa = PBXBuildFile; fileRef = D2F650FC0BEF947200920385 /* macho_id.cc */; };
+		F93A887F0E8B4C8C0026AF89 /* macho_utilities.cc in Sources */ = {isa = PBXBuildFile; fileRef = D2F650FE0BEF947200920385 /* macho_utilities.cc */; };
+		F93A88800E8B4C8C0026AF89 /* file_id.cc in Sources */ = {isa = PBXBuildFile; fileRef = D2F650FA0BEF947200920385 /* file_id.cc */; };
+		F93A88860E8B4C9A0026AF89 /* dwarftests.mm in Sources */ = {isa = PBXBuildFile; fileRef = F9721F310E8B07E800D7E813 /* dwarftests.mm */; };
+		F93A88870E8B4C9A0026AF89 /* dump_syms.mm in Sources */ = {isa = PBXBuildFile; fileRef = F9721F390E8B0D0D00D7E813 /* dump_syms.mm */; };
+		F93A88880E8B4C9A0026AF89 /* bytereader.cc in Sources */ = {isa = PBXBuildFile; fileRef = F9721F760E8B0DC700D7E813 /* bytereader.cc */; };
+		F93A88890E8B4C9A0026AF89 /* dwarf2reader.cc in Sources */ = {isa = PBXBuildFile; fileRef = F9721F770E8B0DC700D7E813 /* dwarf2reader.cc */; };
+		F93A888A0E8B4C9A0026AF89 /* functioninfo.cc in Sources */ = {isa = PBXBuildFile; fileRef = F9721F780E8B0DC700D7E813 /* functioninfo.cc */; };
+		F93A888B0E8B4C9A0026AF89 /* md5.c in Sources */ = {isa = PBXBuildFile; fileRef = F9721FA80E8B0E4800D7E813 /* md5.c */; };
+		F9721F6C0E8B0D7000D7E813 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F9721F6B0E8B0D7000D7E813 /* Cocoa.framework */; };
+		F9721FA20E8B0E2300D7E813 /* SenTestingKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F9721FA10E8B0E2300D7E813 /* SenTestingKit.framework */; };
+		F982089C0DB3280D0017AECA /* breakpad_nlist_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = F982089B0DB3280D0017AECA /* breakpad_nlist_test.cc */; };
+		F98208A30DB32CAE0017AECA /* breakpad_nlist_64.cc in Sources */ = {isa = PBXBuildFile; fileRef = F98208A10DB32CAE0017AECA /* breakpad_nlist_64.cc */; };
+		F9AE5B390DBFDBDB00505983 /* dynamic_images.cc in Sources */ = {isa = PBXBuildFile; fileRef = D2F651070BEF949A00920385 /* dynamic_images.cc */; };
+		F9AE5B3A0DBFDBDB00505983 /* DynamicImagesTests.cc in Sources */ = {isa = PBXBuildFile; fileRef = F9C5A4210DB82DD800209C76 /* DynamicImagesTests.cc */; };
+		F9B34E870DBC1E1600306484 /* dynamic_images.cc in Sources */ = {isa = PBXBuildFile; fileRef = D2F651070BEF949A00920385 /* dynamic_images.cc */; };
+		F9C5A4220DB82DD800209C76 /* DynamicImagesTests.cc in Sources */ = {isa = PBXBuildFile; fileRef = F9C5A4210DB82DD800209C76 /* DynamicImagesTests.cc */; };
 /* End PBXBuildFile section */
 
 /* Begin PBXCopyFilesBuildPhase section */
 		8DD76F690486A84900D96B5E /* CopyFiles */ = {
 			isa = PBXCopyFilesBuildPhase;
 			buildActionMask = 8;
 			dstPath = /usr/share/man/man1/;
 			dstSubfolderSpec = 0;
@@ -101,16 +119,40 @@
 		D2F650FC0BEF947200920385 /* macho_id.cc */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = macho_id.cc; path = ../../../common/mac/macho_id.cc; sourceTree = SOURCE_ROOT; };
 		D2F650FD0BEF947200920385 /* macho_id.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = macho_id.h; path = ../../../common/mac/macho_id.h; sourceTree = SOURCE_ROOT; };
 		D2F650FE0BEF947200920385 /* macho_utilities.cc */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = macho_utilities.cc; path = ../../../common/mac/macho_utilities.cc; sourceTree = SOURCE_ROOT; };
 		D2F650FF0BEF947200920385 /* macho_utilities.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = macho_utilities.h; path = ../../../common/mac/macho_utilities.h; sourceTree = SOURCE_ROOT; };
 		D2F651070BEF949A00920385 /* dynamic_images.cc */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = dynamic_images.cc; sourceTree = "<group>"; };
 		D2F651080BEF949A00920385 /* dynamic_images.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = dynamic_images.h; sourceTree = "<group>"; };
 		D2F6510C0BEF94EB00920385 /* macho_walker.cc */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = macho_walker.cc; path = ../../../common/mac/macho_walker.cc; sourceTree = SOURCE_ROOT; };
 		D2F6510D0BEF94EB00920385 /* macho_walker.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = macho_walker.h; path = ../../../common/mac/macho_walker.h; sourceTree = SOURCE_ROOT; };
+		F917C4F70E03265A00F86017 /* breakpad_exc_server.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = breakpad_exc_server.c; sourceTree = "<group>"; };
+		F917C4F80E03265A00F86017 /* breakpad_exc_server.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = breakpad_exc_server.h; sourceTree = "<group>"; };
+		F93A88750E8B4C700026AF89 /* octestcases.octest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = octestcases.octest; sourceTree = BUILT_PRODUCTS_DIR; };
+		F93A88760E8B4C700026AF89 /* obj-cTestCases-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "obj-cTestCases-Info.plist"; sourceTree = "<group>"; };
+		F9721F300E8B07E800D7E813 /* dwarftests.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = dwarftests.h; sourceTree = "<group>"; };
+		F9721F310E8B07E800D7E813 /* dwarftests.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = dwarftests.mm; sourceTree = "<group>"; };
+		F9721F380E8B0CFC00D7E813 /* dump_syms.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = dump_syms.h; path = ../../../common/mac/dump_syms.h; sourceTree = SOURCE_ROOT; };
+		F9721F390E8B0D0D00D7E813 /* dump_syms.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = dump_syms.mm; path = ../../../common/mac/dump_syms.mm; sourceTree = SOURCE_ROOT; };
+		F9721F6B0E8B0D7000D7E813 /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = /System/Library/Frameworks/Cocoa.framework; sourceTree = "<absolute>"; };
+		F9721F760E8B0DC700D7E813 /* bytereader.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = bytereader.cc; path = ../../../common/mac/dwarf/bytereader.cc; sourceTree = SOURCE_ROOT; };
+		F9721F770E8B0DC700D7E813 /* dwarf2reader.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = dwarf2reader.cc; path = ../../../common/mac/dwarf/dwarf2reader.cc; sourceTree = SOURCE_ROOT; };
+		F9721F780E8B0DC700D7E813 /* functioninfo.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = functioninfo.cc; path = ../../../common/mac/dwarf/functioninfo.cc; sourceTree = SOURCE_ROOT; };
+		F9721FA10E8B0E2300D7E813 /* SenTestingKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SenTestingKit.framework; path = /System/Library/Frameworks/SenTestingKit.framework; sourceTree = "<absolute>"; };
+		F9721FA80E8B0E4800D7E813 /* md5.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = md5.c; path = ../../../common/md5.c; sourceTree = SOURCE_ROOT; };
+		F982089A0DB3280D0017AECA /* breakpad_nlist_test.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = breakpad_nlist_test.h; sourceTree = "<group>"; };
+		F982089B0DB3280D0017AECA /* breakpad_nlist_test.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = breakpad_nlist_test.cc; sourceTree = "<group>"; };
+		F98208A10DB32CAE0017AECA /* breakpad_nlist_64.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = breakpad_nlist_64.cc; sourceTree = "<group>"; };
+		F98208A20DB32CAE0017AECA /* breakpad_nlist_64.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = breakpad_nlist_64.h; sourceTree = "<group>"; };
+		F9AE19B50DB040E300C98454 /* minidump_tests32-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "minidump_tests32-Info.plist"; sourceTree = "<group>"; };
+		F9AE19C30DB04A9500C98454 /* minidump_tests64.cptest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = minidump_tests64.cptest; sourceTree = BUILT_PRODUCTS_DIR; };
+		F9AE5B330DBFDBA300505983 /* minidump_tests32.cptest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = minidump_tests32.cptest; sourceTree = BUILT_PRODUCTS_DIR; };
+		F9AE5B340DBFDBA300505983 /* minidump_tests64-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "minidump_tests64-Info.plist"; sourceTree = "<group>"; };
+		F9C5A4200DB82DD800209C76 /* DynamicImagesTests.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DynamicImagesTests.h; sourceTree = "<group>"; };
+		F9C5A4210DB82DD800209C76 /* DynamicImagesTests.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DynamicImagesTests.cc; sourceTree = "<group>"; };
 /* End PBXFileReference section */
 
 /* Begin PBXFrameworksBuildPhase section */
 		8DD76F660486A84900D96B5E /* Frameworks */ = {
 			isa = PBXFrameworksBuildPhase;
 			buildActionMask = 2147483647;
 			files = (
 				9B37CEEC0AF98ECD00FA4BD4 /* CoreFoundation.framework in Frameworks */,
@@ -127,36 +169,73 @@
 		9BD82A990B00267E0055103E /* Frameworks */ = {
 			isa = PBXFrameworksBuildPhase;
 			buildActionMask = 2147483647;
 			files = (
 				9BD82AC10B0029DF0055103E /* CoreFoundation.framework in Frameworks */,
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 		};
+		F93A88720E8B4C700026AF89 /* Frameworks */ = {
+			isa = PBXFrameworksBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		F9AE19C00DB04A9500C98454 /* Frameworks */ = {
+			isa = PBXFrameworksBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		F9AE5B300DBFDBA300505983 /* Frameworks */ = {
+			isa = PBXFrameworksBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				F9721F6C0E8B0D7000D7E813 /* Cocoa.framework in Frameworks */,
+				F9721FA20E8B0E2300D7E813 /* SenTestingKit.framework in Frameworks */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
 /* End PBXFrameworksBuildPhase section */
 
 /* Begin PBXGroup section */
 		08FB7794FE84155DC02AAC07 /* MinidumpWriter */ = {
 			isa = PBXGroup;
 			children = (
+				F9721FA80E8B0E4800D7E813 /* md5.c */,
+				F9721F760E8B0DC700D7E813 /* bytereader.cc */,
+				F9721F770E8B0DC700D7E813 /* dwarf2reader.cc */,
+				F9721F780E8B0DC700D7E813 /* functioninfo.cc */,
+				F9721F390E8B0D0D00D7E813 /* dump_syms.mm */,
+				F9721F380E8B0CFC00D7E813 /* dump_syms.h */,
+				F917C4F70E03265A00F86017 /* breakpad_exc_server.c */,
+				F917C4F80E03265A00F86017 /* breakpad_exc_server.h */,
+				F98208A10DB32CAE0017AECA /* breakpad_nlist_64.cc */,
+				F98208A20DB32CAE0017AECA /* breakpad_nlist_64.h */,
 				D2F6510C0BEF94EB00920385 /* macho_walker.cc */,
 				D2F6510D0BEF94EB00920385 /* macho_walker.h */,
 				D2F651070BEF949A00920385 /* dynamic_images.cc */,
 				D2F651080BEF949A00920385 /* dynamic_images.h */,
 				D2F650FA0BEF947200920385 /* file_id.cc */,
 				D2F650FB0BEF947200920385 /* file_id.h */,
 				D2F650FC0BEF947200920385 /* macho_id.cc */,
 				D2F650FD0BEF947200920385 /* macho_id.h */,
 				D2F650FE0BEF947200920385 /* macho_utilities.cc */,
 				D2F650FF0BEF947200920385 /* macho_utilities.h */,
+				F9C5A41F0DB82DB000209C76 /* testcases */,
 				9BD82C040B0133420055103E /* Breakpad */,
 				08FB7795FE84155DC02AAC07 /* Source */,
 				9B37CEEA0AF98EB600FA4BD4 /* Frameworks */,
 				1AB674ADFE9D54B511CA2CBB /* Products */,
+				F9AE19B50DB040E300C98454 /* minidump_tests32-Info.plist */,
+				F9AE5B340DBFDBA300505983 /* minidump_tests64-Info.plist */,
+				F93A88760E8B4C700026AF89 /* obj-cTestCases-Info.plist */,
 			);
 			name = MinidumpWriter;
 			sourceTree = "<group>";
 		};
 		08FB7795FE84155DC02AAC07 /* Source */ = {
 			isa = PBXGroup;
 			children = (
 				9BD82BFD0B01333D0055103E /* exception_handler_test.cc */,
@@ -167,23 +246,28 @@
 			sourceTree = "<group>";
 		};
 		1AB674ADFE9D54B511CA2CBB /* Products */ = {
 			isa = PBXGroup;
 			children = (
 				8DD76F6C0486A84900D96B5E /* generator_test */,
 				9BD82A9B0B00267E0055103E /* handler_test */,
 				9B7CA84E0B1297F200CD3A1D /* unit_test */,
+				F9AE19C30DB04A9500C98454 /* minidump_tests64.cptest */,
+				F9AE5B330DBFDBA300505983 /* minidump_tests32.cptest */,
+				F93A88750E8B4C700026AF89 /* octestcases.octest */,
 			);
 			name = Products;
 			sourceTree = "<group>";
 		};
 		9B37CEEA0AF98EB600FA4BD4 /* Frameworks */ = {
 			isa = PBXGroup;
 			children = (
+				F9721FA10E8B0E2300D7E813 /* SenTestingKit.framework */,
+				F9721F6B0E8B0D7000D7E813 /* Cocoa.framework */,
 				9B37CEEB0AF98ECD00FA4BD4 /* CoreFoundation.framework */,
 			);
 			name = Frameworks;
 			sourceTree = "<group>";
 		};
 		9BD82C040B0133420055103E /* Breakpad */ = {
 			isa = PBXGroup;
 			children = (
@@ -199,16 +283,29 @@
 				9BE3C01E0B0CE329009892DF /* minidump_file_writer-inl.h */,
 				9BD82C240B01344C0055103E /* minidump_file_writer.h */,
 				9BD82C2B0B01345E0055103E /* string_utilities.cc */,
 				9BD82C2C0B01345E0055103E /* string_utilities.h */,
 			);
 			name = Breakpad;
 			sourceTree = "<group>";
 		};
+		F9C5A41F0DB82DB000209C76 /* testcases */ = {
+			isa = PBXGroup;
+			children = (
+				F982089A0DB3280D0017AECA /* breakpad_nlist_test.h */,
+				F982089B0DB3280D0017AECA /* breakpad_nlist_test.cc */,
+				F9C5A4200DB82DD800209C76 /* DynamicImagesTests.h */,
+				F9C5A4210DB82DD800209C76 /* DynamicImagesTests.cc */,
+				F9721F300E8B07E800D7E813 /* dwarftests.h */,
+				F9721F310E8B07E800D7E813 /* dwarftests.mm */,
+			);
+			path = testcases;
+			sourceTree = "<group>";
+		};
 /* End PBXGroup section */
 
 /* Begin PBXNativeTarget section */
 		8DD76F620486A84900D96B5E /* generator_test */ = {
 			isa = PBXNativeTarget;
 			buildConfigurationList = 1DEB923108733DC60010E9CD /* Build configuration list for PBXNativeTarget "generator_test" */;
 			buildPhases = (
 				8DD76F640486A84900D96B5E /* Sources */,
@@ -252,33 +349,158 @@
 			);
 			dependencies = (
 			);
 			name = handler_test;
 			productName = ExceptionTester;
 			productReference = 9BD82A9B0B00267E0055103E /* handler_test */;
 			productType = "com.apple.product-type.tool";
 		};
+		F93A88740E8B4C700026AF89 /* obj-c_TestCases */ = {
+			isa = PBXNativeTarget;
+			buildConfigurationList = F93A88790E8B4C700026AF89 /* Build configuration list for PBXNativeTarget "obj-c_TestCases" */;
+			buildPhases = (
+				F93A88700E8B4C700026AF89 /* Resources */,
+				F93A88710E8B4C700026AF89 /* Sources */,
+				F93A88720E8B4C700026AF89 /* Frameworks */,
+				F93A88730E8B4C700026AF89 /* ShellScript */,
+			);
+			buildRules = (
+			);
+			dependencies = (
+			);
+			name = "obj-c_TestCases";
+			productName = octestcases;
+			productReference = F93A88750E8B4C700026AF89 /* octestcases.octest */;
+			productType = "com.apple.product-type.bundle";
+		};
+		F9AE19C20DB04A9500C98454 /* minidump_tests64 */ = {
+			isa = PBXNativeTarget;
+			buildConfigurationList = F9AE19C70DB04AA200C98454 /* Build configuration list for PBXNativeTarget "minidump_tests64" */;
+			buildPhases = (
+				F9AE19BE0DB04A9500C98454 /* Resources */,
+				F9AE19BF0DB04A9500C98454 /* Sources */,
+				F9AE19C00DB04A9500C98454 /* Frameworks */,
+				F9AE19C10DB04A9500C98454 /* ShellScript */,
+			);
+			buildRules = (
+			);
+			dependencies = (
+			);
+			name = minidump_tests64;
+			productName = minidump_tests;
+			productReference = F9AE19C30DB04A9500C98454 /* minidump_tests64.cptest */;
+			productType = "com.apple.product-type.bundle";
+		};
+		F9AE5B320DBFDBA300505983 /* minidump_tests32 */ = {
+			isa = PBXNativeTarget;
+			buildConfigurationList = F9AE5B380DBFDBA300505983 /* Build configuration list for PBXNativeTarget "minidump_tests32" */;
+			buildPhases = (
+				F9AE5B2E0DBFDBA300505983 /* Resources */,
+				F9AE5B2F0DBFDBA300505983 /* Sources */,
+				F9AE5B300DBFDBA300505983 /* Frameworks */,
+				F9AE5B310DBFDBA300505983 /* ShellScript */,
+			);
+			buildRules = (
+			);
+			dependencies = (
+			);
+			name = minidump_tests32;
+			productName = Untitled;
+			productReference = F9AE5B330DBFDBA300505983 /* minidump_tests32.cptest */;
+			productType = "com.apple.product-type.bundle";
+		};
 /* End PBXNativeTarget section */
 
 /* Begin PBXProject section */
 		08FB7793FE84155DC02AAC07 /* Project object */ = {
 			isa = PBXProject;
 			buildConfigurationList = 1DEB923508733DC60010E9CD /* Build configuration list for PBXProject "minidump_test" */;
+			compatibilityVersion = "Xcode 2.4";
 			hasScannedForEncodings = 1;
 			mainGroup = 08FB7794FE84155DC02AAC07 /* MinidumpWriter */;
 			projectDirPath = "";
+			projectRoot = "";
 			targets = (
 				8DD76F620486A84900D96B5E /* generator_test */,
 				9BD82A9A0B00267E0055103E /* handler_test */,
 				9B7CA84D0B1297F200CD3A1D /* unit_test */,
+				F9AE19C20DB04A9500C98454 /* minidump_tests64 */,
+				F9AE5B320DBFDBA300505983 /* minidump_tests32 */,
+				F93A88740E8B4C700026AF89 /* obj-c_TestCases */,
 			);
 		};
 /* End PBXProject section */
 
+/* Begin PBXResourcesBuildPhase section */
+		F93A88700E8B4C700026AF89 /* Resources */ = {
+			isa = PBXResourcesBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		F9AE19BE0DB04A9500C98454 /* Resources */ = {
+			isa = PBXResourcesBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		F9AE5B2E0DBFDBA300505983 /* Resources */ = {
+			isa = PBXResourcesBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+/* End PBXResourcesBuildPhase section */
+
+/* Begin PBXShellScriptBuildPhase section */
+		F93A88730E8B4C700026AF89 /* ShellScript */ = {
+			isa = PBXShellScriptBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+			);
+			inputPaths = (
+			);
+			outputPaths = (
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+			shellPath = /bin/sh;
+			shellScript = "# Run the unit tests in this test bundle.\n\"${SYSTEM_DEVELOPER_DIR}/Tools/RunUnitTests\"\n";
+		};
+		F9AE19C10DB04A9500C98454 /* ShellScript */ = {
+			isa = PBXShellScriptBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+			);
+			inputPaths = (
+			);
+			outputPaths = (
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+			shellPath = /bin/sh;
+			shellScript = "# Run the unit tests in this test bundle.\n\"${SYSTEM_DEVELOPER_DIR}/Tools/RunUnitTests\"\n# Run gcov on the framework getting tested\nif [ \"${CONFIGURATION}\" = 'Coverage' ];\nthen\n     FRAMEWORK_NAME=minidump_tests64\n     FRAMEWORK_OBJ_DIR=${OBJROOT}/${PROJECT_NAME}.build/${CONFIGURATION}/${FRAMEWORK_NAME}.build/Objects-normal/${NATIVE_ARCH_ACTUAL}\n     mkdir -p coverage\n     pushd coverage\n     echo find ${OBJROOT} -name *.gcda -exec gcov -o ${FRAMEWORK_OBJ_DIR} {} \\;\n     find ${OBJROOT} -name *.gcda -exec gcov -o ${FRAMEWORK_OBJ_DIR} {} \\;\n     popd\nfi ";
+		};
+		F9AE5B310DBFDBA300505983 /* ShellScript */ = {
+			isa = PBXShellScriptBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+			);
+			inputPaths = (
+			);
+			outputPaths = (
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+			shellPath = /bin/sh;
+			shellScript = "# Run the unit tests in this test bundle.\n\"${SYSTEM_DEVELOPER_DIR}/Tools/RunUnitTests\"\n\n";
+		};
+/* End PBXShellScriptBuildPhase section */
+
 /* Begin PBXSourcesBuildPhase section */
 		8DD76F640486A84900D96B5E /* Sources */ = {
 			isa = PBXSourcesBuildPhase;
 			buildActionMask = 2147483647;
 			files = (
 				9BD82C020B01333D0055103E /* minidump_generator_test.cc in Sources */,
 				9BD82C0F0B0133520055103E /* exception_handler.cc in Sources */,
 				9BD82C110B0133520055103E /* minidump_generator.cc in Sources */,
@@ -319,16 +541,53 @@
 				D2F6511B0BEF970E00920385 /* dynamic_images.cc in Sources */,
 				D2F6511D0BEF973500920385 /* file_id.cc in Sources */,
 				D2F6511E0BEF973600920385 /* macho_id.cc in Sources */,
 				D2F6511F0BEF973900920385 /* macho_utilities.cc in Sources */,
 				D2F651210BEF975400920385 /* macho_walker.cc in Sources */,
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 		};
+		F93A88710E8B4C700026AF89 /* Sources */ = {
+			isa = PBXSourcesBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				F93A88860E8B4C9A0026AF89 /* dwarftests.mm in Sources */,
+				F93A88870E8B4C9A0026AF89 /* dump_syms.mm in Sources */,
+				F93A88880E8B4C9A0026AF89 /* bytereader.cc in Sources */,
+				F93A88890E8B4C9A0026AF89 /* dwarf2reader.cc in Sources */,
+				F93A888A0E8B4C9A0026AF89 /* functioninfo.cc in Sources */,
+				F93A888B0E8B4C9A0026AF89 /* md5.c in Sources */,
+				F93A887D0E8B4C8C0026AF89 /* macho_walker.cc in Sources */,
+				F93A887E0E8B4C8C0026AF89 /* macho_id.cc in Sources */,
+				F93A887F0E8B4C8C0026AF89 /* macho_utilities.cc in Sources */,
+				F93A88800E8B4C8C0026AF89 /* file_id.cc in Sources */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		F9AE19BF0DB04A9500C98454 /* Sources */ = {
+			isa = PBXSourcesBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				F9B34E870DBC1E1600306484 /* dynamic_images.cc in Sources */,
+				F982089C0DB3280D0017AECA /* breakpad_nlist_test.cc in Sources */,
+				F98208A30DB32CAE0017AECA /* breakpad_nlist_64.cc in Sources */,
+				F9C5A4220DB82DD800209C76 /* DynamicImagesTests.cc in Sources */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		F9AE5B2F0DBFDBA300505983 /* Sources */ = {
+			isa = PBXSourcesBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				F9AE5B390DBFDBDB00505983 /* dynamic_images.cc in Sources */,
+				F9AE5B3A0DBFDBDB00505983 /* DynamicImagesTests.cc in Sources */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
 /* End PBXSourcesBuildPhase section */
 
 /* Begin XCBuildConfiguration section */
 		1DEB923208733DC60010E9CD /* Debug */ = {
 			isa = XCBuildConfiguration;
 			buildSettings = {
 				COPY_PHASE_STRIP = NO;
 				GCC_CW_ASM_SYNTAX = NO;
@@ -451,16 +710,192 @@
 				OTHER_CFLAGS = "-Wall";
 				PREBINDING = NO;
 				PRODUCT_NAME = handler_test;
 				USER_HEADER_SEARCH_PATHS = "../../.. $(inherited)";
 				ZERO_LINK = NO;
 			};
 			name = Release;
 		};
+		F93A88770E8B4C700026AF89 /* Debug */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				ALWAYS_SEARCH_USER_PATHS = NO;
+				COPY_PHASE_STRIP = NO;
+				FRAMEWORK_SEARCH_PATHS = "$(DEVELOPER_LIBRARY_DIR)/Frameworks";
+				GCC_CHAR_IS_UNSIGNED_CHAR = YES;
+				GCC_DYNAMIC_NO_PIC = NO;
+				GCC_ENABLE_FIX_AND_CONTINUE = NO;
+				GCC_ENABLE_OBJC_EXCEPTIONS = YES;
+				GCC_MODEL_TUNING = G5;
+				GCC_OPTIMIZATION_LEVEL = 0;
+				INFOPLIST_FILE = "obj-cTestCases-Info.plist";
+				INSTALL_PATH = "$(USER_LIBRARY_DIR)/Bundles";
+				OTHER_LDFLAGS = (
+					"-lcrypto",
+					"-framework",
+					Cocoa,
+					"-framework",
+					SenTestingKit,
+				);
+				PREBINDING = NO;
+				PRODUCT_NAME = octestcases;
+				USER_HEADER_SEARCH_PATHS = "../../../..//**";
+				WRAPPER_EXTENSION = octest;
+			};
+			name = Debug;
+		};
+		F93A88780E8B4C700026AF89 /* Release */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				ALWAYS_SEARCH_USER_PATHS = NO;
+				COPY_PHASE_STRIP = YES;
+				DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
+				FRAMEWORK_SEARCH_PATHS = "$(DEVELOPER_LIBRARY_DIR)/Frameworks";
+				GCC_CHAR_IS_UNSIGNED_CHAR = YES;
+				GCC_ENABLE_FIX_AND_CONTINUE = NO;
+				GCC_ENABLE_OBJC_EXCEPTIONS = YES;
+				GCC_MODEL_TUNING = G5;
+				INFOPLIST_FILE = "obj-cTestCases-Info.plist";
+				INSTALL_PATH = "$(USER_LIBRARY_DIR)/Bundles";
+				OTHER_LDFLAGS = (
+					"-lcrypto",
+					"-framework",
+					Cocoa,
+					"-framework",
+					SenTestingKit,
+				);
+				PREBINDING = NO;
+				PRODUCT_NAME = octestcases;
+				USER_HEADER_SEARCH_PATHS = "../../../..//**";
+				WRAPPER_EXTENSION = octest;
+				ZERO_LINK = NO;
+			};
+			name = Release;
+		};
+		F9AE19C40DB04A9500C98454 /* Debug */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				ARCHS = (
+					"$(NATIVE_ARCH_64_BIT)",
+					ppc64,
+				);
+				COPY_PHASE_STRIP = NO;
+				FRAMEWORK_SEARCH_PATHS = "$(DEVELOPER_LIBRARY_DIR)/Frameworks";
+				GCC_DYNAMIC_NO_PIC = NO;
+				GCC_ENABLE_FIX_AND_CONTINUE = NO;
+				GCC_MODEL_TUNING = G5;
+				GCC_OPTIMIZATION_LEVEL = 0;
+				GCC_PRECOMPILE_PREFIX_HEADER = YES;
+				GCC_PREFIX_HEADER = "$(SYSTEM_LIBRARY_DIR)/Frameworks/Carbon.framework/Headers/Carbon.h";
+				INFOPLIST_FILE = "minidump_tests64-Info.plist";
+				INSTALL_PATH = "$(USER_LIBRARY_DIR)/Bundles";
+				MACOSX_DEPLOYMENT_TARGET = 10.5;
+				OTHER_LDFLAGS = (
+					"-framework",
+					Carbon,
+					"-framework",
+					CPlusTest,
+				);
+				PREBINDING = NO;
+				PRODUCT_NAME = minidump_tests64;
+				SDKROOT = /Developer/SDKs/MacOSX10.5.sdk;
+				USER_HEADER_SEARCH_PATHS = "../../../**";
+				WRAPPER_EXTENSION = cptest;
+			};
+			name = Debug;
+		};
+		F9AE19C50DB04A9500C98454 /* Release */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				ARCHS = (
+					"$(NATIVE_ARCH_64_BIT)",
+					ppc64,
+				);
+				COPY_PHASE_STRIP = YES;
+				DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
+				FRAMEWORK_SEARCH_PATHS = "$(DEVELOPER_LIBRARY_DIR)/Frameworks";
+				GCC_ENABLE_FIX_AND_CONTINUE = NO;
+				GCC_MODEL_TUNING = G5;
+				GCC_PRECOMPILE_PREFIX_HEADER = YES;
+				GCC_PREFIX_HEADER = "$(SYSTEM_LIBRARY_DIR)/Frameworks/Carbon.framework/Headers/Carbon.h";
+				INFOPLIST_FILE = "minidump_tests64-Info.plist";
+				INSTALL_PATH = "$(USER_LIBRARY_DIR)/Bundles";
+				MACOSX_DEPLOYMENT_TARGET = 10.5;
+				OTHER_LDFLAGS = (
+					"-framework",
+					Carbon,
+					"-framework",
+					CPlusTest,
+				);
+				PREBINDING = NO;
+				PRODUCT_NAME = minidump_tests64;
+				SDKROOT = /Developer/SDKs/MacOSX10.5.sdk;
+				USER_HEADER_SEARCH_PATHS = "../../../**";
+				WRAPPER_EXTENSION = cptest;
+				ZERO_LINK = NO;
+			};
+			name = Release;
+		};
+		F9AE5B350DBFDBA300505983 /* Debug */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				ARCHS = "$(NATIVE_ARCH)";
+				COPY_PHASE_STRIP = NO;
+				FRAMEWORK_SEARCH_PATHS = "$(DEVELOPER_LIBRARY_DIR)/Frameworks";
+				GCC_DYNAMIC_NO_PIC = NO;
+				GCC_ENABLE_FIX_AND_CONTINUE = NO;
+				GCC_MODEL_TUNING = G5;
+				GCC_OPTIMIZATION_LEVEL = 0;
+				GCC_PRECOMPILE_PREFIX_HEADER = YES;
+				GCC_PREFIX_HEADER = "$(SYSTEM_LIBRARY_DIR)/Frameworks/Carbon.framework/Headers/Carbon.h";
+				INFOPLIST_FILE = "minidump_tests32-Info.plist";
+				INSTALL_PATH = "$(USER_LIBRARY_DIR)/Bundles";
+				OTHER_LDFLAGS = (
+					"-framework",
+					Carbon,
+					"-framework",
+					CPlusTest,
+					"-lcrypto",
+				);
+				PREBINDING = NO;
+				PRODUCT_NAME = minidump_tests32;
+				USER_HEADER_SEARCH_PATHS = "../../../**";
+				WRAPPER_EXTENSION = cptest;
+			};
+			name = Debug;
+		};
+		F9AE5B370DBFDBA300505983 /* Release */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				ARCHS = "$(NATIVE_ARCH)";
+				COPY_PHASE_STRIP = YES;
+				DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
+				FRAMEWORK_SEARCH_PATHS = "$(DEVELOPER_LIBRARY_DIR)/Frameworks";
+				GCC_ENABLE_FIX_AND_CONTINUE = NO;
+				GCC_MODEL_TUNING = G5;
+				GCC_PRECOMPILE_PREFIX_HEADER = YES;
+				GCC_PREFIX_HEADER = "$(SYSTEM_LIBRARY_DIR)/Frameworks/Carbon.framework/Headers/Carbon.h";
+				INFOPLIST_FILE = "minidump_tests32-Info.plist";
+				INSTALL_PATH = "$(USER_LIBRARY_DIR)/Bundles";
+				OTHER_LDFLAGS = (
+					"-lcrypto",
+					"-framework",
+					Carbon,
+					"-framework",
+					CPlusTest,
+				);
+				PREBINDING = NO;
+				PRODUCT_NAME = minidump_tests32;
+				USER_HEADER_SEARCH_PATHS = "../../../**";
+				WRAPPER_EXTENSION = cptest;
+				ZERO_LINK = NO;
+			};
+			name = Release;
+		};
 /* End XCBuildConfiguration section */
 
 /* Begin XCConfigurationList section */
 		1DEB923108733DC60010E9CD /* Build configuration list for PBXNativeTarget "generator_test" */ = {
 			isa = XCConfigurationList;
 			buildConfigurations = (
 				1DEB923208733DC60010E9CD /* Debug */,
 				1DEB923308733DC60010E9CD /* Release */,
@@ -490,12 +925,39 @@
 			isa = XCConfigurationList;
 			buildConfigurations = (
 				9BD82AA70B0026BF0055103E /* Debug */,
 				9BD82AA80B0026BF0055103E /* Release */,
 			);
 			defaultConfigurationIsVisible = 0;
 			defaultConfigurationName = Release;
 		};
+		F93A88790E8B4C700026AF89 /* Build configuration list for PBXNativeTarget "obj-c_TestCases" */ = {
+			isa = XCConfigurationList;
+			buildConfigurations = (
+				F93A88770E8B4C700026AF89 /* Debug */,
+				F93A88780E8B4C700026AF89 /* Release */,
+			);
+			defaultConfigurationIsVisible = 0;
+			defaultConfigurationName = Release;
+		};
+		F9AE19C70DB04AA200C98454 /* Build configuration list for PBXNativeTarget "minidump_tests64" */ = {
+			isa = XCConfigurationList;
+			buildConfigurations = (
+				F9AE19C40DB04A9500C98454 /* Debug */,
+				F9AE19C50DB04A9500C98454 /* Release */,
+			);
+			defaultConfigurationIsVisible = 0;
+			defaultConfigurationName = Release;
+		};
+		F9AE5B380DBFDBA300505983 /* Build configuration list for PBXNativeTarget "minidump_tests32" */ = {
+			isa = XCConfigurationList;
+			buildConfigurations = (
+				F9AE5B350DBFDBA300505983 /* Debug */,
+				F9AE5B370DBFDBA300505983 /* Release */,
+			);
+			defaultConfigurationIsVisible = 0;
+			defaultConfigurationName = Release;
+		};
 /* End XCConfigurationList section */
 	};
 	rootObject = 08FB7793FE84155DC02AAC07 /* Project object */;
 }
new file mode 100644
--- /dev/null
+++ b/toolkit/crashreporter/google-breakpad/src/client/mac/handler/minidump_tests32-Info.plist
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+	<key>CFBundleDevelopmentRegion</key>
+	<string>English</string>
+	<key>CFBundleExecutable</key>
+	<string>${EXECUTABLE_NAME}</string>
+	<key>CFBundleIdentifier</key>
+	<string>com.google.breakpad.minidump_tests32</string>
+	<key>CFBundleInfoDictionaryVersion</key>
+	<string>6.0</string>
+	<key>CFBundlePackageType</key>
+	<string>BNDL</string>
+	<key>CFBundleSignature</key>
+	<string>????</string>
+	<key>CFBundleVersion</key>
+	<string>1.0</string>
+</dict>
+</plist>
new file mode 100644
--- /dev/null
+++ b/toolkit/crashreporter/google-breakpad/src/client/mac/handler/minidump_tests64-Info.plist
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+	<key>CFBundleDevelopmentRegion</key>
+	<string>English</string>
+	<key>CFBundleExecutable</key>
+	<string>${EXECUTABLE_NAME}</string>
+	<key>CFBundleIdentifier</key>
+	<string>com.google.breakpad.minidump_tests64</string>
+	<key>CFBundleInfoDictionaryVersion</key>
+	<string>6.0</string>
+	<key>CFBundlePackageType</key>
+	<string>BNDL</string>
+	<key>CFBundleSignature</key>
+	<string>????</string>
+	<key>CFBundleVersion</key>
+	<string>1.0</string>
+	<key>CSResourcesFileMapped</key>
+	<string>yes</string>
+</dict>
+</plist>
new file mode 100644
--- /dev/null
+++ b/toolkit/crashreporter/google-breakpad/src/client/mac/handler/obj-cTestCases-Info.plist
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+	<key>CFBundleDevelopmentRegion</key>
+	<string>English</string>
+	<key>CFBundleExecutable</key>
+	<string>${EXECUTABLE_NAME}</string>
+	<key>CFBundleIdentifier</key>
+	<string>com.yourcompany.${PRODUCT_NAME:identifier}</string>
+	<key>CFBundleInfoDictionaryVersion</key>
+	<string>6.0</string>
+	<key>CFBundlePackageType</key>
+	<string>BNDL</string>
+	<key>CFBundleSignature</key>
+	<string>????</string>
+	<key>CFBundleVersion</key>
+	<string>1.0</string>
+</dict>
+</plist>
new file mode 100644
--- /dev/null
+++ b/toolkit/crashreporter/google-breakpad/src/client/mac/handler/testcases/DynamicImagesTests.cc
@@ -0,0 +1,85 @@
+// Copyright (c) 2008, Google Inc.
+// All rights reserved
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+//
+//  DynamicImagesTests.cpp
+//  minidump_test
+//
+//  Created by Neal Sidhwaney on 4/17/08.
+//  Copyright 2008 Google Inc. All rights reserved.
+//
+
+#include "client/mac/handler/testcases/DynamicImagesTests.h"
+#include "client/mac/handler/dynamic_images.h"
+
+DynamicImagesTests test2(TEST_INVOCATION(DynamicImagesTests,
+                                         ReadTaskMemoryTest));
+DynamicImagesTests test3(TEST_INVOCATION(DynamicImagesTests,
+                                         ReadLibrariesFromLocalTaskTest));
+
+DynamicImagesTests::DynamicImagesTests(TestInvocation *invocation)
+    : TestCase(invocation) {
+}
+
+DynamicImagesTests::~DynamicImagesTests() {
+}
+
+void DynamicImagesTests::ReadTaskMemoryTest() {
+  kern_return_t kr;
+
+  // pick test2 as a symbol we know to be valid to read
+  // anything will work, really
+  void *addr = reinterpret_cast<void*>(&test2);
+  void *buf;
+
+  fprintf(stderr, "reading 0x%p\n", addr);
+  buf = google_breakpad::ReadTaskMemory(mach_task_self(),
+                                        addr,
+                                        getpagesize(),
+                                        &kr);
+
+  CPTAssert(kr == KERN_SUCCESS);
+
+  CPTAssert(buf != NULL);
+
+  CPTAssert(0 == memcmp(buf, (const void*)addr, getpagesize()));
+
+  free(buf);
+}
+
+void DynamicImagesTests::ReadLibrariesFromLocalTaskTest() {
+
+  mach_port_t me = mach_task_self();
+  google_breakpad::DynamicImages *d = new google_breakpad::DynamicImages(me);
+
+  fprintf(stderr,"Local task image count: %d\n", d->GetImageCount());
+
+  d->TestPrint();
+
+  CPTAssert(d->GetImageCount() > 0);
+}
new file mode 100644
--- /dev/null
+++ b/toolkit/crashreporter/google-breakpad/src/client/mac/handler/testcases/DynamicImagesTests.h
@@ -0,0 +1,52 @@
+// Copyright (c) 2008, Google Inc.
+// All rights reserved
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+//
+//  DynamicImagesTests.h
+//  minidump_test
+//
+//  Created by Neal Sidhwaney on 4/17/08.
+//  Copyright 2008 Google Inc. All rights reserved.
+//
+//
+
+#ifndef _CLIENT_MAC_HANDLER_TESTCASES_DYNAMICIMAGESTESTS_H__
+#define _CLIENT_MAC_HANDLER_TESTCASES_DYNAMICIMAGESTESTS_H__
+
+#include <CPlusTest/CPlusTest.h>
+
+class DynamicImagesTests : public TestCase {
+ public:
+  explicit DynamicImagesTests(TestInvocation* invocation);
+  virtual ~DynamicImagesTests();
+
+  void ReadTaskMemoryTest();
+  void ReadLibrariesFromLocalTaskTest();
+};
+
+#endif /* _CLIENT_MAC_HANDLER_TESTCASES_DYNAMICIMAGESTESTS_H__ */
new file mode 100644
--- /dev/null
+++ b/toolkit/crashreporter/google-breakpad/src/client/mac/handler/testcases/breakpad_nlist_test.cc
@@ -0,0 +1,106 @@
+// Copyright (c) 2008, Google Inc.
+// All rights reserved
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+//
+//  breakpad_nlist_test.cc
+//  minidump_test
+//
+//  Created by Neal Sidhwaney on 4/13/08.
+//  Copyright 2008 Google Inc. All rights reserved.
+//
+
+#include "client/mac/handler/testcases/breakpad_nlist_test.h"
+#include <mach-o/nlist.h>
+#include "client/mac/handler/breakpad_nlist_64.h"
+
+BreakpadNlistTest test1(TEST_INVOCATION(BreakpadNlistTest, CompareToNM));
+
+BreakpadNlistTest::BreakpadNlistTest(TestInvocation *invocation)
+    : TestCase(invocation) {
+}
+
+
+BreakpadNlistTest::~BreakpadNlistTest() {
+}
+
+void BreakpadNlistTest::CompareToNM() {
+#if TARGET_CPU_X86_64
+  system("/usr/bin/nm -arch x86_64 /usr/lib/dyld > /tmp/dyld-namelist.txt");
+#elif TARGET_CPU_PPC64
+  system("/usr/bin/nm -arch ppc64 /usr/lib/dyld > /tmp/dyld-namelist.txt");
+#endif
+
+  FILE *fd = fopen("/tmp/dyld-namelist.txt", "rt");
+
+  char oneNMAddr[30];
+  char symbolType;
+  char symbolName[500];
+  while (!feof(fd)) {
+    fscanf(fd, "%s %c %s", oneNMAddr, &symbolType, symbolName);
+    breakpad_nlist symbolList[2];
+    breakpad_nlist &list = symbolList[0];
+
+    memset(symbolList, 0, sizeof(breakpad_nlist)*2);
+    const char *symbolNames[2];
+    symbolNames[0] = (const char*)symbolName;
+    symbolNames[1] = "\0";
+    breakpad_nlist_64("/usr/lib/dyld", &list, symbolNames);
+    uint64_t nmAddr = strtol(oneNMAddr, NULL, 16);
+    if (!IsSymbolMoreThanOnceInDyld(symbolName)) {
+      CPTAssert(nmAddr == symbolList[0].n_value);
+    }
+  }
+
+  fclose(fd);
+}
+
+bool BreakpadNlistTest::IsSymbolMoreThanOnceInDyld(const char *symbolName) {
+  // These are the symbols that occur more than once when nm dumps
+  // the symbol table of /usr/lib/dyld.  Our nlist program returns
+  // the first address because it's doing a search so we need to exclude
+  // these from causing the test to fail
+  const char *multipleSymbols[] = {
+    "__Z41__static_initialization_and_destruction_0ii",
+    "___tcf_0",
+    "___tcf_1",
+    "_read_encoded_value_with_base",
+    "_read_sleb128",
+    "_read_uleb128",
+    "\0"};
+
+  bool found = false;
+
+  for (int i = 0; multipleSymbols[i][0]; i++) {
+    if (!strcmp(multipleSymbols[i], symbolName)) {
+      found = true;
+      break;
+    }
+  }
+
+  return found;
+}
new file mode 100644
--- /dev/null
+++ b/toolkit/crashreporter/google-breakpad/src/client/mac/handler/testcases/breakpad_nlist_test.h
@@ -0,0 +1,62 @@
+// Copyright (c) 2008, Google Inc.
+// All rights reserved
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+//
+//  breakpad_nlist_test.h
+//  minidump_test
+//
+//  Created by Neal Sidhwaney on 4/13/08.
+//  Copyright 2008 Google Inc. All rights reserved.
+//
+//
+
+#ifndef CLIENT_MAC_HANDLER_TESTCASES_BREAKPAD_NLIST_TEST_H__
+#define CLIENT_MAC_HANDLER_TESTCASES_BREAKPAD_NLIST_TEST_H__
+
+#include <CPlusTest/CPlusTest.h>
+
+class BreakpadNlistTest : public TestCase {
+ private:
+
+  // nm dumps multiple addresses for the same symbol in
+  // /usr/lib/dyld. So we track those so we don't report failures
+  // in mismatches between what our nlist returns and what nm has
+  // for the duplicate symbols.
+  bool IsSymbolMoreThanOnceInDyld(const char *symbolName);
+
+ public:
+  explicit BreakpadNlistTest(TestInvocation* invocation);
+  virtual ~BreakpadNlistTest();
+
+
+  /* This test case runs nm on /usr/lib/dyld and then compares the
+     output of every symbol to what our nlist implementation returns */
+  void CompareToNM();
+};
+
+#endif /* CLIENT_MAC_HANDLER_TESTCASES_BREAKPAD_NLIST_TEST_H__*/
new file mode 100644
--- /dev/null
+++ b/toolkit/crashreporter/google-breakpad/src/client/mac/handler/testcases/dwarftests.h
@@ -0,0 +1,46 @@
+// Copyright (c) 2008, Google Inc.
+// All rights reserved
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+//
+//  dwarftests.h
+//  minidump_test
+//
+//  Created by Neal Sidhwaney on 9/24/08.
+//  Copyright 2008 Google Inc. All rights reserved.
+//
+
+#import <SenTestingKit/SenTestingKit.h>
+
+
+@interface dwarftests : SenTestCase {
+
+}
+
+- (void) testDWARFSymbolFileGeneration;
+
+@end
new file mode 100644
--- /dev/null
+++ b/toolkit/crashreporter/google-breakpad/src/client/mac/handler/testcases/dwarftests.mm
@@ -0,0 +1,60 @@
+// Copyright (c) 2008, Google Inc.
+// All rights reserved
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+//
+//  dwarftests.m
+//  minidump_test
+//
+//  Created by Neal Sidhwaney on 9/24/08.
+//  Copyright 2008 Google Inc. All rights reserved.
+//
+
+#import "dwarftests.h"
+#import "dump_syms.h"
+
+@implementation dwarftests
+- (void) testDWARFSymbolFileGeneration {
+  NSString *inputBreakpadSymbolFile = @"testcases/testdata/dump_syms_i386_breakpad.sym";
+  NSString *outputBreakpadSymbolFile = @"/tmp/dump_syms_i386.breakpad";
+
+  DumpSymbols *dump = [[DumpSymbols alloc] initWithContentsOfFile:@"testcases/testdata/dump_syms_dwarf_data"];
+
+  STAssertNotNil(dump, @"DumpSymbols is nil");
+  [dump setArchitecture:@"i386"];
+  [dump writeSymbolFile:outputBreakpadSymbolFile];
+  
+  NSData *d = [[NSData alloc] initWithContentsOfFile:inputBreakpadSymbolFile];
+  STAssertNotNil(d, @"Input breakpad symbol file not found");
+  
+  NSData *d1 = [[NSData alloc] initWithContentsOfFile:outputBreakpadSymbolFile]; 
+  STAssertNotNil(d1, @"Output breakpad symbol file not found");
+
+  STAssertTrue([d isEqualToData:d1],
+  @"Symbol files were not equal!",nil);
+}
+@end
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..5be17aeedcf1bb46e7a5290fbd7d9eee5969caf0
GIT binary patch
literal 702795
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