Subject: Some guile-2.0 asyncs functions do not link correctly

From: Chris Vine <[email-masked]>
Date: Sun, 1 Jun 2014 17:54:48 +0100

guile-2.0's scm_c_call_with_blocked_asyncs,
scm_c_call_with_unblocked_asyncs, scm_dynwind_block_asyncs and
scm_dynwind_unblock_asyncs will not link for me using 32-bit
ubuntu-14.04 (gcc-4.8.2/guile-2.0.9) or 32-bit slackware-14.1
(gcc-4.9.0/guile-2.0.11).  I do not have a machine to test a 64-bit
system at present.

The issue appears to be that this part of the API is not exported, even
though these functions are documented and appear intended to be called
by user code.

A patch, against guile-2.0.11, is below, dealing with this.

--- guile-2.0.11/libguile/async.h.orig	2014-05-04 10:38:14.631777784 +0100
+++ guile-2.0.11/libguile/async.h	2014-05-04 10:45:45.615763664 +0100
@@ -44,10 +44,10 @@
 SCM_API SCM scm_noop (SCM args);
 SCM_API SCM scm_call_with_blocked_asyncs (SCM proc);
 SCM_API SCM scm_call_with_unblocked_asyncs (SCM proc);
-void *scm_c_call_with_blocked_asyncs (void *(*p) (void *d), void *d);
-void *scm_c_call_with_unblocked_asyncs (void *(*p) (void *d), void *d);
-void scm_dynwind_block_asyncs (void);
-void scm_dynwind_unblock_asyncs (void);
+SCM_API void *scm_c_call_with_blocked_asyncs (void *(*p) (void *d), void *d);
+SCM_API void *scm_c_call_with_unblocked_asyncs (void *(*p) (void *d), void *d);
+SCM_API void scm_dynwind_block_asyncs (void);
+SCM_API void scm_dynwind_unblock_asyncs (void);
 
 /* Critical sections */