sim: revert 6709bbcf564d
The identifier SYS_getdents is not available on Mac OS X. Therefore, its use results in compilation failure. It seems there is no straight forward way to implement the system call getdents using readdir() or similar C functions. Hence the commit 6709bbcf564d is being rolled back.
This commit is contained in:
parent
d6f1c6ce89
commit
6523aad25c
8 changed files with 14 additions and 58 deletions
|
@ -431,7 +431,7 @@ SyscallDesc AlphaLinuxProcess::syscallDescs[] = {
|
||||||
/* 302 */ SyscallDesc("mount", unimplementedFunc),
|
/* 302 */ SyscallDesc("mount", unimplementedFunc),
|
||||||
/* 303 */ SyscallDesc("old_adjtimex", unimplementedFunc),
|
/* 303 */ SyscallDesc("old_adjtimex", unimplementedFunc),
|
||||||
/* 304 */ SyscallDesc("swapoff", unimplementedFunc),
|
/* 304 */ SyscallDesc("swapoff", unimplementedFunc),
|
||||||
/* 305 */ SyscallDesc("getdents", getdentsFunc),
|
/* 305 */ SyscallDesc("getdents", unimplementedFunc),
|
||||||
/* 306 */ SyscallDesc("create_module", unimplementedFunc),
|
/* 306 */ SyscallDesc("create_module", unimplementedFunc),
|
||||||
/* 307 */ SyscallDesc("init_module", unimplementedFunc),
|
/* 307 */ SyscallDesc("init_module", unimplementedFunc),
|
||||||
/* 308 */ SyscallDesc("delete_module", unimplementedFunc),
|
/* 308 */ SyscallDesc("delete_module", unimplementedFunc),
|
||||||
|
@ -503,7 +503,7 @@ SyscallDesc AlphaLinuxProcess::syscallDescs[] = {
|
||||||
/* 374 */ SyscallDesc("pivot_root", unimplementedFunc),
|
/* 374 */ SyscallDesc("pivot_root", unimplementedFunc),
|
||||||
/* 375 */ SyscallDesc("mincore", unimplementedFunc),
|
/* 375 */ SyscallDesc("mincore", unimplementedFunc),
|
||||||
/* 376 */ SyscallDesc("pciconfig_iobase", unimplementedFunc),
|
/* 376 */ SyscallDesc("pciconfig_iobase", unimplementedFunc),
|
||||||
/* 377 */ SyscallDesc("getdents64", getdents64Func),
|
/* 377 */ SyscallDesc("getdents64", unimplementedFunc),
|
||||||
/* 378 */ SyscallDesc("gettid", unimplementedFunc),
|
/* 378 */ SyscallDesc("gettid", unimplementedFunc),
|
||||||
/* 379 */ SyscallDesc("readahead", unimplementedFunc),
|
/* 379 */ SyscallDesc("readahead", unimplementedFunc),
|
||||||
/* 380 */ SyscallDesc("security", unimplementedFunc),
|
/* 380 */ SyscallDesc("security", unimplementedFunc),
|
||||||
|
|
|
@ -260,7 +260,7 @@ static SyscallDesc syscallDescs32[] = {
|
||||||
/* 138 */ SyscallDesc("setfsuid", unimplementedFunc),
|
/* 138 */ SyscallDesc("setfsuid", unimplementedFunc),
|
||||||
/* 139 */ SyscallDesc("setfsgid", unimplementedFunc),
|
/* 139 */ SyscallDesc("setfsgid", unimplementedFunc),
|
||||||
/* 140 */ SyscallDesc("llseek", _llseekFunc),
|
/* 140 */ SyscallDesc("llseek", _llseekFunc),
|
||||||
/* 141 */ SyscallDesc("getdents", getdentsFunc),
|
/* 141 */ SyscallDesc("getdents", unimplementedFunc),
|
||||||
/* 142 */ SyscallDesc("newselect", unimplementedFunc),
|
/* 142 */ SyscallDesc("newselect", unimplementedFunc),
|
||||||
/* 143 */ SyscallDesc("flock", unimplementedFunc),
|
/* 143 */ SyscallDesc("flock", unimplementedFunc),
|
||||||
/* 144 */ SyscallDesc("msync", unimplementedFunc),
|
/* 144 */ SyscallDesc("msync", unimplementedFunc),
|
||||||
|
@ -336,7 +336,7 @@ static SyscallDesc syscallDescs32[] = {
|
||||||
/* 214 */ SyscallDesc("setgid", unimplementedFunc),
|
/* 214 */ SyscallDesc("setgid", unimplementedFunc),
|
||||||
/* 215 */ SyscallDesc("setfsuid", unimplementedFunc),
|
/* 215 */ SyscallDesc("setfsuid", unimplementedFunc),
|
||||||
/* 216 */ SyscallDesc("setfsgid", unimplementedFunc),
|
/* 216 */ SyscallDesc("setfsgid", unimplementedFunc),
|
||||||
/* 217 */ SyscallDesc("getdents64", getdents64Func),
|
/* 217 */ SyscallDesc("getdents64", unimplementedFunc),
|
||||||
/* 218 */ SyscallDesc("pivot_root", unimplementedFunc),
|
/* 218 */ SyscallDesc("pivot_root", unimplementedFunc),
|
||||||
/* 219 */ SyscallDesc("mincore", unimplementedFunc),
|
/* 219 */ SyscallDesc("mincore", unimplementedFunc),
|
||||||
/* 220 */ SyscallDesc("madvise", unimplementedFunc),
|
/* 220 */ SyscallDesc("madvise", unimplementedFunc),
|
||||||
|
|
|
@ -277,7 +277,7 @@ SyscallDesc MipsLinuxProcess::syscallDescs[] = {
|
||||||
/* 138 */ SyscallDesc("setfsuid", unimplementedFunc),
|
/* 138 */ SyscallDesc("setfsuid", unimplementedFunc),
|
||||||
/* 139 */ SyscallDesc("setfsgid", unimplementedFunc),
|
/* 139 */ SyscallDesc("setfsgid", unimplementedFunc),
|
||||||
/* 140 */ SyscallDesc("llseek", unimplementedFunc),
|
/* 140 */ SyscallDesc("llseek", unimplementedFunc),
|
||||||
/* 141 */ SyscallDesc("getdents", getdentsFunc),
|
/* 141 */ SyscallDesc("getdents", unimplementedFunc),
|
||||||
/* 142 */ SyscallDesc("newselect", unimplementedFunc),
|
/* 142 */ SyscallDesc("newselect", unimplementedFunc),
|
||||||
/* 143 */ SyscallDesc("flock", unimplementedFunc),
|
/* 143 */ SyscallDesc("flock", unimplementedFunc),
|
||||||
/* 144 */ SyscallDesc("msync", unimplementedFunc),
|
/* 144 */ SyscallDesc("msync", unimplementedFunc),
|
||||||
|
@ -355,7 +355,7 @@ SyscallDesc MipsLinuxProcess::syscallDescs[] = {
|
||||||
/* 216 */ SyscallDesc("pivot_root", unimplementedFunc),
|
/* 216 */ SyscallDesc("pivot_root", unimplementedFunc),
|
||||||
/* 217 */ SyscallDesc("mincore", unimplementedFunc),
|
/* 217 */ SyscallDesc("mincore", unimplementedFunc),
|
||||||
/* 218 */ SyscallDesc("madvise", unimplementedFunc),
|
/* 218 */ SyscallDesc("madvise", unimplementedFunc),
|
||||||
/* 219 */ SyscallDesc("getdents64", getdents64Func),
|
/* 219 */ SyscallDesc("getdents64", unimplementedFunc),
|
||||||
/* 220 */ SyscallDesc("fcntl64", fcntl64Func),
|
/* 220 */ SyscallDesc("fcntl64", fcntl64Func),
|
||||||
/* 221 */ SyscallDesc("reserved#221", unimplementedFunc),
|
/* 221 */ SyscallDesc("reserved#221", unimplementedFunc),
|
||||||
/* 222 */ SyscallDesc("gettid", unimplementedFunc),
|
/* 222 */ SyscallDesc("gettid", unimplementedFunc),
|
||||||
|
|
|
@ -205,7 +205,7 @@ SyscallDesc PowerLinuxProcess::syscallDescs[] = {
|
||||||
/* 138 */ SyscallDesc("setfsuid", unimplementedFunc),
|
/* 138 */ SyscallDesc("setfsuid", unimplementedFunc),
|
||||||
/* 139 */ SyscallDesc("setfsgid", unimplementedFunc),
|
/* 139 */ SyscallDesc("setfsgid", unimplementedFunc),
|
||||||
/* 140 */ SyscallDesc("llseek", _llseekFunc),
|
/* 140 */ SyscallDesc("llseek", _llseekFunc),
|
||||||
/* 141 */ SyscallDesc("getdents", getdentsFunc),
|
/* 141 */ SyscallDesc("getdents", unimplementedFunc),
|
||||||
/* 142 */ SyscallDesc("newselect", unimplementedFunc),
|
/* 142 */ SyscallDesc("newselect", unimplementedFunc),
|
||||||
/* 143 */ SyscallDesc("flock", unimplementedFunc),
|
/* 143 */ SyscallDesc("flock", unimplementedFunc),
|
||||||
/* 144 */ SyscallDesc("msync", unimplementedFunc),
|
/* 144 */ SyscallDesc("msync", unimplementedFunc),
|
||||||
|
@ -281,7 +281,7 @@ SyscallDesc PowerLinuxProcess::syscallDescs[] = {
|
||||||
/* 214 */ SyscallDesc("setgid", unimplementedFunc),
|
/* 214 */ SyscallDesc("setgid", unimplementedFunc),
|
||||||
/* 215 */ SyscallDesc("setfsuid", unimplementedFunc),
|
/* 215 */ SyscallDesc("setfsuid", unimplementedFunc),
|
||||||
/* 216 */ SyscallDesc("setfsgid", unimplementedFunc),
|
/* 216 */ SyscallDesc("setfsgid", unimplementedFunc),
|
||||||
/* 217 */ SyscallDesc("getdents64", getdents64Func),
|
/* 217 */ SyscallDesc("getdents64", unimplementedFunc),
|
||||||
/* 218 */ SyscallDesc("pivot_root", unimplementedFunc),
|
/* 218 */ SyscallDesc("pivot_root", unimplementedFunc),
|
||||||
/* 219 */ SyscallDesc("mincore", unimplementedFunc),
|
/* 219 */ SyscallDesc("mincore", unimplementedFunc),
|
||||||
/* 220 */ SyscallDesc("madvise", unimplementedFunc),
|
/* 220 */ SyscallDesc("madvise", unimplementedFunc),
|
||||||
|
|
|
@ -241,7 +241,7 @@ SyscallDesc SparcLinuxProcess::syscall32Descs[] = {
|
||||||
/* 151 */ SyscallDesc("inotify_init", unimplementedFunc),
|
/* 151 */ SyscallDesc("inotify_init", unimplementedFunc),
|
||||||
/* 152 */ SyscallDesc("inotify_add_watch", unimplementedFunc),
|
/* 152 */ SyscallDesc("inotify_add_watch", unimplementedFunc),
|
||||||
/* 153 */ SyscallDesc("poll", unimplementedFunc),
|
/* 153 */ SyscallDesc("poll", unimplementedFunc),
|
||||||
/* 154 */ SyscallDesc("getdents64", getdents64Func),
|
/* 154 */ SyscallDesc("getdents64", unimplementedFunc),
|
||||||
/* 155 */ SyscallDesc("fcntl64", unimplementedFunc),
|
/* 155 */ SyscallDesc("fcntl64", unimplementedFunc),
|
||||||
/* 156 */ SyscallDesc("inotify_rm_watch", unimplementedFunc),
|
/* 156 */ SyscallDesc("inotify_rm_watch", unimplementedFunc),
|
||||||
/* 157 */ SyscallDesc("statfs", unimplementedFunc),
|
/* 157 */ SyscallDesc("statfs", unimplementedFunc),
|
||||||
|
@ -261,7 +261,7 @@ SyscallDesc SparcLinuxProcess::syscall32Descs[] = {
|
||||||
/* 171 */ SyscallDesc("fsetxattr", unimplementedFunc), // 32 bit
|
/* 171 */ SyscallDesc("fsetxattr", unimplementedFunc), // 32 bit
|
||||||
/* 172 */ SyscallDesc("getxattr", unimplementedFunc),
|
/* 172 */ SyscallDesc("getxattr", unimplementedFunc),
|
||||||
/* 173 */ SyscallDesc("lgetxattr", unimplementedFunc),
|
/* 173 */ SyscallDesc("lgetxattr", unimplementedFunc),
|
||||||
/* 174 */ SyscallDesc("getdents", getdentsFunc),
|
/* 174 */ SyscallDesc("getdents", unimplementedFunc),
|
||||||
/* 175 */ SyscallDesc("setsid", unimplementedFunc),
|
/* 175 */ SyscallDesc("setsid", unimplementedFunc),
|
||||||
/* 176 */ SyscallDesc("fchdir", unimplementedFunc),
|
/* 176 */ SyscallDesc("fchdir", unimplementedFunc),
|
||||||
/* 177 */ SyscallDesc("fgetxattr", unimplementedFunc), // 32 bit
|
/* 177 */ SyscallDesc("fgetxattr", unimplementedFunc), // 32 bit
|
||||||
|
@ -547,7 +547,7 @@ SyscallDesc SparcLinuxProcess::syscallDescs[] = {
|
||||||
/* 151 */ SyscallDesc("inotify_init", unimplementedFunc),
|
/* 151 */ SyscallDesc("inotify_init", unimplementedFunc),
|
||||||
/* 152 */ SyscallDesc("inotify_add_watch", unimplementedFunc),
|
/* 152 */ SyscallDesc("inotify_add_watch", unimplementedFunc),
|
||||||
/* 153 */ SyscallDesc("poll", unimplementedFunc),
|
/* 153 */ SyscallDesc("poll", unimplementedFunc),
|
||||||
/* 154 */ SyscallDesc("getdents64", getdents64Func),
|
/* 154 */ SyscallDesc("getdents64", unimplementedFunc),
|
||||||
/* 155 */ SyscallDesc("fcntl64", unimplementedFunc),
|
/* 155 */ SyscallDesc("fcntl64", unimplementedFunc),
|
||||||
/* 156 */ SyscallDesc("inotify_rm_watch", unimplementedFunc),
|
/* 156 */ SyscallDesc("inotify_rm_watch", unimplementedFunc),
|
||||||
/* 157 */ SyscallDesc("statfs", unimplementedFunc),
|
/* 157 */ SyscallDesc("statfs", unimplementedFunc),
|
||||||
|
@ -567,7 +567,7 @@ SyscallDesc SparcLinuxProcess::syscallDescs[] = {
|
||||||
/* 171 */ SyscallDesc("fsetxattr", unimplementedFunc),
|
/* 171 */ SyscallDesc("fsetxattr", unimplementedFunc),
|
||||||
/* 172 */ SyscallDesc("getxattr", unimplementedFunc),
|
/* 172 */ SyscallDesc("getxattr", unimplementedFunc),
|
||||||
/* 173 */ SyscallDesc("lgetxattr", unimplementedFunc),
|
/* 173 */ SyscallDesc("lgetxattr", unimplementedFunc),
|
||||||
/* 174 */ SyscallDesc("getdents", getdentsFunc),
|
/* 174 */ SyscallDesc("getdents", unimplementedFunc),
|
||||||
/* 175 */ SyscallDesc("setsid", unimplementedFunc),
|
/* 175 */ SyscallDesc("setsid", unimplementedFunc),
|
||||||
/* 176 */ SyscallDesc("fchdir", unimplementedFunc),
|
/* 176 */ SyscallDesc("fchdir", unimplementedFunc),
|
||||||
/* 177 */ SyscallDesc("fgetxattr", unimplementedFunc),
|
/* 177 */ SyscallDesc("fgetxattr", unimplementedFunc),
|
||||||
|
|
|
@ -296,7 +296,7 @@ static SyscallDesc syscallDescs64[] = {
|
||||||
/* 75 */ SyscallDesc("fdatasync", unimplementedFunc),
|
/* 75 */ SyscallDesc("fdatasync", unimplementedFunc),
|
||||||
/* 76 */ SyscallDesc("truncate", truncateFunc),
|
/* 76 */ SyscallDesc("truncate", truncateFunc),
|
||||||
/* 77 */ SyscallDesc("ftruncate", ftruncateFunc),
|
/* 77 */ SyscallDesc("ftruncate", ftruncateFunc),
|
||||||
/* 78 */ SyscallDesc("getdents", getdentsFunc),
|
/* 78 */ SyscallDesc("getdents", unimplementedFunc),
|
||||||
/* 79 */ SyscallDesc("getcwd", getcwdFunc),
|
/* 79 */ SyscallDesc("getcwd", getcwdFunc),
|
||||||
/* 80 */ SyscallDesc("chdir", unimplementedFunc),
|
/* 80 */ SyscallDesc("chdir", unimplementedFunc),
|
||||||
/* 81 */ SyscallDesc("fchdir", unimplementedFunc),
|
/* 81 */ SyscallDesc("fchdir", unimplementedFunc),
|
||||||
|
@ -435,7 +435,7 @@ static SyscallDesc syscallDescs64[] = {
|
||||||
/* 214 */ SyscallDesc("epoll_ctl_old", unimplementedFunc),
|
/* 214 */ SyscallDesc("epoll_ctl_old", unimplementedFunc),
|
||||||
/* 215 */ SyscallDesc("epoll_wait_old", unimplementedFunc),
|
/* 215 */ SyscallDesc("epoll_wait_old", unimplementedFunc),
|
||||||
/* 216 */ SyscallDesc("remap_file_pages", unimplementedFunc),
|
/* 216 */ SyscallDesc("remap_file_pages", unimplementedFunc),
|
||||||
/* 217 */ SyscallDesc("getdents64", getdents64Func),
|
/* 217 */ SyscallDesc("getdents64", unimplementedFunc),
|
||||||
/* 218 */ SyscallDesc("set_tid_address", unimplementedFunc),
|
/* 218 */ SyscallDesc("set_tid_address", unimplementedFunc),
|
||||||
/* 219 */ SyscallDesc("restart_syscall", unimplementedFunc),
|
/* 219 */ SyscallDesc("restart_syscall", unimplementedFunc),
|
||||||
/* 220 */ SyscallDesc("semtimedop", unimplementedFunc),
|
/* 220 */ SyscallDesc("semtimedop", unimplementedFunc),
|
||||||
|
|
|
@ -31,7 +31,6 @@
|
||||||
|
|
||||||
#include <fcntl.h>
|
#include <fcntl.h>
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
#include <sys/syscall.h>
|
|
||||||
|
|
||||||
#include <cstdio>
|
#include <cstdio>
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
|
@ -868,41 +867,6 @@ cloneFunc(SyscallDesc *desc, int callnum, LiveProcess *process,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
SyscallReturn
|
|
||||||
getdentsFunc(SyscallDesc *desc, int num, LiveProcess *p,
|
|
||||||
ThreadContext *tc)
|
|
||||||
{
|
|
||||||
int index = 0;
|
|
||||||
int fd = p->sim_fd(p->getSyscallArg(tc, index));
|
|
||||||
Addr bufPtr = p->getSyscallArg(tc, index);
|
|
||||||
int nbytes = p->getSyscallArg(tc, index);
|
|
||||||
BufferArg bufArg(bufPtr, nbytes);
|
|
||||||
|
|
||||||
int bytes_read = syscall(SYS_getdents, fd, bufArg.bufferPtr(), nbytes);
|
|
||||||
|
|
||||||
if (bytes_read != -1)
|
|
||||||
bufArg.copyOut(tc->getMemProxy());
|
|
||||||
|
|
||||||
return bytes_read;
|
|
||||||
}
|
|
||||||
|
|
||||||
SyscallReturn
|
|
||||||
getdents64Func(SyscallDesc *desc, int num, LiveProcess *p,
|
|
||||||
ThreadContext *tc)
|
|
||||||
{
|
|
||||||
int index = 0;
|
|
||||||
int fd = p->sim_fd(p->getSyscallArg(tc, index));
|
|
||||||
Addr bufPtr = p->getSyscallArg(tc, index);
|
|
||||||
int nbytes = p->getSyscallArg(tc, index);
|
|
||||||
BufferArg bufArg(bufPtr, nbytes);
|
|
||||||
|
|
||||||
int bytes_read = syscall(SYS_getdents64, fd, bufArg.bufferPtr(), nbytes);
|
|
||||||
|
|
||||||
if (bytes_read != -1)
|
|
||||||
bufArg.copyOut(tc->getMemProxy());
|
|
||||||
|
|
||||||
return bytes_read;
|
|
||||||
}
|
|
||||||
SyscallReturn
|
SyscallReturn
|
||||||
accessFunc(SyscallDesc *desc, int callnum, LiveProcess *p, ThreadContext *tc,
|
accessFunc(SyscallDesc *desc, int callnum, LiveProcess *p, ThreadContext *tc,
|
||||||
int index)
|
int index)
|
||||||
|
|
|
@ -439,14 +439,6 @@ futexFunc(SyscallDesc *desc, int callnum, LiveProcess *process,
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Target getdents() handler.
|
|
||||||
SyscallReturn getdentsFunc(SyscallDesc *desc, int num,
|
|
||||||
LiveProcess *process, ThreadContext *tc);
|
|
||||||
|
|
||||||
/// Target getdents64() handler.
|
|
||||||
SyscallReturn getdents64Func(SyscallDesc *desc, int num,
|
|
||||||
LiveProcess *process, ThreadContext *tc);
|
|
||||||
|
|
||||||
|
|
||||||
/// Pseudo Funcs - These functions use a different return convension,
|
/// Pseudo Funcs - These functions use a different return convension,
|
||||||
/// returning a second value in a register other than the normal return register
|
/// returning a second value in a register other than the normal return register
|
||||||
|
|
Loading…
Reference in a new issue