Fix MIPS syscall analysis (#16751) ##anal

This commit is contained in:
Sylvain Pelissier 2020-05-03 11:03:08 +02:00 committed by GitHub
parent d2b1d1359e
commit 502b4b0f52
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 59 additions and 45 deletions

View File

@ -1520,7 +1520,7 @@ R_API char *cmd_syscall_dostr(RCore *core, st64 n, ut64 addr) {
// XXX this is a hack to make syscall args work on x86-32 and x86-64
// we need to shift sn first.. which is bad, but needs to be redesigned
int regidx = i;
if (core->assembler->bits == 32) {
if (core->assembler->bits == 32 && !strcmp (core->assembler->cpu, "x86")) {
regidx++;
}
ut64 arg = r_debug_arg_get (core->dbg, R_ANAL_CC_TYPE_FASTCALL, regidx);

View File

@ -1,45 +1,45 @@
_=4000
syscall=4000,1,1,i
exit=4001,1,1,i
fork=4002,2,0,
read=4003,3,3,ipi
write=4004,4,3,izi
open=4005,5,3,zxx
close=4006,6,1,i
waitpid=4007,7,3,ipx
creat=4008,8,2,zx
link=4009,9,2,zz
unlink=4010,10,1,z
execve=4011,11,3,zzz
chdir=4012,12,1,z
time=4013,13,1,p
mknod=4014,14,1,zxi
chmod=4015,15,1,zx
lchown=4016,16,1,zii
getpid=4020,20,0,
setuid=4023,23,1,i
getuid=4024,24,0,
ptrace=4026,26,4,
utime=4030,30,2,
access=4033,33,2,
kill=4037,37,2,
dup=4041,41,2,
brk=4045,45,1,
signal=4048,48,2,
ioctl=4054,54,3,
mmap=4090,90,6,
munmap=4091,91,1,
socketcall=4000+102,102,2,
sigreturn=4000+119,119,1,
clone=4000+120,120,4,
mprotect=4000+125,125,3,
rt_sigaction=4000+174,174,3,
rt_sigprocmask=4000+175,175,3,
sysctl=4000+149,149,1,
mmap2=4000+192,192,6,
fstat64=4000+197,197,2,
fcntl64=4000+221,221,3,
gettid=4000+224,224,0,
set_thread_area=4000+243,243,2,
get_thread_area=4000+244,244,2,
exit_group=4000+252,252,1,
syscall=0xfa0,4000,1,i
exit=0xfa0,4001,1,i
fork=0xfa0,4002,0,
read=0xfa0,4003,3,ipi
write=0xfa0,4004,3,izi
open=0xfa0,4005,3,zxx
close=0xfa0,4006,1,i
waitpid=0xfa0,4007,3,ipx
creat=0xfa0,4008,2,zx
link=0xfa0,4009,2,zz
unlink=0xfa0,4010,1,z
execve=0xfa0,4011,3,zzz
chdir=0xfa0,4012,1,z
time=0xfa0,4013,1,p
mknod=0xfa0,4014,1,zxi
chmod=0xfa0,4015,1,zx
lchown=0xfa0,4016,1,zii
getpid=0xfa0,4020,0,
setuid=0xfa0,4023,1,i
getuid=0xfa0,4024,0,
ptrace=0xfa0,4026,4,
utime=0xfa0,4030,2,
access=0xfa0,4033,2,
kill=0xfa0,4037,2,
dup=0xfa0,4041,2,
brk=0xfa0,4045,1,
signal=0xfa0,4048,2,
ioctl=0xfa0,4054,3,
mmap=0xfa0,4090,6,
munmap=0xfa0,4091,1,
socketcall=0xfa0+102,4102,2,
sigreturn=0xfa0+119,4119,1,
clone=0xfa0+120,4120,4,
mprotect=0xfa0+125,4125,3,
rt_sigaction=0xfa0+174,4174,3,
rt_sigprocmask=0xfa0+175,4175,3,
sysctl=0xfa0+149,4149,1,
mmap2=0xfa0+192,4192,6,
fstat64=0xfa0+197,4197,2,
fcntl64=0xfa0+221,4221,3,
gettid=0xfa0+224,4224,0,
set_thread_area=0xfa0+243,4243,2,
get_thread_area=0xfa0+244,4244,2,
exit_group=0xfa0+252,4252,1,

View File

@ -1773,3 +1773,17 @@ EXPECT=<<EOF
0x415424
EOF
RUN
NAME=mips linux syscall
FILE=bins/elf/syscall_mips
CMDS=<<EOF
s entry0
aei
aeip
6aes
as
EOF
EXPECT=<<EOF
0xfa4 = write (1, "Hello, world!.", 15)
EOF
RUN