NAME=structure variable delete shadowed
FILE=bins/elf/analysis/main_structure
CMDS=<<EOF
aaa
s main
afvs
echo ---
td "struct S1 { int a; int b; int c; char d[256]; short e; }"
afvn s1 var_118h
afvt s1 "struct S1"
afvs
EOF
EXPECT=<<EOF
var char **var_128h @ stack - 0x128
var int var_11ch @ stack - 0x11c
var int64_t var_118h @ stack - 0x118
var int64_t var_114h @ stack - 0x114
var int64_t var_110h @ stack - 0x110
var int64_t var_ch @ stack - 0xc
---
var char **var_128h @ stack - 0x128
var int var_11ch @ stack - 0x11c
var struct S1 s1 @ stack - 0x118
EOF
RUN

NAME=structure offset in disassembly
FILE=bins/elf/analysis/main_structure
CMDS=<<EOF
e asm.bytes=false
aaa
s main
td "struct S1 { int a; int b; int c; char d[256]; short e; }"
afvn s1 var_118h
pi 4 @ 0x004004be
echo ---
afvt s1 "struct S1"
pi 4 @ 0x004004be
EOF
EXPECT=<<EOF
mov dword [s1], 0x01
mov dword [var_114h], 0x02
mov dword [var_110h], 0x03
lea rax, qword [s1]
---
mov dword [s1.a], 0x01
mov dword [s1.b], 0x02
mov dword [s1.c], 0x03
lea rax, qword [s1.a]
EOF
RUN

NAME=structure field rename reflects immediately
FILE=bins/elf/analysis/main_structure
CMDS=<<EOF
e asm.bytes=true
aaa
s main
td "struct S1 { int a; int b; int c; char d[256]; short e; }"
afvn s1 var_118h
afvt s1 "struct S1"
pi 4 @ 0x004004be
t- S1
td "struct S1 { int x; int y; int c; char d[256]; short e; }"
pi 4 @ 0x004004be
EOF
EXPECT=<<EOF
mov dword [s1.a], 0x01
mov dword [s1.b], 0x02
mov dword [s1.c], 0x03
lea rax, qword [s1.a]
mov dword [s1.x], 0x01
mov dword [s1.y], 0x02
mov dword [s1.c], 0x03
lea rax, qword [s1.x]
EOF
RUN
