Index: src/lib/syscall.c
--- src/lib/syscall.c.orig
+++ src/lib/syscall.c
@@ -457,7 +457,8 @@ LIBC_SYSCALL_RET_TYPE tsocks_syscall(long int number, 
 		ret = handle_close(args);
 		break;
 	case TSOCKS_NR_MMAP:
-#if (defined(__NetBSD__) || defined(__FreeBSD__) || defined(__FreeBSD_kernel__)) && defined(__x86_64)
+#if (defined(__NetBSD__) || defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || \
+		defined(__OpenBSD__) && defined(__x86_64))
 		/*
 		 * On an 64 bit *BSD system, __syscall(2) should be used for mmap().
 		 * This is NOT suppose to happen but for protection we deny that call.
@@ -486,7 +487,7 @@ LIBC_SYSCALL_RET_TYPE tsocks_syscall(long int number, 
 		 * own memory using mmap() called by syscall(). Same for munmap().
 		 */
 		ret = handle_mmap(args);
-#endif /* __NetBSD__, __FreeBSD__, __FreeBSD_kernel__, __x86_64 */
+#endif /* __NetBSD__, __FreeBSD__, __FreeBSD_kernel__, __x86_64, __OpenBSD__ */
 		break;
 	case TSOCKS_NR_MUNMAP:
 		ret = handle_munmap(args);
@@ -596,7 +597,7 @@ LIBC_SYSCALL_DECL
 }
 
 /* Only used for *BSD systems. */
-#if (defined(__NetBSD__) || defined(__FreeBSD__))
+#if (defined(__NetBSD__) || defined(__FreeBSD__) || defined(__OpenBSD__))
 
 /* __syscall(2) */
 TSOCKS_LIBC_DECL(__syscall, LIBC___SYSCALL_RET_TYPE, LIBC___SYSCALL_SIG)
@@ -660,4 +661,4 @@ LIBC___SYSCALL_DECL
 	return ret;
 }
 
-#endif /* __NetBSD__, __FreeBSD__ */
+#endif /* __NetBSD__, __FreeBSD__, __OpenBSD__ */
