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