diff --git a/configure b/configure
index cd85362..84e1e60 100755
--- a/configure
+++ b/configure
@@ -1,6 +1,6 @@
 #! /bin/sh
 
-# From configure.in Revision: 1.258 
+# From configure.in Revision: 1.260 
 
 # Guess values for system-dependent variables and create Makefiles.
 # Generated automatically using autoconf version 2.13 
@@ -1679,7 +1679,7 @@
   ac_save_cc="$CC"
 CC="$CC -OPT:Olimit=0"
 if test "$cross_compiling" = yes; then
-    { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; }
+  ac_cv_opt_olimit_ok=no
 else
   cat > conftest.$ac_ext <<EOF
 #line 1686 "configure"
@@ -1716,7 +1716,7 @@
   ac_save_cc="$CC"
   CC="$CC -Olimit 1500"
   if test "$cross_compiling" = yes; then
-    { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; }
+  ac_cv_olimit_ok=no
 else
   cat > conftest.$ac_ext <<EOF
 #line 1723 "configure"
@@ -2318,7 +2318,7 @@
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   if test "$cross_compiling" = yes; then
-    { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; }
+  ac_cv_sizeof_int=4
 else
   cat > conftest.$ac_ext <<EOF
 #line 2325 "configure"
@@ -2357,7 +2357,7 @@
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   if test "$cross_compiling" = yes; then
-    { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; }
+  ac_cv_sizeof_long=4
 else
   cat > conftest.$ac_ext <<EOF
 #line 2364 "configure"
@@ -2396,7 +2396,7 @@
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   if test "$cross_compiling" = yes; then
-    { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; }
+  ac_cv_sizeof_void_p=4
 else
   cat > conftest.$ac_ext <<EOF
 #line 2403 "configure"
@@ -2435,7 +2435,7 @@
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   if test "$cross_compiling" = yes; then
-    { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; }
+  ac_cv_sizeof_char=1
 else
   cat > conftest.$ac_ext <<EOF
 #line 2442 "configure"
@@ -2474,7 +2474,7 @@
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   if test "$cross_compiling" = yes; then
-    { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; }
+  ac_cv_sizeof_short=2
 else
   cat > conftest.$ac_ext <<EOF
 #line 2481 "configure"
@@ -2513,7 +2513,7 @@
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   if test "$cross_compiling" = yes; then
-    { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; }
+  ac_cv_sizeof_float=4
 else
   cat > conftest.$ac_ext <<EOF
 #line 2520 "configure"
@@ -2552,7 +2552,7 @@
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   if test "$cross_compiling" = yes; then
-    { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; }
+  ac_cv_sizeof_double=8
 else
   cat > conftest.$ac_ext <<EOF
 #line 2559 "configure"
@@ -2591,7 +2591,7 @@
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   if test "$cross_compiling" = yes; then
-    { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; }
+  ac_cv_sizeof_fpos_t=4
 else
   cat > conftest.$ac_ext <<EOF
 #line 2598 "configure"
@@ -2655,7 +2655,7 @@
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   if test "$cross_compiling" = yes; then
-    { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; }
+  ac_cv_sizeof_long_long=8
 else
   cat > conftest.$ac_ext <<EOF
 #line 2662 "configure"
@@ -2720,7 +2720,7 @@
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   if test "$cross_compiling" = yes; then
-    { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; }
+  ac_cv_sizeof_uintptr_t=4
 else
   cat > conftest.$ac_ext <<EOF
 #line 2727 "configure"
@@ -2762,7 +2762,7 @@
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   if test "$cross_compiling" = yes; then
-    { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; }
+  ac_cv_sizeof_off_t=4
 else
   cat > conftest.$ac_ext <<EOF
 #line 2769 "configure"
@@ -2819,7 +2819,7 @@
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   if test "$cross_compiling" = yes; then
-    { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; }
+  ac_cv_sizeof_time_t=4
 else
   cat > conftest.$ac_ext <<EOF
 #line 2826 "configure"
@@ -2889,7 +2889,7 @@
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   if test "$cross_compiling" = yes; then
-    { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; }
+  ac_cv_sizeof_pthread_t=4
 else
   cat > conftest.$ac_ext <<EOF
 #line 2896 "configure"
@@ -4055,7 +4055,7 @@
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   if test "$cross_compiling" = yes; then
-    { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; }
+  ac_cv_pthread_system_supported=no
 else
   cat > conftest.$ac_ext <<EOF
 #line 4062 "configure"
@@ -6095,7 +6095,7 @@
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   if test "$cross_compiling" = yes; then
-    { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; }
+  ac_cv_bad_static_forward=no
 else
   cat > conftest.$ac_ext <<EOF
 #line 6102 "configure"
