36 #include <sys/param.h> 37 #include <sys/syscall.h> 38 #if !defined ( __GNU_LIBRARY__ ) 39 #include <sys/sysctl.h> 41 #include <sys/types.h> 65 load(ProcessParams *params,
ObjectFile *obj_file)
override 67 auto arch = obj_file->
getArch();
85 ArmFreebsdObjectFileLoader loader;
95 #if !defined ( __GNU_LIBRARY__ ) 104 size_t namelen = process->getSyscallArg(tc, index);
105 Addr oldp = process->getSyscallArg(tc, index);
106 Addr oldlenp = process->getSyscallArg(tc, index);
107 Addr newp = process->getSyscallArg(tc, index);
108 size_t newlen = process->getSyscallArg(tc, index);
125 uint32_t *hnamep = (uint32_t *)buf.
bufferPtr();
127 size_t *holdlenp = (
size_t *)buf3.
bufferPtr();
129 ret = sysctl((
int *)hnamep, namelen, holdp, holdlenp, hnewp, newlen);
696 {
"read", readFunc<ArmFreebsd64> },
697 {
"write", writeFunc<ArmFreebsd64> },
747 {
"ioctl", ioctlFunc<ArmFreebsd64> },
810 {
"getrusage", getrusageFunc<ArmFreebsd64> },
882 {
"fstat", fstatFunc<ArmFreebsd64> },
895 #if !defined ( __GNU_LIBRARY__ ) 1174 {
"mmap", mmapFunc<ArmFreebsd64> },
1288 if (offset < 0 || offset >= size)
void syscall(ThreadContext *tc, Fault *fault) override
virtual RegVal readIntReg(RegIndex reg_idx) const =0
void initState() override
initState() is called on each SimObject when not restoring from a checkpoint.
bool copyIn(PortProxy &memproxy)
copy data into simulator space (read from target memory)
virtual PortProxy & getVirtProxy()=0
void initState() override
initState() is called on each SimObject when not restoring from a checkpoint.
virtual Process * getProcessPtr()=0
static SyscallDescABI< DefaultSyscallABI > syscallDescs32[]
A process with emulated Arm/Freebsd syscalls.
Overload hash function for BasicBlockRange type.
void doSyscall(int64_t callnum, ThreadContext *tc, Fault *fault)
ThreadContext is the external interface to all thread state for anything outside of the CPU...
static SyscallDescABI< DefaultSyscallABI > syscallDescs64[]
void syscall(ThreadContext *tc, Fault *fault) override
static SyscallReturn issetugidFunc(SyscallDesc *desc, int callnum, ThreadContext *tc)
SyscallDesc * getDesc(int callnum) override
std::vector< SyscallTable > syscallTables
void initState() override
initState() is called on each SimObject when not restoring from a checkpoint.
SyscallReturn readlinkFunc(SyscallDesc *desc, int num, ThreadContext *tc, Addr pathname, Addr buf_ptr, size_t bufsiz)
Target readlink() handler.
virtual RegVal getSyscallArg(ThreadContext *tc, int &i)=0
void * bufferPtr()
Return a pointer to the internal simulator-space buffer.
SyscallReturn brkFunc(SyscallDesc *desc, int num, ThreadContext *tc, Addr new_brk)
Target brk() handler: set brk address.
uint64_t Addr
Address type This will probably be moved somewhere else in the near future.
This class provides the wrapper interface for the system call implementations which are defined in th...
This file defines objects used to emulate syscalls from the target application on the host machine...
A process with emulated Arm/Freebsd syscalls.
ArmFreebsdProcess64(ProcessParams *params, ObjectFile *objFile, ObjectFile::Arch _arch)
bool copyOut(PortProxy &memproxy)
copy data out of simulator space (write to target memory)
void initState() override
initState() is called on each SimObject when not restoring from a checkpoint.
SyscallDesc * getFreebsdDesc(int callnum)
BufferArg represents an untyped buffer in target user space that is passed by reference to an (emulat...
SyscallDesc * getDesc(int callnum) override
This class represents the return value from an emulated system call, including any errno setting...
Each instance of a Loader subclass will have a chance to try to load an object file when tryLoaders i...
std::shared_ptr< FaultBase > Fault
ArmFreebsdProcess32(ProcessParams *params, ObjectFile *objFile, ObjectFile::Arch _arch)
SyscallDesc * getDesc(int offset) const
static SyscallReturn sysctlFunc(SyscallDesc *desc, int callnum, ThreadContext *tc)
SyscallReturn exitFunc(SyscallDesc *desc, int callnum, ThreadContext *tc, int status)
Target exit() handler: terminate current context.