VirtualBox

Changeset 102740 in vbox


Ignore:
Timestamp:
Jan 1, 2024 2:13:55 AM (11 months ago)
Author:
vboxsync
Message:

VMM/IEMAllDbg: Added logging of old-style (int 80h) 32-bit linux syscalls. bugref:10371

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/VMM/VMMAll/IEMAllDbg.cpp

    r100673 r102740  
    3434#include <VBox/vmm/iem.h>
    3535#include <VBox/vmm/cpum.h>
     36#include <VBox/vmm/dbgf.h>
    3637#include <VBox/vmm/pgm.h>
    3738#include "IEMInternal.h"
     
    3940#include <VBox/log.h>
    4041#include <iprt/errcore.h>
     42#include <iprt/string.h>
    4143
    4244
     
    573575
    574576
     577static void iemLogSyscallLinuxX86Int80(PVMCPUCC pVCpu)
     578{
     579    uint32_t       fStrArgs = 0;
     580    const char    *pszName;
     581    int            cArgs;
     582    uint32_t const uSysCall = pVCpu->cpum.GstCtx.eax;
     583    switch (uSysCall)
     584    {
     585        case   0: cArgs = -1; pszName = "restart_syscall"; break;
     586        case   1: cArgs =  1; pszName = "exit"; break;
     587        case   2: cArgs = -1; pszName = "fork"; break;
     588        case   3: cArgs =  3; pszName = "read"; break;
     589        case   4: cArgs =  3; pszName = "write"; break;
     590        case   5: cArgs =  3; pszName = "open"; fStrArgs = 1; break;
     591        case   6: cArgs =  1; pszName = "close"; break;
     592        case   7: cArgs =  3; pszName = "waitpid"; break;
     593        case   8: cArgs =  2; pszName = "creat"; break;
     594        case   9: cArgs =  2; pszName = "link"; fStrArgs = 1|2; break;
     595        case  10: cArgs =  1; pszName = "unlink"; fStrArgs = 1; break;
     596        case  11: cArgs =  3; pszName = "execve"; fStrArgs = 1; break;
     597        case  12: cArgs =  1; pszName = "chdir"; fStrArgs = 1; break;
     598        case  13: cArgs =  1; pszName = "time"; break;
     599        case  14: cArgs =  3; pszName = "mknod"; fStrArgs = 1; break;
     600        case  15: cArgs =  2; pszName = "chmod"; fStrArgs = 1; break;
     601        case  16: cArgs =  3; pszName = "lchown"; fStrArgs = 1; break;
     602        case  17: cArgs = -1; pszName = "break;"; break;
     603        case  18: cArgs =  2; pszName = "oldstat"; fStrArgs = 1; break;
     604        case  19: cArgs =  3; pszName = "lseek"; break;
     605        case  20: cArgs = -1; pszName = "getpid"; break;
     606        case  21: cArgs =  5; pszName = "mount"; fStrArgs = 1|2|4; break;
     607        case  22: cArgs =  1; pszName = "umount"; fStrArgs = 1; break;
     608        case  23: cArgs =  1; pszName = "setuid"; break;
     609        case  24: cArgs = -1; pszName = "getuid"; break;
     610        case  25: cArgs =  1; pszName = "stime"; break;
     611        case  26: cArgs =  4; pszName = "ptrace"; break;
     612        case  27: cArgs =  1; pszName = "alarm"; break;
     613        case  28: cArgs =  2; pszName = "oldfstat"; break;
     614        case  29: cArgs = -1; pszName = "pause"; break;
     615        case  30: cArgs =  2; pszName = "utime"; fStrArgs = 1; break;
     616        case  31: cArgs = -1; pszName = "stty"; break;
     617        case  32: cArgs = -1; pszName = "gtty"; break;
     618        case  33: cArgs =  2; pszName = "access"; fStrArgs = 1; break;
     619        case  34: cArgs =  1; pszName = "nice"; break;
     620        case  35: cArgs = -1; pszName = "ftime"; break;
     621        case  36: cArgs = -1; pszName = "sync"; break;
     622        case  37: cArgs =  2; pszName = "kill"; break;
     623        case  38: cArgs =  2; pszName = "rename"; fStrArgs = 1|2; break;
     624        case  39: cArgs =  2; pszName = "mkdir"; fStrArgs = 1; break;
     625        case  40: cArgs =  1; pszName = "rmdir"; fStrArgs = 1; break;
     626        case  41: cArgs =  1; pszName = "dup"; break;
     627        case  42: cArgs =  1; pszName = "pipe"; break;
     628        case  43: cArgs =  1; pszName = "times"; fStrArgs = 1; break;
     629        case  44: cArgs = -1; pszName = "prof"; break;
     630        case  45: cArgs =  1; pszName = "brk"; break;
     631        case  46: cArgs =  1; pszName = "setgid"; break;
     632        case  47: cArgs = -1; pszName = "getgid"; break;
     633        case  48: cArgs =  2; pszName = "signal"; break;
     634        case  49: cArgs = -1; pszName = "geteuid"; break;
     635        case  50: cArgs = -1; pszName = "getegid"; break;
     636        case  51: cArgs =  1; pszName = "acct"; break;
     637        case  52: cArgs =  2; pszName = "umount2"; fStrArgs = 1; break;
     638        case  53: cArgs = -1; pszName = "lock"; break;
     639        case  54: cArgs =  3; pszName = "ioctl"; break;
     640        case  55: cArgs =  3; pszName = "fcntl"; break;
     641        case  56: cArgs = -1; pszName = "mpx"; break;
     642        case  57: cArgs =  2; pszName = "setpgid"; break;
     643        case  58: cArgs = -1; pszName = "ulimit"; break;
     644        case  59: cArgs =  1; pszName = "oldolduname"; break;
     645        case  60: cArgs =  1; pszName = "umask"; break;
     646        case  61: cArgs =  1; pszName = "chroot"; fStrArgs = 1; break;
     647        case  62: cArgs =  2; pszName = "ustat"; break;
     648        case  63: cArgs =  2; pszName = "dup2"; break;
     649        case  64: cArgs = -1; pszName = "getppid"; break;
     650        case  65: cArgs = -1; pszName = "getpgrp"; break;
     651        case  66: cArgs = -1; pszName = "setsid"; break;
     652        case  67: cArgs =  3; pszName = "sigaction"; break;
     653        case  68: cArgs = -1; pszName = "sgetmask"; break;
     654        case  69: cArgs =  1; pszName = "ssetmask"; break;
     655        case  70: cArgs =  2; pszName = "setreuid"; break;
     656        case  71: cArgs =  2; pszName = "setregid"; break;
     657        case  72: cArgs =  1; pszName = "sigsuspend"; break;
     658        case  73: cArgs =  1; pszName = "sigpending"; break;
     659        case  74: cArgs =  2; pszName = "sethostname"; fStrArgs = 1; break;
     660        case  75: cArgs =  2; pszName = "setrlimit"; break;
     661        case  76: cArgs =  2; pszName = "getrlimit"; break;
     662        case  77: cArgs =  2; pszName = "getrusage"; break;
     663        case  78: cArgs =  2; pszName = "gettimeofday"; break;
     664        case  79: cArgs =  2; pszName = "settimeofday"; break;
     665        case  80: cArgs =  2; pszName = "getgroups"; break;
     666        case  81: cArgs =  2; pszName = "setgroups"; break;
     667        case  82: cArgs =  1; pszName = "select"; break;
     668        case  83: cArgs =  2; pszName = "symlink"; fStrArgs = 1|2; break;
     669        case  84: cArgs =  2; pszName = "oldlstat"; fStrArgs = 1; break;
     670        case  85: cArgs =  3; pszName = "readlink"; fStrArgs = 1; break;
     671        case  86: cArgs =  1; pszName = "uselib"; break;
     672        case  87: cArgs =  2; pszName = "swapon"; fStrArgs = 1; break;
     673        case  88: cArgs =  4; pszName = "reboot"; break;
     674        case  89: cArgs =  3; pszName = "readdir"; break;
     675        case  90: cArgs =  1; pszName = "mmap"; break;
     676        case  91: cArgs =  2; pszName = "munmap"; break;
     677        case  92: cArgs =  2; pszName = "truncate"; fStrArgs = 1; break;
     678        case  93: cArgs =  2; pszName = "ftruncate"; break;
     679        case  94: cArgs =  2; pszName = "fchmod"; break;
     680        case  95: cArgs =  3; pszName = "fchown"; break;
     681        case  96: cArgs =  2; pszName = "getpriority"; break;
     682        case  97: cArgs =  3; pszName = "setpriority"; break;
     683        case  98: cArgs = -1; pszName = "profil"; break;
     684        case  99: cArgs =  2; pszName = "statfs"; fStrArgs = 1; break;
     685        case 100: cArgs =  2; pszName = "fstatfs"; break;
     686        case 101: cArgs =  3; pszName = "ioperm"; break;
     687        case 102: cArgs =  2; pszName = "socketcall"; break;
     688        case 103: cArgs =  3; pszName = "syslog"; break;
     689        case 104: cArgs =  3; pszName = "setitimer"; break;
     690        case 105: cArgs =  2; pszName = "getitimer"; break;
     691        case 106: cArgs =  2; pszName = "stat"; fStrArgs = 1; break;
     692        case 107: cArgs =  2; pszName = "lstat"; fStrArgs = 1; break;
     693        case 108: cArgs =  2; pszName = "fstat"; break;
     694        case 109: cArgs =  1; pszName = "olduname"; break;
     695        case 110: cArgs =  1; pszName = "iopl"; break;
     696        case 111: cArgs = -1; pszName = "vhangup"; break;
     697        case 112: cArgs = -1; pszName = "idle"; break;
     698        case 113: cArgs =  1; pszName = "vm86old"; break;
     699        case 114: cArgs =  4; pszName = "wait4"; break;
     700        case 115: cArgs =  1; pszName = "swapoff"; fStrArgs = 1; break;
     701        case 116: cArgs =  1; pszName = "sysinfo"; break;
     702        case 117: cArgs =  6; pszName = "ipc"; break;
     703        case 118: cArgs =  1; pszName = "fsync"; break;
     704        case 119: cArgs = -1; pszName = "sigreturn"; break;
     705        case 120: cArgs =  5; pszName = "clone"; break;
     706        case 121: cArgs =  2; pszName = "setdomainname"; fStrArgs = 1; break;
     707        case 122: cArgs =  1; pszName = "uname"; break;
     708        case 123: cArgs =  3; pszName = "modify_ldt"; break;
     709        case 124: cArgs =  1; pszName = "adjtimex"; break;
     710        case 125: cArgs =  3; pszName = "mprotect"; break;
     711        case 126: cArgs =  3; pszName = "sigprocmask"; break;
     712        case 127: cArgs = -1; pszName = "create_module"; fStrArgs = 1; break;
     713        case 128: cArgs =  3; pszName = "init_module"; break;
     714        case 129: cArgs =  2; pszName = "delete_module"; fStrArgs = 1; break;
     715        case 130: cArgs = -1; pszName = "get_kernel_syms"; break;
     716        case 131: cArgs =  4; pszName = "quotactl"; break;
     717        case 132: cArgs =  1; pszName = "getpgid"; break;
     718        case 133: cArgs =  1; pszName = "fchdir"; break;
     719        case 134: cArgs = -1; pszName = "bdflush"; break;
     720        case 135: cArgs =  3; pszName = "sysfs"; break;
     721        case 136: cArgs =  1; pszName = "personality"; break;
     722        case 137: cArgs = -1; pszName = "afs_syscall"; break;
     723        case 138: cArgs =  1; pszName = "setfsuid"; break;
     724        case 139: cArgs =  1; pszName = "setfsgid"; break;
     725        case 140: cArgs =  5; pszName = "_llseek"; break;
     726        case 141: cArgs =  3; pszName = "getdents"; break;
     727        case 142: cArgs =  5; pszName = "_newselect"; break;
     728        case 143: cArgs =  2; pszName = "flock"; break;
     729        case 144: cArgs =  3; pszName = "msync"; break;
     730        case 145: cArgs =  3; pszName = "readv"; break;
     731        case 146: cArgs =  3; pszName = "writev"; break;
     732        case 147: cArgs =  1; pszName = "getsid"; break;
     733        case 148: cArgs =  1; pszName = "fdatasync"; break;
     734        case 149: cArgs = -1; pszName = "_sysctl"; break;
     735        case 150: cArgs =  2; pszName = "mlock"; break;
     736        case 151: cArgs =  2; pszName = "munlock"; break;
     737        case 152: cArgs =  1; pszName = "mlockall"; break;
     738        case 153: cArgs = -1; pszName = "munlockall"; break;
     739        case 154: cArgs =  2; pszName = "sched_setparam"; break;
     740        case 155: cArgs =  2; pszName = "sched_getparam"; break;
     741        case 156: cArgs =  3; pszName = "sched_setscheduler"; break;
     742        case 157: cArgs =  1; pszName = "sched_getscheduler"; break;
     743        case 158: cArgs = -1; pszName = "sched_yield"; break;
     744        case 159: cArgs =  1; pszName = "sched_get_priority_max"; break;
     745        case 160: cArgs =  1; pszName = "sched_get_priority_min"; break;
     746        case 161: cArgs =  2; pszName = "sched_rr_get_interval"; break;
     747        case 162: cArgs =  2; pszName = "nanosleep"; break;
     748        case 163: cArgs =  5; pszName = "mremap"; break;
     749        case 164: cArgs =  3; pszName = "setresuid"; break;
     750        case 165: cArgs =  3; pszName = "getresuid"; break;
     751        case 166: cArgs =  2; pszName = "vm86"; break;
     752        case 167: cArgs = -1; pszName = "query_module"; break;
     753        case 168: cArgs =  3; pszName = "poll"; break;
     754        case 169: cArgs = -1; pszName = "nfsservctl"; break;
     755        case 170: cArgs =  3; pszName = "setresgid"; break;
     756        case 171: cArgs =  3; pszName = "getresgid"; break;
     757        case 172: cArgs =  5; pszName = "prctl"; break;
     758        case 173: cArgs = -1; pszName = "rt_sigreturn"; break;
     759        case 174: cArgs =  4; pszName = "rt_sigaction"; break;
     760        case 175: cArgs =  4; pszName = "rt_sigprocmask"; break;
     761        case 176: cArgs =  2; pszName = "rt_sigpending"; break;
     762        case 177: cArgs =  4; pszName = "rt_sigtimedwait"; break;
     763        case 178: cArgs =  3; pszName = "rt_sigqueueinfo"; break;
     764        case 179: cArgs =  2; pszName = "rt_sigsuspend"; break;
     765        case 180: cArgs =  5; pszName = "pread64"; break;
     766        case 181: cArgs =  5; pszName = "pwrite64"; break;
     767        case 182: cArgs =  3; pszName = "chown"; break;
     768        case 183: cArgs =  2; pszName = "getcwd"; break;
     769        case 184: cArgs =  2; pszName = "capget"; break;
     770        case 185: cArgs =  2; pszName = "capset"; break;
     771        case 186: cArgs =  2; pszName = "sigaltstack"; break;
     772        case 187: cArgs =  4; pszName = "sendfile"; break;
     773        case 188: cArgs = -1; pszName = "getpmsg"; break;
     774        case 189: cArgs = -1; pszName = "putpmsg"; break;
     775        case 190: cArgs = -1; pszName = "vfork"; break;
     776        case 191: cArgs =  2; pszName = "ugetrlimit"; break;
     777        case 192: cArgs =  6; pszName = "mmap2"; break;
     778        case 193: cArgs =  3; pszName = "truncate64"; break;
     779        case 194: cArgs =  3; pszName = "ftruncate64"; break;
     780        case 195: cArgs =  2; pszName = "stat64"; break;
     781        case 196: cArgs =  2; pszName = "lstat64"; break;
     782        case 197: cArgs =  2; pszName = "fstat64"; break;
     783        case 198: cArgs =  3; pszName = "lchown32"; break;
     784        case 199: cArgs = -1; pszName = "getuid32"; break;
     785        case 200: cArgs = -1; pszName = "getgid32"; break;
     786        case 201: cArgs = -1; pszName = "geteuid32"; break;
     787        case 202: cArgs = -1; pszName = "getegid32"; break;
     788        case 203: cArgs =  2; pszName = "setreuid32"; break;
     789        case 204: cArgs =  2; pszName = "setregid32"; break;
     790        case 205: cArgs =  2; pszName = "getgroups32"; break;
     791        case 206: cArgs =  2; pszName = "setgroups32"; break;
     792        case 207: cArgs =  3; pszName = "fchown32"; break;
     793        case 208: cArgs =  3; pszName = "setresuid32"; break;
     794        case 209: cArgs =  3; pszName = "getresuid32"; break;
     795        case 210: cArgs =  3; pszName = "setresgid32"; break;
     796        case 211: cArgs =  3; pszName = "getresgid32"; break;
     797        case 212: cArgs =  3; pszName = "chown32"; break;
     798        case 213: cArgs =  1; pszName = "setuid32"; break;
     799        case 214: cArgs =  1; pszName = "setgid32"; break;
     800        case 215: cArgs =  1; pszName = "setfsuid32"; break;
     801        case 216: cArgs =  1; pszName = "setfsgid32"; break;
     802        case 217: cArgs =  2; pszName = "pivot_root"; break;
     803        case 218: cArgs =  3; pszName = "mincore"; break;
     804        case 219: cArgs =  3; pszName = "madvise"; break;
     805        case 220: cArgs =  3; pszName = "getdents64"; break;
     806        case 221: cArgs =  3; pszName = "fcntl64"; break;
     807        case 224: cArgs = -1; pszName = "gettid"; break;
     808        case 225: cArgs =  4; pszName = "readahead"; break;
     809        case 226: cArgs =  5; pszName = "setxattr"; break;
     810        case 227: cArgs =  5; pszName = "lsetxattr"; break;
     811        case 228: cArgs =  5; pszName = "fsetxattr"; break;
     812        case 229: cArgs =  4; pszName = "getxattr"; break;
     813        case 230: cArgs =  4; pszName = "lgetxattr"; break;
     814        case 231: cArgs =  4; pszName = "fgetxattr"; break;
     815        case 232: cArgs =  3; pszName = "listxattr"; break;
     816        case 233: cArgs =  3; pszName = "llistxattr"; break;
     817        case 234: cArgs =  3; pszName = "flistxattr"; break;
     818        case 235: cArgs =  2; pszName = "removexattr"; break;
     819        case 236: cArgs =  2; pszName = "lremovexattr"; break;
     820        case 237: cArgs =  2; pszName = "fremovexattr"; break;
     821        case 238: cArgs =  2; pszName = "tkill"; break;
     822        case 239: cArgs =  4; pszName = "sendfile64"; break;
     823        case 240: cArgs =  6; pszName = "futex"; break;
     824        case 241: cArgs =  3; pszName = "sched_setaffinity"; break;
     825        case 242: cArgs =  3; pszName = "sched_getaffinity"; break;
     826        case 243: cArgs =  1; pszName = "set_thread_area"; break;
     827        case 244: cArgs =  1; pszName = "get_thread_area"; break;
     828        case 245: cArgs =  2; pszName = "io_setup"; break;
     829        case 246: cArgs =  1; pszName = "io_destroy"; break;
     830        case 247: cArgs =  5; pszName = "io_getevents"; break;
     831        case 248: cArgs =  3; pszName = "io_submit"; break;
     832        case 249: cArgs =  3; pszName = "io_cancel"; break;
     833        case 250: cArgs =  5; pszName = "fadvise64"; break;
     834        case 252: cArgs =  1; pszName = "exit_group"; break;
     835        case 253: cArgs = -1; pszName = "lookup_dcookie"; break;
     836        case 254: cArgs =  1; pszName = "epoll_create"; break;
     837        case 255: cArgs =  4; pszName = "epoll_ctl"; break;
     838        case 256: cArgs =  4; pszName = "epoll_wait"; break;
     839        case 257: cArgs =  5; pszName = "remap_file_pages"; break;
     840        case 258: cArgs =  1; pszName = "set_tid_address"; break;
     841        case 259: cArgs =  3; pszName = "timer_create"; break;
     842        case 260: cArgs =  4; pszName = "timer_settime"; break;
     843        case 261: cArgs =  2; pszName = "timer_gettime"; break;
     844        case 262: cArgs =  1; pszName = "timer_getoverrun"; break;
     845        case 263: cArgs =  1; pszName = "timer_delete"; break;
     846        case 264: cArgs =  2; pszName = "clock_settime"; break;
     847        case 265: cArgs =  2; pszName = "clock_gettime"; break;
     848        case 266: cArgs =  2; pszName = "clock_getres"; break;
     849        case 267: cArgs =  4; pszName = "clock_nanosleep"; break;
     850        case 268: cArgs =  3; pszName = "statfs64"; break;
     851        case 269: cArgs =  3; pszName = "fstatfs64"; break;
     852        case 270: cArgs =  3; pszName = "tgkill"; break;
     853        case 271: cArgs =  2; pszName = "utimes"; break;
     854        case 272: cArgs =  6; pszName = "fadvise64_64"; break;
     855        case 273: cArgs = -1; pszName = "vserver"; break;
     856        case 274: cArgs =  6; pszName = "mbind"; break;
     857        case 275: cArgs =  5; pszName = "get_mempolicy"; break;
     858        case 276: cArgs =  3; pszName = "set_mempolicy"; break;
     859        case 277: cArgs =  4; pszName = "mq_open"; break;
     860        case 278: cArgs =  1; pszName = "mq_unlink"; break;
     861        case 279: cArgs =  5; pszName = "mq_timedsend"; break;
     862        case 280: cArgs =  5; pszName = "mq_timedreceive"; break;
     863        case 281: cArgs =  2; pszName = "mq_notify"; break;
     864        case 282: cArgs =  3; pszName = "mq_getsetattr"; break;
     865        case 283: cArgs =  4; pszName = "kexec_load"; break;
     866        case 284: cArgs =  5; pszName = "waitid"; break;
     867        case 286: cArgs =  5; pszName = "add_key"; break;
     868        case 287: cArgs =  4; pszName = "request_key"; break;
     869        case 288: cArgs =  5; pszName = "keyctl"; break;
     870        case 289: cArgs =  3; pszName = "ioprio_set"; break;
     871        case 290: cArgs =  2; pszName = "ioprio_get"; break;
     872        case 291: cArgs = -1; pszName = "inotify_init"; break;
     873        case 292: cArgs =  3; pszName = "inotify_add_watch"; break;
     874        case 293: cArgs =  2; pszName = "inotify_rm_watch"; break;
     875        case 294: cArgs =  4; pszName = "migrate_pages"; break;
     876        case 295: cArgs =  4; pszName = "openat"; break;
     877        case 296: cArgs =  3; pszName = "mkdirat"; break;
     878        case 297: cArgs =  4; pszName = "mknodat"; break;
     879        case 298: cArgs =  5; pszName = "fchownat"; break;
     880        case 299: cArgs =  3; pszName = "futimesat"; break;
     881        case 300: cArgs =  4; pszName = "fstatat64"; break;
     882        case 301: cArgs =  3; pszName = "unlinkat"; break;
     883        case 302: cArgs =  4; pszName = "renameat"; break;
     884        case 303: cArgs =  5; pszName = "linkat"; break;
     885        case 304: cArgs =  3; pszName = "symlinkat"; break;
     886        case 305: cArgs =  4; pszName = "readlinkat"; break;
     887        case 306: cArgs =  3; pszName = "fchmodat"; break;
     888        case 307: cArgs =  3; pszName = "faccessat"; break;
     889        case 308: cArgs =  6; pszName = "pselect6"; break;
     890        case 309: cArgs =  5; pszName = "ppoll"; break;
     891        case 310: cArgs =  1; pszName = "unshare"; break;
     892        case 311: cArgs =  2; pszName = "set_robust_list"; break;
     893        case 312: cArgs =  3; pszName = "get_robust_list"; break;
     894        case 313: cArgs =  6; pszName = "splice"; break;
     895        case 314: cArgs =  6; pszName = "sync_file_range"; break;
     896        case 315: cArgs =  4; pszName = "tee"; break;
     897        case 316: cArgs =  4; pszName = "vmsplice"; break;
     898        case 317: cArgs =  6; pszName = "move_pages"; break;
     899        case 318: cArgs =  3; pszName = "getcpu"; break;
     900        case 319: cArgs =  6; pszName = "epoll_pwait"; break;
     901        case 320: cArgs =  4; pszName = "utimensat"; break;
     902        case 321: cArgs =  3; pszName = "signalfd"; break;
     903        case 322: cArgs =  2; pszName = "timerfd_create"; break;
     904        case 323: cArgs =  1; pszName = "eventfd"; break;
     905        case 324: cArgs =  6; pszName = "fallocate"; break;
     906        case 325: cArgs =  4; pszName = "timerfd_settime"; break;
     907        case 326: cArgs =  2; pszName = "timerfd_gettime"; break;
     908        case 327: cArgs =  4; pszName = "signalfd4"; break;
     909        case 328: cArgs =  2; pszName = "eventfd2"; break;
     910        case 329: cArgs =  1; pszName = "epoll_create1"; break;
     911        case 330: cArgs =  3; pszName = "dup3"; break;
     912        case 331: cArgs =  2; pszName = "pipe2"; break;
     913        case 332: cArgs =  1; pszName = "inotify_init1"; break;
     914        case 333: cArgs =  5; pszName = "preadv"; break;
     915        case 334: cArgs =  5; pszName = "pwritev"; break;
     916        case 335: cArgs =  4; pszName = "rt_tgsigqueueinfo"; break;
     917        case 336: cArgs =  5; pszName = "perf_event_open"; break;
     918        case 337: cArgs =  5; pszName = "recvmmsg"; break;
     919        case 338: cArgs =  2; pszName = "fanotify_init"; break;
     920        case 339: cArgs =  5; pszName = "fanotify_mark"; break;
     921        case 340: cArgs =  4; pszName = "prlimit64"; break;
     922        case 341: cArgs =  5; pszName = "name_to_handle_at"; break;
     923        case 342: cArgs =  3; pszName = "open_by_handle_at"; break;
     924        case 343: cArgs =  2; pszName = "clock_adjtime"; break;
     925        case 344: cArgs =  1; pszName = "syncfs"; break;
     926        case 345: cArgs =  4; pszName = "sendmmsg"; break;
     927        case 346: cArgs =  2; pszName = "setns"; break;
     928        case 347: cArgs =  6; pszName = "process_vm_readv"; break;
     929        case 348: cArgs =  6; pszName = "process_vm_writev"; break;
     930        case 349: cArgs =  5; pszName = "kcmp"; break;
     931        case 350: cArgs =  3; pszName = "finit_module"; break;
     932        case 351: cArgs =  3; pszName = "sched_setattr"; break;
     933        case 352: cArgs =  4; pszName = "sched_getattr"; break;
     934        case 353: cArgs =  5; pszName = "renameat2"; break;
     935        case 354: cArgs =  3; pszName = "seccomp"; break;
     936        case 355: cArgs =  3; pszName = "getrandom"; break;
     937        case 356: cArgs =  2; pszName = "memfd_create"; break;
     938        case 357: cArgs =  3; pszName = "bpf"; break;
     939        case 358: cArgs =  5; pszName = "execveat"; break;
     940        case 359: cArgs =  3; pszName = "socket"; break;
     941        case 360: cArgs =  4; pszName = "socketpair"; break;
     942        case 361: cArgs =  3; pszName = "bind"; break;
     943        case 362: cArgs =  3; pszName = "connect"; break;
     944        case 363: cArgs =  2; pszName = "listen"; break;
     945        case 364: cArgs =  4; pszName = "accept4"; break;
     946        case 365: cArgs =  5; pszName = "getsockopt"; break;
     947        case 366: cArgs =  5; pszName = "setsockopt"; break;
     948        case 367: cArgs =  3; pszName = "getsockname"; break;
     949        case 368: cArgs =  3; pszName = "getpeername"; break;
     950        case 369: cArgs =  6; pszName = "sendto"; break;
     951        case 370: cArgs =  3; pszName = "sendmsg"; break;
     952        case 371: cArgs =  6; pszName = "recvfrom"; break;
     953        case 372: cArgs =  3; pszName = "recvmsg"; break;
     954        case 373: cArgs =  2; pszName = "shutdown"; break;
     955        case 374: cArgs =  1; pszName = "userfaultfd"; break;
     956        case 375: cArgs =  3; pszName = "membarrier"; break;
     957        case 376: cArgs =  3; pszName = "mlock2"; break;
     958        case 377: cArgs =  6; pszName = "copy_file_range"; break;
     959        case 378: cArgs =  6; pszName = "preadv2"; break;
     960        case 379: cArgs =  6; pszName = "pwritev2"; break;
     961        case 380: cArgs =  4; pszName = "pkey_mprotect"; break;
     962        case 381: cArgs =  2; pszName = "pkey_alloc"; break;
     963        case 382: cArgs =  1; pszName = "pkey_free"; break;
     964        case 383: cArgs =  5; pszName = "statx"; break;
     965        case 384: cArgs =  2; pszName = "arch_prctl"; break;
     966        case 385: cArgs =  6; pszName = "io_pgetevents"; break;
     967        case 386: cArgs =  4; pszName = "rseq"; break;
     968        case 393: cArgs =  3; pszName = "semget"; break;
     969        case 394: cArgs =  4; pszName = "semctl"; break;
     970        case 395: cArgs =  3; pszName = "shmget"; break;
     971        case 396: cArgs =  3; pszName = "shmctl"; break;
     972        case 397: cArgs =  3; pszName = "shmat"; break;
     973        case 398: cArgs =  1; pszName = "shmdt"; break;
     974        case 399: cArgs =  2; pszName = "msgget"; break;
     975        case 400: cArgs =  4; pszName = "msgsnd"; break;
     976        case 401: cArgs =  5; pszName = "msgrcv"; break;
     977        case 402: cArgs =  3; pszName = "msgctl"; break;
     978        case 403: cArgs =  2; pszName = "clock_gettime64"; break;
     979        case 404: cArgs =  2; pszName = "clock_settime64"; break;
     980        case 405: cArgs =  2; pszName = "clock_adjtime64"; break;
     981        case 406: cArgs =  2; pszName = "clock_getres_time64"; break;
     982        case 407: cArgs =  4; pszName = "clock_nanosleep_time64"; break;
     983        case 408: cArgs =  2; pszName = "timer_gettime64"; break;
     984        case 409: cArgs =  4; pszName = "timer_settime64"; break;
     985        case 410: cArgs =  2; pszName = "timerfd_gettime64"; break;
     986        case 411: cArgs =  4; pszName = "timerfd_settime64"; break;
     987        case 412: cArgs =  4; pszName = "utimensat_time64"; break;
     988        case 413: cArgs =  6; pszName = "pselect6_time64"; break;
     989        case 414: cArgs =  5; pszName = "ppoll_time64"; break;
     990        case 416: cArgs =  6; pszName = "io_pgetevents_time64"; break;
     991        case 417: cArgs =  5; pszName = "recvmmsg_time64"; break;
     992        case 418: cArgs =  5; pszName = "mq_timedsend_time64"; break;
     993        case 419: cArgs =  5; pszName = "mq_timedreceive_time64"; break;
     994        case 420: cArgs =  4; pszName = "semtimedop_time64"; break;
     995        case 421: cArgs =  4; pszName = "rt_sigtimedwait_time64"; break;
     996        case 422: cArgs =  6; pszName = "futex_time64"; break;
     997        case 423: cArgs =  2; pszName = "sched_rr_get_interval_time64"; break;
     998        case 424: cArgs =  4; pszName = "pidfd_send_signal"; break;
     999        case 425: cArgs =  2; pszName = "io_uring_setup"; break;
     1000        case 426: cArgs =  6; pszName = "io_uring_enter"; break;
     1001        case 427: cArgs =  4; pszName = "io_uring_register"; break;
     1002        case 428: cArgs =  3; pszName = "open_tree"; break;
     1003        case 429: cArgs =  5; pszName = "move_mount"; break;
     1004        case 430: cArgs =  2; pszName = "fsopen"; break;
     1005        case 431: cArgs =  5; pszName = "fsconfig"; break;
     1006        case 432: cArgs =  3; pszName = "fsmount"; break;
     1007        case 433: cArgs =  3; pszName = "fspick"; break;
     1008        case 434: cArgs =  2; pszName = "pidfd_open"; break;
     1009        case 435: cArgs =  2; pszName = "clone3"; break;
     1010        case 436: cArgs =  3; pszName = "close_range"; break;
     1011        case 437: cArgs =  4; pszName = "openat2"; break;
     1012        case 438: cArgs =  3; pszName = "pidfd_getfd"; break;
     1013        case 439: cArgs =  4; pszName = "faccessat2"; break;
     1014        case 440: cArgs =  5; pszName = "process_madvise"; break;
     1015        case 441: cArgs =  6; pszName = "epoll_pwait2"; break;
     1016        case 442: cArgs =  5; pszName = "mount_setattr"; break;
     1017        case 443: cArgs =  4; pszName = "quotactl_fd"; break;
     1018        case 444: cArgs =  3; pszName = "landlock_create_ruleset"; break;
     1019        case 445: cArgs =  4; pszName = "landlock_add_rule"; break;
     1020        case 446: cArgs =  2; pszName = "landlock_restrict_self"; break;
     1021        case 447: cArgs =  1; pszName = "memfd_secret"; break;
     1022        case 448: cArgs =  2; pszName = "process_mrelease"; break;
     1023        case 449: cArgs =  5; pszName = "futex_waitv"; break;
     1024        case 450: cArgs =  4; pszName = "set_mempolicy_home_node"; break;
     1025        case 451: cArgs =  4; pszName = "cachestat"; break;
     1026        case 452: cArgs =  4; pszName = "fchmodat2"; break;
     1027
     1028        default:
     1029            pszName = "unknown!";
     1030            cArgs   = -1;
     1031            break;;
     1032    }
     1033    Log3(("Linux syscall: %s (%#x) at %04x:%08x - cArgs=%d: ebx=%#x ecx=%#x edx=%#x esi=%#x edi=%#x ebp=%#x (esp=%#x eax=%#x efl=%#x)\n",
     1034          pszName, uSysCall, pVCpu->cpum.GstCtx.cs.Sel, pVCpu->cpum.GstCtx.eip, cArgs, pVCpu->cpum.GstCtx.ebx,
     1035          pVCpu->cpum.GstCtx.ecx, pVCpu->cpum.GstCtx.edx, pVCpu->cpum.GstCtx.esi, pVCpu->cpum.GstCtx.edi, pVCpu->cpum.GstCtx.ebp,
     1036          pVCpu->cpum.GstCtx.esp, pVCpu->cpum.GstCtx.eax, pVCpu->cpum.GstCtx.eflags.uBoth));
     1037
     1038#ifdef IN_RING3
     1039    /*
     1040     * Log string arguments.
     1041     */
     1042    static const uint8_t s_aidxArgToGReg[] =
     1043    { X86_GREG_xBX, X86_GREG_xCX, X86_GREG_xDX, X86_GREG_xSI, X86_GREG_xDI, X86_GREG_xBP };
     1044    if (fStrArgs)
     1045    {
     1046        PUVM pUVM = pVCpu->pVMR3->pUVM;
     1047        do
     1048        {
     1049            unsigned const iStrArg = ASMBitFirstSetU32(fStrArgs) - 1;
     1050            fStrArgs &= ~RT_BIT_32(iStrArg);
     1051            if (iStrArg < RT_ELEMENTS(s_aidxArgToGReg))
     1052            {
     1053                char           szStr[1024];
     1054                uint32_t const uAddr = pVCpu->cpum.GstCtx.aGRegs[s_aidxArgToGReg[iStrArg]].u32;
     1055                DBGFADDRESS    DbgAddr;
     1056                int rc = DBGFR3MemReadString(pUVM, pVCpu->idCpu, DBGFR3AddrFromFlat(pUVM, &DbgAddr, uAddr), szStr, sizeof(szStr));
     1057                if (RT_SUCCESS(rc))
     1058                {
     1059                    rc = RTStrValidateEncoding(szStr);
     1060                    if (RT_SUCCESS(rc))
     1061                        Log3(("Linux syscall %x/arg #%u: %#x '%s'\n", uSysCall, iStrArg, uAddr, szStr));
     1062                    else
     1063                        Log3(("Linux syscall %x/arg #%u: %#x %.*Rhxs\n", uSysCall, iStrArg, uAddr, strlen(szStr), szStr));
     1064                }
     1065            }
     1066
     1067
     1068        } while (fStrArgs);
     1069    }
     1070#else
     1071    RT_NOREF(fStrArgs);
     1072#endif
     1073}
     1074
     1075
    5751076void iemLogSyscallProtModeInt(PVMCPUCC pVCpu, uint8_t u8Vector, uint8_t cbInstr)
    5761077{
     
    5861087            case 0x20: /* VxD call. */
    5871088                iemLogSyscallWinVxDCall(pVCpu, cbInstr);
    588                 break;
     1089                break;;
    5891090        }
    5901091
    5911092    /* Linux */
    592     if (LogIs3Enabled())
    593     {
    594 
    595     }
     1093    if (LogIs3Enabled() && u8Vector == 0x80)
     1094        iemLogSyscallLinuxX86Int80(pVCpu);
    5961095}
    5971096
Note: See TracChangeset for help on using the changeset viewer.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette