--- coregrind/vg_proxylwp.c.orig Sat Jul 17 13:46:01 2004 +++ coregrind/vg_proxylwp.c Mon Nov 7 19:33:19 2005 @@ -30,6 +30,7 @@ #include "vg_include.h" +#include "vg_unsafe.h" #ifndef UMTX_CONTESTED # if __FreeBSD_version < 502120 @@ -595,7 +596,7 @@ Int ret = 1000; static const vki_kstack_t ss = { .ss_flags = VKI_SS_DISABLE }; -#if __FreeBSD__ == 5 +#if __FreeBSD__ >= 5 VG_(do_syscall)(__NR__umtx_lock, &px->mutex); px->mutex.u_owner |= UMTX_CONTESTED; VG_(do_syscall)(__NR_thr_self, &px->lwp); @@ -943,7 +944,7 @@ px->exitcode = ret; -#if __FreeBSD__ == 5 +#if __FreeBSD__ >= 5 ret = VG_(do_syscall)(__NR__umtx_unlock, &px->mutex); if (use_rfork) VG_(do_syscall)(__NR_exit, 0); @@ -1098,14 +1099,14 @@ extern Int VG_(rfork_thread)(Int, void*, void*, void*); ret = VG_(rfork_thread)(VKI_RFPROC | VKI_RFMEM | VKI_RFSIGSHARE | VKI_RFTHREAD -#if __FreeBSD__ == 5 +#if __FreeBSD__ >= 5 | VKI_RFNOWAIT #endif , LWP_stack(proxy), proxylwp, proxy); VG_(do_signal_routing) = True; } else { -#if __FreeBSD__ == 5 +#if __FreeBSD__ >= 5 vki_ucontext_t ctx; extern void makecontext(vki_ucontext_t*, ...); @@ -1169,7 +1170,7 @@ } } #endif -#if __FreeBSD__ == 5 +#if __FreeBSD__ >= 5 if (block) { if(proxy->lwp != 0) VG_(do_syscall)(__NR__umtx_lock, &proxy->mutex);