Make Linux uname(2) return x86_64 to 32-bit apps. This helps Steam.

PR:		kern/240432
Analyzed by by:	Alex S <iwtcex@gmail.com>
Reviewed by:	emaste
MFC after:	2 weeks
Sponsored by:	The FreeBSD Foundation
Differential Revision:	https://reviews.freebsd.org/D25248
This commit is contained in:
Edward Tomasz Napierala 2020-06-15 20:12:10 +00:00
parent ef6fdb3312
commit 3d8dd98381

View File

@ -704,7 +704,17 @@ linux_newuname(struct thread *td, struct linux_newuname_args *args)
*p = '\0';
break;
}
#if defined(__amd64__)
/*
* On amd64, Linux uname(2) needs to return "x86_64"
* for both 64-bit and 32-bit applications. On 32-bit,
* the string returned by getauxval(AT_PLATFORM) needs
* to remain "i686", though.
*/
strlcpy(utsname.machine, "x86_64", LINUX_MAX_UTSNAME);
#else
strlcpy(utsname.machine, linux_kplatform, LINUX_MAX_UTSNAME);
#endif
return (copyout(&utsname, args->buf, sizeof(utsname)));
}