# if defined(SPARC) && !defined(SIGPWR)
/* SPARC/Linux doesn't properly define SIGPWR in <signal.h>. */
/* It is aliased to SIGLOST in asm/signal.h, though. */
-# define SIG_SUSPEND SIGLOST
+# define SIG_SUSPEND GC_get_suspend_signal()
+# define SIG_SUSPEND_DEFAULT SIGLOST
# else
/* Linuxthreads itself uses SIGUSR1 and SIGUSR2. */
# define SIG_SUSPEND GC_get_suspend_signal()
# define SIG_THR_RESTART_DEFAULT SIGXCPU
# endif
# elif !defined(GC_OPENBSD_THREADS) && !defined(GC_DARWIN_THREADS)
+# define SIG_SUSPEND GC_get_suspend_signal()
# if defined(_SIGRTMIN)
-# define SIG_SUSPEND _SIGRTMIN + 6
+# define SIG_SUSPEND_DEFAULT _SIGRTMIN + 6
# else
-# define SIG_SUSPEND SIGRTMIN + 6
+# define SIG_SUSPEND_DEFAULT SIGRTMIN + 6
# endif
# endif
#endif /* GC_PTHREADS && !SIG_SUSPEND */
# ifndef GC_FREEBSD_THREADS
# define MPROTECT_VDB
# endif
-# define SIG_SUSPEND SIGUSR1
-# define SIG_THR_RESTART SIGUSR2
+# define SIG_SUSPEND GC_get_suspend_signal()
+# define SIG_THR_RESTART GC_get_thr_restart_signal()
+# define SIG_SUSPEND_DEFAULT SIGUSR1
+# define SIG_THR_RESTART_DEFAULT SIGUSR2
# define FREEBSD_STACKBOTTOM
# ifdef __ELF__
# define DYNAMIC_LOADING
# endif
# ifdef FREEBSD
# define OS_TYPE "FREEBSD"
-# define SIG_SUSPEND SIGUSR1
-# define SIG_THR_RESTART SIGUSR2
+# define SIG_SUSPEND GC_get_suspend_signal()
+# define SIG_THR_RESTART GC_get_thr_restart_signal()
+# define SIG_SUSPEND_DEFAULT SIGUSR1
+# define SIG_THR_RESTART_DEFAULT SIGUSR2
# define FREEBSD_STACKBOTTOM
# ifdef __ELF__
# define DYNAMIC_LOADING
# define MPROTECT_VDB
# endif
# ifdef __GLIBC__
-# define SIG_SUSPEND (32+6)
-# define SIG_THR_RESTART (32+5)
+# define SIG_SUSPEND GC_get_suspend_signal()
+# define SIG_THR_RESTART GC_get_thr_restart_signal()
+# define SIG_SUSPEND_DEFAULT (32+6)
+# define SIG_THR_RESTART_DEFAULT (32+5)
extern int _end[];
# define DATAEND (ptr_t)(_end)
# else
-# define SIG_SUSPEND SIGUSR1
-# define SIG_THR_RESTART SIGUSR2
+# define SIG_SUSPEND GC_get_suspend_signal()
+# define SIG_THR_RESTART GC_get_thr_restart_signal()
+# define SIG_SUSPEND_DEFAULT SIGUSR1
+# define SIG_THR_RESTART_DEFAULT SIGUSR2
/* SIGTSTP and SIGCONT could be used alternatively. */
# endif
# define FREEBSD_STACKBOTTOM
# define DATASTART ((ptr_t)etext)
# define DATAEND ((ptr_t)end)
# define STACKBOTTOM ((ptr_t)InitStackBottom)
-# define SIG_SUSPEND SIGUSR1
-# define SIG_THR_RESTART SIGUSR2
+# define SIG_SUSPEND GC_get_suspend_signal()
+# define SIG_THR_RESTART GC_get_thr_restart_signal()
+# define SIG_SUSPEND_DEFAULT SIGUSR1
+# define SIG_THR_RESTART_DEFAULT SIGUSR2
# endif
# ifdef DOS4GW
# define OS_TYPE "DOS4GW"
# define OS_TYPE "HURD"
# define STACK_GROWS_DOWN
# define HEURISTIC2
-# define SIG_SUSPEND SIGUSR1
-# define SIG_THR_RESTART SIGUSR2
+# define SIG_SUSPEND GC_get_suspend_signal()
+# define SIG_THR_RESTART GC_get_thr_restart_signal()
+# define SIG_SUSPEND_DEFAULT SIGUSR1
+# define SIG_THR_RESTART_DEFAULT SIGUSR2
# define SEARCH_FOR_DATA_START
extern int _end[];
# define DATAEND ((ptr_t) (_end))
# ifdef FREEBSD
# define OS_TYPE "FREEBSD"
/* MPROTECT_VDB is not yet supported at all on FreeBSD/alpha. */
-# define SIG_SUSPEND SIGUSR1
-# define SIG_THR_RESTART SIGUSR2
+# define SIG_SUSPEND GC_get_suspend_signal()
+# define SIG_THR_RESTART GC_get_thr_restart_signal()
+# define SIG_SUSPEND_DEFAULT SIGUSR1
+# define SIG_THR_RESTART_DEFAULT SIGUSR2
/* SIGTSTP and SIGCONT could be used alternatively. */
# define FREEBSD_STACKBOTTOM
# ifdef __ELF__
# define MPROTECT_VDB
# endif
# ifdef __GLIBC__
-# define SIG_SUSPEND (32+6)
-# define SIG_THR_RESTART (32+5)
+# define SIG_SUSPEND GC_get_suspend_signal()
+# define SIG_THR_RESTART GC_get_thr_restart_signal()
+# define SIG_SUSPEND_DEFAULT (32+6)
+# define SIG_THR_RESTART_DEFAULT (32+5)
extern int _end[];
# define DATAEND (ptr_t)(_end)
# else
-# define SIG_SUSPEND SIGUSR1
-# define SIG_THR_RESTART SIGUSR2
+# define SIG_SUSPEND GC_get_suspend_signal()
+# define SIG_THR_RESTART GC_get_thr_restart_signal()
+# define SIG_SUSPEND_DEFAULT SIGUSR1
+# define SIG_THR_RESTART_DEFAULT SIGUSR2
/* SIGTSTP and SIGCONT could be used alternatively. */
# endif
# define FREEBSD_STACKBOTTOM