From e0fb4445cd2f5f4bb94ea23122548debddc41ba6 Mon Sep 17 00:00:00 2001 From: Shauren Date: Mon, 28 Nov 2016 18:37:51 +0100 Subject: Core/Debugging: Added wheaty everywhere and modified it to always reliably report issues during static initialization --- src/common/Debugging/WheatyExceptionReport.cpp | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) (limited to 'src/common/Debugging/WheatyExceptionReport.cpp') diff --git a/src/common/Debugging/WheatyExceptionReport.cpp b/src/common/Debugging/WheatyExceptionReport.cpp index 72abec161b9..29d9a35af8a 100644 --- a/src/common/Debugging/WheatyExceptionReport.cpp +++ b/src/common/Debugging/WheatyExceptionReport.cpp @@ -50,8 +50,11 @@ inline LPTSTR ErrorMessage(DWORD dw) //============================== Global Variables ============================= // -// Declare the static variables of the WheatyExceptionReport class +// Declare the static variables of the WheatyExceptionReport class and force their initialization before any other static in the program // +#pragma warning(push) +#pragma warning(disable: 4073) // C4073: initializers put in library initialization area +#pragma init_seg(lib) TCHAR WheatyExceptionReport::m_szLogFileName[MAX_PATH]; TCHAR WheatyExceptionReport::m_szDumpFileName[MAX_PATH]; LPTOP_LEVEL_EXCEPTION_FILTER WheatyExceptionReport::m_previousFilter; @@ -65,9 +68,9 @@ bool WheatyExceptionReport::alreadyCrashed; std::mutex WheatyExceptionReport::alreadyCrashedLock; WheatyExceptionReport::pRtlGetVersion WheatyExceptionReport::RtlGetVersion; - // Declare global instance of class WheatyExceptionReport g_WheatyExceptionReport; +#pragma warning(pop) //============================== Class Methods ============================= @@ -1460,3 +1463,8 @@ char* WheatyExceptionReport::PrintSymbolDetail(char* pszCurrBuffer) } #endif // _WIN32 + +void InitializeCrashHandler() +{ + // dummy call to make the linker not discard the compilation unit +} -- cgit v1.2.3