Add a tgt_iovec structure to support writev, change the name of X86Linux to X86Linux64, add some syscalls.
--HG-- extra : convert_revision : 9c13e9c68f331fe6c4a9abd96f7aee0f064101fc
This commit is contained in:
parent
4bb1c5ba0c
commit
93365f7d1a
3 changed files with 16 additions and 10 deletions
|
@ -59,7 +59,7 @@
|
||||||
#include <fcntl.h>
|
#include <fcntl.h>
|
||||||
|
|
||||||
// open(2) flags translation table
|
// open(2) flags translation table
|
||||||
OpenFlagTransTable X86Linux::openFlagTable[] = {
|
OpenFlagTransTable X86Linux64::openFlagTable[] = {
|
||||||
#ifdef _MSC_VER
|
#ifdef _MSC_VER
|
||||||
{ TGT_O_RDONLY, _O_RDONLY },
|
{ TGT_O_RDONLY, _O_RDONLY },
|
||||||
{ TGT_O_WRONLY, _O_WRONLY },
|
{ TGT_O_WRONLY, _O_WRONLY },
|
||||||
|
@ -93,6 +93,7 @@ OpenFlagTransTable X86Linux::openFlagTable[] = {
|
||||||
#endif /* _MSC_VER */
|
#endif /* _MSC_VER */
|
||||||
};
|
};
|
||||||
|
|
||||||
const int X86Linux::NUM_OPEN_FLAGS =
|
const int X86Linux64::NUM_OPEN_FLAGS =
|
||||||
(sizeof(X86Linux::openFlagTable)/sizeof(X86Linux::openFlagTable[0]));
|
sizeof(X86Linux64::openFlagTable) /
|
||||||
|
sizeof(X86Linux64::openFlagTable[0]);
|
||||||
|
|
||||||
|
|
|
@ -60,7 +60,7 @@
|
||||||
|
|
||||||
#include "kern/linux/linux.hh"
|
#include "kern/linux/linux.hh"
|
||||||
|
|
||||||
class X86Linux : public Linux
|
class X86Linux64 : public Linux
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
|
||||||
|
@ -104,6 +104,11 @@ class X86Linux : public Linux
|
||||||
static const int NUM_OPEN_FLAGS;
|
static const int NUM_OPEN_FLAGS;
|
||||||
|
|
||||||
static const unsigned TGT_MAP_ANONYMOUS = 0x20;
|
static const unsigned TGT_MAP_ANONYMOUS = 0x20;
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
uint64_t iov_base; // void *
|
||||||
|
uint64_t iov_len; // size_t
|
||||||
|
} tgt_iovec;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -83,7 +83,7 @@ unameFunc(SyscallDesc *desc, int callnum, LiveProcess *process,
|
||||||
SyscallDesc X86LinuxProcess::syscallDescs[] = {
|
SyscallDesc X86LinuxProcess::syscallDescs[] = {
|
||||||
/* 0 */ SyscallDesc("read", unimplementedFunc),
|
/* 0 */ SyscallDesc("read", unimplementedFunc),
|
||||||
/* 1 */ SyscallDesc("write", unimplementedFunc),
|
/* 1 */ SyscallDesc("write", unimplementedFunc),
|
||||||
/* 2 */ SyscallDesc("open", openFunc<X86Linux>),
|
/* 2 */ SyscallDesc("open", openFunc<X86Linux64>),
|
||||||
/* 3 */ SyscallDesc("close", unimplementedFunc),
|
/* 3 */ SyscallDesc("close", unimplementedFunc),
|
||||||
/* 4 */ SyscallDesc("stat", unimplementedFunc),
|
/* 4 */ SyscallDesc("stat", unimplementedFunc),
|
||||||
/* 5 */ SyscallDesc("fstat", unimplementedFunc),
|
/* 5 */ SyscallDesc("fstat", unimplementedFunc),
|
||||||
|
@ -101,7 +101,7 @@ SyscallDesc X86LinuxProcess::syscallDescs[] = {
|
||||||
/* 17 */ SyscallDesc("pread64", unimplementedFunc),
|
/* 17 */ SyscallDesc("pread64", unimplementedFunc),
|
||||||
/* 18 */ SyscallDesc("pwrite64", unimplementedFunc),
|
/* 18 */ SyscallDesc("pwrite64", unimplementedFunc),
|
||||||
/* 19 */ SyscallDesc("readv", unimplementedFunc),
|
/* 19 */ SyscallDesc("readv", unimplementedFunc),
|
||||||
/* 20 */ SyscallDesc("writev", unimplementedFunc),
|
/* 20 */ SyscallDesc("writev", writevFunc<X86Linux64>),
|
||||||
/* 21 */ SyscallDesc("access", unimplementedFunc),
|
/* 21 */ SyscallDesc("access", unimplementedFunc),
|
||||||
/* 22 */ SyscallDesc("pipe", unimplementedFunc),
|
/* 22 */ SyscallDesc("pipe", unimplementedFunc),
|
||||||
/* 23 */ SyscallDesc("select", unimplementedFunc),
|
/* 23 */ SyscallDesc("select", unimplementedFunc),
|
||||||
|
@ -183,13 +183,13 @@ SyscallDesc X86LinuxProcess::syscallDescs[] = {
|
||||||
/* 99 */ SyscallDesc("sysinfo", unimplementedFunc),
|
/* 99 */ SyscallDesc("sysinfo", unimplementedFunc),
|
||||||
/* 100 */ SyscallDesc("times", unimplementedFunc),
|
/* 100 */ SyscallDesc("times", unimplementedFunc),
|
||||||
/* 101 */ SyscallDesc("ptrace", unimplementedFunc),
|
/* 101 */ SyscallDesc("ptrace", unimplementedFunc),
|
||||||
/* 102 */ SyscallDesc("getuid", unimplementedFunc),
|
/* 102 */ SyscallDesc("getuid", getuidFunc),
|
||||||
/* 103 */ SyscallDesc("syslog", unimplementedFunc),
|
/* 103 */ SyscallDesc("syslog", unimplementedFunc),
|
||||||
/* 104 */ SyscallDesc("getgid", unimplementedFunc),
|
/* 104 */ SyscallDesc("getgid", getgidFunc),
|
||||||
/* 105 */ SyscallDesc("setuid", unimplementedFunc),
|
/* 105 */ SyscallDesc("setuid", unimplementedFunc),
|
||||||
/* 106 */ SyscallDesc("setgid", unimplementedFunc),
|
/* 106 */ SyscallDesc("setgid", unimplementedFunc),
|
||||||
/* 107 */ SyscallDesc("geteuid", unimplementedFunc),
|
/* 107 */ SyscallDesc("geteuid", geteuidFunc),
|
||||||
/* 108 */ SyscallDesc("getegid", unimplementedFunc),
|
/* 108 */ SyscallDesc("getegid", getegidFunc),
|
||||||
/* 109 */ SyscallDesc("setpgid", unimplementedFunc),
|
/* 109 */ SyscallDesc("setpgid", unimplementedFunc),
|
||||||
/* 110 */ SyscallDesc("getppid", unimplementedFunc),
|
/* 110 */ SyscallDesc("getppid", unimplementedFunc),
|
||||||
/* 111 */ SyscallDesc("getpgrp", unimplementedFunc),
|
/* 111 */ SyscallDesc("getpgrp", unimplementedFunc),
|
||||||
|
|
Loading…
Reference in a new issue