@@ -6647,7 +6647,7 @@
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   if test "$cross_compiling" = yes; then
-    { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; }
+  ac_cv_malloc_zero=nonnull
 else
   cat > conftest.$ac_ext <<EOF
 #line 6654 "configure"
@@ -6682,7 +6682,7 @@
 fi
 
 fi
-
+ # XXX arm cross-compile?
 echo "$ac_t""$ac_cv_malloc_zero" 1>&6
 if test "$ac_cv_malloc_zero" = null
 then
@@ -6741,7 +6741,7 @@
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   if test "$cross_compiling" = yes; then
-    { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; }
+  ac_cv_sizeof_wchar_t=4
 else
   cat > conftest.$ac_ext <<EOF
 #line 6748 "configure"
@@ -6951,7 +6951,7 @@
 else
   
 if test "$cross_compiling" = yes; then
-    { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; }
+  ac_cv_rshift_extends_sign=yes
 else
   cat > conftest.$ac_ext <<EOF
 #line 6958 "configure"
@@ -7079,7 +7079,7 @@
 else
   
 if test "$cross_compiling" = yes; then
-    { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; }
+  ac_cv_broken_nice=no
 else
   cat > conftest.$ac_ext <<EOF
 #line 7086 "configure"
diff --git a/configure.in b/configure.in
index f3da85a..32147bf 100644
--- a/configure.in
+++ b/configure.in
@@ -380,6 +380,7 @@
 CC="$CC -OPT:Olimit=0"
 AC_TRY_RUN([int main() { return 0; }],
   ac_cv_opt_olimit_ok=yes,
+  ac_cv_opt_olimit_ok=no,
   ac_cv_opt_olimit_ok=no)
 CC="$ac_save_cc"])
 AC_MSG_RESULT($ac_cv_opt_olimit_ok)
@@ -395,6 +396,7 @@
   CC="$CC -Olimit 1500"
   AC_TRY_RUN([int main() { return 0; }],
     ac_cv_olimit_ok=yes,
+    ac_cv_olimit_ok=no,
     ac_cv_olimit_ok=no)
   CC="$ac_save_cc"])
   AC_MSG_RESULT($ac_cv_olimit_ok)
@@ -468,21 +470,21 @@
 AC_TYPE_UID_T
 
 # Sizes of various common basic types
-AC_CHECK_SIZEOF(int)
-AC_CHECK_SIZEOF(long)
-AC_CHECK_SIZEOF(void *)
-AC_CHECK_SIZEOF(char)
-AC_CHECK_SIZEOF(short)
-AC_CHECK_SIZEOF(float)
-AC_CHECK_SIZEOF(double)
-AC_CHECK_SIZEOF(fpos_t)
+AC_CHECK_SIZEOF(int, 4)
+AC_CHECK_SIZEOF(long, 4)
+AC_CHECK_SIZEOF(void *, 4)
+AC_CHECK_SIZEOF(char, 1)
+AC_CHECK_SIZEOF(short, 2)
+AC_CHECK_SIZEOF(float, 4)
+AC_CHECK_SIZEOF(double, 8)
+AC_CHECK_SIZEOF(fpos_t, 4)
 
 AC_MSG_CHECKING(for long long support)
 have_long_long=no
 AC_TRY_COMPILE([], [long long x; x = (long long)0;], AC_DEFINE(HAVE_LONG_LONG) have_long_long=yes)
 AC_MSG_RESULT($have_long_long)
 if test "$have_long_long" = yes ; then
-AC_CHECK_SIZEOF(long long)
+AC_CHECK_SIZEOF(long long, 8)
 fi
 
 AC_MSG_CHECKING(for uintptr_t support)
@@ -490,7 +492,7 @@
 AC_TRY_COMPILE([], [uintptr_t x; x = (uintptr_t)0;], AC_DEFINE(HAVE_UINTPTR_T) have_uintptr_t=yes)
 AC_MSG_RESULT($have_uintptr_t)
 if test "$have_uintptr_t" = yes ; then
-AC_CHECK_SIZEOF(uintptr_t)
+AC_CHECK_SIZEOF(uintptr_t, 4)
 fi
 
 # Hmph. AC_CHECK_SIZEOF() doesn't include <sys/types.h>.
@@ -504,7 +506,10 @@
   if (!f) exit(1);
   fprintf(f, "%d\n", sizeof(off_t));
   exit(0);
