restore Linux case, try a different types for a generic case

svn: r3957
This commit is contained in:
Matthew Flatt 2006-08-04 15:22:16 +00:00
parent 9bc45dfb51
commit 32e6eba7b7

View File

@ -11,6 +11,17 @@
/* platform-specific handlers */
/******************************************************************************/
/* ========== Linux signal handler ========== */
#if defined(linux)
# include <signal.h>
void fault_handler(int sn, struct siginfo *si, void *ctx)
{
designate_modified(si->si_addr);
# define NEED_SIGACTION
# define USE_SIGACTON_SIGNAL_KIND SIGSEGV
}
#endif
/* ========== FreeBSD signal handler ========== */
#if defined(__FreeBSD__)
# include <signal.h>
@ -55,10 +66,14 @@ typedef LONG (WINAPI*gcPVECTORED_EXCEPTION_HANDLER)(LPEXCEPTION_POINTERS e);
# define NEED_OSX_MACH_HANDLER
#endif
/* ========== Generic Unix handler ========== */
/* ========== Generic Unix signal handler ========== */
/* There's little guarantee that this will work, since
Unix variants differ in the types of the arguments.
When a platform doesn't match, make a special case
for it, like all the others above. */
#if !defined(NEED_SIGACTION) && !defined(NEED_SIGWIN) && !defined(NEED_OSX_MACH_HANDLER)
# include <signal.h>
void fault_handler(int sn, struct siginfo *si, void *ctx)
void fault_handler(int sn, siginfo_t *si, void *ctx)
{
designate_modified(si->si_addr);
# define NEED_SIGACTION