diff -Paur --no-dereference -- tar.upstream/configure tar/configure
--- tar.upstream/configure
+++ tar/configure
@@ -1,4 +1,123 @@
 #! /bin/sh
+# Make gnulib assume the best about unknown operating systems when cross-compiling.
+export ac_cv_func_calloc_0_nonnull=yes
+export ac_cv_func_chown_works=yes
+export ac_cv_func_getgroups_works=yes
+export ac_cv_func_malloc_0_nonnull=yes
+export gl_cv_func_cbrtl_ieee=yes
+export gl_cv_func_ceilf_ieee=yes
+export gl_cv_func_ceil_ieee=yes
+export gl_cv_func_ceill_ieee=yes
+export gl_cv_func_chown_ctime_works=yes
+export gl_cv_func_chown_slash_works=yes
+export gl_cv_func_exp2l_ieee=yes
+export gl_cv_func_expm1_ieee=yes
+export gl_cv_func_fcntl_f_dupfd_works=yes # Not needed since February 2015
+export gl_cv_func_fdopendir_works=yes
+export gl_cv_func_floorf_ieee=yes
+export gl_cv_func_fmaf_works=yes
+export gl_cv_func_fmal_works=yes
+export gl_cv_func_fma_works=yes
+export gl_cv_func_fmodf_ieee=yes
+export gl_cv_func_fmod_ieee=yes
+export gl_cv_func_fmodl_ieee=yes
+export gl_cv_func_fpurge_works=yes
+export gl_cv_func_futimens_works=yes
+export gl_cv_func_futimesat_works=yes
+export gl_cv_func_getgroups_works=yes
+export gl_cv_func_gettimeofday_clobber=no
+export gl_cv_func_hypotf_ieee=yes
+export gl_cv_func_hypotl_ieee=yes
+export gl_cv_func_hypot_ieee=yes
+export gl_cv_func_isfinitel_works=yes
+export gl_cv_func_isnanl_works=yes
+export gl_cv_func_linkat_slash=yes
+export gl_cv_func_link_works=yes
+export gl_cv_func_log10f_ieee=yes
+export gl_cv_func_log10_ieee=yes
+export gl_cv_func_log1pf_ieee=yes
+export gl_cv_func_log1p_ieee=yes
+export gl_cv_func_log1pl_ieee=yes
+export gl_cv_func_log2f_ieee=yes
+export gl_cv_func_log2_ieee=yes
+export gl_cv_func_logf_ieee=yes
+export gl_cv_func_log_ieee=yes
+export gl_cv_func_lstat_dereferences_slashed_symlink=yes
+export gl_cv_func_mbrlen_empty_input=yes
+export gl_cv_func_mbrtowc_empty_input=yes
+export gl_cv_func_memchr_works=yes
+export gl_cv_func_memmem_works_fast=yes
+export gl_cv_func_mkdir_trailing_dot_works=yes
+export gl_cv_func_mkdir_trailing_slash_works=yes
+export gl_cv_func_mkfifo_works=yes
+export gl_cv_func_mknod_works=yes
+export gl_cv_func_modff_ieee=yes
+export gl_cv_func_modf_ieee=yes
+export gl_cv_func_modfl_ieee=yes
+export gl_cv_func_nanosleep=yes
+export gl_cv_func_open_directory_works=yes
+export gl_cv_func_perror_works=yes
+export gl_cv_func_printf_directive_a=yes
+export gl_cv_func_printf_directive_f=yes
+export gl_cv_func_printf_directive_n=yes
+export gl_cv_func_printf_enomem=yes
+export gl_cv_func_printf_flag_zero=yes
+export gl_cv_func_printf_infinite_long_double=yes
+export gl_cv_func_printf_infinite=yes
+export gl_cv_func_printf_sizes_c99=yes
+export gl_cv_func_pselect_detects_ebadf=yes
+export gl_cv_func_ptsname_sets_errno=yes
+export gl_cv_func_readlink_works=yes
+export gl_cv_func_realpath_works=yes
+export gl_cv_func_remainderf_ieee=yes
+export gl_cv_func_remainder_ieee=yes
+export gl_cv_func_remainderl_ieee=yes
+export gl_cv_func_rename_dest_works=yes
+export gl_cv_func_rename_link_works=yes
+export gl_cv_func_rename_slash_dst_works=yes
+export gl_cv_func_rename_slash_src_works=yes
+export gl_cv_func_rmdir_works=yes
+export gl_cv_func_roundf_ieee=yes
+export gl_cv_func_round_ieee=yes
+export gl_cv_func_select_detects_ebadf=yes
+export gl_cv_func_setenv_works=yes
+export gl_cv_func_signbit_gcc=yes
+export gl_cv_func_signbit=yes
+export gl_cv_func_sleep_works=yes
+export gl_cv_func_snprintf_directive_n=yes
+export gl_cv_func_snprintf_retval_c99=yes
+export gl_cv_func_snprintf_truncation_c99=yes
+export gl_cv_func_stat_dir_slash=yes
+export gl_cv_func_stat_file_slash=yes
+export gl_cv_func_stpncpy=yes
+export gl_cv_func_strcasestr_linear=yes
+export gl_cv_func_strchrnul_works=yes
+export gl_cv_func_strerror_0_works=yes
+export gl_cv_func_strstr_linear=yes
+export gl_cv_func_strtod_works=yes
+export gl_cv_func_svid_putenv=yes
+export gl_cv_func_symlink_works=yes
+export gl_cv_func_tdelete_works=yes
+export gl_cv_func_truncf_ieee=yes
+export gl_cv_func_trunc_ieee=yes
+export gl_cv_func_truncl_ieee=yes
+export gl_cv_func_tzset_clobber=no
+export gl_cv_func_ungetc_works=yes
+export gl_cv_func_unlink_honors_slashes=yes
+export gl_cv_func_unsetenv_works=yes
+export gl_cv_func_usleep_works=yes
+export gl_cv_func_utimensat_works=yes
+export gl_cv_func_vsnprintf_posix=yes
+export gl_cv_func_vsnprintf_zerosize_c99=yes
+export gl_cv_func_vsprintf_posix=yes
+export gl_cv_func_wcwidth_works=yes
+export gl_cv_func_working_getdelim=yes
+export gl_cv_func_working_mkstemp=yes
+export gl_cv_func_working_mktime=yes
+export gl_cv_func_working_strerror=yes
+export ac_cv_func___fseterr=yes # Only if the OS actually supports this, Sortix does.
+export gl_cv_func_getcwd_null=yes # Only if the OS actually supports this, Sortix does.
+export gl_cv_struct_dirent_d_ino=yes # Only if the OS actually supports this, Sortix does.
 # Guess values for system-dependent variables and create Makefiles.
 # Generated by GNU Autoconf 2.71 for GNU tar 1.35.
 #
