From 8cf0c3e0f10e74e89f0b868e4168ec019ed9b998 Mon Sep 17 00:00:00 2001 From: Wez Furlong Date: Wed, 20 Jul 2016 10:58:54 -0700 Subject: [PATCH] folly: allow folly::init to build on systems without the symbolizer (macOS) Summary: This makes folly/init/Init.cpp compile on macOS by leveraging equivalent functionality in the glog library when the folly symbolizer is not available. This is true for macOS and also for Windows. I haven't done anything to handle Windows in this diff. Reviewed By: yfeldblum Differential Revision: D3585509 fbshipit-source-id: 2e0c29520a53826acbf656a7a02659b4e905802f --- folly/init/Init.cpp | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/folly/init/Init.cpp b/folly/init/Init.cpp index 5b07a9e9..f325ba34 100644 --- a/folly/init/Init.cpp +++ b/folly/init/Init.cpp @@ -19,29 +19,43 @@ #include #include +#if !defined(__APPLE__) && !defined(_WIN32) +#define USE_FOLLY_SYMBOLIZER 1 +#endif + +#ifdef USE_FOLLY_SYMBOLIZER #include +#endif #include namespace folly { void init(int* argc, char*** argv, bool removeFlags) { +#ifdef USE_FOLLY_SYMBOLIZER // Install the handler now, to trap errors received during startup. // The callbacks, if any, can be installed later folly::symbolizer::installFatalSignalHandler(); +#else + google::InstallFailureSignalHandler(); +#endif google::ParseCommandLineFlags(argc, argv, removeFlags); auto programName = argc && argv && *argc > 0 ? (*argv)[0] : "unknown"; google::InitGoogleLogging(programName); +#ifdef USE_FOLLY_SYMBOLIZER // Don't use glog's DumpStackTraceAndExit; rely on our signal handler. google::InstallFailureFunction(abort); +#endif // Move from the registration phase to the "you can actually instantiate // things now" phase. folly::SingletonVault::singleton()->registrationComplete(); +#ifdef USE_FOLLY_SYMBOLIZER // Actually install the callbacks into the handler. folly::symbolizer::installFatalSignalCallbacks(); +#endif } } //!folly -- 2.34.1