Index: external/bdwgc/os_dep.c --- external/bdwgc/os_dep.c.orig +++ external/bdwgc/os_dep.c @@ -525,10 +525,7 @@ GC_INNER char * GC_get_maps(void) STATIC JMP_BUF GC_jmp_buf_openbsd; # ifdef THREADS -# include - EXTERN_C_BEGIN - extern sigset_t __syscall(quad_t, ...); - EXTERN_C_END + sigset_t signalmask; # endif /* Don't use GC_find_limit() because siglongjmp() outside of the */ @@ -577,7 +574,9 @@ GC_INNER char * GC_get_maps(void) # ifdef THREADS /* Due to the siglongjump we need to manually unmask SIGPROF. */ - __syscall(SYS_sigprocmask, SIG_UNBLOCK, sigmask(SIGPROF)); + sigemptyset(&signalmask); + sigaddset(&signalmask, SIGPROF); + sigprocmask(SIG_UNBLOCK, &signalmask, NULL); # endif sigaction(SIGSEGV, &old_segv_act, 0);