diff -ur coreutils-8.26/src/uname.c coreutils-8.26.uname-fix/src/uname.c
--- coreutils-8.26/src/uname.c
+++ coreutils-8.26.uname-fix/src/uname.c
@@ -286,6 +286,14 @@
       if (uname (&name) == -1)
         die (EXIT_FAILURE, errno, _("cannot get system name"));
 
+		if (!strcmp(name.machine, "x86_64") && sizeof(long int) == 4) {
+			strcpy(name.machine, "i686");
+		}
+		const char *_uname_m = getenv("_UNAME_M");
+		if (_uname_m != NULL && (!strcmp(_uname_m, "i686") || !strcmp(_uname_m, "x86_64"))) {
+			strcpy(name.machine, _uname_m);
+		}
+
       if (toprint & PRINT_KERNEL_NAME)
         print_element (name.sysname);
       if (toprint & PRINT_NODENAME)
