Skip to content

Commit 970cdbc

Browse files
committed
improve args parsing
1 parent 455ded5 commit 970cdbc

1 file changed

Lines changed: 11 additions & 7 deletions

File tree

src/arch/LinuxArm64InterruptorAgent.ts

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -40,10 +40,12 @@ const A = {
4040
ADDR: {t:T.POINTER64, n:"addr", l:L.VADDR, f:X.RANGE},
4141
CONST_PTR: {t:T.POINTER64, n:"value", c:true},
4242
MPROT: {t:T.INT32, n:"prot", l:L.FLAG, f:X.MPROT},
43+
FMODE: {t:T.INT32, n:"mode", l:L.FLAG, f:X.F_MODE},
4344
CLKID: {t:T.INT32, n:"clockid", l:L.FLAG, f:X.CLK}
4445
}
4546
const RET:any = {
4647
INFO: {t:T.INT32, e:[E.EAGAIN,E.EINVAL,E.EPERM]},
48+
ACCESS: {t:T.INT32, e:[E.EACCES, E.EFAULT, E.EINVAL, E.ELOOP, E.ENAMETOOLONG, E.ENOENT, E.ENOMEM, E.ENOTDIR, E.EOVERFLOW, E.EIO, E.ETXTBSY, E.EROFS]},
4749
STAT: {t:T.INT32, e:[E.EACCES, E.EBADF, E.EFAULT, E.EINVAL, E.ELOOP, E.ENAMETOOLONG, E.ENOENT, E.ENOMEM, E.ENOTDIR, E.EOVERFLOW]},
4850
LINK: {t:T.INT32, e:[E.EACCES,E.EEXIST, E.EFAULT, E.EIO, E.ELOOP, E.EMLINK, E.ENAMETOOLONG, E.ENOENT, E.ENOMEM, E.ENOSPC,E.ENOTDIR, E.EPERM,E.EROFS,E.EXDEV] },
4951
OPEN: {t:T.INT32, e:[E.EACCES,E.EEXIST, E.EFAULT, E.ENODEV, E.ENOENT, E.ENOMEM, E.ENOSPC, E.ENOTDIR, E.ENXIO, E.EPERM, E.EROFS, E.ETXTBSY, E.EFBIG, E.EINTR, E.EISDIR, E.ELOOP, E.ENAMETOOLONG, E.EMFILE,E.ENFILE,E.ENOMEM]},
@@ -105,7 +107,7 @@ const SVC = [
105107
[46,"ftruncate",0x2e,[A.FD,A.LEN],RET.OPEN /* similar to open() */],
106108
[47,"fallocate",0x2f,[
107109
A.FD,"int mode","loff_t offset","loff_t len"]],
108-
[48,"faccessat",0x30,[A.DFD,{t:T.STRING, n:"filename", c:true},"int mode"]],
110+
[48,"faccessat",0x30,[A.DFD,A.CONST_FNAME,A.FMODE],RET.ACCESS],
109111
[49,"chdir",0x31,[{t:T.CHAR_BUFFER, n:"path", l:L.PATH, c:true}]],
110112
[50,"fchdir",0x32,[A.FD],{t:T.INT32, e:[E.EACCES,E.EFAULT,E.EIO,E.ELOOP,E.ENAMETOOLONG,E.ENOENT,E.ENOMEM,E.ENOTDIR,E.EPERM,E.EBADF]}],
111113
[51,"chroot",0x33,[{t:T.CHAR_BUFFER, n:"path", l:L.PATH, c:true}],{t:T.INT32, e:[E.EACCES,E.EFAULT,E.EIO,E.ELOOP,E.ENAMETOOLONG,E.ENOENT,E.ENOMEM,E.ENOTDIR,E.EPERM]}],
@@ -271,12 +273,12 @@ const SVC = [
271273
[195,"shmctl",0xc3,["int shmid","int cmd","struct shmid_ds *buf"]],
272274
[196,"shmat",0xc4,["int shmid","char *shmaddr","int shmflg"]],
273275
[197,"shmdt",0xc5,["char *shmaddr"]],
274-
[198,"socket",0xc6,["int","int","int"]],
276+
[198,"socket",0xc6,[{t:T.INT32, n:"domain", l:L.FLAG, f:X.PF},{t:T.INT32, n:"type", l:L.FLAG, f:X.SOCK},"int"]],
275277
[199,"socketpair",0xc7,["int","int","int","int *"]],
276278
[200,"bind",0xc8,["int","struct sockaddr *","int"]],
277279
[201,"listen",0xc9,["int","int"]],
278280
[202,"accept",0xca,["int","struct sockaddr *","int *"]],
279-
[203,"connect",0xcb,["int","struct sockaddr *","int"]],
281+
[203,"connect",0xcb,[A.FD,"struct sockaddr *","int"]],
280282
[204,"getsockname",0xcc,["int","struct sockaddr *","int *"]],
281283
[205,"getpeername",0xcd,["int","struct sockaddr *","int *"]],
282284
[206,"sendto",0xce,["int","void *","size_t","unsigned","struct sockaddr *","int"]],
@@ -304,8 +306,8 @@ const SVC = [
304306
[222,"mmap",0xde,[A.START_ADDR,A.SIZE, A.MPROT, {t:T.INT32, n:"flags", l:L.FLAG, f:X.MAP},
305307
{t:T.UINT32, n:"fd", l:L.MFD}, {t:T.UINT32, n:"offset", l:L.SIZE}],{t:T.INT32, e:[ E.EACCES, E.EAGAIN, E.EBADF, E.EINVAL, E.ENFILE, E.ENODEV, E.ENOMEM, E.ETXTBSY]}],
306308
[223,"fadvise64",0xdf,[{t:T.UINT32, n:"fd", l:L.FD},"loff_t offset",A.SIZE,"int advice"]],
307-
[224,"swapon",0xe0,["const char *specialfile","int swap_flags"]],
308-
[225,"swapoff",0xe1,["const char *specialfile"]],
309+
[224,"swapon",0xe0,[A.CONST_FNAME,"int swap_flags"]],
310+
[225,"swapoff",0xe1,[A.CONST_FNAME]],
309311
[226,"mprotect",0xe2,[A.ADDR,A.SIZE, A.MPROT],{t:T.INT32, e:[E.EACCES,E.EFAULT,E.EINVAL,E.ENOMEM]}],
310312
[227,"msync",0xe3,[A.ADDR,A.SIZE,{t:T.ULONG, n:"flags", l:L.FLAG, f:X.MS}],{t:T.INT32, e:[E.EBUSY,E.EINVAL,E.ENOMEM]}],
311313
[228,"mlock",0xe4,[A.ADDR,A.SIZE],{t:T.INT32, e:[E.EPERM,E.EINVAL,E.ENOMEM]}],
@@ -392,7 +394,9 @@ let isExcludedFn:any = null;
392394

393395
export const KAPI = {
394396
CONST: DEF,
395-
SVC: SVC_MAP_NAME
397+
SVC: SVC_MAP_NAME,
398+
SVC_ARG: SVC_ARG,
399+
ERR: DEF.ERR
396400
};
397401

398402
export class LinuxArm64InterruptorAgent extends InterruptorAgent{
@@ -539,7 +543,7 @@ export class LinuxArm64InterruptorAgent extends InterruptorAgent{
539543

540544
if(this.output.module){
541545
if(r != null){
542-
l += `[${ r.file!=null ? r.file.path: '<no_path>'} +${pContext.pc.sub(r.base)}]`; ;
546+
l += `[${ r.file!=null ? r.file.path: r.base} +${pContext.pc.sub(r.base)}]`; ;
543547
}else{
544548
l += `[<unknow> lr=${pContext.lr}]`;
545549
}

0 commit comments

Comments
 (0)