From: Peter Crozier Date: Wed, 13 May 2020 13:17:00 +0000 (+0100) Subject: Consolidate Linux and Mac version of YS_DEBUGTRAP_IF_DEBUGGING. X-Git-Tag: working-ls180~546^2 X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=495dcfc812be0f990bee20fc1ac819c72b8b7e47;p=yosys.git Consolidate Linux and Mac version of YS_DEBUGTRAP_IF_DEBUGGING. --- diff --git a/kernel/log.h b/kernel/log.h index 4b60ffb0d..6c5de78d7 100644 --- a/kernel/log.h +++ b/kernel/log.h @@ -97,15 +97,12 @@ YOSYS_NAMESPACE_BEGIN // if a debugger is attached, and does nothing otherwise. #if defined(_WIN32) # define YS_DEBUGTRAP_IF_DEBUGGING do { if (IsDebuggerPresent()) DebugBreak(); } while(0) -#elif defined(__unix__) +# elif defined(__unix__) || (defined(__APPLE__) && defined(__MACH__)) // There is no reliable (or portable) *nix equivalent of IsDebuggerPresent(). However, // debuggers will stop when SIGTRAP is raised, even if the action is set to ignore. # define YS_DEBUGTRAP_IF_DEBUGGING do { \ - sighandler_t old = signal(SIGTRAP, SIG_IGN); raise(SIGTRAP); signal(SIGTRAP, old); \ + auto old = signal(SIGTRAP, SIG_IGN); raise(SIGTRAP); signal(SIGTRAP, old); \ } while(0) -#elif defined(__APPLE__) && defined(__MACH__) -// MacOS -#define YS_DEBUGTRAP_IF_DEBUGGING { sig_t old = signal(SIGTRAP, SIG_IGN); raise(SIGTRAP); signal(SIGTRAP, old); } #else # define YS_DEBUGTRAP_IF_DEBUGGING do {} while(0) #endif