diff -Paur --no-dereference -- tar.upstream/gnu/getgroups.c tar/gnu/getgroups.c
--- tar.upstream/gnu/getgroups.c
+++ tar/gnu/getgroups.c
@@ -30,7 +30,7 @@
 /* Provide a stub that fails with ENOSYS, since there is no group
    information available on mingw.  */
 int
-getgroups (_GL_UNUSED int n, _GL_UNUSED GETGROUPS_T *groups)
+getgroups (_GL_UNUSED int n, _GL_UNUSED gid_t *groups)
 {
   errno = ENOSYS;
   return -1;
diff -Paur --no-dereference -- tar.upstream/lib/rtapelib.c tar/lib/rtapelib.c
--- tar.upstream/lib/rtapelib.c
+++ tar/lib/rtapelib.c
@@ -367,8 +367,10 @@
 
   if (!pw)
     return "getpwuid";
+#if !defined(__sortix__) || defined(__SORTIX_HAS_INITGROUPS__)
   if (initgroups (pw->pw_name, gid) != 0 && errno != EPERM)
     return "initgroups";
+#endif
   if (gid != getegid () && setgid (gid) != 0 && errno != EPERM)
     return "setgid";
   if (uid != geteuid () && setuid (uid) != 0 && errno != EPERM)
@@ -452,8 +454,10 @@
 
   assume (remote_file);
 
+#if !defined(__sortix__)
   /* FIXME: Should somewhat validate the decoding, here.  */
   if (gethostbyname (remote_host) == NULL)
+#endif
     error (EXIT_ON_EXEC_ERROR, 0, _("Cannot connect to %s: resolve failed"),
 	   remote_host);
 
diff -Paur --no-dereference -- tar.upstream/lib/xattr-at.h tar/lib/xattr-at.h
--- tar.upstream/lib/xattr-at.h
+++ tar/lib/xattr-at.h
@@ -31,6 +31,7 @@
 # define ENOATTR ENODATA        /* No such attribute */
 #endif
 
+#if !(defined(__sortix__) && __has_include(<sys/xattr.h>))
 /* These are the dir-fd-relative variants of the functions without the
    "at" suffix.  For example, setxattrat (AT_FDCWD, path, name, value, size,
    flags &c) is usually equivalent to setxattr (file, name, value, size,
@@ -71,5 +72,6 @@
    except when DIR_FD and FILE specify a symlink:  llistxattr operates on the
    symlink, while the listxattrat operates on the referent of the symlink.  */
 ssize_t llistxattrat (int dir_fd, const char *path, char *list, size_t size);
+#endif
 
 #endif /* XATTRS_AT_H */
diff -Paur --no-dereference -- tar.upstream/src/Makefile.in tar/src/Makefile.in
--- tar.upstream/src/Makefile.in
+++ tar/src/Makefile.in
@@ -1263,7 +1263,7 @@
 LIBOBJS = @LIBOBJS@
 LIBPMULTITHREAD = @LIBPMULTITHREAD@
 LIBPTHREAD = @LIBPTHREAD@
-LIBS = @LIBS@
+LIBS = @LIBS@ @INTLLIBS@
 LIBUNISTRING_UNICASE_H = @LIBUNISTRING_UNICASE_H@
 LIBUNISTRING_UNICTYPE_H = @LIBUNISTRING_UNICTYPE_H@
 LIBUNISTRING_UNINORM_H = @LIBUNISTRING_UNINORM_H@
diff -Paur --no-dereference -- tar.upstream/src/checkpoint.c tar/src/checkpoint.c
--- tar.upstream/src/checkpoint.c
+++ tar/src/checkpoint.c
@@ -136,12 +136,15 @@
     }
   else if (strcmp (str, "totals") == 0)
     alloc_action (cop_totals);
+/* PATCH: Sortix doesn't have sigwait yet.  */
+#if !defined(__sortix__) || defined(__SORTIX_HAS_SIGWAIT__)
   else if (strncmp (str, "wait=", 5) == 0)
     {
       act = alloc_action (cop_wait);
       act->v.signal = decode_signal (str + 5);
       sigaddset (&sigs, act->v.signal);
     }
+#endif
   else
     FATAL_ERROR ((0, 0, _("%s: unknown checkpoint action"), str));
 }
@@ -428,8 +431,10 @@
 
 	case cop_wait:
 	  {
+#if !defined(__sortix__) || defined(__SORTIX_HAS_SIGWAIT__)
 	    int n;
 	    sigwait (&sigs, &n);
+#endif
 	  }
 	}
     }
