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),
|
||||
/* 303 */ SyscallDesc("old_adjtimex", unimplementedFunc),
|
||||
/* 304 */ SyscallDesc("swapoff", unimplementedFunc),
|
||||
/* 305 */ SyscallDesc("getdents", getdentsFunc),
|
||||
/* 305 */ SyscallDesc("getdents", unimplementedFunc),
|
||||
/* 306 */ SyscallDesc("create_module", unimplementedFunc),
|
||||
/* 307 */ SyscallDesc("init_module", unimplementedFunc),
|
||||
/* 308 */ SyscallDesc("delete_module", unimplementedFunc),
|
||||
|
@ -503,7 +503,7 @@ SyscallDesc AlphaLinuxProcess::syscallDescs[] = {
|
|||
/* 374 */ SyscallDesc("pivot_root", unimplementedFunc),
|
||||
/* 375 */ SyscallDesc("mincore", unimplementedFunc),
|
||||
/* 376 */ SyscallDesc("pciconfig_iobase", unimplementedFunc),
|
||||
/* 377 */ SyscallDesc("getdents64", getdents64Func),
|
||||
/* 377 */ SyscallDesc("getdents64", unimplementedFunc),
|
||||
/* 378 */ SyscallDesc("gettid", unimplementedFunc),
|
||||
/* 379 */ SyscallDesc("readahead", unimplementedFunc),
|
||||
/* 380 */ SyscallDesc("security", unimplementedFunc),
|
||||
|
|
|
@ -260,7 +260,7 @@ static SyscallDesc syscallDescs32[] = {
|
|||
/* 138 */ SyscallDesc("setfsuid", unimplementedFunc),
|
||||
/* 139 */ SyscallDesc("setfsgid", unimplementedFunc),
|
||||
/* 140 */ SyscallDesc("llseek", _llseekFunc),
|
||||
/* 141 */ SyscallDesc("getdents", getdentsFunc),
|
||||
/* 141 */ SyscallDesc("getdents", unimplementedFunc),
|
||||
/* 142 */ SyscallDesc("newselect", unimplementedFunc),
|
||||
/* 143 */ SyscallDesc("flock", unimplementedFunc),
|
||||
/* 144 */ SyscallDesc("msync", unimplementedFunc),
|
||||
|
@ -336,7 +336,7 @@ static SyscallDesc syscallDescs32[] = {
|
|||
/* 214 */ SyscallDesc("setgid", unimplementedFunc),
|
||||
/* 215 */ SyscallDesc("setfsuid", unimplementedFunc),
|
||||
/* 216 */ SyscallDesc("setfsgid", unimplementedFunc),
|
||||
/* 217 */ SyscallDesc("getdents64", getdents64Func),
|
||||
/* 217 */ SyscallDesc("getdents64", unimplementedFunc),
|
||||
/* 218 */ SyscallDesc("pivot_root", unimplementedFunc),
|
||||
/* 219 */ SyscallDesc("mincore", unimplementedFunc),
|
||||
/* 220 */ SyscallDesc("madvise", unimplementedFunc),
|
||||
|
|
|
@ -277,7 +277,7 @@ SyscallDesc MipsLinuxProcess::syscallDescs[] = {
|
|||
/* 138 */ SyscallDesc("setfsuid", unimplementedFunc),
|
||||
/* 139 */ SyscallDesc("setfsgid", unimplementedFunc),
|
||||
/* 140 */ SyscallDesc("llseek", unimplementedFunc),
|
||||
/* 141 */ SyscallDesc("getdents", getdentsFunc),
|
||||
/* 141 */ SyscallDesc("getdents", unimplementedFunc),
|
||||
/* 142 */ SyscallDesc("newselect", unimplementedFunc),
|
||||
/* 143 */ SyscallDesc("flock", unimplementedFunc),
|
||||
/* 144 */ SyscallDesc("msync", unimplementedFunc),
|
||||
|
@ -355,7 +355,7 @@ SyscallDesc MipsLinuxProcess::syscallDescs[] = {
|
|||
/* 216 */ SyscallDesc("pivot_root", unimplementedFunc),
|
||||
/* 217 */ SyscallDesc("mincore", unimplementedFunc),
|
||||
/* 218 */ SyscallDesc("madvise", unimplementedFunc),
|
||||
/* 219 */ SyscallDesc("getdents64", getdents64Func),
|
||||
/* 219 */ SyscallDesc("getdents64", unimplementedFunc),
|
||||
/* 220 */ SyscallDesc("fcntl64", fcntl64Func),
|
||||
/* 221 */ SyscallDesc("reserved#221", unimplementedFunc),
|
||||
/* 222 */ SyscallDesc("gettid", unimplementedFunc),
|
||||
|
|
|
@ -205,7 +205,7 @@ SyscallDesc PowerLinuxProcess::syscallDescs[] = {
|
|||
/* 138 */ SyscallDesc("setfsuid", unimplementedFunc),
|
||||
/* 139 */ SyscallDesc("setfsgid", unimplementedFunc),
|
||||
/* 140 */ SyscallDesc("llseek", _llseekFunc),
|
||||
/* 141 */ SyscallDesc("getdents", getdentsFunc),
|
||||
/* 141 */ SyscallDesc("getdents", unimplementedFunc),
|
||||
/* 142 */ SyscallDesc("newselect", unimplementedFunc),
|
||||
/* 143 */ SyscallDesc("flock", unimplementedFunc),
|
||||
/* 144 */ SyscallDesc("msync", unimplementedFunc),
|
||||
|
@ -281,7 +281,7 @@ SyscallDesc PowerLinuxProcess::syscallDescs[] = {
|
|||
/* 214 */ SyscallDesc("setgid", unimplementedFunc),
|
||||
/* 215 */ SyscallDesc("setfsuid", unimplementedFunc),
|
||||
/* 216 */ SyscallDesc("setfsgid", unimplementedFunc),
|
||||
/* 217 */ SyscallDesc("getdents64", getdents64Func),
|
||||
/* 217 */ SyscallDesc("getdents64", unimplementedFunc),
|
||||
/* 218 */ SyscallDesc("pivot_root", unimplementedFunc),
|
||||
/* 219 */ SyscallDesc("mincore", unimplementedFunc),
|
||||
/* 220 */ SyscallDesc("madvise", unimplementedFunc),
|
||||
|
|
|
@ -241,7 +241,7 @@ SyscallDesc SparcLinuxProcess::syscall32Descs[] = {
|
|||
/* 151 */ SyscallDesc("inotify_init", unimplementedFunc),
|
||||
/* 152 */ SyscallDesc("inotify_add_watch", unimplementedFunc),
|
||||
/* 153 */ SyscallDesc("poll", unimplementedFunc),
|
||||
/* 154 */ SyscallDesc("getdents64", getdents64Func),
|
||||
/* 154 */ SyscallDesc("getdents64", unimplementedFunc),
|
||||
/* 155 */ SyscallDesc("fcntl64", unimplementedFunc),
|
||||
/* 156 */ SyscallDesc("inotify_rm_watch", unimplementedFunc),
|
||||
/* 157 */ SyscallDesc("statfs", unimplementedFunc),
|
||||
|
@ -261,7 +261,7 @@ SyscallDesc SparcLinuxProcess::syscall32Descs[] = {
|
|||
/* 171 */ SyscallDesc("fsetxattr", unimplementedFunc), // 32 bit
|
||||
/* 172 */ SyscallDesc("getxattr", unimplementedFunc),
|
||||
/* 173 */ SyscallDesc("lgetxattr", unimplementedFunc),
|
||||
/* 174 */ SyscallDesc("getdents", getdentsFunc),
|
||||
/* 174 */ SyscallDesc("getdents", unimplementedFunc),
|
||||
/* 175 */ SyscallDesc("setsid", unimplementedFunc),
|
||||
/* 176 */ SyscallDesc("fchdir", unimplementedFunc),
|
||||
/* 177 */ SyscallDesc("fgetxattr", unimplementedFunc), // 32 bit
|
||||
|
@ -547,7 +547,7 @@ SyscallDesc SparcLinuxProcess::syscallDescs[] = {
|
|||
/* 151 */ SyscallDesc("inotify_init", unimplementedFunc),
|
||||
/* 152 */ SyscallDesc("inotify_add_watch", unimplementedFunc),
|
||||
/* 153 */ SyscallDesc("poll", unimplementedFunc),
|
||||
/* 154 */ SyscallDesc("getdents64", getdents64Func),
|
||||
/* 154 */ SyscallDesc("getdents64", unimplementedFunc),
|
||||
/* 155 */ SyscallDesc("fcntl64", unimplementedFunc),
|
||||
/* 156 */ SyscallDesc("inotify_rm_watch", unimplementedFunc),
|
||||
/* 157 */ SyscallDesc("statfs", unimplementedFunc),
|
||||
|
@ -567,7 +567,7 @@ SyscallDesc SparcLinuxProcess::syscallDescs[] = {
|
|||
/* 171 */ SyscallDesc("fsetxattr", unimplementedFunc),
|
||||
/* 172 */ SyscallDesc("getxattr", unimplementedFunc),
|
||||
/* 173 */ SyscallDesc("lgetxattr", unimplementedFunc),
|
||||
/* 174 */ SyscallDesc("getdents", getdentsFunc),
|
||||
/* 174 */ SyscallDesc("getdents", unimplementedFunc),
|
||||
/* 175 */ SyscallDesc("setsid", unimplementedFunc),
|
||||
/* 176 */ SyscallDesc("fchdir", unimplementedFunc),
|
||||
/* 177 */ SyscallDesc("fgetxattr", unimplementedFunc),
|
||||
|
|
|
@ -296,7 +296,7 @@ static SyscallDesc syscallDescs64[] = {
|
|||
/* 75 */ SyscallDesc("fdatasync", unimplementedFunc),
|
||||
/* 76 */ SyscallDesc("truncate", truncateFunc),
|
||||
/* 77 */ SyscallDesc("ftruncate", ftruncateFunc),
|
||||
/* 78 */ SyscallDesc("getdents", getdentsFunc),
|
||||
/* 78 */ SyscallDesc("getdents", unimplementedFunc),
|
||||
/* 79 */ SyscallDesc("getcwd", getcwdFunc),
|
||||
/* 80 */ SyscallDesc("chdir", unimplementedFunc),
|
||||
/* 81 */ SyscallDesc("fchdir", unimplementedFunc),
|
||||
|
@ -435,7 +435,7 @@ static SyscallDesc syscallDescs64[] = {
|
|||
/* 214 */ SyscallDesc("epoll_ctl_old", unimplementedFunc),
|
||||
/* 215 */ SyscallDesc("epoll_wait_old", unimplementedFunc),
|
||||
/* 216 */ SyscallDesc("remap_file_pages", unimplementedFunc),
|
||||
/* 217 */ SyscallDesc("getdents64", getdents64Func),
|
||||
/* 217 */ SyscallDesc("getdents64", unimplementedFunc),
|
||||
/* 218 */ SyscallDesc("set_tid_address", unimplementedFunc),
|
||||
/* 219 */ SyscallDesc("restart_syscall", unimplementedFunc),
|
||||
/* 220 */ SyscallDesc("semtimedop", unimplementedFunc),
|
||||
|
|
|
@ -31,7 +31,6 @@
|
|||
|
||||
#include <fcntl.h>
|
||||
#include <unistd.h>
|
||||
#include <sys/syscall.h>
|
||||
|
||||
#include <cstdio>
|
||||
#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
|
||||
accessFunc(SyscallDesc *desc, int callnum, LiveProcess *p, ThreadContext *tc,
|
||||
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,
|
||||
/// returning a second value in a register other than the normal return register
|
||||
|
|
Loading…
Reference in a new issue