qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
* [Qemu-devel] [patch] Fix uname syscall
@ 2004-09-11 18:33 Paul Brook
  2004-09-11 18:54 ` Lennert Buytenhek
  2004-09-13 21:23 ` Fabrice Bellard
  0 siblings, 2 replies; 4+ messages in thread
From: Paul Brook @ 2004-09-11 18:33 UTC (permalink / raw)
  To: qemu-devel

The patch below changes the uname syscall to return the emulated machine type, 
rather than the host machine type. Without this things get awfully confused 
when trying to compile in a chroot.

Paul

Index: syscall.c
===================================================================
RCS file: /cvsroot/qemu/qemu/linux-user/syscall.c,v
retrieving revision 1.50
diff -u -p -r1.50 syscall.c
--- syscall.c 19 Jun 2004 16:59:03 -0000 1.50
+++ syscall.c 11 Sep 2004 18:28:19 -0000
@@ -72,6 +72,17 @@
 /* 16 bit uid wrappers emulation */
 #define USE_UID16
 #endif
+#if defined(TARGET_ARM)
+#define UNAME_MACHINE "armv4"
+#elif defined(TARGET_I386)
+#define UNAME_MACHINE "i686"
+#elif defined(TARGET_PPC)
+#define UNAME_MACHINE "ppc"
+#elif defined(TARGET_SPARC)
+#define UNAME_MACHINE "sun4"
+#else
+#error unsupported CPU
+#endif
 
 //#include <linux/msdos_fs.h>
 #define VFAT_IOCTL_READDIR_BOTH  _IOR('r', 1, struct dirent [2])
@@ -2391,8 +2406,17 @@ long do_syscall(void *cpu_env, int num, 
         ret = get_errno(setdomainname((const char *)arg1, arg2));
         break;
     case TARGET_NR_uname:
-        /* no need to transcode because we use the linux syscall */
-        ret = get_errno(sys_uname((struct new_utsname *)arg1));
+ {
+     struct new_utsname * buf;
+
+     buf = (struct new_utsname *)arg1;
+     ret = get_errno(sys_uname(buf));
+     if (!is_error(ret)) {
+  /* Overwrite the native machine name with whatever is being
+     emulated. */
+  strcpy (buf->machine, UNAME_MACHINE);
+     }
+ }
         break;
 #ifdef TARGET_I386
     case TARGET_NR_modify_ldt:

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2004-09-13 21:49 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2004-09-11 18:33 [Qemu-devel] [patch] Fix uname syscall Paul Brook
2004-09-11 18:54 ` Lennert Buytenhek
2004-09-12 11:18   ` Paul Brook
2004-09-13 21:23 ` Fabrice Bellard

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).