Brought forward from 0.9.8 - 64 bit warning fixes and fussy compiler fixes.
diff --git a/apps/passwd.c b/apps/passwd.c
index 6965c6e..9ca25dd 100644
--- a/apps/passwd.c
+++ b/apps/passwd.c
@@ -474,7 +474,8 @@
 	if ((strlen(passwd) > pw_maxlen))
 		{
 		if (!quiet)
-			BIO_printf(bio_err, "Warning: truncating password to %u characters\n", pw_maxlen);
+			/* XXX: really we should know how to print a size_t, not cast it */
+			BIO_printf(bio_err, "Warning: truncating password to %u characters\n", (unsigned)pw_maxlen);
 		passwd[pw_maxlen] = 0;
 		}
 	assert(strlen(passwd) <= pw_maxlen);
diff --git a/crypto/bn/bn_nist.c b/crypto/bn/bn_nist.c
index faf0e34..f8e306b 100644
--- a/crypto/bn/bn_nist.c
+++ b/crypto/bn/bn_nist.c
@@ -172,6 +172,7 @@
 	}
 
 /* some misc internal functions */
+#if BN_BITS2 != 64
 static BN_ULONG _256_data[BN_NIST_256_TOP*6];
 static int _is_set_256_data = 0;
 static void _init_256_data(void);
@@ -179,6 +180,7 @@
 static BN_ULONG _384_data[BN_NIST_384_TOP*8];
 static int _is_set_384_data = 0;
 static void _init_384_data(void);
+#endif
 
 #define BN_NIST_ADD_ONE(a)	while (!(++(*(a)))) ++(a);
 
@@ -405,6 +407,7 @@
 #endif
 	}
 
+#if BN_BITS2 != 64
 static void _init_256_data(void)
 	{
 	int	i;
@@ -422,6 +425,7 @@
 		}
 	_is_set_256_data = 1;
 	}
+#endif
 
 #define nist_set_256(to, from, a1, a2, a3, a4, a5, a6, a7, a8) \
 	{ \
@@ -555,6 +559,7 @@
 #endif
 	}
 
+#if BN_BITS2 != 64
 static void _init_384_data(void)
 	{
 	int	i;
@@ -572,6 +577,7 @@
 		}
 	_is_set_384_data = 1;
 	}
+#endif
 
 #define nist_set_384(to,from,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12) \
 	{ \
diff --git a/crypto/pqueue/pq_compat.h b/crypto/pqueue/pq_compat.h
index bd86efc..904b0d0 100644
--- a/crypto/pqueue/pq_compat.h
+++ b/crypto/pqueue/pq_compat.h
@@ -111,8 +111,10 @@
 
 #if defined(SIXTY_FOUR_BIT) || defined(SIXTY_FOUR_BIT_LONG)
 #define PQ_64BIT BN_ULONG
+#define PQ_64BIT_PRINT "%ld"
 #elif defined(THIRTY_TWO_BIT)
 #define PQ_64BIT BN_ULLONG
+#define PQ_64BIT_PRINT "%lld"
 #endif
 
 #define PQ_64BIT_CTX      void
diff --git a/ssl/ssltest.c b/ssl/ssltest.c
index e47af50..ef09a69 100644
--- a/ssl/ssltest.c
+++ b/ssl/ssltest.c
@@ -1694,7 +1694,7 @@
 					fprintf(stderr, "  Certificate proxy rights = %*.*s", i, i, s);
 					while(i-- > 0)
 						{
-						char c = *s++;
+						int c = *s++;
 						if (isascii(c) && isalpha(c))
 							{
 							if (islower(c))
@@ -1755,11 +1755,11 @@
 static int process_proxy_cond_val(unsigned int letters[26],
 	const char *cond, const char **cond_end, int *pos, int indent)
 	{
-	char c;
+	int c;
 	int ok = 1;
 	int negate = 0;
 
-	while(isspace(*cond))
+	while(isspace((int)*cond))
 		{
 		cond++; (*pos)++;
 		}
@@ -1774,7 +1774,7 @@
 		{
 		negate = !negate;
 		cond++; (*pos)++;
-		while(isspace(*cond))
+		while(isspace((int)*cond))
 			{
 			cond++; (*pos)++;
 			}
@@ -1789,7 +1789,7 @@
 		cond = *cond_end;
 		if (ok < 0)
 			goto end;
-		while(isspace(*cond))
+		while(isspace((int)*cond))
 			{
 			cond++; (*pos)++;
 			}
@@ -1849,7 +1849,7 @@
 
 	while(ok >= 0)
 		{
-		while(isspace(*cond))
+		while(isspace((int)*cond))
 			{
 			cond++; (*pos)++;
 			}
@@ -1916,7 +1916,7 @@
 
 	while(ok >= 0)
 		{
-		while(isspace(*cond))
+		while(isspace((int)*cond))
 			{
 			cond++; (*pos)++;
 			}
@@ -1999,7 +1999,7 @@
 			letters[i] = 0;
 		for(sp = cb_arg->proxy_auth; *sp; sp++)
 			{
-			char c = *sp;
+			int c = *sp;
 			if (isascii(c) && isalpha(c))
 				{
 				if (islower(c))