Index: chrome/app/chrome_dll_main.cc |
=================================================================== |
--- chrome/app/chrome_dll_main.cc (revision 22482) |
+++ chrome/app/chrome_dll_main.cc (working copy) |
@@ -92,6 +92,7 @@ |
} |
#elif defined(OS_POSIX) |
extern "C" { |
+__attribute__((visibility("default"))) |
int ChromeMain(int argc, const char** argv); |
} |
#endif |
@@ -295,12 +296,29 @@ |
#endif |
#if defined(OS_MACOSX) |
+ // TODO(mark): Some of these things ought to be handled in chrome_exe_main.mm, |
+ // such as Breakpad initialization. Under the current architecture, nothing |
+ // in chrome_exe_main can rely directly on chrome_dll code on the Mac, |
+ // though, so until some of this code is refactored to avoid such a |
+ // dependency, it lives here. See also the TODO(mark) below at |
+ // DestructCrashReporter(). |
+ base::EnableTerminationOnHeapCorruption(); |
+ |
+ // The exit manager is in charge of calling the dtors of singletons. |
+ // Win has one here, but we assert with multiples from BrowserMain() if we |
+ // keep it. |
+ // base::AtExitManager exit_manager; |
+ |
+#if defined(GOOGLE_CHROME_BUILD) |
+ InitCrashReporter(); |
+#endif |
+ |
// If Breakpad is not present then turn off os crash dumps so we don't have |
// to wait eons for Apple's Crash Reporter to generate a dump. |
if (IsCrashReporterDisabled()) { |
DebugUtil::DisableOSCrashDumps(); |
} |
-#endif |
+#endif // OS_MACOSX |
RegisterInvalidParamHandler(); |
// The exit manager is in charge of calling the dtors of singleton objects. |
@@ -556,5 +574,10 @@ |
logging::CleanupChromeLogging(); |
+#if defined(OS_MACOSX) && defined(GOOGLE_CHROME_BUILD) |
+ // TODO(mark): See the TODO(mark) above at InitCrashReporter. |
+ DestructCrashReporter(); |
+#endif // OS_MACOSX && GOOGLE_CHROME_BUILD |
+ |
return rv; |
} |