$NetBSD: patch-ag,v 1.4 2007/06/12 12:51:08 joerg Exp $ --- src/Unix/sigsegv.cpp.orig 2006-03-30 22:45:49.000000000 +0000 +++ src/Unix/sigsegv.cpp @@ -226,7 +226,7 @@ static void powerpc_decode_instruction(i #if HAVE_SIGINFO_T // Generic extended signal handler -#if defined(__FreeBSD__) +#if defined(__FreeBSD__) || defined(__DragonFly__) #define SIGSEGV_ALL_SIGNALS FAULT_HANDLER(SIGBUS) #else #define SIGSEGV_ALL_SIGNALS FAULT_HANDLER(SIGSEGV) @@ -264,7 +264,7 @@ static void powerpc_decode_instruction(i #define SIGSEGV_SKIP_INSTRUCTION ix86_skip_instruction #endif #endif -#if defined(__FreeBSD__) || defined(__OpenBSD__) +#if defined(__FreeBSD__) || defined(__OpenBSD__) || defined(__DragonFly__) #if (defined(i386) || defined(__i386__)) #define SIGSEGV_FAULT_INSTRUCTION (((struct sigcontext *)scp)->sc_eip) #define SIGSEGV_REGISTER_FILE ((unsigned long *)&(((struct sigcontext *)scp)->sc_edi)) /* EDI is the first GPR (even below EIP) in sigcontext */ @@ -451,7 +451,7 @@ static sigsegv_address_t get_fault_addre #define SIGSEGV_ALL_SIGNALS FAULT_HANDLER(SIGSEGV) #endif #endif -#if defined(__FreeBSD__) +#if defined(__FreeBSD__) || defined(__DragonFly__) #if (defined(i386) || defined(__i386__)) #define SIGSEGV_ALL_SIGNALS FAULT_HANDLER(SIGBUS) #define SIGSEGV_FAULT_HANDLER_ARGLIST int sig, int code, struct sigcontext *scp, char *addr @@ -721,10 +721,14 @@ enum { #endif }; #endif -#if defined(__FreeBSD__) +#if defined(__FreeBSD__) || defined(__DragonFly__) enum { #if (defined(i386) || defined(__i386__)) +# if (defined(__FreeBSD__) && __FreeBSD_version >= 500000) X86_REG_EIP = 10, +#else + X86_REG_EIP = 11, +#endif X86_REG_EAX = 7, X86_REG_ECX = 6, X86_REG_EDX = 5,