mirror of
https://github.com/radareorg/radare2.git
synced 2025-02-05 13:06:52 +00:00
Fix afvd
using wrong var offsets (#17572)
This commit is contained in:
parent
be39c822cf
commit
62eb8e62da
@ -30,8 +30,9 @@ R_API bool r_anal_var_display(RAnal *anal, RAnalVar *var) {
|
||||
}
|
||||
break;
|
||||
case R_ANAL_VAR_KIND_BPV: {
|
||||
ut32 udelta = R_ABS (var->delta + var->fcn->bp_off);
|
||||
char sign = var->delta >= 0 ? '+' : '-';
|
||||
const st32 real_delta = var->delta + var->fcn->bp_off;
|
||||
const ut32 udelta = R_ABS (real_delta);
|
||||
const char sign = real_delta >= 0 ? '+' : '-';
|
||||
if (usePxr) {
|
||||
anal->cb_printf ("pxr $w @%s%c0x%x\n", anal->reg->name[R_REG_NAME_BP], sign, udelta);
|
||||
} else {
|
||||
@ -39,14 +40,16 @@ R_API bool r_anal_var_display(RAnal *anal, RAnalVar *var) {
|
||||
}
|
||||
}
|
||||
break;
|
||||
case R_ANAL_VAR_KIND_SPV:
|
||||
case R_ANAL_VAR_KIND_SPV: {
|
||||
ut32 udelta = R_ABS (var->delta + var->fcn->maxstack);
|
||||
if (usePxr) {
|
||||
anal->cb_printf ("pxr $w @%s+0x%x\n", anal->reg->name[R_REG_NAME_SP], var->delta);
|
||||
anal->cb_printf ("pxr $w @%s+0x%x\n", anal->reg->name[R_REG_NAME_SP], udelta);
|
||||
} else {
|
||||
anal->cb_printf ("pf %s @ %s+0x%x\n", fmt, anal->reg->name[R_REG_NAME_SP], var->delta);
|
||||
anal->cb_printf ("pf %s @ %s+0x%x\n", fmt, anal->reg->name[R_REG_NAME_SP], udelta);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
free (fmt);
|
||||
return true;
|
||||
}
|
||||
|
28
test/db/cmd/cmd_afvd
Normal file
28
test/db/cmd/cmd_afvd
Normal file
@ -0,0 +1,28 @@
|
||||
NAME=afvd
|
||||
FILE=-
|
||||
CMDS=<<EOF
|
||||
e anal.vars.stackname=true
|
||||
e asm.arch=x86
|
||||
e asm.bits=64
|
||||
wx 554889e54883ec2848897c24204889742418488995e0ffffff48898dd8ffffff4883c4285dc3
|
||||
af
|
||||
aei
|
||||
aeim
|
||||
dr rdi=0x1111111111111111
|
||||
dr rsi=0x2222222222222222
|
||||
dr rdx=0x3333333333333333
|
||||
dr rcx=0x4444444444444444
|
||||
7ds
|
||||
afvd
|
||||
EOF
|
||||
EXPECT=<<EOF
|
||||
arg arg1 = : rdi : 0x1111111111111111
|
||||
arg arg2 = : rsi : 0x2222222222222222
|
||||
arg arg3 = : rdx : 0x3333333333333333
|
||||
arg arg4 = : rcx : 0x4444444444444444
|
||||
var var_28h = 0x00177fd8 = (qword)0x3333333333333333
|
||||
var var_30h = 0x00177fd0 = (qword)0x4444444444444444
|
||||
var var_10h = 0x00177ff0 = (qword)0x1111111111111111
|
||||
var var_18h = 0x00177fe8 = (qword)0x2222222222222222
|
||||
EOF
|
||||
RUN
|
Loading…
x
Reference in New Issue
Block a user