It looks like you've set a lot of these to ignoreFunc. Could you please 
walk me through why those system calls are ignorable? Also, with the 
stat64 syscall, did you verify that the alignment, etc, of the structure 
came out right in the simulated memory? Those have historically been 
very finicky to get all the way right, and the problems it causes can be 
hard to spot. Even if the binary works, glibc sometimes dumbs itself 
down for what it perceives as broken or otherwise inadequate hardware or OS.

Gabe

Vince Weaver wrote:
> This is probably the least controversial patch, it just hooks up various 
> necessary syscalls.
>
>
> diff -r f23a18fec0ef src/arch/x86/linux/syscalls.cc
> --- a/src/arch/x86/linux/syscalls.cc  Thu Sep 17 15:59:43 2009 -0400
> +++ b/src/arch/x86/linux/syscalls.cc  Mon Sep 21 23:03:51 2009 -0400
> @@ -242,14 +242,14 @@
>      /*  11 */ SyscallDesc("munmap", munmapFunc),
>      /*  12 */ SyscallDesc("brk", brkFunc),
>      /*  13 */ SyscallDesc("rt_sigaction", unimplementedFunc),
> -    /*  14 */ SyscallDesc("rt_sigprocmask", unimplementedFunc),
> +    /*  14 */ SyscallDesc("rt_sigprocmask", ignoreFunc),
>      /*  15 */ SyscallDesc("rt_sigreturn", unimplementedFunc),
>      /*  16 */ SyscallDesc("ioctl", unimplementedFunc),
>      /*  17 */ SyscallDesc("pread64", unimplementedFunc),
>      /*  18 */ SyscallDesc("pwrite64", unimplementedFunc),
>      /*  19 */ SyscallDesc("readv", unimplementedFunc),
>      /*  20 */ SyscallDesc("writev", writevFunc<X86Linux64>),
> -    /*  21 */ SyscallDesc("access", unimplementedFunc),
> +    /*  21 */ SyscallDesc("access", ignoreFunc),
>      /*  22 */ SyscallDesc("pipe", unimplementedFunc),
>      /*  23 */ SyscallDesc("select", unimplementedFunc),
>      /*  24 */ SyscallDesc("sched_yield", unimplementedFunc),
> @@ -328,7 +328,7 @@
>      /*  97 */ SyscallDesc("getrlimit", unimplementedFunc),
>      /*  98 */ SyscallDesc("getrusage", unimplementedFunc),
>      /*  99 */ SyscallDesc("sysinfo", sysinfoFunc<X86Linux64>),
> -    /* 100 */ SyscallDesc("times", unimplementedFunc),
> +    /* 100 */ SyscallDesc("times", ignoreFunc),
>      /* 101 */ SyscallDesc("ptrace", unimplementedFunc),
>      /* 102 */ SyscallDesc("getuid", getuidFunc),
>      /* 103 */ SyscallDesc("syslog", unimplementedFunc),
> @@ -388,7 +388,7 @@
>      /* 157 */ SyscallDesc("prctl", unimplementedFunc),
>      /* 158 */ SyscallDesc("arch_prctl", archPrctlFunc),
>      /* 159 */ SyscallDesc("adjtimex", unimplementedFunc),
> -    /* 160 */ SyscallDesc("setrlimit", unimplementedFunc),
> +    /* 160 */ SyscallDesc("setrlimit", ignoreFunc),
>      /* 161 */ SyscallDesc("chroot", unimplementedFunc),
>      /* 162 */ SyscallDesc("sync", unimplementedFunc),
>      /* 163 */ SyscallDesc("acct", unimplementedFunc),
> @@ -540,7 +540,7 @@
>      /*  30 */ SyscallDesc("utime", unimplementedFunc),
>      /*  31 */ SyscallDesc("stty", unimplementedFunc),
>      /*  32 */ SyscallDesc("gtty", unimplementedFunc),
> -    /*  33 */ SyscallDesc("access", unimplementedFunc),
> +    /*  33 */ SyscallDesc("access", ignoreFunc),
>      /*  34 */ SyscallDesc("nice", unimplementedFunc),
>      /*  35 */ SyscallDesc("ftime", unimplementedFunc),
>      /*  36 */ SyscallDesc("sync", unimplementedFunc),
> @@ -550,11 +550,11 @@
>      /*  40 */ SyscallDesc("rmdir", unimplementedFunc),
>      /*  41 */ SyscallDesc("dup", unimplementedFunc),
>      /*  42 */ SyscallDesc("pipe", unimplementedFunc),
> -    /*  43 */ SyscallDesc("times", unimplementedFunc),
> +    /*  43 */ SyscallDesc("times", ignoreFunc),
>      /*  44 */ SyscallDesc("prof", unimplementedFunc),
>      /*  45 */ SyscallDesc("brk", brkFunc),
>      /*  46 */ SyscallDesc("setgid", unimplementedFunc),
> -    /*  47 */ SyscallDesc("getgid", unimplementedFunc),
> +    /*  47 */ SyscallDesc("getgid", getgidFunc),
>      /*  48 */ SyscallDesc("signal", unimplementedFunc),
>      /*  49 */ SyscallDesc("geteuid", unimplementedFunc),
>      /*  50 */ SyscallDesc("getegid", unimplementedFunc),
> @@ -582,7 +582,7 @@
>      /*  72 */ SyscallDesc("sigsuspend", unimplementedFunc),
>      /*  73 */ SyscallDesc("sigpending", unimplementedFunc),
>      /*  74 */ SyscallDesc("sethostname", unimplementedFunc),
> -    /*  75 */ SyscallDesc("setrlimit", unimplementedFunc),
> +    /*  75 */ SyscallDesc("setrlimit", ignoreFunc),
>      /*  76 */ SyscallDesc("getrlimit", unimplementedFunc),
>      /*  77 */ SyscallDesc("getrusage", unimplementedFunc),
>      /*  78 */ SyscallDesc("gettimeofday", unimplementedFunc),
> @@ -598,7 +598,7 @@
>      /*  88 */ SyscallDesc("reboot", unimplementedFunc),
>      /*  89 */ SyscallDesc("readdir", unimplementedFunc),
>      /*  90 */ SyscallDesc("mmap", unimplementedFunc),
> -    /*  91 */ SyscallDesc("munmap", unimplementedFunc),
> +    /*  91 */ SyscallDesc("munmap", munmapFunc),
>      /*  92 */ SyscallDesc("truncate", unimplementedFunc),
>      /*  93 */ SyscallDesc("ftruncate", unimplementedFunc),
>      /*  94 */ SyscallDesc("fchmod", unimplementedFunc),
> @@ -647,7 +647,7 @@
>      /* 137 */ SyscallDesc("afs_syscall", unimplementedFunc),
>      /* 138 */ SyscallDesc("setfsuid", unimplementedFunc),
>      /* 139 */ SyscallDesc("setfsgid", unimplementedFunc),
> -    /* 140 */ SyscallDesc("_llseek", unimplementedFunc),
> +    /* 140 */ SyscallDesc("_llseek", _llseekFunc),
>      /* 141 */ SyscallDesc("getdents", unimplementedFunc),
>      /* 142 */ SyscallDesc("_newselect", unimplementedFunc),
>      /* 143 */ SyscallDesc("flock", unimplementedFunc),
> @@ -681,8 +681,8 @@
>      /* 171 */ SyscallDesc("getresgid", unimplementedFunc),
>      /* 172 */ SyscallDesc("prctl", unimplementedFunc),
>      /* 173 */ SyscallDesc("rt_sigreturn", unimplementedFunc),
> -    /* 174 */ SyscallDesc("rt_sigaction", unimplementedFunc),
> -    /* 175 */ SyscallDesc("rt_sigprocmask", unimplementedFunc),
> +    /* 174 */ SyscallDesc("rt_sigaction", ignoreFunc),
> +    /* 175 */ SyscallDesc("rt_sigprocmask", ignoreFunc),
>      /* 176 */ SyscallDesc("rt_sigpending", unimplementedFunc),
>      /* 177 */ SyscallDesc("rt_sigtimedwait", unimplementedFunc),
>      /* 178 */ SyscallDesc("rt_sigqueueinfo", unimplementedFunc),
> @@ -698,18 +698,18 @@
>      /* 188 */ SyscallDesc("getpmsg", unimplementedFunc),
>      /* 189 */ SyscallDesc("putpmsg", unimplementedFunc),
>      /* 190 */ SyscallDesc("vfork", unimplementedFunc),
> -    /* 191 */ SyscallDesc("ugetrlimit", unimplementedFunc),
> +    /* 191 */ SyscallDesc("ugetrlimit", ignoreFunc),
>      /* 192 */ SyscallDesc("mmap2", mmapFunc<X86Linux32>),
>      /* 193 */ SyscallDesc("truncate64", unimplementedFunc),
>      /* 194 */ SyscallDesc("ftruncate64", unimplementedFunc),
> -    /* 195 */ SyscallDesc("stat64", unimplementedFunc),
> +    /* 195 */ SyscallDesc("stat64", stat64Func<X86Linux32>),
>      /* 196 */ SyscallDesc("lstat64", unimplementedFunc),
>      /* 197 */ SyscallDesc("fstat64", fstat64Func<X86Linux32>),
>      /* 198 */ SyscallDesc("lchown32", unimplementedFunc),
> -    /* 199 */ SyscallDesc("getuid32", unimplementedFunc),
> -    /* 200 */ SyscallDesc("getgid32", unimplementedFunc),
> -    /* 201 */ SyscallDesc("geteuid32", unimplementedFunc),
> -    /* 202 */ SyscallDesc("getegid32", unimplementedFunc),
> +    /* 199 */ SyscallDesc("getuid32", getuidFunc),
> +    /* 200 */ SyscallDesc("getgid32", getgidFunc),
> +    /* 201 */ SyscallDesc("geteuid32", geteuidFunc),
> +    /* 202 */ SyscallDesc("getegid32", getegidFunc),
>      /* 203 */ SyscallDesc("setreuid32", unimplementedFunc),
>      /* 204 */ SyscallDesc("setregid32", unimplementedFunc),
>      /* 205 */ SyscallDesc("getgroups32", unimplementedFunc),
> _______________________________________________
> m5-dev mailing list
> [email protected]
> http://m5sim.org/mailman/listinfo/m5-dev
>   

_______________________________________________
m5-dev mailing list
[email protected]
http://m5sim.org/mailman/listinfo/m5-dev

Reply via email to