qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Qemu-devel] [PATCH] fixed stat64 support (take II)


From: Rusty Russell
Subject: [Qemu-devel] [PATCH] fixed stat64 support (take II)
Date: Wed, 23 Apr 2003 18:15:45 +1000

Previous version of this patch added packed attribute, but didn't fix
st_ino.  Chris's glibc version found this one, too.

Name: Fix stat64
Author: Rusty Russell
Status: Tested

D: PPC64 gets size of x86 stat64 struct wrong due to padding
D: differences.  Also, translation of st_ino is incorrect.

diff -urpN --exclude TAGS -X /home/rusty/current-dontdiff --minimal 
qemu-0.1.6/syscall-i386.h qemu-0.1.6-debug/syscall-i386.h
--- qemu-0.1.6/syscall-i386.h   2003-04-11 11:01:57.000000000 +1000
+++ qemu-0.1.6-debug/syscall-i386.h     2003-04-23 17:39:27.000000000 +1000
@@ -330,7 +329,7 @@ struct target_stat64 {
        target_ulong    __pad7;         /* will be high 32 bits of ctime 
someday */
 
        unsigned long long      st_ino;
-};
+} __attribute__((packed));
 
 #define TARGET_SA_NOCLDSTOP    0x00000001
 #define TARGET_SA_NOCLDWAIT    0x00000002 /* not supported yet */
diff -urpN --exclude TAGS -X /home/rusty/current-dontdiff --minimal 
qemu-0.1.6/syscall.c qemu-0.1.6-debug/syscall.c
--- qemu-0.1.6/syscall.c        2003-04-11 11:01:57.000000000 +1000
+++ qemu-0.1.6-debug/syscall.c  2003-04-23 17:41:01.000000000 +1000
@@ -2257,7 +2257,7 @@ long do_syscall(void *cpu_env, int num, 
                 struct target_stat64 *target_st = (void *)arg2;
                 memset(target_st, 0, sizeof(struct target_stat64));
                 target_st->st_dev = tswap16(st.st_dev);
-                target_st->st_ino = tswapl(st.st_ino);
+                target_st->st_ino = tswap64(st.st_ino);
 #ifdef TARGET_STAT64_HAS_BROKEN_ST_INO
                 target_st->__st_ino = tswapl(st.st_ino);
 #endif

--
  Anyone who quotes me in their sig is an idiot. -- Rusty Russell.




reply via email to

[Prev in Thread] Current Thread [Next in Thread]