Use explicit cast between void* and pointer-to-function.
diff --git a/ChangeLog b/ChangeLog
index 5b0fcb5..816a2ad 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,10 @@
 2013-09-22  Paul Smith  <psmith@gnu.org>
 
+	* guile.c (guile_define_module): Technically a void* cannot
+	contain a pointer-to-function and some compilers warn about this.
+	Cast the function pointers.
+	* load.c (load_object): Ditto.
+
 	* read.c (eval): If load_file() returns -1, don't add this to the
 	"to be rebuilt" list.
 	* doc/make.texi (load Directive): Document it.
diff --git a/guile.c b/guile.c
index 20e58d4..9c9bf5c 100644
--- a/guile.c
+++ b/guile.c
@@ -72,10 +72,10 @@
 #include "gmk-default.h"
 
   /* Register a subr for GNU make's eval capability.  */
-  scm_c_define_gsubr ("gmk-expand", 1, 0, 0, guile_expand_wrapper);
+  scm_c_define_gsubr ("gmk-expand", 1, 0, 0, (scm_t_subr) guile_expand_wrapper);
 
   /* Register a subr for GNU make's eval capability.  */
-  scm_c_define_gsubr ("gmk-eval", 1, 0, 0, guile_eval_wrapper);
+  scm_c_define_gsubr ("gmk-eval", 1, 0, 0, (scm_t_subr) guile_eval_wrapper);
 
   /* Define the rest of the module.  */
   scm_c_eval_string (GUILE_module_defn);
diff --git a/load.c b/load.c
index 165153a..a2cbc25 100644
--- a/load.c
+++ b/load.c
@@ -82,12 +82,12 @@
         }
 
       /* Assert that the GPL license symbol is defined.  */
-      symp = dlsym (dlp, "plugin_is_GPL_compatible");
+      symp = (load_func_t) dlsym (dlp, "plugin_is_GPL_compatible");
       if (! symp)
         fatal (flocp, _("Loaded object %s is not declared to be GPL compatible"),
                ldname);
 
-      symp = dlsym (dlp, symname);
+      symp = (load_func_t) dlsym (dlp, symname);
       if (! symp)
         fatal (flocp, _("Failed to load symbol %s from %s: %s"),
                symname, ldname, dlerror ());