Skip to content

Commit

Permalink
fi
Browse files Browse the repository at this point in the history
  • Loading branch information
radare committed Sep 30, 2024
1 parent 162f314 commit 46a0f2a
Show file tree
Hide file tree
Showing 14 changed files with 65 additions and 72 deletions.
6 changes: 5 additions & 1 deletion libr/core/disasm.c
Original file line number Diff line number Diff line change
Expand Up @@ -1961,7 +1961,11 @@ static void print_var_summary(RDisasmState *ds, RList *list) {
if (maxsprange > 0) {
r_cons_printf ("%ssp[0x%x..0x%x]", comma, minsprange, maxsprange);
}
r_cons_printf (") ");
if (total_vars > 0) {
r_cons_printf (") ");
} else {
r_cons_printf (")");
}
}
if (total_vars > 0) {
if (total_args < 1) {
Expand Down
4 changes: 3 additions & 1 deletion libr/lang/p/qjs/arch.c
Original file line number Diff line number Diff line change
Expand Up @@ -90,7 +90,9 @@ static bool r2qjs_arch_init(RArchSession *s) {
}

static bool r2qjs_arch_fini(RArchSession *s) {
R_RETURN_VAL_IF_FAIL (s, false);
if (s == NULL) {
return false;
}

RCore *core = s->user;
QjsPluginManager *pm = R_UNWRAP4 (core, lang, session, plugin_data);
Expand Down
24 changes: 23 additions & 1 deletion test/db/anal/arm
Original file line number Diff line number Diff line change
Expand Up @@ -320,7 +320,7 @@ EOF
EXPECT=<<EOF
/ (fcn) fcn.00000000 16
// void fcn.00000000 (int32_t arg2);
| ; arg int32_t arg2 @ r1
| `- args(r1)
| 0x00000000 021081e0 add r1, r1, r2 ; arg2
| 0x00000004 1eff2f01 bxeq lr
| 0x00000008 0020a0e3 mov r2, 0
Expand Down Expand Up @@ -666,6 +666,11 @@ NAME=ELF ARM: function arg
FILE=bins/elf/analysis/armcall
CMDS=<<EOF
e asm.cmt.calls=false
e asm.var.summary=0
afr@main
afva@sym.call
pdf@sym.call
e asm.var.summary=4
afr@main
afva@sym.call
pdf@sym.call
Expand All @@ -685,13 +690,28 @@ EXPECT=<<EOF
| 0x0001043c 0030a0e3 mov r3, 0
| 0x00010440 0300a0e1 mov r0, r3
| 0x00010444 04d04be2 sub sp, fp, 4
\ 0x00010448 0088bde8 pop {fp, pc}
; CALL XREF from main @ 0x10468(x)
/ (fcn) sym.call 44
| `- args(r0) vars(1:sp[0xc..0xc])
| 0x00010420 00482de9 push {fp, lr}
| 0x00010424 04b08de2 add fp, sp, 4
| 0x00010428 08d04de2 sub sp, sp, 8
| 0x0001042c 08000be5 str r0, [var_8h] ; 8 ; arg1
| 0x00010430 14009fe5 ldr r0, [0x0001044c] ; [0x1044c:4]=0x104f0 "%d"
| 0x00010434 08101be5 ldr r1, [var_8h] ; 8
| 0x00010438 a2ffffeb bl sym.imp.printf
| 0x0001043c 0030a0e3 mov r3, 0
| 0x00010440 0300a0e1 mov r0, r3
| 0x00010444 04d04be2 sub sp, fp, 4
\ 0x00010448 0088bde8 pop {fp, pc}
EOF
RUN

NAME=ELF ARM: function args
FILE=bins/elf/analysis/armcall
CMDS=<<EOF
e asm.var.summary=0
e asm.cmt.calls=false
af@main
afva@main
Expand Down Expand Up @@ -782,6 +802,7 @@ NAME=ELF ARM: vars
FILE=bins/elf/analysis/arm-ls
CMDS=<<EOF
e asm.cmt.calls=false
e asm.var.summary=0
s main
af
pd 1~var?
Expand Down Expand Up @@ -1174,6 +1195,7 @@ RUN
NAME=load code refs
FILE=bins/elf/blah.bin
CMDS=<<EOF
e asm.var.summary=0
af
pdf
s main
Expand Down
3 changes: 3 additions & 0 deletions test/db/anal/calls
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ NAME=aac on non executable sections
# BROKEN=1
FILE=bins/elf/analysis/calls_x64
CMDS=<<EOF
e asm.var.summary=0
af
e anal.in=bin.sections.x
aac
Expand Down Expand Up @@ -30,6 +31,7 @@ RUN
NAME=aac on non executable sections (defaults)
FILE=bins/elf/analysis/calls_x64
CMDS=<<EOF
e asm.var.summary=0
af
aac
pdf
Expand Down Expand Up @@ -57,6 +59,7 @@ RUN
NAME=aac on non executable sections (bug)
FILE=bins/elf/analysis/calls_x64
CMDS=<<EOF
e asm.var.summary=0
e anal.in=io.maps.x
af
aac
Expand Down
2 changes: 2 additions & 0 deletions test/db/anal/emu
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,7 @@ NAME=emu paths
FILE=bins/mach0/ret0ret1restr
ARGS=-2
CMDS=<<EOF
e asm.var.summary=0
aeim
?e ret paths
s sym._retbool
Expand Down Expand Up @@ -170,6 +171,7 @@ FILE=bins/mach0/infloop
CMDS=<<EOF
af
aeim
e asm.var.summary=0
e dbg.trace=true
e asm.trace=true
e asm.comments=false
Expand Down
43 changes: 2 additions & 41 deletions test/db/anal/jmptbl
Original file line number Diff line number Diff line change
Expand Up @@ -10,19 +10,7 @@ EXPECT=<<EOF
;-- section.0.__TEXT.__text:
; DATA XREF from sym.func.100004000 @ 0x100004040(r)
276: sym.func.100004000 (int64_t arg1, int64_t arg2, int64_t arg4, int64_t arg5, int64_t arg6, int64_t arg7, int64_t arg_80h);
; arg int64_t arg1 @ x0
; arg int64_t arg2 @ x1
; arg int64_t arg4 @ x3
; arg int64_t arg5 @ x4
; arg int64_t arg6 @ x5
; arg int64_t arg7 @ x6
; arg int64_t arg_80h @ sp+0x100
; var int64_t var_20h @ sp+0x20
; var int64_t var_30h @ sp+0x30
; var int64_t var_40h @ sp+0x40
; var int64_t var_50h @ sp+0x50
; var int64_t var_60h @ sp+0x60
; var int64_t var_70h @ sp+0x70
`- args(x0, x1, x3, x4, x5, x6, sp[0x80..0x80]) vars(6:sp[0x10..0x60])
0x100004000 sub sp, sp, 0x80 ; [00] -r-x section size 13240 named 0.__TEXT.__text
0x100004004 str x28, [var_20h]
0x100004008 stp x27, x26, [var_30h]
Expand Down Expand Up @@ -152,34 +140,7 @@ pdr
EOF
EXPECT=<<EOF
904: sym.func.100004124 (int64_t arg1, int64_t arg2, int64_t arg_140h);
; arg int64_t arg1 @ x0
; arg int64_t arg2 @ x1
; arg int64_t arg_140h @ sp+0x280
; var int64_t var_0h @ sp+0x0
; var int64_t var_8h @ sp+0x8
; var int64_t var_10h @ sp+0x10
; var int64_t var_18h @ sp+0x18
; var int64_t var_20h @ sp+0x20
; var int64_t var_28h @ sp+0x28
; var int64_t var_30h @ sp+0x30
; var int64_t var_38h @ sp+0x38
; var int64_t var_40h @ sp+0x40
; var int64_t var_48h @ sp+0x48
; var int64_t var_50h @ sp+0x50
; var int64_t var_58h @ sp+0x58
; var int64_t var_60h @ sp+0x60
; var int64_t var_68h @ sp+0x68
; var int64_t var_70h @ sp+0x70
; var int64_t var_78h @ sp+0x78
; var int64_t var_80h @ sp+0x80
; var int64_t var_88h @ sp+0x88
; var int64_t var_90h @ sp+0x90
; var int64_t var_e0h @ sp+0xe0
; var int64_t var_f0h @ sp+0xf0
; var int64_t var_100h @ sp+0x100
; var int64_t var_110h @ sp+0x110
; var int64_t var_120h @ sp+0x120
; var int64_t var_130h @ sp+0x130
`- args(x0, x1, sp[0x140..0x140]) vars(25:sp[0x10..0x140])
0x100004124 sub sp, sp, 0x140
0x100004128 str x28, [var_e0h]
0x10000412c stp x27, x26, [var_f0h]
Expand Down
1 change: 1 addition & 0 deletions test/db/anal/mach0
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,7 @@ NAME=analysis macho test
FILE=bins/mach0/ls-m1
ARGS=-a arm -b 64
CMDS=<<EOF
e asm.var.summary=0
aa
pd 4
EOF
Expand Down
27 changes: 9 additions & 18 deletions test/db/anal/mips
Original file line number Diff line number Diff line change
Expand Up @@ -456,8 +456,7 @@ EXPECT=<<EOF
0x8060b4f8 00000000 nop
0x8060b4fc 00000000 nop
(fcn) fcn.8060b500 80
; arg int32_t arg1 @ a0
; arg int32_t arg2 @ a1
`- args(a0, a1)
0x8060b500 002e0500 sll a1, a1, 0x18
0x8060b504 032e0500 sra a1, a1, 0x18
0x8060b508 0f008010 beqz a0, 0x8060b548
Expand All @@ -479,8 +478,7 @@ EXPECT=<<EOF
0x8060b548 0800e003 jr ra
0x8060b54c 00000000 nop
(fcn) fcn.8060b550 36
; arg int32_t arg1 @ a0
; arg int32_t arg2 @ a1
`- args(a0, a1)
0x8060b550 0000a290 lbu v0, (a1)
0x8060b554 05004010 beqz v0, 0x8060b56c
0x8060b558 0100a524 addiu a1, a1, 1
Expand All @@ -492,8 +490,7 @@ EXPECT=<<EOF
0x8060b570 000080a0 sb zero, (a0)
0x8060b574 00000000 nop
(fcn) fcn.8060b578 20
; arg int32_t arg1 @ a0
; arg int32_t arg2 @ a1
`- args(a0, a1)
0x8060b578 e0ffbd27 addiu sp, sp, -0x20
0x8060b57c 542d180c jal fcn.8060b550
0x8060b580 00000000 nop
Expand Down Expand Up @@ -593,8 +590,7 @@ EXPECT=<<EOF
0x8060b4f8 00000000 nop
0x8060b4fc 00000000 nop
(fcn) fcn.8060b500 80
; arg int32_t arg1 @ a0
; arg int32_t arg2 @ a1
`- args(a0, a1)
0x8060b500 002e0500 sll a1, a1, 0x18
0x8060b504 032e0500 sra a1, a1, 0x18
0x8060b508 0f008010 beqz a0, 0x8060b548
Expand All @@ -616,8 +612,7 @@ EXPECT=<<EOF
0x8060b548 0800e003 jr ra
0x8060b54c 00000000 nop
(fcn) fcn.8060b550 36
; arg int32_t arg1 @ a0
; arg int32_t arg2 @ a1
`- args(a0, a1)
0x8060b550 0000a290 lbu v0, (a1)
0x8060b554 05004010 beqz v0, 0x8060b56c
0x8060b558 0100a524 addiu a1, a1, 1
Expand All @@ -629,8 +624,7 @@ EXPECT=<<EOF
0x8060b570 000080a0 sb zero, (a0)
0x8060b574 00000000 nop
(fcn) fcn.8060b578 20
; arg int32_t arg1 @ a0
; arg int32_t arg2 @ a1
`- args(a0, a1)
0x8060b578 e0ffbd27 addiu sp, sp, -0x20
0x8060b57c 542d180c jal fcn.8060b550
0x8060b580 00000000 nop
Expand Down Expand Up @@ -665,8 +659,7 @@ EXPECT=<<EOF
0x8060b4f8 00000000 nop
0x8060b4fc 00000000 nop
/ (fcn) fcn.8060b500 80
| ; arg int32_t arg1 @ a0
| ; arg int32_t arg2 @ a1
| `- args(a0, a1)
| 0x8060b500 002e0500 sll a1, a1, 0x18
| 0x8060b504 032e0500 sra a1, a1, 0x18
| 0x8060b508 0f008010 beqz a0, 0x8060b548
Expand All @@ -688,8 +681,7 @@ EXPECT=<<EOF
| 0x8060b548 0800e003 jr ra
\ 0x8060b54c 00000000 nop
/ (fcn) fcn.8060b550 36
| ; arg int32_t arg1 @ a0
| ; arg int32_t arg2 @ a1
| `- args(a0, a1)
| 0x8060b550 0000a290 lbu v0, (a1)
| 0x8060b554 05004010 beqz v0, 0x8060b56c
| 0x8060b558 0100a524 addiu a1, a1, 1
Expand All @@ -701,8 +693,7 @@ EXPECT=<<EOF
\ 0x8060b570 000080a0 sb zero, (a0)
0x8060b574 00000000 nop
/ (fcn) fcn.8060b578 20
| ; arg int32_t arg1 @ a0
| ; arg int32_t arg2 @ a1
| `- args(a0, a1)
| 0x8060b578 e0ffbd27 addiu sp, sp, -0x20
| 0x8060b57c 542d180c jal fcn.8060b550
| 0x8060b580 00000000 nop
Expand Down
1 change: 1 addition & 0 deletions test/db/anal/types
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ NAME=simple type propagation
FILE=bins/mach0/simple-retype
CMDS=<<EOF
af
e asm.var.summary=0
aaft
afv
?e ---
Expand Down
11 changes: 6 additions & 5 deletions test/db/anal/vars
Original file line number Diff line number Diff line change
Expand Up @@ -146,6 +146,7 @@ RUN
NAME=pdf
FILE=bins/elf/test_o
CMDS=<<EOF
e asm.var.summary=0
af
pdf
afv
Expand Down Expand Up @@ -332,9 +333,7 @@ pd 13
EOF
EXPECT=<<EOF
/ 22: fcn.00000000 (int64_t arg1, int64_t arg2, int64_t arg3);
| ; arg int64_t arg1 @ rcx
| ; arg int64_t arg2 @ rdx
| ; arg int64_t arg3 @ r8
| `- args(rcx, rdx, r8)
| 0x00000000 4053 push rbx
| 0x00000002 4883ec20 sub rsp, 0x20
| 0x00000006 418bd8 mov ebx, r8d ; arg3
Expand All @@ -347,8 +346,7 @@ EXPECT=<<EOF
0x00000017 cc int3
; CALL XREF from fcn.00000000 @ 0x9(x)
/ 5: fcn.00000018 (int64_t arg1, int64_t arg2);
| ; arg int64_t arg1 @ rcx
| ; arg int64_t arg2 @ rdx
| `- args(rcx, rdx)
| 0x00000018 2bca sub ecx, edx ; arg2
| 0x0000001a 8bc1 mov eax, ecx ; arg1
\ 0x0000001c c3 ret
Expand Down Expand Up @@ -448,6 +446,7 @@ NAME=Variable access with misc registers (ARM)
FILE=-
ARGS=-a arm -b 16
CMDS=<<EOF
e asm.var.summary=0
e asm.flags=false
e asm.comments=false
e anal.vars.stackname = true
Expand Down Expand Up @@ -549,6 +548,7 @@ NAME=Stack Variables
FILE=-
ARGS=-a arm -b 16
CMDS=<<EOF
e asm.var.summary=0
e anal.vars.newstack=true
wx 2de9f04fadf54e4da5b088460df1900a0021aaf18007802281463846fff7e0ee4bf2640400214ff448420df5d260fff7d8eec0f2000400214ff48062a4a8fff7
af
Expand All @@ -574,6 +574,7 @@ RUN
NAME=arm64 stack variables
FILE=bins/mach0/arm_snippet_1
CMDS=<<EOF
e asm.var.summary=0
e asm.sub.var=true
af
pdf
Expand Down
3 changes: 1 addition & 2 deletions test/db/anal/x86_16
Original file line number Diff line number Diff line change
Expand Up @@ -127,8 +127,7 @@ pdf
EOF:
EXPECT=<<EOF
/ 11: fcn.00000000 (int16_t arg_6h, int16_t arg_ah);
| ; arg int16_t arg_6h @ bp+0x6
| ; arg int16_t arg_ah @ bp+0xa
| `- args(sp[0x4..0x8])
| 0000:0000 55 push bp
| 0000:0001 8bec mov bp, sp
| 0000:0003 c57606 lds si, [arg_6h]
Expand Down
8 changes: 7 additions & 1 deletion test/db/anal/x86_32
Original file line number Diff line number Diff line change
Expand Up @@ -250,7 +250,10 @@ RUN

NAME=x86: fastcall argument analysis
FILE=bins/elf/analysis/fast
CMDS=aa ; s sym.fastcaslled ; afc fastcall ; afva ; pdf~arg,var
CMDS=<<EOF
e asm.var.summary=0
aa ; s sym.fastcaslled ; afc fastcall ; afva ; pdf~arg,var
EOF
EXPECT=<<EOF
/ 59: sym.fastcaslled (int32_t arg1, int32_t arg2, int32_t arg_8h, int32_t arg_ch);
| ; arg int32_t arg1 @ ecx
Expand Down Expand Up @@ -3223,6 +3226,7 @@ NAME=reflines offset
FILE=malloc://1023
CMDS=<<EOF
e asm.cmt.calls=false
e asm.var.summary=0
e asm.bits=32
e asm.cpu=x86
e asm.arch=x86
Expand Down Expand Up @@ -3287,6 +3291,7 @@ NAME=reflines offset (ascii)
FILE=malloc://1023
CMDS=<<EOF
e asm.cmt.calls=false
e asm.var.summary=0
e asm.bits=32
e asm.cpu=x86
e anal.cpu=x86
Expand Down Expand Up @@ -3366,6 +3371,7 @@ NAME=afva for esp based vars
FILE=malloc://1024
CMDS=<<EOF
e asm.bits=32
e asm.var.summary=0
e asm.arch = x86
e anal.arch = x86
e anal.vars.stackname=true
Expand Down
Loading

0 comments on commit 46a0f2a

Please sign in to comment.