-}], ac_cv_sizeof_off_t=`cat conftestval`, ac_cv_sizeof_off_t=0)
+}],
+ac_cv_sizeof_off_t=`cat conftestval`,
+ac_cv_sizeof_off_t=0,
+ac_cv_sizeof_off_t=4)
 ])
 AC_MSG_RESULT($ac_cv_sizeof_off_t)
 AC_DEFINE_UNQUOTED(SIZEOF_OFF_T, $ac_cv_sizeof_off_t)
@@ -530,7 +535,10 @@
   if (!f) exit(1);
   fprintf(f, "%d\n", sizeof(time_t));
   exit(0);
-}], ac_cv_sizeof_time_t=`cat conftestval`, ac_cv_sizeof_time_t=0)
+}],
+ac_cv_sizeof_time_t=`cat conftestval`,
+ac_cv_sizeof_time_t=0,
+ac_cv_sizeof_time_t=4)
 ])
 AC_MSG_RESULT($ac_cv_sizeof_time_t)
 AC_DEFINE_UNQUOTED(SIZEOF_TIME_T, $ac_cv_sizeof_time_t)
@@ -557,7 +565,10 @@
     if (!f) exit(1);
     fprintf(f, "%d\n", sizeof(pthread_t));
     exit(0);
-  }], ac_cv_sizeof_pthread_t=`cat conftestval`, ac_cv_sizeof_pthread_t=0)
+  }],
+  ac_cv_sizeof_pthread_t=`cat conftestval`,
+  ac_cv_sizeof_pthread_t=0,
+  ac_cv_sizeof_pthread_t=4)
   ])
   AC_MSG_RESULT($ac_cv_sizeof_pthread_t)
   AC_DEFINE_UNQUOTED(SIZEOF_PTHREAD_T, $ac_cv_sizeof_pthread_t)
@@ -993,7 +1004,10 @@
         if (pthread_attr_setscope(&attr, PTHREAD_SCOPE_SYSTEM)) exit(-1);
         if (pthread_create(NULL, &attr, foo, NULL)) exit(-1);
         exit(0);
-      }], ac_cv_pthread_system_supported=yes, ac_cv_pthread_system_supported=no)
+      }],
+      ac_cv_pthread_system_supported=yes,
+      ac_cv_pthread_system_supported=no,
+      ac_cv_pthread_system_supported=no)
       ])
       AC_MSG_RESULT($ac_cv_pthread_system_supported)
       if test "$ac_cv_pthread_system_supported" = "yes"; then
@@ -1548,7 +1562,10 @@
 static struct s foo = { 1, 2 };
 main() {
  exit(!((int)&foo == foobar()));
-}], ac_cv_bad_static_forward=no, ac_cv_bad_static_forward=yes)])
+}],
+ac_cv_bad_static_forward=no,
+ac_cv_bad_static_forward=yes,
+ac_cv_bad_static_forward=no)])
 AC_MSG_RESULT($ac_cv_bad_static_forward)
 if test "$ac_cv_bad_static_forward" = yes
 then
@@ -1710,7 +1727,10 @@
 	if (p == NULL) exit(1);
 	free(p);
 	exit(0);
-}], ac_cv_malloc_zero=nonnull, ac_cv_malloc_zero=null)])
+}],
+ac_cv_malloc_zero=nonnull,
+ac_cv_malloc_zero=null,
+ac_cv_malloc_zero=nonnull)]) # XXX arm cross-compile?
 AC_MSG_RESULT($ac_cv_malloc_zero)
 if test "$ac_cv_malloc_zero" = null
 then
@@ -1726,7 +1746,7 @@
 # determine wchar_t size
 if test "$wchar_h" = yes
 then
-  AC_CHECK_SIZEOF(wchar_t)
+  AC_CHECK_SIZEOF(wchar_t, 4)
 fi
 
 AC_MSG_CHECKING(what type to use for unicode)
@@ -1787,7 +1807,10 @@
 {
 	exit(((-1)>>3 == -1) ? 0 : 1);
 }
-], ac_cv_rshift_extends_sign=yes, ac_cv_rshift_extends_sign=no)])
+],
+ac_cv_rshift_extends_sign=yes,
+ac_cv_rshift_extends_sign=no,
+ac_cv_rshift_extends_sign=yes)])
 AC_MSG_RESULT($ac_cv_rshift_extends_sign)
 if test "$ac_cv_rshift_extends_sign" = no
 then
@@ -1823,7 +1846,10 @@
 		exit(0);
 	exit(1);
 }
-],ac_cv_broken_nice=yes, ac_cv_broken_nice=no)])
+],
+ac_cv_broken_nice=yes,
+ac_cv_broken_nice=no,
+ac_cv_broken_nice=no)])
 AC_MSG_RESULT($ac_cv_broken_nice)
 if test "$ac_cv_broken_nice" = yes
 then
