From c4a2f76fea6f9361363afd901c40290abf3344d9 Mon Sep 17 00:00:00 2001 From: Ali Saidi Date: Thu, 17 Apr 2014 16:55:05 -0500 Subject: sim, arm: implement more of the at variety syscalls Needed for new AArch64 binaries --- src/sim/syscall_emul.cc | 23 ++++++++++++++++++----- 1 file changed, 18 insertions(+), 5 deletions(-) (limited to 'src/sim/syscall_emul.cc') diff --git a/src/sim/syscall_emul.cc b/src/sim/syscall_emul.cc index a86065317..935193e7f 100644 --- a/src/sim/syscall_emul.cc +++ b/src/sim/syscall_emul.cc @@ -351,13 +351,20 @@ getcwdFunc(SyscallDesc *desc, int num, LiveProcess *p, ThreadContext *tc) return (result == -1) ? -errno : result; } +/// Target open() handler. +SyscallReturn +readlinkFunc(SyscallDesc *desc, int callnum, LiveProcess *process, + ThreadContext *tc) +{ + return readlinkFunc(desc, callnum, process, tc, 0); +} SyscallReturn -readlinkFunc(SyscallDesc *desc, int num, LiveProcess *p, ThreadContext *tc) +readlinkFunc(SyscallDesc *desc, int num, LiveProcess *p, ThreadContext *tc, + int index) { string path; - int index = 0; if (!tc->getMemProxy().tryReadString(path, p->getSyscallArg(tc, index))) return (TheISA::IntReg)-EFAULT; @@ -852,10 +859,9 @@ cloneFunc(SyscallDesc *desc, int callnum, LiveProcess *process, } SyscallReturn -accessFunc(SyscallDesc *desc, int callnum, LiveProcess *p, ThreadContext *tc) +accessFunc(SyscallDesc *desc, int callnum, LiveProcess *p, ThreadContext *tc, + int index) { - int index = 0; - string path; if (!tc->getMemProxy().tryReadString(path, p->getSyscallArg(tc, index))) return (TheISA::IntReg)-EFAULT; @@ -868,3 +874,10 @@ accessFunc(SyscallDesc *desc, int callnum, LiveProcess *p, ThreadContext *tc) int result = access(path.c_str(), mode); return (result == -1) ? -errno : result; } + +SyscallReturn +accessFunc(SyscallDesc *desc, int callnum, LiveProcess *p, ThreadContext *tc) +{ + return accessFunc(desc, callnum, p, tc, 0); +} + -- cgit v1.2.3