* Improvements
* Optimized syscall filtering.
* Enhanced decoding of sched_setattr syscall.
+ * Added -e trace=%lstat option for tracing variants of lstat syscall.
* Added -e trace=%fstat option for tracing variants of fstat and fstatat
syscalls.
* Added -e trace=%%stat option for tracing syscalls used for querying file
[1036] = { 2, TF, SEN(symlink), "symlink" },
[1037] = { 2, TF, SEN(utimes), "utimes" },
[1038] = { 2, TF|TSTA, SEN(stat), "stat" },
-[1039] = { 2, TF|TSTA, SEN(lstat), "lstat" },
+[1039] = { 2, TF|TLST|TSTA, SEN(lstat), "lstat" },
[1040] = { 1, TD, SEN(pipe), "pipe" },
[1041] = { 2, TD, SEN(dup2), "dup2" },
[1042] = { 1, TD, SEN(epoll_create), "epoll_create" },
[1047] = { 2, TD, SEN(ftruncate), "ftruncate" },
[1048] = { 2, TF, SEN(truncate), "truncate" },
[1049] = { 2, TF|TSTA, SEN(stat), "stat" },
-[1050] = { 2, TF|TSTA, SEN(lstat), "lstat" },
+[1050] = { 2, TF|TLST|TSTA, SEN(lstat), "lstat" },
[1051] = { 2, TD|TFST|TSTA, SEN(fstat), "fstat" },
[1052] = { 3, TD, SEN(fcntl), "fcntl" },
[1053] = { 4, TD, SEN(fadvise64), "fadvise64" },
[ 37] = { 2, TS, SEN(kill), "kill" },
[ 38] = { 5, TF|TSTA, SEN(printargs), "osf_old_stat" }, /* not implemented */
[ 39] = { 2, 0, SEN(setpgid), "setpgid" },
-[ 40] = { 5, TF|TSTA, SEN(printargs), "osf_old_lstat" }, /* not implemented */
+[ 40] = { 5, TF|TLST|TSTA, SEN(printargs), "osf_old_lstat" }, /* not implemented */
[ 41] = { 1, TD, SEN(dup), "dup" },
[ 42] = { 0, TD, SEN(pipe), "pipe" },
[ 43] = { 4, 0, SEN(printargs), "osf_set_program_attributes" },
[ 65] = { 5, TM, SEN(printargs), "osf_mremap" }, /* not implemented */
[ 66] = { 0, TP, SEN(vfork), "vfork" },
[ 67] = { 2, TF|TSTA, SEN(stat), "stat" },
-[ 68] = { 2, TF|TSTA, SEN(lstat), "lstat" },
+[ 68] = { 2, TF|TLST|TSTA, SEN(lstat), "lstat" },
[ 69] = { 5, TM, SEN(printargs), "osf_sbrk" }, /* not implemented */
[ 70] = { 5, 0, SEN(printargs), "osf_sstk" }, /* not implemented */
[ 71] = { 6, TD|TM|SI, SEN(mmap), "mmap" },
[222] = { 5, 0, SEN(printargs), "osf_security" }, /* not implemented */
[223] = { 5, 0, SEN(printargs), "osf_kloadcall" }, /* not implemented */
[224] = { 2, TF|TSTA, SEN(printargs), "osf_stat" },
-[225] = { 2, TF|TSTA, SEN(printargs), "osf_lstat" },
+[225] = { 2, TF|TLST|TSTA, SEN(printargs), "osf_lstat" },
[226] = { 2, TD|TFST|TSTA, SEN(printargs), "osf_fstat" },
[227] = { 3, TF|TSF|TSFA, SEN(osf_statfs), "osf_statfs64" },
[228] = { 3, TD|TFSF|TSFA, SEN(osf_fstatfs), "osf_fstatfs64" },
[423] = { 4, TI, SEN(semtimedop), "semtimedop" },
[424] = { 3, TS, SEN(tgkill), "tgkill" },
[425] = { 2, TF|TSTA, SEN(stat64), "stat64" },
-[426] = { 2, TF|TSTA, SEN(lstat64), "lstat64" },
+[426] = { 2, TF|TLST|TSTA, SEN(lstat64), "lstat64" },
[427] = { 2, TD|TFST|TSTA, SEN(fstat64), "fstat64" },
[428] = { 5, 0, SEN(vserver), "vserver" }, /* not implemented */
[429] = { 6, TM, SEN(mbind), "mbind" }, /* not implemented */
[ 81] = { 2, 0, SEN(setgroups16), "setgroups" },
[ 82] = { 1, TD, SEN(oldselect), "select" },
[ 83] = { 2, TF, SEN(symlink), "symlink" },
-[ 84] = { 2, TF|TSTA, SEN(oldlstat), "oldlstat" },
+[ 84] = { 2, TF|TLST|TSTA, SEN(oldlstat), "oldlstat" },
[ 85] = { 3, TF, SEN(readlink), "readlink" },
[ 86] = { 1, TF, SEN(uselib), "uselib" },
[ 87] = { 2, TF, SEN(swapon), "swapon" },
[104] = { 3, 0, SEN(setitimer), "setitimer" },
[105] = { 2, 0, SEN(getitimer), "getitimer" },
[106] = { 2, TF|TSTA, SEN(stat), "stat" },
-[107] = { 2, TF|TSTA, SEN(lstat), "lstat" },
+[107] = { 2, TF|TLST|TSTA, SEN(lstat), "lstat" },
[108] = { 2, TD|TFST|TSTA, SEN(fstat), "fstat" },
[109] = { 1, 0, SEN(olduname), "olduname" },
[110] = { 1, 0, SEN(iopl), "iopl" },
[193] = { 4, TF, SEN(truncate64), "truncate64" },
[194] = { 4, TD, SEN(ftruncate64), "ftruncate64" },
[195] = { 2, TF|TSTA, SEN(stat64), "stat64" },
-[196] = { 2, TF|TSTA, SEN(lstat64), "lstat64" },
+[196] = { 2, TF|TLST|TSTA, SEN(lstat64), "lstat64" },
[197] = { 2, TD|TFST|TSTA, SEN(fstat64), "fstat64" },
[198] = { 3, TF, SEN(chown), "lchown32" },
[199] = { 0, NF, SEN(getuid), "getuid32" },
[ 29] = { 2, TF, SEN(utime), "utime" },
[ 30] = { 2, TF|TSTA, SEN(stat), "stat" },
[ 31] = { 2, TD|TFST|TSTA, SEN(fstat), "fstat" },
-[ 32] = { 2, TF|TSTA, SEN(lstat), "lstat" },
+[ 32] = { 2, TF|TLST|TSTA, SEN(lstat), "lstat" },
[ 33] = { 2, TF, SEN(access), "access" },
[ 34] = { 1, TF, SEN(chroot), "chroot" },
[ 35] = { 0, 0, SEN(sync), "sync" },
[166] = { 3, TF, SEN(truncate64), "truncate64" },
[167] = { 3, TD, SEN(ftruncate64), "ftruncate64" },
[168] = { 2, TF|TSTA, SEN(stat64), "stat64" },
-[169] = { 2, TF|TSTA, SEN(lstat64), "lstat64" },
+[169] = { 2, TF|TLST|TSTA, SEN(lstat64), "lstat64" },
[170] = { 2, TD|TFST|TSTA, SEN(fstat64), "fstat64" },
[171] = { 2, TF, SEN(pivotroot), "pivot_root" },
[172] = { 3, TM, SEN(mincore), "mincore" },
[ 81] = { 2, 0, SEN(setgroups16), "setgroups" },
[ 82] = { 1, TD, SEN(oldselect), "select" },
[ 83] = { 2, TF, SEN(symlink), "symlink" },
-[ 84] = { 2, TF|TSTA, SEN(oldlstat), "oldlstat" },
+[ 84] = { 2, TF|TLST|TSTA, SEN(oldlstat), "oldlstat" },
[ 85] = { 3, TF, SEN(readlink), "readlink" },
[ 86] = { 1, TF, SEN(uselib), "uselib" },
[ 87] = { 2, TF, SEN(swapon), "swapon" },
[104] = { 3, 0, SEN(setitimer), "setitimer" },
[105] = { 2, 0, SEN(getitimer), "getitimer" },
[106] = { 2, TF|TSTA, SEN(stat), "stat" },
-[107] = { 2, TF|TSTA, SEN(lstat), "lstat" },
+[107] = { 2, TF|TLST|TSTA, SEN(lstat), "lstat" },
[108] = { 2, TD|TFST|TSTA, SEN(fstat), "fstat" },
[109] = { 1, 0, SEN(olduname), "olduname" },
[110] = { 1, 0, SEN(iopl), "iopl" },
[193] = { 3, TF, SEN(truncate64), "truncate64" },
[194] = { 3, TD, SEN(ftruncate64), "ftruncate64" },
[195] = { 2, TF|TSTA, SEN(stat64), "stat64" },
-[196] = { 2, TF|TSTA, SEN(lstat64), "lstat64" },
+[196] = { 2, TF|TLST|TSTA, SEN(lstat64), "lstat64" },
[197] = { 2, TD|TFST|TSTA, SEN(fstat64), "fstat64" },
[198] = { 3, TF, SEN(chown), "chown32" },
[199] = { 0, NF, SEN(getuid), "getuid32" },
[ 81] = { 2, 0, SEN(setgroups16), "setgroups" },
[ 82] = { 1, TD, SEN(oldselect), "select" },
[ 83] = { 2, TF, SEN(symlink), "symlink" },
-[ 84] = { 2, TF|TSTA, SEN(oldlstat), "oldlstat" },
+[ 84] = { 2, TF|TLST|TSTA, SEN(oldlstat), "oldlstat" },
[ 85] = { 3, TF, SEN(readlink), "readlink" },
[ 86] = { 1, TF, SEN(uselib), "uselib" },
[ 87] = { 2, TF, SEN(swapon), "swapon" },
[104] = { 3, 0, SEN(setitimer), "setitimer" },
[105] = { 2, 0, SEN(getitimer), "getitimer" },
[106] = { 2, TF|TSTA, SEN(stat), "stat" },
-[107] = { 2, TF|TSTA, SEN(lstat), "lstat" },
+[107] = { 2, TF|TLST|TSTA, SEN(lstat), "lstat" },
[108] = { 2, TD|TFST|TSTA, SEN(fstat), "fstat" },
[109] = { 1, 0, SEN(olduname), "olduname" },
[110] = { 1, 0, SEN(iopl), "iopl" },
[193] = { 3, TF, SEN(truncate64), "truncate64" },
[194] = { 3, TD, SEN(ftruncate64), "ftruncate64" },
[195] = { 2, TF|TSTA, SEN(stat64), "stat64" },
-[196] = { 2, TF|TSTA, SEN(lstat64), "lstat64" },
+[196] = { 2, TF|TLST|TSTA, SEN(lstat64), "lstat64" },
[197] = { 2, TD|TFST|TSTA, SEN(fstat64), "fstat64" },
[198] = { 3, TF, SEN(chown), "lchown32" },
[199] = { 0, NF, SEN(getuid), "getuid32" },
[ 81] = { 2, 0, SEN(setgroups), "setgroups" },
[ 82] = { 6, TN, SEN(sendto), "sendto" },
[ 83] = { 2, TF, SEN(symlink), "symlink" },
-[ 84] = { 2, TF|TSTA, SEN(lstat), "lstat" },
+[ 84] = { 2, TF|TLST|TSTA, SEN(lstat), "lstat" },
[ 85] = { 3, TF, SEN(readlink), "readlink" },
[ 86] = { 1, TF, SEN(uselib), "uselib" },
[ 87] = { 2, TF, SEN(swapon), "swapon" },
[195] = { 3, TI, SEN(shmctl), "shmctl" },
[196] = { 5, TN, SEN(getpmsg), "getpmsg" },
[197] = { 5, TN, SEN(putpmsg), "putpmsg" },
-[198] = { 2, TF|TSTA, SEN(lstat64), "lstat64" },
+[198] = { 2, TF|TLST|TSTA, SEN(lstat64), "lstat64" },
[199] = { 3, TF, SEN(truncate64), "truncate64" },
[200] = { 3, TD, SEN(ftruncate64), "ftruncate64" },
[201] = { 3, TD, SEN(getdents64), "getdents64" },
[ 81] = { 2, 0, SEN(setgroups16), "setgroups" },
[ 82] = { 1, TD, SEN(oldselect), "select" },
[ 83] = { 2, TF, SEN(symlink), "symlink" },
-[ 84] = { 2, TF|TSTA, SEN(oldlstat), "oldlstat" },
+[ 84] = { 2, TF|TLST|TSTA, SEN(oldlstat), "oldlstat" },
[ 85] = { 3, TF, SEN(readlink), "readlink" },
[ 86] = { 1, TF, SEN(uselib), "uselib" },
[ 87] = { 2, TF, SEN(swapon), "swapon" },
[104] = { 3, 0, SEN(setitimer), "setitimer" },
[105] = { 2, 0, SEN(getitimer), "getitimer" },
[106] = { 2, TF|TSTA, SEN(stat), "stat" },
-[107] = { 2, TF|TSTA, SEN(lstat), "lstat" },
+[107] = { 2, TF|TLST|TSTA, SEN(lstat), "lstat" },
[108] = { 2, TD|TFST|TSTA, SEN(fstat), "fstat" },
[109] = { 1, 0, SEN(olduname), "olduname" },
[110] = { 1, 0, SEN(iopl), "iopl" },
[193] = { 3, TF, SEN(truncate64), "truncate64" },
[194] = { 3, TD, SEN(ftruncate64), "ftruncate64" },
[195] = { 2, TF|TSTA, SEN(stat64), "stat64" },
-[196] = { 2, TF|TSTA, SEN(lstat64), "lstat64" },
+[196] = { 2, TF|TLST|TSTA, SEN(lstat64), "lstat64" },
[197] = { 2, TD|TFST|TSTA, SEN(fstat64), "fstat64" },
[198] = { 3, TF, SEN(chown), "lchown32" },
[199] = { 0, NF, SEN(getuid), "getuid32" },
[1118] = { 3, 0, SEN(setitimer), "setitimer" },
[1119] = { 2, 0, SEN(getitimer), "getitimer" },
[1120] = { 2, TF|TSTA, SEN(stat), "stat" },
-[1121] = { 2, TF|TSTA, SEN(lstat), "lstat" },
+[1121] = { 2, TF|TLST|TSTA, SEN(lstat), "lstat" },
[1122] = { 2, TD|TFST|TSTA, SEN(fstat), "fstat" },
[1123] = { 0, 0, SEN(vhangup), "vhangup" },
[1124] = { 3, TF, SEN(chown), "lchown" },
[1208] = { 3, TM, SEN(mincore), "mincore" },
[1209] = { 3, TM, SEN(madvise), "madvise" },
[1210] = { 2, TF|TSTA, SEN(stat), "stat" },
-[1211] = { 2, TF|TSTA, SEN(lstat), "lstat" },
+[1211] = { 2, TF|TLST|TSTA, SEN(lstat), "lstat" },
[1212] = { 2, TD|TFST|TSTA, SEN(fstat), "fstat" },
[1213] = { 6, TP, SEN(clone), "clone2" },
[1214] = { 3, TD, SEN(getdents64), "getdents64" },
[ 81] = { 2, 0, SEN(setgroups16), "setgroups" },
[ 82] = { 1, TD, SEN(oldselect), "select" },
[ 83] = { 2, TF, SEN(symlink), "symlink" },
-[ 84] = { 2, TF|TSTA, SEN(oldlstat), "oldlstat" },
+[ 84] = { 2, TF|TLST|TSTA, SEN(oldlstat), "oldlstat" },
[ 85] = { 3, TF, SEN(readlink), "readlink" },
[ 86] = { 1, TF, SEN(uselib), "uselib" },
[ 87] = { 2, TF, SEN(swapon), "swapon" },
[104] = { 3, 0, SEN(setitimer), "setitimer" },
[105] = { 2, 0, SEN(getitimer), "getitimer" },
[106] = { 2, TF|TSTA, SEN(stat), "stat" },
-[107] = { 2, TF|TSTA, SEN(lstat), "lstat" },
+[107] = { 2, TF|TLST|TSTA, SEN(lstat), "lstat" },
[108] = { 2, TD|TFST|TSTA, SEN(fstat), "fstat" },
[109] = { 1, 0, SEN(olduname), "olduname" },
[110] = { 1, 0, SEN(iopl), "iopl" },
[193] = { 3, TF, SEN(truncate64), "truncate64" },
[194] = { 3, TD, SEN(ftruncate64), "ftruncate64" },
[195] = { 2, TF|TSTA, SEN(stat64), "stat64" },
-[196] = { 2, TF|TSTA, SEN(lstat64), "lstat64" },
+[196] = { 2, TF|TLST|TSTA, SEN(lstat64), "lstat64" },
[197] = { 2, TD|TFST|TSTA, SEN(fstat64), "fstat64" },
[198] = { 3, TF, SEN(chown), "chown32" },
[199] = { 0, NF, SEN(getuid), "getuid32" },
[ 81] = { 2, 0, SEN(setgroups16), "setgroups" },
[ 82] = { 1, TD, SEN(oldselect), "select" },
[ 83] = { 2, TF, SEN(symlink), "symlink" },
-[ 84] = { 2, TF|TSTA, SEN(oldlstat), "oldlstat" },
+[ 84] = { 2, TF|TLST|TSTA, SEN(oldlstat), "oldlstat" },
[ 85] = { 3, TF, SEN(readlink), "readlink" },
[ 86] = { 1, TF, SEN(uselib), "uselib" },
[ 87] = { 2, TF, SEN(swapon), "swapon" },
[104] = { 3, 0, SEN(setitimer), "setitimer" },
[105] = { 2, 0, SEN(getitimer), "getitimer" },
[106] = { 2, TF|TSTA, SEN(stat), "stat" },
-[107] = { 2, TF|TSTA, SEN(lstat), "lstat" },
+[107] = { 2, TF|TLST|TSTA, SEN(lstat), "lstat" },
[108] = { 2, TD|TFST|TSTA, SEN(fstat), "fstat" },
[109] = { 1, 0, SEN(olduname), "olduname" },
[110] = { 1, 0, SEN(iopl), "iopl" },
[193] = { 3, TF, SEN(truncate64), "truncate64" },
[194] = { 3, TD, SEN(ftruncate64), "ftruncate64" },
[195] = { 2, TF|TSTA, SEN(stat64), "stat64" },
-[196] = { 2, TF|TSTA, SEN(lstat64), "lstat64" },
+[196] = { 2, TF|TLST|TSTA, SEN(lstat64), "lstat64" },
[197] = { 2, TD|TFST|TSTA, SEN(fstat64), "fstat64" },
[198] = { 3, TF, SEN(chown), "lchown32" },
[199] = { 0, NF, SEN(getuid), "getuid32" },
[ 85] = { 0, 0, SEN(printargs), "svr4_getmsg" },
[ 86] = { 0, 0, SEN(printargs), "svr4_putmsg" },
[ 87] = { 0, 0, SEN(printargs), "svr4_poll" },
-[ 88] = { 0, TF|TSTA,SEN(printargs), "svr4_lstat" },
+[ 88] = { 0, TF|TLST|TSTA,SEN(printargs), "svr4_lstat" },
[ 89] = { 0, 0, SEN(printargs), "svr4_symlink" },
[ 90] = { 0, 0, SEN(printargs), "svr4_readlink" },
[ 91] = { 0, 0, SEN(printargs), "svr4_setgroups" },
[ 121] = { 0, 0, SEN(printargs), "svr4_readv" },
[ 122] = { 0, 0, SEN(printargs), "svr4_writev" },
[ 123] = { 0, TF|TSTA,SEN(printargs), "svr4_xstat" },
-[ 124] = { 0, TF|TSTA,SEN(printargs), "svr4_lxstat" },
+[ 124] = { 0, TF|TLST|TSTA,SEN(printargs), "svr4_lxstat" },
[ 125] = { 0, TD|TFST|TSTA,SEN(printargs), "svr4_fxstat" },
[ 126] = { 0, 0, SEN(printargs), "svr4_xmknod" },
[ 127] = { 0, 0, SEN(printargs), "svr4_clocal" },
[1114] = { 0, 0, SEN(printargs), "sysv_rename" },
[1115] = { 0, 0, SEN(printargs), "sysv_symlink" },
[1116] = { 0, 0, SEN(printargs), "sysv_readlink" },
-[1117] = { 0, TF|TSTA,SEN(printargs), "sysv_lstat" },
+[1117] = { 0, TF|TLST|TSTA,SEN(printargs), "sysv_lstat" },
[1118] = { 0, 0, SEN(printargs), "sysv_nfsmount" },
[1119] = { 0, 0, SEN(printargs), "sysv_nfssvc" },
[1120] = { 0, 0, SEN(printargs), "sysv_getfh" },
[1156] = { 0, 0, SEN(printargs), "sysv_sysinfo" },
[1157] = { 0, 0, SEN(printargs), "sysv_nuname" },
[1158] = { 0, TF|TSTA,SEN(printargs), "sysv_xstat" },
-[1159] = { 0, TF|TSTA,SEN(printargs), "sysv_lxstat" },
+[1159] = { 0, TF|TLST|TSTA,SEN(printargs), "sysv_lxstat" },
[1160] = { 0, TD|TFST|TSTA,SEN(printargs), "sysv_fxstat" },
[1161] = { 0, 0, SEN(printargs), "sysv_xmknod" },
[1162] = { 0, 0, SEN(printargs), "sysv_ksigaction" },
[2037] = { 0, 0, SEN(printargs), "bsd43_kill" },
[2038] = { 0, TF|TSTA,SEN(printargs), "bsd43_stat" },
[2039] = { 0, 0, SEN(printargs), "bsd43_oldsetpgrp" },
-[2040] = { 0, TF|TSTA,SEN(printargs), "bsd43_lstat" },
+[2040] = { 0, TF|TLST|TSTA,SEN(printargs), "bsd43_lstat" },
[2041] = { 0, 0, SEN(printargs), "bsd43_dup" },
[2042] = { 0, 0, SEN(printargs), "bsd43_pipe" },
[2043] = { 0, 0, SEN(printargs), "bsd43_times" },
[3114] = { 0, 0, SEN(printargs), "posix_rename" },
[3115] = { 0, 0, SEN(printargs), "posix_symlink" },
[3116] = { 0, 0, SEN(printargs), "posix_readlink" },
-[3117] = { 0, TF|TSTA,SEN(printargs), "posix_lstat" },
+[3117] = { 0, TF|TLST|TSTA,SEN(printargs), "posix_lstat" },
[3118] = { 0, 0, SEN(printargs), "posix_nfs_mount" },
[3119] = { 0, 0, SEN(printargs), "posix_nfs_svc" },
[3120] = { 0, 0, SEN(printargs), "posix_nfs_getfh" },
[6003] = { 1, TD, SEN(close), "close" },
[6004] = { 2, TF|TSTA, SEN(stat64), "stat" },
[6005] = { 2, TD|TFST|TSTA, SEN(fstat64), "fstat" },
-[6006] = { 2, TF|TSTA, SEN(lstat64), "lstat" },
+[6006] = { 2, TF|TLST|TSTA, SEN(lstat64), "lstat" },
[6007] = { 3, TD, SEN(poll), "poll" },
[6008] = { 3, TD, SEN(lseek), "lseek" },
[6009] = { 6, TD|TM|SI, SEN(mmap), "mmap" },
[5003] = { 1, TD, SEN(close), "close" },
[5004] = { 2, TF|TSTA, SEN(stat), "stat" },
[5005] = { 2, TD|TFST|TSTA, SEN(fstat), "fstat" },
-[5006] = { 2, TF|TSTA, SEN(lstat), "lstat" },
+[5006] = { 2, TF|TLST|TSTA, SEN(lstat), "lstat" },
[5007] = { 3, TD, SEN(poll), "poll" },
[5008] = { 3, TD, SEN(lseek), "lseek" },
[5009] = { 6, TD|TM|SI, SEN(mmap), "mmap" },
[4081] = { 2, 0, SEN(setgroups), "setgroups" },
[4082] = { 0, 0, SEN(printargs), "reserved82" },
[4083] = { 2, TF, SEN(symlink), "symlink" },
-[4084] = { 2, TF|TSTA, SEN(oldlstat), "oldlstat" },
+[4084] = { 2, TF|TLST|TSTA, SEN(oldlstat), "oldlstat" },
[4085] = { 3, TF, SEN(readlink), "readlink" },
[4086] = { 1, TF, SEN(uselib), "uselib" },
[4087] = { 2, TF, SEN(swapon), "swapon" },
[4104] = { 3, 0, SEN(setitimer), "setitimer" },
[4105] = { 2, 0, SEN(getitimer), "getitimer" },
[4106] = { 2, TF|TSTA, SEN(stat), "stat" },
-[4107] = { 2, TF|TSTA, SEN(lstat), "lstat" },
+[4107] = { 2, TF|TLST|TSTA, SEN(lstat), "lstat" },
[4108] = { 2, TD|TFST|TSTA, SEN(fstat), "fstat" },
[4109] = { 1, 0, SEN(olduname), "olduname" },
[4110] = { 1, 0, SEN(iopl), "iopl" },
[4211] = { 4, TF, SEN(truncate64), "truncate64" },
[4212] = { 4, TD, SEN(ftruncate64), "ftruncate64" },
[4213] = { 2, TF|TSTA, SEN(stat64), "stat64" },
-[4214] = { 2, TF|TSTA, SEN(lstat64), "lstat64" },
+[4214] = { 2, TF|TLST|TSTA, SEN(lstat64), "lstat64" },
[4215] = { 2, TD|TFST|TSTA, SEN(fstat64), "fstat64" },
[4216] = { 2, TF, SEN(pivotroot), "pivot_root" },
[4217] = { 3, TM, SEN(mincore), "mincore" },
[ 81] = { 2, 0, SEN(setgroups), "setgroups" },
[ 82] = { 1, TD, SEN(oldselect), "select" },
[ 83] = { 2, TF, SEN(symlink), "symlink" },
-[ 84] = { 2, TF|TSTA, SEN(oldlstat), "oldlstat" },
+[ 84] = { 2, TF|TLST|TSTA, SEN(oldlstat), "oldlstat" },
[ 85] = { 3, TF, SEN(readlink), "readlink" },
[ 86] = { 1, TF, SEN(uselib), "uselib" },
[ 87] = { 2, TF, SEN(swapon), "swapon" },
[104] = { 3, 0, SEN(setitimer), "setitimer" },
[105] = { 2, 0, SEN(getitimer), "getitimer" },
[106] = { 2, TF|TSTA, SEN(stat), "stat" },
-[107] = { 2, TF|TSTA, SEN(lstat), "lstat" },
+[107] = { 2, TF|TLST|TSTA, SEN(lstat), "lstat" },
[108] = { 2, TD|TFST|TSTA, SEN(fstat), "fstat" },
[109] = { 1, 0, SEN(olduname), "olduname" },
[110] = { 1, 0, SEN(iopl), "iopl" },
[193] = { 4, TF, SEN(truncate64), "truncate64" },
[194] = { 4, TD, SEN(ftruncate64), "ftruncate64" },
[195] = { 2, TF|TSTA, SEN(stat64), "stat64" },
-[196] = { 2, TF|TSTA, SEN(lstat64), "lstat64" },
+[196] = { 2, TF|TLST|TSTA, SEN(lstat64), "lstat64" },
[197] = { 2, TD|TFST|TSTA, SEN(fstat64), "fstat64" },
[198] = { 5, 0, SEN(printargs), "pciconfig_read" },
[199] = { 5, 0, SEN(printargs), "pciconfig_write" },
[ 81] = { 2, 0, SEN(setgroups), "setgroups" },
[ 82] = { 1, TD, SEN(oldselect), "select" },
[ 83] = { 2, TF, SEN(symlink), "symlink" },
-[ 84] = { 2, TF|TSTA, SEN(oldlstat), "oldlstat" },
+[ 84] = { 2, TF|TLST|TSTA, SEN(oldlstat), "oldlstat" },
[ 85] = { 3, TF, SEN(readlink), "readlink" },
[ 86] = { 1, TF, SEN(uselib), "uselib" },
[ 87] = { 2, TF, SEN(swapon), "swapon" },
[104] = { 3, 0, SEN(setitimer), "setitimer" },
[105] = { 2, 0, SEN(getitimer), "getitimer" },
[106] = { 2, TF|TSTA, SEN(stat), "stat" },
-[107] = { 2, TF|TSTA, SEN(lstat), "lstat" },
+[107] = { 2, TF|TLST|TSTA, SEN(lstat), "lstat" },
[108] = { 2, TD|TFST|TSTA, SEN(fstat), "fstat" },
[109] = { 1, 0, SEN(olduname), "olduname" },
[110] = { 1, 0, SEN(iopl), "iopl" },
[104] = { 3, 0, SEN(setitimer), "setitimer" },
[105] = { 2, 0, SEN(getitimer), "getitimer" },
[106] = { 2, TF|TSTA, SEN(stat), "stat" },
-[107] = { 2, TF|TSTA, SEN(lstat), "lstat" },
+[107] = { 2, TF|TLST|TSTA, SEN(lstat), "lstat" },
[108] = { 2, TD|TFST|TSTA, SEN(fstat), "fstat" },
[109] = { },
[110] = { 4, 0, SEN(lookup_dcookie), "lookup_dcookie" },
[193] = { 3, TF, SEN(truncate64), "truncate64" },
[194] = { 3, TD, SEN(ftruncate64), "ftruncate64" },
[195] = { 2, TF|TSTA, SEN(stat64), "stat64" },
-[196] = { 2, TF|TSTA, SEN(lstat64), "lstat64" },
+[196] = { 2, TF|TLST|TSTA, SEN(lstat64), "lstat64" },
[197] = { 2, TD|TFST|TSTA, SEN(fstat64), "fstat64" },
[198] = { 3, TF, SEN(chown), "lchown32" },
[199] = { 0, NF, SEN(getuid), "getuid32" },
[104] = { 3, 0, SEN(setitimer), "setitimer" },
[105] = { 2, 0, SEN(getitimer), "getitimer" },
[106] = { 2, TF|TSTA, SEN(stat), "stat" },
-[107] = { 2, TF|TSTA, SEN(lstat), "lstat" },
+[107] = { 2, TF|TLST|TSTA, SEN(lstat), "lstat" },
[108] = { 2, TD|TFST|TSTA, SEN(fstat), "fstat" },
[109] = { },
[110] = { 3, 0, SEN(lookup_dcookie), "lookup_dcookie" },
[ 81] = { 2, 0, SEN(setgroups16), "setgroups" },
[ 82] = { 1, TD, SEN(oldselect), "select" },
[ 83] = { 2, TF, SEN(symlink), "symlink" },
-[ 84] = { 2, TF|TSTA, SEN(oldlstat), "oldlstat" },
+[ 84] = { 2, TF|TLST|TSTA, SEN(oldlstat), "oldlstat" },
[ 85] = { 3, TF, SEN(readlink), "readlink" },
[ 86] = { 1, TF, SEN(uselib), "uselib" },
[ 87] = { 2, TF, SEN(swapon), "swapon" },
[104] = { 3, 0, SEN(setitimer), "setitimer" },
[105] = { 2, 0, SEN(getitimer), "getitimer" },
[106] = { 2, TF|TSTA, SEN(stat), "stat" },
-[107] = { 2, TF|TSTA, SEN(lstat), "lstat" },
+[107] = { 2, TF|TLST|TSTA, SEN(lstat), "lstat" },
[108] = { 2, TD|TFST|TSTA, SEN(fstat), "fstat" },
[109] = { 1, 0, SEN(olduname), "olduname" },
[110] = { 1, 0, SEN(iopl), "iopl" },
[193] = { 3, TF, SEN(truncate64), "truncate64" },
[194] = { 3, TD, SEN(ftruncate64), "ftruncate64" },
[195] = { 2, TF|TSTA, SEN(stat64), "stat64" },
-[196] = { 2, TF|TSTA, SEN(lstat64), "lstat64" },
+[196] = { 2, TF|TLST|TSTA, SEN(lstat64), "lstat64" },
[197] = { 2, TD|TFST|TSTA, SEN(fstat64), "fstat64" },
[198] = { 3, TF, SEN(chown), "lchown32" },
[199] = { 0, NF, SEN(getuid), "getuid32" },
[ 81] = { 2, 0, SEN(setgroups16), "setgroups" },
[ 82] = { },
[ 83] = { 2, TF, SEN(symlink), "symlink" },
-[ 84] = { 2, TF|TSTA, SEN(oldlstat), "oldlstat" },
+[ 84] = { 2, TF|TLST|TSTA, SEN(oldlstat), "oldlstat" },
[ 85] = { 3, TF, SEN(readlink), "readlink" },
[ 86] = { 1, TF, SEN(uselib), "uselib" },
[ 87] = { 2, TF, SEN(swapon), "swapon" },
[104] = { 3, 0, SEN(setitimer), "setitimer" },
[105] = { 2, 0, SEN(getitimer), "getitimer" },
[106] = { 2, TF|TSTA, SEN(stat), "stat" },
-[107] = { 2, TF|TSTA, SEN(lstat), "lstat" },
+[107] = { 2, TF|TLST|TSTA, SEN(lstat), "lstat" },
[108] = { 2, TD|TFST|TSTA, SEN(fstat), "fstat" },
[109] = { 1, 0, SEN(olduname), "olduname" },
[110] = { 1, 0, SEN(iopl), "iopl" },
[193] = { 2, TF, SEN(truncate), "truncate64" },
[194] = { 2, TD, SEN(ftruncate), "ftruncate64" },
[195] = { 2, TF|TSTA, SEN(stat64), "stat64" },
-[196] = { 2, TF|TSTA, SEN(lstat64), "lstat64" },
+[196] = { 2, TF|TLST|TSTA, SEN(lstat64), "lstat64" },
[197] = { 2, TD|TFST|TSTA, SEN(fstat64), "fstat64" },
[198] = { 3, TF, SEN(chown), "lchown32" },
[199] = { 0, NF, SEN(getuid), "getuid32" },
[ 37] = { 2, TS, SEN(kill), "kill" },
[ 38] = { 2, TF|TSTA, SEN(stat), "stat" },
[ 39] = { 4, TD|TN, SEN(sendfile), "sendfile" },
-[ 40] = { 2, TF|TSTA, SEN(lstat), "lstat" },
+[ 40] = { 2, TF|TLST|TSTA, SEN(lstat), "lstat" },
[ 41] = { 1, TD, SEN(dup), "dup" },
[ 42] = { 0, TD, SEN(pipe), "pipe" },
[ 43] = { 1, 0, SEN(times), "times" },
[129] = { 2, TF, SEN(truncate), "truncate" },
[130] = { 2, TD, SEN(ftruncate), "ftruncate" },
[131] = { 2, TD, SEN(flock), "flock" },
-[132] = { 2, TF|TSTA, SEN(lstat64), "lstat64" },
+[132] = { 2, TF|TLST|TSTA, SEN(lstat64), "lstat64" },
[133] = { 6, TN, SEN(sendto), "sendto" },
[134] = { 2, TN, SEN(shutdown), "shutdown" },
[135] = { 4, TN, SEN(socketpair), "socketpair" },
[199] = { 0, TS, SEN(siggetmask), "sgetmask" },
[200] = { 1, TS, SEN(sigsetmask), "ssetmask" },
[201] = { 3, TS, SEN(sigsuspend), "sigsuspend" },
-[202] = { 2, TF|TSTA, SEN(lstat), "oldlstat" },
+[202] = { 2, TF|TLST|TSTA, SEN(lstat), "oldlstat" },
[203] = { 1, TF, SEN(uselib), "uselib" },
[204] = { 3, TD, SEN(readdir), "readdir" },
[205] = { 4, TD, SEN(readahead), "readahead" },
[ 37] = { 2, TS, SEN(kill), "kill" },
[ 38] = { 2, TF|TSTA, SEN(stat), "stat" },
[ 39] = { 4, TD|TN, SEN(sendfile), "sendfile" },
-[ 40] = { 2, TF|TSTA, SEN(lstat), "lstat" },
+[ 40] = { 2, TF|TLST|TSTA, SEN(lstat), "lstat" },
[ 41] = { 1, TD, SEN(dup), "dup" },
[ 42] = { 0, TD, SEN(pipe), "pipe" },
[ 43] = { 1, 0, SEN(times), "times" },
[129] = { 2, TF, SEN(truncate), "truncate" },
[130] = { 2, TD, SEN(ftruncate), "ftruncate" },
[131] = { 2, TD, SEN(flock), "flock" },
-[132] = { 2, TF|TSTA, SEN(lstat64), "lstat64" },
+[132] = { 2, TF|TLST|TSTA, SEN(lstat64), "lstat64" },
[133] = { 6, TN, SEN(sendto), "sendto" },
[134] = { 2, TN, SEN(shutdown), "shutdown" },
[135] = { 4, TN, SEN(socketpair), "socketpair" },
[199] = { 0, TS, SEN(siggetmask), "sgetmask" },
[200] = { 1, TS, SEN(sigsetmask), "ssetmask" },
[201] = { 3, TS, SEN(sigsuspend), "sigsuspend" },
-[202] = { 2, TF|TSTA, SEN(lstat), "oldlstat" },
+[202] = { 2, TF|TLST|TSTA, SEN(lstat), "oldlstat" },
[203] = { 1, TF, SEN(uselib), "uselib" },
[204] = { 3, TD, SEN(readdir), "readdir" },
[205] = { 3, TD, SEN(readahead), "readahead" },
[ 3] = { 1, TD, SEN(close), "close" },
[ 4] = { 2, TF|TSTA, SEN(stat), "stat" },
[ 5] = { 2, TD|TFST|TSTA, SEN(fstat), "fstat" },
-[ 6] = { 2, TF|TSTA, SEN(lstat), "lstat" },
+[ 6] = { 2, TF|TLST|TSTA, SEN(lstat), "lstat" },
[ 7] = { 3, TD, SEN(poll), "poll" },
[ 8] = { 3, TD, SEN(lseek), "lseek" },
[ 9] = { 6, TD|TM|SI, SEN(mmap), "mmap" },
[ 3] = { 1, TD, SEN(close), "close" },
[ 4] = { 2, TF|TSTA, SEN(stat), "stat" },
[ 5] = { 2, TD|TFST|TSTA, SEN(fstat), "fstat" },
-[ 6] = { 2, TF|TSTA, SEN(lstat), "lstat" },
+[ 6] = { 2, TF|TLST|TSTA, SEN(lstat), "lstat" },
[ 7] = { 3, TD, SEN(poll), "poll" },
[ 8] = { 3, TD, SEN(lseek), "lseek" },
[ 9] = { 6, TD|TM|SI, SEN(mmap), "mmap" },
[ 46] = { 2, TF|TSTA, SEN(stat), "stat" },
[ 47] = { 2, TF|TSTA, SEN(stat64), "stat64" },
[ 48] = { 3, TF, SEN(chown), "lchown" },
-[ 49] = { 2, TF|TSTA, SEN(lstat), "lstat" },
-[ 50] = { 2, TF|TSTA, SEN(lstat64), "lstat64" },
+[ 49] = { 2, TF|TLST|TSTA, SEN(lstat), "lstat" },
+[ 50] = { 2, TF|TLST|TSTA, SEN(lstat64), "lstat64" },
[ 51] = { },
[ 52] = { 2, TD, SEN(fchmod), "fchmod" },
[ 53] = { 3, TD, SEN(fchown), "fchown" },
{ "%signal", TRACE_SIGNAL },
{ "%ipc", TRACE_IPC },
{ "%network", TRACE_NETWORK },
+ { "%lstat", TRACE_LSTAT },
{ "%fstat", TRACE_FSTAT },
{ "%%stat", TRACE_STAT_LIKE },
{ "%statfs", TRACE_STATFS },
.BR "\-e\ trace" = memory " (deprecated)"
Trace all memory mapping related system calls.
.TP
+.BR "\-e\ trace" = %lstat
+Trace lstat syscall variants.
+.TP
.BR "\-e\ trace" = %fstat
Trace fstat and fstatat syscall variants.
.TP
#define TP TRACE_PROCESS
#define TS TRACE_SIGNAL
#define TM TRACE_MEMORY
+#define TLST TRACE_LSTAT
#define TFST TRACE_FSTAT
#define TSTA TRACE_STAT_LIKE
#define TSF TRACE_STATFS
#undef TP
#undef TS
#undef TM
+#undef TLST
#undef TFST
#undef TSTA
#undef TSF
#define STACKTRACE_CAPTURE_ON_ENTER 00001000 /* Capture stacktrace on "entering" stage */
#define TRACE_INDIRECT_SUBCALL 00002000 /* Syscall is an indirect socket/ipc subcall. */
#define COMPAT_SYSCALL_TYPES 00004000 /* A compat syscall that uses compat types. */
+#define TRACE_LSTAT 00020000 /* Trace *lstat* syscalls. */
#define TRACE_STATFS 00040000 /* Trace statfs, statfs64, and statvfs syscalls. */
#define TRACE_FSTATFS 00100000 /* Trace fstatfs, fstatfs64 and fstatvfs syscalls. */
#define TRACE_STATFS_LIKE 00200000 /* Trace statfs-like, fstatfs-like and ustat syscalls. */
sun_path.expected \
trace_fstat.in \
trace_fstatfs.in \
+ trace_lstat.in \
trace_stat_like.in \
trace_statfs.in \
trace_statfs_like.in \
times-fail -a12 -e trace=times
trace_fstat > stat.sample; test_trace_expr '' -e%fstat -v -Pstat.sample -P/dev/full
trace_fstatfs test_trace_expr '' -e%fstatfs
+trace_lstat > stat.sample; test_trace_expr '' -e%lstat -v -Pstat.sample -P/dev/full
trace_stat_like > stat.sample; test_trace_expr '' -e%%stat -v -Pstat.sample -P/dev/full
trace_statfs test_trace_expr '' -e%statfs
trace_statfs_like test_trace_expr '' -e%%statfs
#define TP 0
#define TS 0
#define TM 0
+#define TLST 0
#define TFST 0
#define TSTA 0
#define TSF 0
#define TP 0
#define TS 0
#define TM 0
+#define TLST 0
#define TFST 0
#define TSTA 0
#define TSF 0
--- /dev/null
+lstat -a32
+lstat64 -a32
+oldlstat -a32