From d5a2043fd3cae23aa5802e59e685aa4261199408 Mon Sep 17 00:00:00 2001 From: Jeremy Rifkin <51220084+jeremy-rifkin@users.noreply.github.com> Date: Mon, 30 Dec 2024 22:41:54 -0600 Subject: [PATCH 1/2] Set C++ standard for old compiler versions in check_support, fixes #200 --- cmake/Autoconfig.cmake | 2 ++ 1 file changed, 2 insertions(+) diff --git a/cmake/Autoconfig.cmake b/cmake/Autoconfig.cmake index 148577d..833b1ef 100644 --- a/cmake/Autoconfig.cmake +++ b/cmake/Autoconfig.cmake @@ -4,6 +4,8 @@ function(check_support var source includes libraries definitions) list(APPEND CMAKE_REQUIRED_INCLUDES "${CMAKE_CURRENT_SOURCE_DIR}/cmake") set(CMAKE_REQUIRED_LIBRARIES "${libraries}") set(CMAKE_REQUIRED_DEFINITIONS "${definitions}") + set(CMAKE_CXX_STANDARD 11) + set(CMAKE_CXX_STANDARD_REQUIRED ON) string(CONCAT full_source "#include \"${source}\"" ${nonce}) check_cxx_source_compiles(${full_source} ${var}) set(${var} ${${var}} PARENT_SCOPE) From 0c408390096c6593285594ffe10c404946d8db73 Mon Sep 17 00:00:00 2001 From: Jeremy Rifkin <51220084+jeremy-rifkin@users.noreply.github.com> Date: Mon, 30 Dec 2024 23:07:15 -0600 Subject: [PATCH 2/2] Specify __cdecl for the terminate handler on MSVC, fixes #197 --- src/utils.cpp | 2 +- src/utils/common.hpp | 6 ++++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/src/utils.cpp b/src/utils.cpp index ce2917f..0841841 100644 --- a/src/utils.cpp +++ b/src/utils.cpp @@ -40,7 +40,7 @@ namespace cpptrace { } } - [[noreturn]] void terminate_handler() { + [[noreturn]] void MSVC_CDECL terminate_handler() { // TODO: Support std::nested_exception? try { auto ptr = std::current_exception(); diff --git a/src/utils/common.hpp b/src/utils/common.hpp index faf6779..c15d87f 100644 --- a/src/utils/common.hpp +++ b/src/utils/common.hpp @@ -25,6 +25,12 @@ #define NODISCARD #endif +#if IS_MSVC + #define MSVC_CDECL __cdecl +#else + #define MSVC_CDECL +#endif + namespace cpptrace { namespace detail { static const stacktrace_frame null_frame {