diff --git a/include/crypto_types.h b/include/crypto_types.h
index c0212b46036727fade986d92050301b9bd50ab7a..1c42f6cf8a831f084d622d4d394dc6a723ea20f4 100644
--- a/include/crypto_types.h
+++ b/include/crypto_types.h
@@ -13,6 +13,13 @@
 # define UINT8 unsigned INT8
 #else  /* !PIKE */
 
+/* FIXME: Reorganize the header files for definitions. This stuff
+ * should probably live in lsh_types.h, and object definitions should
+ * move into a separate header file.
+ *
+ * FIXME: some of the crypto implementations could well use the
+ * READ_UINT32 and WRITE_UINT32 macros. */
+
 # ifdef LSH
 #  ifdef HAVE_CONFIG_H
 #   include "config.h"
@@ -44,4 +51,14 @@
 # endif /* !PIKE */
 #endif
 
+#ifdef __GNUC__
+#define NORETURN __attribute__ ((noreturn))
+#define PRINTF_STYLE(f, a) __attribute__ ((format(printf, f, a)))
+#define UNUSED __attribute__ ((unused))
+#else
+#define NORETURN
+#define PRINTF_STYLE(f, a)
+#define UNUSED
+#endif
+
 #endif /* CRYPTO_TYPES_H_INCLUDED */