+2019-12-23  Eli Zaretskii  <eliz@gnu.org>
+
+       * posixstat.h (S_IRGRP, S_IWGRP, S_IXGRP, S_IROTH, S_IWOTH)
+       (S_IXOTH, S_IRWXG, S_IRWXO): Define if undefined, even if S_IRWXU
+       is defined, because non-Posix systems may defined only the user
+       bits.
+
 [Readline-specific changelog.  Descriptions of changes to the source are
  found in the bash changelog.]
 
 
 #  define S_IRWXU      (S_IRUSR | S_IWUSR | S_IXUSR)
 #  define S_IRWXG      (S_IRGRP | S_IWGRP | S_IXGRP)
 #  define S_IRWXO      (S_IROTH | S_IWOTH | S_IXOTH)
+#else  /* !S_IRWXU */
+   /* S_IRWXU is defined, but "group" and "other" bits might not be
+      (happens in certain versions of MinGW).  */
+#  if !defined (S_IRGRP)
+#    define S_IRGRP    (S_IREAD  >> 3)         /* read, group */
+#    define S_IWGRP    (S_IWRITE >> 3)         /* write, group */
+#    define S_IXGRP    (S_IEXEC  >> 3)         /* execute, group */
+#  endif /* !S_IRGRP */
+
+#  if !defined (S_IROTH)
+#    define S_IROTH    (S_IREAD  >> 6)         /* read, other */
+#    define S_IWOTH    (S_IWRITE >> 6)         /* write, other */
+#    define S_IXOTH    (S_IEXEC  >> 6)         /* execute, other */
+#  endif /* !S_IROTH */
+#  if !defined (S_IRWXG)
+#    define S_IRWXG    (S_IRGRP | S_IWGRP | S_IXGRP)
+#  endif
+#  if !defined (S_IRWXO)
+#    define S_IRWXO    (S_IROTH | S_IWOTH | S_IXOTH)
+#  endif
 #endif /* !S_IRWXU */
 
 /* These are non-standard, but are used in builtins.c$symbolic_umask() */