Index: extern/libmv/third_party/glog/src/utilities.cc =================================================================== --- extern/libmv/third_party/glog/src/utilities.cc (revision 44517) +++ extern/libmv/third_party/glog/src/utilities.cc (working copy) @@ -131,6 +131,7 @@ } } +static void DumpStackTraceAndExit() ATTRIBUTE_NORETURN; static void DumpStackTraceAndExit() { DumpStackTrace(1, DebugWriteToStderr, NULL); Index: extern/libmv/third_party/glog/src/utilities.h =================================================================== --- extern/libmv/third_party/glog/src/utilities.h (revision 44517) +++ extern/libmv/third_party/glog/src/utilities.h (working copy) @@ -105,7 +105,7 @@ # undef STACKTRACE_H #elif defined(HAVE_LIB_UNWIND) # define STACKTRACE_H "stacktrace_libunwind-inl.h" -#elif !defined(NO_FRAME_POINTER) +#elif !defined(NO_FRAME_POINTER) && !defined(__clang__) # if defined(__i386__) && __GNUC__ >= 2 # define STACKTRACE_H "stacktrace_x86-inl.h" # elif defined(__x86_64__) && __GNUC__ >= 2 @@ -142,8 +142,10 @@ #ifdef HAVE___ATTRIBUTE__ # define ATTRIBUTE_NOINLINE __attribute__ ((noinline)) +# define ATTRIBUTE_NORETURN __attribute__ ((noreturn)) # define HAVE_ATTRIBUTE_NOINLINE #else +# define ATTRIBUTE_NORETURN # define ATTRIBUTE_NOINLINE #endif Index: extern/libmv/third_party/glog/src/logging.cc =================================================================== --- extern/libmv/third_party/glog/src/logging.cc (revision 44517) +++ extern/libmv/third_party/glog/src/logging.cc (working copy) @@ -1231,6 +1231,7 @@ #endif } +static void logging_fail() ATTRIBUTE_NORETURN; static void logging_fail() { // #if defined(_DEBUG) && defined(_MSC_VER) // doesn't work for my laptop (sergey) @@ -1243,14 +1244,9 @@ #endif } -#ifdef HAVE___ATTRIBUTE__ -GOOGLE_GLOG_DLL_DECL -void (*g_logging_fail_func)() __attribute__((noreturn)) = &logging_fail; -#else -GOOGLE_GLOG_DLL_DECL void (*g_logging_fail_func)() = &logging_fail; -#endif +GOOGLE_GLOG_DLL_DECL void (*g_logging_fail_func)() ATTRIBUTE_NORETURN = &logging_fail; -void InstallFailureFunction(void (*fail_func)()) { +void InstallFailureFunction(void (*fail_func)() ATTRIBUTE_NORETURN) { g_logging_fail_func = fail_func; } Index: extern/libmv/third_party/glog/src/glog/logging.h =================================================================== --- extern/libmv/third_party/glog/src/glog/logging.h (revision 44517) +++ extern/libmv/third_party/glog/src/glog/logging.h (working copy) @@ -487,7 +487,7 @@ GOOGLE_GLOG_DLL_DECL void ShutdownGoogleLogging(); // Install a function which will be called after LOG(FATAL). -GOOGLE_GLOG_DLL_DECL void InstallFailureFunction(void (*fail_func)()); +GOOGLE_GLOG_DLL_DECL void InstallFailureFunction(void (*fail_func)() __attribute__ ((noreturn))); class LogSink; // defined below