From a1ce5e514c5ed34e8ca11635ff322f643275e19a Mon Sep 17 00:00:00 2001 From: nattthebear Date: Sat, 23 May 2020 11:18:39 -0400 Subject: [PATCH] Some changes, most notably syscall cleanup --- output/dll/uzem.wbx.gz | Bin 38703 -> 67577 bytes .../Waterbox/NymaCore.cs | 1 + .../Waterbox/Syscalls/Errno.cs | 140 ++++++ .../Waterbox/Syscalls/MMan.cs | 194 ++++++++ .../Syscalls/NotImplementedSyscalls.cs | 422 ++++++++++++++++++ .../Waterbox/Syscalls/Stat.cs | 120 +++++ .../Waterbox/{ => Syscalls}/Syscalls.cs | 181 ++------ 7 files changed, 905 insertions(+), 153 deletions(-) create mode 100644 src/BizHawk.Emulation.Cores/Waterbox/Syscalls/Errno.cs create mode 100644 src/BizHawk.Emulation.Cores/Waterbox/Syscalls/MMan.cs create mode 100644 src/BizHawk.Emulation.Cores/Waterbox/Syscalls/NotImplementedSyscalls.cs create mode 100644 src/BizHawk.Emulation.Cores/Waterbox/Syscalls/Stat.cs rename src/BizHawk.Emulation.Cores/Waterbox/{ => Syscalls}/Syscalls.cs (67%) diff --git a/output/dll/uzem.wbx.gz b/output/dll/uzem.wbx.gz index 891fecea26cf8b20671270704f42600065cfc599..8477315a7072eadf178fa068ea4b82421a2ffdfc 100644 GIT binary patch literal 67577 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%0DVP9hXT%H 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˰Rmr7vWrnh&8ZHLT?Hwpyuo={rF{vc293StE% z^9NZX+hoK6fu83uPROT~vOR~FasKK0dz|rNNf@b#MaOH6S`oJk;?&e{+~V?LJd?I9 zNU|yPx0(GImPTO(iy3k36=%xGu~)E~~G*iJeh*Zg%&`ZvV5 zZ8LZ4!N0=0O`*N}>!lhLH+ZAiR{N)q89z`SKET%l3S7|RgW5M)jX7}s=n4wCS}

    ya%B+0t% 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 j%KG6V%KzxokKg-~guktZ`+VsP + /// Provides useful traps for any syscalls that are not implemented by libc + /// + internal class NotImplementedSyscalls : IImportResolver + { + private static readonly Dictionary SyscallNames = new Dictionary() + { + { 0, "read" }, + { 1, "write" }, + { 2, "open" }, + { 3, "close" }, + { 4, "stat" }, + { 5, "fstat" }, + { 6, "lstat" }, + { 7, "poll" }, + { 8, "lseek" }, + { 9, "mmap" }, + { 10, "mprotect" }, + { 11, "munmap" }, + { 12, "brk" }, + { 13, "rt_sigaction" }, + { 14, "rt_sigprocmask" }, + { 15, "rt_sigreturn" }, + { 16, "ioctl" }, + { 17, "pread64" }, + { 18, "pwrite64" }, + { 19, "readv" }, + { 20, "writev" }, + { 21, "access" }, + { 22, "pipe" }, + { 23, "select" }, + { 24, "sched_yield" }, + { 25, "mremap" }, + { 26, "msync" }, + { 27, "mincore" }, + { 28, "madvise" }, + { 29, "shmget" }, + { 30, "shmat" }, + { 31, "shmctl" }, + { 32, "dup" }, + { 33, "dup2" }, + { 34, "pause" }, + { 35, "nanosleep" }, + { 36, "getitimer" }, + { 37, "alarm" }, + { 38, "setitimer" }, + { 39, "getpid" }, + { 40, "sendfile" }, + { 41, "socket" }, + { 42, "connect" }, + { 43, "accept" }, + { 44, "sendto" }, + { 45, "recvfrom" }, + { 46, "sendmsg" }, + { 47, "recvmsg" }, + { 48, "shutdown" }, + { 49, "bind" }, + { 50, "listen" }, + { 51, "getsockname" }, + { 52, "getpeername" }, + { 53, "socketpair" }, + { 54, "setsockopt" }, + { 55, "getsockopt" }, + { 56, "clone" }, + { 57, "fork" }, + { 58, "vfork" }, + { 59, "execve" }, + { 60, "exit" }, + { 61, "wait4" }, + { 62, "kill" }, + { 63, "uname" }, + { 64, "semget" }, + { 65, "semop" }, + { 66, "semctl" }, + { 67, "shmdt" }, + { 68, "msgget" }, + { 69, "msgsnd" }, + { 70, "msgrcv" }, + { 71, "msgctl" }, + { 72, "fcntl" }, + { 73, "flock" }, + { 74, "fsync" }, + { 75, "fdatasync" }, + { 76, "truncate" }, + { 77, "ftruncate" }, + { 78, "getdents" }, + { 79, "getcwd" }, + { 80, "chdir" }, + { 81, "fchdir" }, + { 82, "rename" }, + { 83, "mkdir" }, + { 84, "rmdir" }, + { 85, "creat" }, + { 86, "link" }, + { 87, "unlink" }, + { 88, "symlink" }, + { 89, "readlink" }, + { 90, "chmod" }, + { 91, "fchmod" }, + { 92, "chown" }, + { 93, "fchown" }, + { 94, "lchown" }, + { 95, "umask" }, + { 96, "gettimeofday" }, + { 97, "getrlimit" }, + { 98, "getrusage" }, + { 99, "sysinfo" }, + { 100, "times" }, + { 101, "ptrace" }, + { 102, "getuid" }, + { 103, "syslog" }, + { 104, "getgid" }, + { 105, "setuid" }, + { 106, "setgid" }, + { 107, "geteuid" }, + { 108, "getegid" }, + { 109, "setpgid" }, + { 110, "getppid" }, + { 111, "getpgrp" }, + { 112, "setsid" }, + { 113, "setreuid" }, + { 114, "setregid" }, + { 115, "getgroups" }, + { 116, "setgroups" }, + { 117, "setresuid" }, + { 118, "getresuid" }, + { 119, "setresgid" }, + { 120, "getresgid" }, + { 121, "getpgid" }, + { 122, "setfsuid" }, + { 123, "setfsgid" }, + { 124, "getsid" }, + { 125, "capget" }, + { 126, "capset" }, + { 127, "rt_sigpending" }, + { 128, "rt_sigtimedwait" }, + { 129, "rt_sigqueueinfo" }, + { 130, "rt_sigsuspend" }, + { 131, "sigaltstack" }, + { 132, "utime" }, + { 133, "mknod" }, + { 134, "uselib" }, + { 135, "personality" }, + { 136, "ustat" }, + { 137, "statfs" }, + { 138, "fstatfs" }, + { 139, "sysfs" }, + { 140, "getpriority" }, + { 141, "setpriority" }, + { 142, "sched_setparam" }, + { 143, "sched_getparam" }, + { 144, "sched_setscheduler" }, + { 145, "sched_getscheduler" }, + { 146, "sched_get_priority_max" }, + { 147, "sched_get_priority_min" }, + { 148, "sched_rr_get_interval" }, + { 149, "mlock" }, + { 150, "munlock" }, + { 151, "mlockall" }, + { 152, "munlockall" }, + { 153, "vhangup" }, + { 154, "modify_ldt" }, + { 155, "pivot_root" }, + { 156, "_sysctl" }, + { 157, "prctl" }, + { 158, "arch_prctl" }, + { 159, "adjtimex" }, + { 160, "setrlimit" }, + { 161, "chroot" }, + { 162, "sync" }, + { 163, "acct" }, + { 164, "settimeofday" }, + { 165, "mount" }, + { 166, "umount2" }, + { 167, "swapon" }, + { 168, "swapoff" }, + { 169, "reboot" }, + { 170, "sethostname" }, + { 171, "setdomainname" }, + { 172, "iopl" }, + { 173, "ioperm" }, + { 174, "create_module" }, + { 175, "init_module" }, + { 176, "delete_module" }, + { 177, "get_kernel_syms" }, + { 178, "query_module" }, + { 179, "quotactl" }, + { 180, "nfsservctl" }, + { 181, "getpmsg" }, + { 182, "putpmsg" }, + { 183, "afs_syscall" }, + { 184, "tuxcall" }, + { 185, "security" }, + { 186, "gettid" }, + { 187, "readahead" }, + { 188, "setxattr" }, + { 189, "lsetxattr" }, + { 190, "fsetxattr" }, + { 191, "getxattr" }, + { 192, "lgetxattr" }, + { 193, "fgetxattr" }, + { 194, "listxattr" }, + { 195, "llistxattr" }, + { 196, "flistxattr" }, + { 197, "removexattr" }, + { 198, "lremovexattr" }, + { 199, "fremovexattr" }, + { 200, "tkill" }, + { 201, "time" }, + { 202, "futex" }, + { 203, "sched_setaffinity" }, + { 204, "sched_getaffinity" }, + { 205, "set_thread_area" }, + { 206, "io_setup" }, + { 207, "io_destroy" }, + { 208, "io_getevents" }, + { 209, "io_submit" }, + { 210, "io_cancel" }, + { 211, "get_thread_area" }, + { 212, "lookup_dcookie" }, + { 213, "epoll_create" }, + { 214, "epoll_ctl_old" }, + { 215, "epoll_wait_old" }, + { 216, "remap_file_pages" }, + { 217, "getdents64" }, + { 218, "set_tid_address" }, + { 219, "restart_syscall" }, + { 220, "semtimedop" }, + { 221, "fadvise64" }, + { 222, "timer_create" }, + { 223, "timer_settime" }, + { 224, "timer_gettime" }, + { 225, "timer_getoverrun" }, + { 226, "timer_delete" }, + { 227, "clock_settime" }, + { 228, "clock_gettime" }, + { 229, "clock_getres" }, + { 230, "clock_nanosleep" }, + { 231, "exit_group" }, + { 232, "epoll_wait" }, + { 233, "epoll_ctl" }, + { 234, "tgkill" }, + { 235, "utimes" }, + { 236, "vserver" }, + { 237, "mbind" }, + { 238, "set_mempolicy" }, + { 239, "get_mempolicy" }, + { 240, "mq_open" }, + { 241, "mq_unlink" }, + { 242, "mq_timedsend" }, + { 243, "mq_timedreceive" }, + { 244, "mq_notify" }, + { 245, "mq_getsetattr" }, + { 246, "kexec_load" }, + { 247, "waitid" }, + { 248, "add_key" }, + { 249, "request_key" }, + { 250, "keyctl" }, + { 251, "ioprio_set" }, + { 252, "ioprio_get" }, + { 253, "inotify_init" }, + { 254, "inotify_add_watch" }, + { 255, "inotify_rm_watch" }, + { 256, "migrate_pages" }, + { 257, "openat" }, + { 258, "mkdirat" }, + { 259, "mknodat" }, + { 260, "fchownat" }, + { 261, "futimesat" }, + { 262, "newfstatat" }, + { 263, "unlinkat" }, + { 264, "renameat" }, + { 265, "linkat" }, + { 266, "symlinkat" }, + { 267, "readlinkat" }, + { 268, "fchmodat" }, + { 269, "faccessat" }, + { 270, "pselect6" }, + { 271, "ppoll" }, + { 272, "unshare" }, + { 273, "set_robust_list" }, + { 274, "get_robust_list" }, + { 275, "splice" }, + { 276, "tee" }, + { 277, "sync_file_range" }, + { 278, "vmsplice" }, + { 279, "move_pages" }, + { 280, "utimensat" }, + { 281, "epoll_pwait" }, + { 282, "signalfd" }, + { 283, "timerfd_create" }, + { 284, "eventfd" }, + { 285, "fallocate" }, + { 286, "timerfd_settime" }, + { 287, "timerfd_gettime" }, + { 288, "accept4" }, + { 289, "signalfd4" }, + { 290, "eventfd2" }, + { 291, "epoll_create1" }, + { 292, "dup3" }, + { 293, "pipe2" }, + { 294, "inotify_init1" }, + { 295, "preadv" }, + { 296, "pwritev" }, + { 297, "rt_tgsigqueueinfo" }, + { 298, "perf_event_open" }, + { 299, "recvmmsg" }, + { 300, "fanotify_init" }, + { 301, "fanotify_mark" }, + { 302, "prlimit64" }, + { 303, "name_to_handle_at" }, + { 304, "open_by_handle_at" }, + { 305, "clock_adjtime" }, + { 306, "syncfs" }, + { 307, "sendmmsg" }, + { 308, "setns" }, + { 309, "getcpu" }, + { 310, "process_vm_readv" }, + { 311, "process_vm_writev" }, + { 312, "kcmp" }, + { 313, "finit_module" }, + { 314, "sched_setattr" }, + { 315, "sched_getattr" }, + { 316, "renameat2" }, + { 317, "seccomp" }, + { 318, "getrandom" }, + { 319, "memfd_create" }, + { 320, "kexec_file_load" }, + { 321, "bpf" }, + { 322, "execveat" }, + { 323, "userfaultfd" }, + { 324, "membarrier" }, + { 325, "mlock2" }, + { 326, "copy_file_range" }, + { 327, "preadv2" }, + { 328, "pwritev2" }, + { 329, "pkey_mprotect" }, + { 330, "pkey_alloc" }, + { 331, "pkey_free" }, + { 332, "statx" }, + { 333, "io_pgetevents" }, + { 334, "rseq" }, + { 424, "pidfd_send_signal" }, + { 425, "io_uring_setup" }, + { 426, "io_uring_enter" }, + { 427, "io_uring_register" }, + { 428, "open_tree" }, + { 429, "move_mount" }, + { 430, "fsopen" }, + { 431, "fsconfig" }, + { 432, "fsmount" }, + { 433, "fspick" }, + { 434, "pidfd_open" }, + { 435, "clone3" }, + }; + + private class Trap + { + private readonly int _index; + private readonly string _message; + private readonly IImportResolver _resolver; + public Trap(int index) + { + _index = index; + _resolver = BizExvoker.GetExvoker(this, CallingConventionAdapters.Waterbox); + if (!SyscallNames.TryGetValue(_index, out var name)) + name = "???"; + _message = $"Trapped on unimplemented syscall {name} (#{_index})"; + } + [BizExport(CallingConvention.Cdecl, EntryPoint="@@")] + public void RunTrap() + { + System.Diagnostics.Debug.WriteLine(_message); + // TODO: this unwind never works, so debugbrk instead + System.Diagnostics.Debugger.Break(); + throw new InvalidOperationException(_message); + } + public IntPtr FunctionPointer => _resolver.GetProcAddrOrThrow("@@"); + } + private readonly List _traps; + private NotImplementedSyscalls() + { + _traps = Enumerable.Range(0, 512) + .Select(i => new Trap(i)) + .ToList(); + } + + private static readonly Regex ExportRegex = new Regex("__wsyscalltab\\[(\\d+)\\]"); + + public IntPtr GetProcAddrOrZero(string entryPoint) + { + var m = ExportRegex.Match(entryPoint); + if (m.Success) + { + return _traps[int.Parse(m.Groups[1].Value)].FunctionPointer; + } + return IntPtr.Zero; + } + + public IntPtr GetProcAddrOrThrow(string entryPoint) + { + var m = ExportRegex.Match(entryPoint); + if (m.Success) + { + return _traps[int.Parse(m.Groups[1].Value)].FunctionPointer; + } + throw new InvalidOperationException($"{entryPoint} was not of the format __wsyscalltab[#]"); + } + + public static NotImplementedSyscalls Instance { get; } = new NotImplementedSyscalls(); + } +} diff --git a/src/BizHawk.Emulation.Cores/Waterbox/Syscalls/Stat.cs b/src/BizHawk.Emulation.Cores/Waterbox/Syscalls/Stat.cs new file mode 100644 index 0000000000..a2f4e22802 --- /dev/null +++ b/src/BizHawk.Emulation.Cores/Waterbox/Syscalls/Stat.cs @@ -0,0 +1,120 @@ +using System; +using System.Runtime.InteropServices; +using BizHawk.BizInvoke; + +namespace BizHawk.Emulation.Cores.Waterbox +{ + unsafe partial class Syscalls + { + internal const uint S_IFMT = 61440; + + internal const uint S_IFDIR = 16384; + internal const uint S_IFCHR = 8192; + internal const uint S_IFBLK = 24576; + internal const uint S_IFREG = 32768; + internal const uint S_IFIFO = 4096; + internal const uint S_IFLNK = 40960; + internal const uint S_IFSOCK = 49152; + + internal const uint S_ISUID = 2048; + internal const uint S_ISGID = 1024; + internal const uint S_ISVTX = 512; + internal const uint S_IRUSR = 0400; + internal const uint S_IWUSR = 256; + internal const uint S_IXUSR = 64; + internal const uint S_IRWXU = 448; + internal const uint S_IRGRP = 32; + internal const uint S_IWGRP = 16; + internal const uint S_IXGRP = 8; + internal const uint S_IRWXG = 56; + internal const uint S_IROTH = 4; + internal const uint S_IWOTH = 2; + internal const uint S_IXOTH = 1; + internal const uint S_IRWXO = 7; + + + [StructLayout(LayoutKind.Sequential)] + public struct KStat + { + public ulong st_dev; + public ulong st_ino; + public ulong st_nlink; + + public uint st_mode; + public uint st_uid; + public uint st_gid; + public uint __pad0; + public ulong st_rdev; + public long st_size; + public long st_blksize; + public long st_blocks; + + public long st_atime_sec; + public long st_atime_nsec; + public long st_mtime_sec; + public long st_mtime_nsec; + public long st_ctime_sec; + public long st_ctime_nsec; + public long __unused0; + public long __unused1; + public long __unused2; + } + + private void StatInternal(KStat* s, IFileObject o) + { + s->st_dev = 1; + s->st_ino = 1; + s->st_nlink = 0; + + uint flags = 0; + if (o.Stream.CanRead) + flags |= S_IRUSR | S_IRGRP | S_IROTH; + if (o.Stream.CanWrite) + flags |= S_IWUSR | S_IWGRP | S_IWOTH; + if (o.Stream.CanSeek) + flags |= S_IFREG; + else + flags |= S_IFIFO; + s->st_mode = flags; + s->st_uid = 0; + s->st_gid = 0; + s->__pad0 = 0; + s->st_rdev = 0; + if (o.Stream.CanSeek) + s->st_size = o.Stream.Length; + else + s->st_size = 0; + s->st_blksize = 4096; + s->st_blocks = (s->st_size + 511) / 512; + + s->st_atime_sec = 1262304000000; + s->st_atime_nsec = 1000000000 / 2; + s->st_mtime_sec = 1262304000000; + s->st_mtime_nsec = 1000000000 / 2; + s->st_ctime_sec = 1262304000000; + s->st_ctime_nsec = 1000000000 / 2; + } + + [BizExport(CallingConvention.Cdecl, EntryPoint = "__wsyscalltab[4]")] + public long Stat(string path, KStat* statbuf) + { + if (!_availableFiles.TryGetValue(path, out var o)) + return -ENOENT; + + StatInternal(statbuf, o); + return 0; + } + + [BizExport(CallingConvention.Cdecl, EntryPoint = "__wsyscalltab[5]")] + public long Fstat(int fd, KStat* statbuf) + { + if (fd < 0 || fd >= _openFiles.Count) + return -EBADF; + var o = _openFiles[fd]; + if (o == null) + return -EBADF; + StatInternal(statbuf, o); + return 0; + } + } +} diff --git a/src/BizHawk.Emulation.Cores/Waterbox/Syscalls.cs b/src/BizHawk.Emulation.Cores/Waterbox/Syscalls/Syscalls.cs similarity index 67% rename from src/BizHawk.Emulation.Cores/Waterbox/Syscalls.cs rename to src/BizHawk.Emulation.Cores/Waterbox/Syscalls/Syscalls.cs index fd8428a0ca..8f9b467e97 100644 --- a/src/BizHawk.Emulation.Cores/Waterbox/Syscalls.cs +++ b/src/BizHawk.Emulation.Cores/Waterbox/Syscalls/Syscalls.cs @@ -3,7 +3,6 @@ using System.Collections.Generic; using System.IO; using System.Linq; using System.Runtime.InteropServices; -using System.Text.RegularExpressions; using BizHawk.BizInvoke; using BizHawk.Common; using BizHawk.Emulation.Common; @@ -13,7 +12,7 @@ namespace BizHawk.Emulation.Cores.Waterbox /// /// syscall emulation layer /// - internal class Syscalls : IBinaryStateable + internal partial class Syscalls : IBinaryStateable { public interface IFileObject : IBinaryStateable { @@ -287,12 +286,12 @@ namespace BizHawk.Emulation.Cores.Waterbox } [BizExport(CallingConvention.Cdecl, EntryPoint = "__wsyscalltab[2]")] - public int Open(string path, int flags, int mode) + public long Open(string path, int flags, int mode) { if (!_availableFiles.TryGetValue(path, out var o)) - return -1; + return -ENOENT; if (_openFiles.Contains(o)) - return -1; + return -EACCES; FileAccess access; switch (flags & 3) { @@ -306,10 +305,10 @@ namespace BizHawk.Emulation.Cores.Waterbox access = FileAccess.ReadWrite; break; default: - return -1; + return -EINVAL; } if (!o.Open(access)) - return -1; + return -EACCES; int fd; for (fd = 0; fd < _openFiles.Count; fd++) if (_openFiles[fd] == null) @@ -321,13 +320,15 @@ namespace BizHawk.Emulation.Cores.Waterbox return fd; } [BizExport(CallingConvention.Cdecl, EntryPoint = "__wsyscalltab[3]")] - public int Close(int fd) + public long Close(int fd) { if (fd < 0 || fd >= _openFiles.Count) - return -1; + return -EBADF; var o = _openFiles[fd]; - if (o == null || !o.Close()) - return -1; + if (o == null) + return -EBADF; + if (!o.Close()) + return -EIO; _openFiles[fd] = null; return 0; } @@ -335,8 +336,10 @@ namespace BizHawk.Emulation.Cores.Waterbox public long Seek(int fd, long offset, int type) { var s = StreamForFd(fd); - if (s == null || !s.CanSeek) - return -1; + if (s == null) + return -EBADF; + if (!s.CanSeek) + return -ESPIPE; SeekOrigin o; switch (type) { @@ -350,23 +353,20 @@ namespace BizHawk.Emulation.Cores.Waterbox o = SeekOrigin.End; break; default: - return -1; + return -EINVAL; + } + try + { + return s.Seek(offset, o); + } + catch (IOException) + { + // usually means bad offset, since we already filtered out on CanSeek + return -EINVAL; } - return s.Seek(offset, o); - } - - [BizExport(CallingConvention.Cdecl, EntryPoint = "__wsyscalltab[4]")] - public int Stat(string path, IntPtr statbuf) - { - return -1; - } - - [BizExport(CallingConvention.Cdecl, EntryPoint = "__wsyscalltab[5]")] - public int Fstat(int fd, IntPtr statbuf) - { - return -1; } + // TODO: Remove this entirely once everything is compiled against the new libc [BizExport(CallingConvention.Cdecl, EntryPoint = "__wsyscalltab[205]")] public long SetThreadArea(IntPtr uinfo) { @@ -376,6 +376,7 @@ namespace BizHawk.Emulation.Cores.Waterbox [BizExport(CallingConvention.Cdecl, EntryPoint = "__wsyscalltab[218]")] public long SetTidAddress(IntPtr address) { + // pretend we succeeded return 8675309; // arbitrary thread id } @@ -394,76 +395,6 @@ namespace BizHawk.Emulation.Cores.Waterbox return 0; } - [BizExport(CallingConvention.Cdecl, EntryPoint = "__wsyscalltab[9]")] - public IntPtr MMap(IntPtr address, UIntPtr size, int prot, int flags, int fd, IntPtr offs) - { - if (address != IntPtr.Zero) - return Z.SS(-1); - MemoryBlock.Protection mprot; - switch (prot) - { - case 0: mprot = MemoryBlock.Protection.None; break; - default: - case 6: // W^X - case 7: // W^X - case 4: // exec only???? - case 2: return Z.SS(-1); // write only???? - case 3: mprot = MemoryBlock.Protection.RW; break; - case 1: mprot = MemoryBlock.Protection.R; break; - case 5: mprot = MemoryBlock.Protection.RX; break; - } - if ((flags & 0x20) == 0) - { - // MAP_ANONYMOUS is required - return Z.SS(-1); - } - if ((flags & 0xf00) != 0) - { - // various unsupported flags - return Z.SS(-1); - } - - var ret = _parent._mmapheap.Map((ulong)size, mprot); - return ret == 0 ? Z.SS(-1) : Z.US(ret); - } - [BizExport(CallingConvention.Cdecl, EntryPoint = "__wsyscalltab[25]")] - public IntPtr MRemap(UIntPtr oldAddress, UIntPtr oldSize, - UIntPtr newSize, int flags) - { - if ((flags & 2) != 0) - { - // don't support MREMAP_FIXED - return Z.SS(-1); - } - var ret = _parent._mmapheap.Remap((ulong)oldAddress, (ulong)oldSize, (ulong)newSize, - (flags & 1) != 0); - return ret == 0 ? Z.SS(-1) : Z.US(ret); - } - [BizExport(CallingConvention.Cdecl, EntryPoint = "__wsyscalltab[11]")] - public int MUnmap(UIntPtr address, UIntPtr size) - { - return _parent._mmapheap.Unmap((ulong)address, (ulong)size) ? 0 : -1; - } - - [BizExport(CallingConvention.Cdecl, EntryPoint = "__wsyscalltab[10]")] - public int MProtect(UIntPtr address, UIntPtr size, int prot) - { - MemoryBlock.Protection mprot; - switch (prot) - { - case 0: mprot = MemoryBlock.Protection.None; break; - default: - case 6: // W^X - case 7: // W^X - case 4: // exec only???? - case 2: return -1; // write only???? - case 3: mprot = MemoryBlock.Protection.RW; break; - case 1: mprot = MemoryBlock.Protection.R; break; - case 5: mprot = MemoryBlock.Protection.RX; break; - } - return _parent._mmapheap.Protect((ulong)address, (ulong)size, mprot) ? 0 : -1; - } - public void SaveStateBinary(BinaryWriter bw) { bw.Write(_availableFiles.Count); @@ -531,60 +462,4 @@ namespace BizHawk.Emulation.Cores.Waterbox return RemoveFileInternal(name).GetContents(); } } - - /// - /// Provides useful traps for any syscalls that are not implemented by libc - /// - internal class NotImplementedSyscalls : IImportResolver - { - private class Trap - { - private readonly int _index; - private readonly IImportResolver _resolver; - public Trap(int index) - { - _index = index; - _resolver = BizExvoker.GetExvoker(this, CallingConventionAdapters.Waterbox); - } - [BizExport(CallingConvention.Cdecl, EntryPoint="@@")] - public void RunTrap() - { - var s = $"Trapped on unimplemented syscall {_index}"; - Console.WriteLine(s); - throw new InvalidOperationException(s); - } - public IntPtr FunctionPointer => _resolver.GetProcAddrOrThrow("@@"); - } - private readonly List _traps; - private NotImplementedSyscalls() - { - _traps = Enumerable.Range(0, 512) - .Select(i => new Trap(i)) - .ToList(); - } - - private static readonly Regex ExportRegex = new Regex("__wsyscalltab\\[(\\d+)\\]"); - - public IntPtr GetProcAddrOrZero(string entryPoint) - { - var m = ExportRegex.Match(entryPoint); - if (m.Success) - { - return _traps[int.Parse(m.Groups[1].Value)].FunctionPointer; - } - return IntPtr.Zero; - } - - public IntPtr GetProcAddrOrThrow(string entryPoint) - { - var m = ExportRegex.Match(entryPoint); - if (m.Success) - { - return _traps[int.Parse(m.Groups[1].Value)].FunctionPointer; - } - throw new InvalidOperationException($"{entryPoint} was not of the format __wsyscalltab[#]"); - } - - public static NotImplementedSyscalls Instance { get; } = new NotImplementedSyscalls(); - } }