diff --git i/m4/ssize_t.m4 w/m4/ssize_t.m4
index 209d64c..5ea72a1 100644
--- i/m4/ssize_t.m4
+++ w/m4/ssize_t.m4
@@ -1,4 +1,4 @@
-# ssize_t.m4 serial 5 (gettext-0.18.2)
+# ssize_t.m4 serial 6 (gettext-0.18.2)
 dnl Copyright (C) 2001-2003, 2006, 2010-2015 Free Software Foundation, Inc.
 dnl This file is free software; the Free Software Foundation
 dnl gives unlimited permission to copy and/or distribute it,
@@ -17,7 +17,21 @@ AC_DEFUN([gt_TYPE_SSIZE_T],
             return !x;]])],
        [gt_cv_ssize_t=yes], [gt_cv_ssize_t=no])])
   if test $gt_cv_ssize_t = no; then
-    AC_DEFINE([ssize_t], [int],
-              [Define as a signed type of the same size as size_t.])
+    AC_CACHE_CHECK([for rank of size_t], [gt_cv_size_t_rank],
+      [AC_COMPILE_IFELSE(
+        [AC_LANG_PROGRAM(
+          [[#include <sys/types.h>
+          #ifdef __cplusplus
+          extern "C" {
+          #endif
+            int foo(unsigned long bar);
+            int foo(size_t bar);
+          #ifdef __cplusplus
+          }
+          #endif
+          ]])],
+       [gt_cv_size_t_rank=long], [gt_cv_size_t_rank=int])])
+    AC_DEFINE_UNQUOTED([ssize_t], [$gt_cv_size_t_rank],
+              [Define as a signed type of the same size and rank as size_t.])
   fi
 ])