summaryrefslogtreecommitdiffstats
path: root/chrome/app/chrome_dll_main.cc
diff options
context:
space:
mode:
authormark@chromium.org <mark@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-08-05 19:26:07 +0000
committermark@chromium.org <mark@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-08-05 19:26:07 +0000
commite14a9f93c4ca927334008eb83127e1fb7598fe1c (patch)
treefa724e9008c20f9734084f6758625045e6f59452 /chrome/app/chrome_dll_main.cc
parent7fa319410e5dbc1739e476f317a33e0ab276a94a (diff)
downloadchromium_src-e14a9f93c4ca927334008eb83127e1fb7598fe1c.zip
chromium_src-e14a9f93c4ca927334008eb83127e1fb7598fe1c.tar.gz
chromium_src-e14a9f93c4ca927334008eb83127e1fb7598fe1c.tar.bz2
Move the entire application into a dylib (framework)
Review URL: http://codereview.chromium.org/160538 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@22506 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/app/chrome_dll_main.cc')
-rw-r--r--chrome/app/chrome_dll_main.cc25
1 files changed, 24 insertions, 1 deletions
diff --git a/chrome/app/chrome_dll_main.cc b/chrome/app/chrome_dll_main.cc
index 43c22cf..7576dfd 100644
--- a/chrome/app/chrome_dll_main.cc
+++ b/chrome/app/chrome_dll_main.cc
@@ -92,6 +92,7 @@ DLLEXPORT int __cdecl ChromeMain(HINSTANCE instance,
}
#elif defined(OS_POSIX)
extern "C" {
+__attribute__((visibility("default")))
int ChromeMain(int argc, const char** argv);
}
#endif
@@ -295,12 +296,29 @@ int ChromeMain(int argc, const char** argv) {
#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 @@ int ChromeMain(int argc, const char** argv) {
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;
}