Consolidate Linux and Mac version of YS_DEBUGTRAP_IF_DEBUGGING.

This commit is contained in:
Peter Crozier 2020-05-13 14:17:00 +01:00
parent 3988f935b8
commit 495dcfc812
1 changed files with 2 additions and 5 deletions

View File

@ -97,15 +97,12 @@ YOSYS_NAMESPACE_BEGIN
// if a debugger is attached, and does nothing otherwise. // if a debugger is attached, and does nothing otherwise.
#if defined(_WIN32) #if defined(_WIN32)
# define YS_DEBUGTRAP_IF_DEBUGGING do { if (IsDebuggerPresent()) DebugBreak(); } while(0) # 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, // 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. // debuggers will stop when SIGTRAP is raised, even if the action is set to ignore.
# define YS_DEBUGTRAP_IF_DEBUGGING do { \ # 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) } 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 #else
# define YS_DEBUGTRAP_IF_DEBUGGING do {} while(0) # define YS_DEBUGTRAP_IF_DEBUGGING do {} while(0)
#endif #endif