diff --git a/share/libc/signal.h b/share/libc/signal.h
index 01f6d674da72d812893297f4b1d4ce9cc7de2189..063ba74ba581184005d570549e26d07323a2652c 100644
--- a/share/libc/signal.h
+++ b/share/libc/signal.h
@@ -46,13 +46,13 @@ typedef void (*__fc_sighandler_t) (int);
 /* for BSD 4.4 */
 typedef __fc_sighandler_t sig_t;
 
-extern sig_t __fc_sig_dfl;
-extern sig_t __fc_sig_ign;
-extern sig_t __fc_sig_err;
+extern void __fc_sig_dfl(int);
+extern void __fc_sig_ign(int);
+extern void __fc_sig_err(int);
 
-#define SIG_DFL __fc_sig_dfl     /* default signal handling */
-#define SIG_IGN __fc_sig_ign     /* ignore signal */
-#define SIG_ERR __fc_sig_err    /* error return from signal */
+#define SIG_DFL (&__fc_sig_dfl)     /* default signal handling */
+#define SIG_IGN (&__fc_sig_ign)     /* ignore signal */
+#define SIG_ERR (&__fc_sig_err)     /* error return from signal */
 
 #define SIG_BLOCK 0
 #define SIG_UNBLOCK 1