rizin/test/prj/v9-bp-vars.rzdb
Florian Märkl d9950f7479
Replace bp/sp-vars by generic stack-based ones (#3167)
Variables on the stack are not identified by bp/sp+<offset> anymore, but
by their address from the bottom of the stack frame (RzStackAddr),
independent of how they are accessed.
So now there are only two kinds of variables: stack and register.

This required some major refactoring and other changes:
* RzAnalysisVar.isarg was removed. Whether a variable is an argument is
  now specified implicitly by its storage location.
* Varsub of struct fields had to be rewritten so fields can be queried
  by arbitrary stack addresses using the recently introduced sp
  tracking, as the old approach to fill a list with all fields would not
  work anymore.
* analysis.vars.stackname was removed, new behavior is more similar to
  this being true before.
* Variables will not be created at stack+0 now, because the return
  address is there. Before, vars were only created sometimes in such
  cases.
* Variables created from bp offsets in x86 are not deleted anymore if
  the function's bp_frame is false (see removed
  rz_analysis_function_delete_vars_by_kind(fcn,
  RZ_ANALYSIS_VAR_KIND_BPV); calls). This may lead to some
  false-positive detected variables. Whether this really is a practical
  issue is yet to be seen. At least there are no meaningful tests that
  are broken by this.
* Applying variables from dwarf needed some fixes for determining the
  correct stack locations of variables in order to write meaningful
  tests. The handling is still not entirely correct for all
  possibilities of dwarf info, but at least the changed/added test cases
  are right and serve as a reference for future changes.
* Projects version 11 is introduced.
* afvb commands have been removed, afvs now handles all stack vars.
2023-01-02 11:36:21 +08:00

642 lines
26 KiB
Text

/
type=rizin rz-db project
version=9
/core
blocksize=0x100
offset=0x1050
/core/analysis
/core/analysis/blocks
0x1000={"size":16,"jump":4114,"fail":4112,"traced":true,"ninstr":4,"op_pos":[4,11,14],"stackptr":8,"parent_stackptr":0}
0x1010={"size":2,"jump":4114,"ninstr":1,"stackptr":-8,"parent_stackptr":8}
0x1012={"size":5,"traced":true,"ninstr":2,"op_pos":[4],"stackptr":-8,"parent_stackptr":8}
0x1030={"size":6,"ninstr":1,"parent_stackptr":0}
0x1040={"size":6,"ninstr":1,"parent_stackptr":0}
0x1050={"size":33,"traced":true,"ninstr":11,"op_pos":[2,5,6,9,13,14,15,18,20,27],"stackptr":8,"parent_stackptr":0}
0x1080={"size":19,"jump":4264,"fail":4243,"traced":true,"ninstr":4,"op_pos":[7,14,17],"parent_stackptr":0}
0x1093={"size":12,"jump":4264,"fail":4255,"traced":true,"ninstr":3,"op_pos":[7,10],"parent_stackptr":0}
0x109f={"size":2,"ninstr":1,"parent_stackptr":0}
0x10a8={"size":1,"ninstr":1,"stackptr":-8,"parent_stackptr":0}
0x10b0={"size":36,"jump":4328,"fail":4308,"traced":true,"ninstr":9,"op_pos":[7,14,17,20,24,28,31,34],"parent_stackptr":0}
0x10d4={"size":12,"jump":4328,"fail":4320,"traced":true,"ninstr":3,"op_pos":[7,10],"parent_stackptr":0}
0x10e0={"size":2,"ninstr":1,"parent_stackptr":0}
0x10e8={"size":1,"ninstr":1,"stackptr":-8,"parent_stackptr":0}
0x10f0={"size":9,"jump":4392,"fail":4345,"traced":true,"ninstr":2,"op_pos":[7],"parent_stackptr":0}
0x10f9={"size":14,"jump":4371,"fail":4359,"traced":true,"ninstr":4,"op_pos":[1,9,12],"stackptr":8,"parent_stackptr":0}
0x1107={"size":12,"jump":4371,"traced":true,"ninstr":2,"op_pos":[7],"stackptr":-8,"parent_stackptr":8}
0x1113={"size":14,"traced":true,"ninstr":4,"op_pos":[5,12,13],"stackptr":-8,"parent_stackptr":8}
0x1128={"size":1,"ninstr":1,"stackptr":-8,"parent_stackptr":0}
0x1130={"size":5,"jump":4272,"ninstr":1,"parent_stackptr":0}
0x1135={"size":7,"traced":true,"ninstr":5,"op_pos":[1,4,5,6],"stackptr":-8,"parent_stackptr":0}
0x113c={"size":57,"traced":true,"ninstr":14,"op_pos":[1,4,8,15,22,29,36,41,46,49,52,55,56],"stackptr":8,"parent_stackptr":0}
0x1175={"size":54,"traced":true,"ninstr":15,"op_pos":[1,4,8,11,15,20,25,27,34,37,42,47,52,53],"stackptr":8,"parent_stackptr":0}
0x11ac={"size":9,"traced":true,"ninstr":3,"op_pos":[4,8],"stackptr":-8,"parent_stackptr":0}
/core/analysis/callables
/core/analysis/cc
amd64=cc
amd64syscall=cc
cc.amd64.arg0=rdi
cc.amd64.arg1=rsi
cc.amd64.arg10=xmm4
cc.amd64.arg2=rdx
cc.amd64.arg3=rcx
cc.amd64.arg4=r8
cc.amd64.arg5=r9
cc.amd64.arg6=xmm0
cc.amd64.arg7=xmm1
cc.amd64.arg8=xmm2
cc.amd64.arg9=xmm3
cc.amd64.ret=rax
cc.amd64syscall.arg0=rdi
cc.amd64syscall.arg1=rsi
cc.amd64syscall.arg2=rdx
cc.amd64syscall.arg3=r10
cc.amd64syscall.arg4=r8
cc.amd64syscall.arg5=r9
cc.amd64syscall.ret=rax
cc.ms.arg0=rcx
cc.ms.arg1=rdx
cc.ms.arg2=r8
cc.ms.arg3=r9
cc.ms.argn=stack
cc.ms.ret=rax
cc.reg.arg0=rdi
cc.reg.arg1=rsi
cc.reg.arg2=rdx
cc.reg.arg3=rcx
cc.reg.ret=rdi
cc.swift.arg0=rdi
cc.swift.arg1=rsi
cc.swift.arg10=xmm4
cc.swift.arg2=rdx
cc.swift.arg3=rcx
cc.swift.arg4=r8
cc.swift.arg5=r9
cc.swift.arg6=xmm0
cc.swift.arg7=xmm1
cc.swift.arg8=xmm2
cc.swift.arg9=xmm3
cc.swift.error=r12
cc.swift.ret=rax
cc.swift.self=r13
default.cc=amd64
ms=cc
reg=cc
swift=cc
/core/analysis/classes
/core/analysis/classes/attrs
/core/analysis/functions
0x1000={"name":"sym._init","bits":64,"type":4,"cc":"amd64","stack":-8,"maxstack":8,"ninstr":7,"bp_frame":true,"bbs":[4096,4112,4114]}
0x1030={"name":"sym.imp.printf","bits":64,"type":4,"cc":"amd64","stack":0,"maxstack":0,"ninstr":1,"bp_frame":true,"bbs":[4144]}
0x1040={"name":"sym.imp.__cxa_finalize","bits":64,"type":4,"cc":"amd64","stack":0,"maxstack":0,"ninstr":1,"bp_frame":true,"bbs":[4160]}
0x1050={"name":"entry0","bits":64,"type":1,"cc":"amd64","stack":8,"maxstack":8,"ninstr":11,"bp_frame":true,"bbs":[4176],"vars":[{"name":"arg3","type":"int64_t","kind":"r","reg":"rdx","arg":true,"accs":[{"off":2,"type":"r","reg":"rdx"}]}]}
0x1080={"name":"fcn.00001080","bits":64,"type":1,"cc":"amd64","stack":0,"maxstack":0,"ninstr":9,"bp_frame":true,"bbs":[4224,4243,4255,4264]}
0x10f0={"name":"entry.fini0","bits":64,"type":1,"cc":"amd64","stack":-8,"maxstack":8,"ninstr":13,"bp_frame":true,"bp_off":8,"bbs":[4336,4345,4359,4371,4392]}
0x1130={"name":"entry.init0","bits":64,"type":1,"cc":"amd64","stack":0,"maxstack":0,"ninstr":15,"bp_frame":true,"bbs":[4272,4308,4320,4328,4400]}
0x1135={"name":"dbg.leaffunc","bits":64,"type":4,"cc":"amd64","stack":-8,"maxstack":8,"ninstr":5,"bp_frame":true,"bp_off":8,"bbs":[4405]}
0x113c={"name":"dbg.varfunc","bits":64,"type":4,"cc":"amd64","stack":8,"maxstack":24,"ninstr":14,"bp_frame":true,"bp_off":8,"bbs":[4412],"vars":[{"name":"lightbulb","type":"int","kind":"b","delta":-24,"accs":[{"off":8,"type":"w","sp":18446744073709551600,"reg":"rbp"},{"off":52,"type":"r","sp":18446744073709551600,"reg":"rbp"}]},{"name":"sun","type":"int","kind":"b","delta":-20,"accs":[{"off":15,"type":"w","sp":18446744073709551604,"reg":"rbp"},{"off":49,"type":"w","sp":18446744073709551604,"reg":"rbp"}]},{"name":"last","type":"int","kind":"b","delta":-16,"accs":[{"off":22,"type":"w","sp":18446744073709551608,"reg":"rbp"}]},{"name":"chance","type":"int","kind":"b","delta":-12,"accs":[{"off":29,"type":"w","sp":18446744073709551612,"reg":"rbp"},{"off":46,"type":"r","sp":18446744073709551612,"reg":"rbp"}]}]}
0x1175={"name":"dbg.main","bits":64,"type":4,"cc":"amd64","stack":8,"maxstack":24,"ninstr":15,"bp_frame":true,"bp_off":8,"bbs":[4469],"vars":[{"name":"var_4h","type":"int","kind":"b","delta":-12,"accs":[{"off":8,"type":"w","sp":18446744073709551612,"reg":"rbp"}]},{"name":"var_10h","type":"char **","kind":"b","delta":-24,"accs":[{"off":11,"type":"w","sp":18446744073709551600,"reg":"rbp"}]},{"name":"argc","type":"int","kind":"r","reg":"rdi","arg":true,"accs":[{"off":8,"type":"r","reg":"rdi"}]},{"name":"argv","type":"char **","kind":"r","reg":"rsi","arg":true,"accs":[{"off":11,"type":"r","reg":"rsi"}]}]}
0x11ac={"name":"sym._fini","bits":64,"type":4,"cc":"amd64","stack":-8,"maxstack":8,"ninstr":3,"bp_frame":true,"bbs":[4524]}
/core/analysis/hints
/core/analysis/imports
/core/analysis/meta
/core/analysis/meta/spaces
name=CS
spacestack=["*"]
/core/analysis/meta/spaces/spaces
bin=s
/core/analysis/noreturn
/core/analysis/typelinks
/core/analysis/types
FILE=typedef
__div_t=struct
__idtype=enum
__imaxdiv_t=struct
__ldiv_t=struct
__lldiv_t=struct
__siginfo_t=struct
__sigset_t=struct
_fd_set=struct
access_perm=enum
bool=type
char=type
char *=type
char16_t=type
char32_t=type
char8_t=type
clock_t=typedef
div_t=typedef
double=type
enum.__idtype=P_ALL,P_GID,P_PGID
enum.__idtype.0x0=P_ALL
enum.__idtype.0x1=P_GID
enum.__idtype.0x2=P_PGID
enum.__idtype.P_ALL=0x0
enum.__idtype.P_GID=0x1
enum.__idtype.P_PGID=0x2
enum.access_perm=F_OK,X_OK,W_OK,R_OK,WX_OK,RX_OK,RW_OK,RWX_OK
enum.access_perm.0x0=F_OK
enum.access_perm.0x1=X_OK
enum.access_perm.0x2=W_OK
enum.access_perm.0x3=WX_OK
enum.access_perm.0x4=R_OK
enum.access_perm.0x5=RX_OK
enum.access_perm.0x6=RW_OK
enum.access_perm.0x7=RWX_OK
enum.access_perm.F_OK=0x0
enum.access_perm.RWX_OK=0x7
enum.access_perm.RW_OK=0x6
enum.access_perm.RX_OK=0x5
enum.access_perm.R_OK=0x4
enum.access_perm.WX_OK=0x3
enum.access_perm.W_OK=0x2
enum.access_perm.X_OK=0x1
enum.sock_domain=AF_UNIX,AF_INET,AF_AX25,AF_IPX,AF_APPLETALK,AF_X25,AF_INET6,AF_DECnet,AF_KEY,AF_NETLINK,AF_PACKET,AF_RDS,AF_PPPOX,AF_LLC,AF_IB,AF_MPLS,AF_CAN,AF_TIPC,AF_BLUETOOTH,AF_ALG,AF_VSOCK,AF_KCM,AF_XDP
enum.sock_domain.0x1=AF_UNIX
enum.sock_domain.0x10=AF_INET6
enum.sock_domain.0x12=AF_DECnet
enum.sock_domain.0x15=AF_KEY
enum.sock_domain.0x16=AF_NETLINK
enum.sock_domain.0x17=AF_PACKET
enum.sock_domain.0x2=AF_INET
enum.sock_domain.0x21=AF_RDS
enum.sock_domain.0x24=AF_PPPOX
enum.sock_domain.0x26=AF_LLC
enum.sock_domain.0x27=AF_IB
enum.sock_domain.0x28=AF_MPLS
enum.sock_domain.0x29=AF_CAN
enum.sock_domain.0x3=AF_AX25
enum.sock_domain.0x30=AF_TIPC
enum.sock_domain.0x31=AF_BLUETOOTH
enum.sock_domain.0x38=AF_ALG
enum.sock_domain.0x4=AF_IPX
enum.sock_domain.0x40=AF_VSOCK
enum.sock_domain.0x41=AF_KCM
enum.sock_domain.0x44=AF_XDP
enum.sock_domain.0x5=AF_APPLETALK
enum.sock_domain.0x9=AF_X25
enum.sock_domain.AF_ALG=0x38
enum.sock_domain.AF_APPLETALK=0x5
enum.sock_domain.AF_AX25=0x3
enum.sock_domain.AF_BLUETOOTH=0x31
enum.sock_domain.AF_CAN=0x29
enum.sock_domain.AF_DECnet=0x12
enum.sock_domain.AF_IB=0x27
enum.sock_domain.AF_INET=0x2
enum.sock_domain.AF_INET6=0x10
enum.sock_domain.AF_IPX=0x4
enum.sock_domain.AF_KCM=0x41
enum.sock_domain.AF_KEY=0x15
enum.sock_domain.AF_LLC=0x26
enum.sock_domain.AF_MPLS=0x28
enum.sock_domain.AF_NETLINK=0x16
enum.sock_domain.AF_PACKET=0x17
enum.sock_domain.AF_PPPOX=0x24
enum.sock_domain.AF_RDS=0x21
enum.sock_domain.AF_TIPC=0x30
enum.sock_domain.AF_UNIX=0x1
enum.sock_domain.AF_VSOCK=0x40
enum.sock_domain.AF_X25=0x9
enum.sock_domain.AF_XDP=0x44
enum.sock_type=SOCK_STREAM,SOCK_DGRAM,SOCK_SEQPACKET,SOCK_RAW,SOCK_RDM,SOCK_PACKET,SOCK_DCCP
enum.sock_type.0x1=SOCK_DGRAM
enum.sock_type.0x2=SOCK_STREAM
enum.sock_type.0x3=SOCK_RAW
enum.sock_type.0x4=SOCK_RDM
enum.sock_type.0x5=SOCK_SEQPACKET
enum.sock_type.0x6=SOCK_DCCP
enum.sock_type.0x7=SOCK_PACKET
enum.sock_type.SOCK_DCCP=0x6
enum.sock_type.SOCK_DGRAM=0x1
enum.sock_type.SOCK_PACKET=0x7
enum.sock_type.SOCK_RAW=0x3
enum.sock_type.SOCK_RDM=0x4
enum.sock_type.SOCK_SEQPACKET=0x5
enum.sock_type.SOCK_STREAM=0x2
fd_mask=typedef
fd_set=typedef
fenv_t=typedef
fexcept_t=typedef
float=type
fpos_t=typedef
gid_t=type
id_t=type
idtype_t=typedef
imaxdiv_t=typedef
int=type
int16_t=type
int32_t=type
int64_t=type
int8_t=type
intmax_t=type
intptr_t=type
jmp_buf=typedef
lconv=struct
ldiv_t=typedef
lldiv_t=typedef
locale_t=typedef
long=type
long double=type
long int=type
long long=type
long long int=type
long unsigned int=type
mbstate_t=typedef
nl_item=typedef
pid_t=type
ptrdiff_t=type
short=type
short int=type
short unsigned int=type
sigaction=struct
siginfo_t=typedef
signed char=type
sigset_t=typedef
sigval=union
size_t=type
sock_domain=enum
sock_type=enum
sockaddr=struct
socklen_t=typedef
ssize_t=type
std__type_info=struct
struct.__div_t=quot,rem
struct.__div_t.quot=int,0,0
struct.__div_t.rem=int,2,0
struct.__imaxdiv_t=quot,rem
struct.__imaxdiv_t.quot=intmax_t,0,0
struct.__imaxdiv_t.rem=intmax_t,8,0
struct.__ldiv_t=quot,rem
struct.__ldiv_t.quot=long int,0,0
struct.__ldiv_t.rem=long int,4,0
struct.__lldiv_t=quot,rem
struct.__lldiv_t.quot=long long int,0,0
struct.__lldiv_t.rem=long long int,4,0
struct.__siginfo_t=si_signo,si_code,si_value,si_errno,si_pid,si_uid,si_addr,si_status,si_band
struct.__siginfo_t.si_addr=void *,28,0
struct.__siginfo_t.si_band=int,36,0
struct.__siginfo_t.si_code=int,4,0
struct.__siginfo_t.si_errno=int,16,0
struct.__siginfo_t.si_pid=pid_t,20,0
struct.__siginfo_t.si_signo=int,0,0
struct.__siginfo_t.si_status=int,32,0
struct.__siginfo_t.si_uid=uid_t,24,0
struct.__siginfo_t.si_value=union sigval,8,0
struct.__sigset_t=sig
struct.__sigset_t.sig=unsigned long,0,0
struct._fd_set=fds_bits
struct._fd_set.fds_bits=fd_mask,0,0
struct.sigaction=sa_handler,sa_flags,sa_restorer,sa_mask
struct.sigaction.sa_flags=unsigned long,8,0
struct.sigaction.sa_handler=void *,0,0
struct.sigaction.sa_mask=sigset_t,20,0
struct.sigaction.sa_restorer=void *,12,0
struct.timespec=tv_sec,tv_nsec
struct.timespec.tv_nsec=long,8,0
struct.timespec.tv_sec=time_t,0,0
struct.timeval=tv_sec,tv_usec
struct.timeval.tv_sec=time_t,0,0
struct.timeval.tv_usec=suseconds_t,8,0
struct.tm=tm_sec,tm_min,tm_hour,tm_mday,tm_mon,tm_year,tm_wday,tm_yday,tm_isdst
struct.tm.tm_hour=int,8,0
struct.tm.tm_isdst=int,32,0
struct.tm.tm_mday=int,12,0
struct.tm.tm_min=int,4,0
struct.tm.tm_mon=int,16,0
struct.tm.tm_sec=int,0,0
struct.tm.tm_wday=int,24,0
struct.tm.tm_yday=int,28,0
struct.tm.tm_year=int,20,0
suseconds_t=typedef
time_t=typedef
timespec=struct
timeval=struct
tm=struct
type.bool=b
type.bool.size=8
type.bool.typeclass=None
type.char=c
type.char *=z
type.char *.size=64
type.char *.typeclass=None
type.char.size=8
type.char.typeclass=Signed Integral
type.char16_t=c
type.char16_t.size=16
type.char16_t.typeclass=Signed Integral
type.char32_t=c
type.char32_t.size=32
type.char32_t.typeclass=Signed Integral
type.char8_t=c
type.char8_t.size=8
type.char8_t.typeclass=Signed Integral
type.double=F
type.double.size=64
type.double.typeclass=Floating
type.float=f
type.float.size=32
type.float.typeclass=Floating
type.gid_t=q
type.gid_t.size=64
type.gid_t.typeclass=Integral
type.id_t=q
type.id_t.size=64
type.id_t.typeclass=Integral
type.int=d
type.int.size=32
type.int.typeclass=Signed Integral
type.int16_t=w
type.int16_t.size=16
type.int16_t.typeclass=Signed Integral
type.int32_t=d
type.int32_t.size=32
type.int32_t.typeclass=Signed Integral
type.int64_t=q
type.int64_t.size=64
type.int64_t.typeclass=Signed Integral
type.int8_t=b
type.int8_t.size=8
type.int8_t.typeclass=Signed Integral
type.intmax_t=q
type.intmax_t.size=64
type.intmax_t.typeclass=Signed Integral
type.intptr_t=q
type.intptr_t.size=64
type.intptr_t.typeclass=Signed Integral
type.long=x
type.long double=F
type.long double.size=64
type.long double.typeclass=Floating
type.long int=x
type.long int.size=64
type.long int.typeclass=Signed Integral
type.long long=q
type.long long int=q
type.long long int.size=64
type.long long int.typeclass=Signed Integral
type.long long.size=64
type.long long.typeclass=Signed Integral
type.long unsigned int.size=64
type.long unsigned int.typeclass=None
type.long.size=64
type.long.typeclass=Signed Integral
type.pid_t=q
type.pid_t.size=64
type.pid_t.typeclass=Integral
type.ptrdiff_t=q
type.ptrdiff_t.size=64
type.ptrdiff_t.typeclass=Integral
type.short=w
type.short int.size=16
type.short int.typeclass=None
type.short unsigned int.size=16
type.short unsigned int.typeclass=None
type.short.size=16
type.short.typeclass=Signed Integral
type.signed char.size=8
type.signed char.typeclass=None
type.size_t=q
type.size_t.size=64
type.size_t.typeclass=Unsigned Integral
type.ssize_t=q
type.ssize_t.size=64
type.ssize_t.typeclass=Signed Integral
type.uid_t=q
type.uid_t.size=64
type.uid_t.typeclass=Integral
type.uint16_t=w
type.uint16_t.size=16
type.uint16_t.typeclass=Unsigned Integral
type.uint32_t=d
type.uint32_t.size=32
type.uint32_t.typeclass=Unsigned Integral
type.uint64_t=q
type.uint64_t.size=64
type.uint64_t.typeclass=Unsigned Integral
type.uint8_t=b
type.uint8_t.size=8
type.uint8_t.typeclass=Unsigned Integral
type.uintmax_t=q
type.uintmax_t.size=64
type.uintmax_t.typeclass=Unsigned Integral
type.uintptr_t=q
type.uintptr_t.size=64
type.uintptr_t.typeclass=Unsigned Integral
type.unknown_t=q
type.unknown_t.size=64
type.unknown_t.typeclass=Integral
type.unsigned char=b
type.unsigned char.size=8
type.unsigned char.typeclass=Unsigned Integral
type.unsigned int=i
type.unsigned int.size=32
type.unsigned int.typeclass=Unsigned Integral
type.unsigned long=d
type.unsigned long long=q
type.unsigned long long.size=64
type.unsigned long long.typeclass=Unsigned Integral
type.unsigned long.size=32
type.unsigned long.typeclass=Unsigned Integral
type.unsigned short=w
type.unsigned short.size=16
type.unsigned short.typeclass=Unsigned Integral
type.void *=p
type.void *.size=64
type.void *.typeclass=None
type.void.size=0
type.void.typeclass=None
typedef.FILE=void
typedef.clock_t=void
typedef.div_t=struct __div_t
typedef.fd_mask=long int
typedef.fd_set=struct _fd_set
typedef.fenv_t=void
typedef.fexcept_t=void
typedef.fpos_t=void
typedef.idtype_t=enum __idtype
typedef.imaxdiv_t=struct __imaxdiv_t
typedef.jmp_buf=void
typedef.ldiv_t=struct __ldiv_t
typedef.lldiv_t=struct __lldiv_t
typedef.locale_t=void
typedef.mbstate_t=void
typedef.nl_item=int
typedef.siginfo_t=struct __siginfo_t
typedef.sigset_t=struct __sigset_t
typedef.socklen_t=int
typedef.suseconds_t=long
typedef.time_t=long
typedef.va_list=char *
typedef.wchar_t=int
typedef.wctrans_t=unsigned int
typedef.wctype_t=int
typedef.wint_t=int
uid_t=type
uint16_t=type
uint32_t=type
uint64_t=type
uint8_t=type
uintmax_t=type
uintptr_t=type
union.sigval=sival_int,sival_ptr
union.sigval.sival_int=int,0,0
union.sigval.sival_ptr=void *,0,0
unknown_t=type
unsigned char=type
unsigned int=type
unsigned long=type
unsigned long long=type
unsigned short=type
va_list=typedef
void=type
void *=type
wchar_t=typedef
wctrans_t=typedef
wctype_t=typedef
wint_t=typedef
/core/analysis/vars
/core/analysis/xrefs
/core/config
/core/debug
/core/debug/breakpoints
/core/file
relative=../bins/elf/vars-x86_64-bp
/core/flags
base=0
realnames=0
/core/flags/flags
dbg.leaffunc={"realname":"dbg.leaffunc","demangled":false,"offset":4405,"size":7,"space":"functions"}
dbg.main={"realname":"dbg.main","demangled":false,"offset":4469,"size":54,"space":"functions"}
dbg.varfunc={"realname":"dbg.varfunc","demangled":false,"offset":4412,"size":57,"space":"functions"}
entry.fini0={"realname":"entry.fini0","demangled":false,"offset":4336,"size":57,"space":"symbols"}
entry.init0={"realname":"entry.init0","demangled":false,"offset":4400,"size":5,"space":"symbols"}
entry0={"realname":"entry0","demangled":false,"offset":4176,"size":33,"space":"symbols"}
fcn.00001080={"realname":"fcn.00001080","demangled":false,"offset":4224,"size":41,"space":"functions"}
loc.__GNU_EH_FRAME_HDR={"realname":"__GNU_EH_FRAME_HDR","demangled":false,"offset":8208,"size":0,"space":"symbols"}
loc.__bss_start={"realname":"__bss_start","demangled":false,"offset":16432,"size":0,"space":"symbols"}
loc.__data_start={"realname":"__data_start","demangled":false,"offset":16416,"size":0,"space":"symbols"}
loc._edata={"realname":"_edata","demangled":false,"offset":16432,"size":0,"space":"symbols"}
loc._end={"realname":"_end","demangled":false,"offset":16440,"size":0,"space":"symbols"}
loc.data_start={"realname":"data_start","demangled":false,"offset":16416,"size":0,"space":"symbols"}
main={"realname":"main","demangled":false,"offset":4469,"size":54,"space":"symbols"}
obj._DYNAMIC={"realname":"_DYNAMIC","demangled":false,"offset":15864,"size":0,"space":"symbols"}
obj._GLOBAL_OFFSET_TABLE={"realname":"_GLOBAL_OFFSET_TABLE_","demangled":false,"offset":16384,"size":0,"space":"symbols"}
obj._IO_stdin_used={"realname":"_IO_stdin_used","demangled":false,"offset":8192,"size":4,"space":"symbols"}
obj.__TMC_END={"realname":"__TMC_END__","demangled":false,"offset":16432,"size":0,"space":"symbols"}
obj.__dso_handle={"realname":"__dso_handle","demangled":false,"offset":16424,"size":0,"space":"symbols"}
reloc._ITM_deregisterTMCloneTable={"realname":"_ITM_deregisterTMCloneTable","demangled":false,"offset":16352,"size":8,"space":"relocs"}
reloc._ITM_registerTMCloneTable={"realname":"_ITM_registerTMCloneTable","demangled":false,"offset":16368,"size":8,"space":"relocs"}
reloc.__cxa_finalize={"realname":"__cxa_finalize","demangled":false,"offset":16376,"size":8,"space":"relocs"}
reloc.__gmon_start={"realname":"__gmon_start__","demangled":false,"offset":16360,"size":8,"space":"relocs"}
reloc.__libc_start_main={"realname":"__libc_start_main","demangled":false,"offset":16344,"size":8,"space":"relocs"}
reloc.printf={"realname":"printf","demangled":false,"offset":16408,"size":8,"space":"relocs"}
reloc.target._ITM_deregisterTMCloneTable={"realname":"_ITM_deregisterTMCloneTable","demangled":false,"offset":16464,"size":8,"space":"relocs"}
reloc.target._ITM_registerTMCloneTable={"realname":"_ITM_registerTMCloneTable","demangled":false,"offset":16480,"size":8,"space":"relocs"}
reloc.target.__cxa_finalize={"realname":"__cxa_finalize","demangled":false,"offset":16488,"size":8,"space":"relocs"}
reloc.target.__gmon_start={"realname":"__gmon_start__","demangled":false,"offset":16472,"size":8,"space":"relocs"}
reloc.target.__libc_start_main={"realname":"__libc_start_main","demangled":false,"offset":16456,"size":8,"space":"relocs"}
reloc.target.printf={"realname":"printf","demangled":false,"offset":16448,"size":8,"space":"relocs"}
section..bss={"realname":"section..bss","demangled":false,"offset":16432,"size":8,"space":"sections"}
section..data={"realname":"section..data","demangled":false,"offset":16416,"size":16,"space":"sections"}
section..dynamic={"realname":"section..dynamic","demangled":false,"offset":15864,"size":480,"space":"sections"}
section..dynstr={"realname":"section..dynstr","demangled":false,"offset":1112,"size":143,"space":"sections"}
section..dynsym={"realname":"section..dynsym","demangled":false,"offset":944,"size":168,"space":"sections"}
section..eh_frame={"realname":"section..eh_frame","demangled":false,"offset":8272,"size":236,"space":"sections"}
section..eh_frame_hdr={"realname":"section..eh_frame_hdr","demangled":false,"offset":8208,"size":60,"space":"sections"}
section..fini={"realname":"section..fini","demangled":false,"offset":4524,"size":9,"space":"sections"}
section..fini_array={"realname":"section..fini_array","demangled":false,"offset":15856,"size":8,"space":"sections"}
section..gnu.hash={"realname":"section..gnu.hash","demangled":false,"offset":904,"size":36,"space":"sections"}
section..gnu.version={"realname":"section..gnu.version","demangled":false,"offset":1256,"size":14,"space":"sections"}
section..gnu.version_r={"realname":"section..gnu.version_r","demangled":false,"offset":1272,"size":48,"space":"sections"}
section..got={"realname":"section..got","demangled":false,"offset":16344,"size":40,"space":"sections"}
section..got.plt={"realname":"section..got.plt","demangled":false,"offset":16384,"size":32,"space":"sections"}
section..init={"realname":"section..init","demangled":false,"offset":4096,"size":23,"space":"sections"}
section..init_array={"realname":"section..init_array","demangled":false,"offset":15848,"size":8,"space":"sections"}
section..interp={"realname":"section..interp","demangled":false,"offset":792,"size":28,"space":"sections"}
section..note.ABI_tag={"realname":"section..note.ABI_tag","demangled":false,"offset":872,"size":32,"space":"sections"}
section..note.gnu.property={"realname":"section..note.gnu.property","demangled":false,"offset":824,"size":48,"space":"sections"}
section..plt={"realname":"section..plt","demangled":false,"offset":4128,"size":32,"space":"sections"}
section..plt.got={"realname":"section..plt.got","demangled":false,"offset":4160,"size":8,"space":"sections"}
section..rela.dyn={"realname":"section..rela.dyn","demangled":false,"offset":1320,"size":192,"space":"sections"}
section..rela.plt={"realname":"section..rela.plt","demangled":false,"offset":1512,"size":24,"space":"sections"}
section..rodata={"realname":"section..rodata","demangled":false,"offset":8192,"size":13,"space":"sections"}
section..text={"realname":"section..text","demangled":false,"offset":4176,"size":347,"space":"sections"}
segment.DYNAMIC={"realname":"segment.DYNAMIC","demangled":false,"offset":15864,"size":480,"space":"segments"}
segment.GNU_EH_FRAME={"realname":"segment.GNU_EH_FRAME","demangled":false,"offset":8208,"size":60,"space":"segments"}
segment.GNU_RELRO={"realname":"segment.GNU_RELRO","demangled":false,"offset":15848,"size":536,"space":"segments"}
segment.GNU_STACK={"realname":"segment.GNU_STACK","demangled":false,"offset":0,"size":0,"space":"segments"}
segment.INTERP={"realname":"segment.INTERP","demangled":false,"offset":792,"size":28,"space":"segments"}
segment.LOAD0={"realname":"segment.LOAD0","demangled":false,"offset":0,"size":1536,"space":"segments"}
segment.LOAD1={"realname":"segment.LOAD1","demangled":false,"offset":4096,"size":437,"space":"segments"}
segment.LOAD2={"realname":"segment.LOAD2","demangled":false,"offset":8192,"size":316,"space":"segments"}
segment.LOAD3={"realname":"segment.LOAD3","demangled":false,"offset":15848,"size":592,"space":"segments"}
segment.NOTE={"realname":"segment.NOTE","demangled":false,"offset":824,"size":48,"space":"segments"}
segment.NOTE_1={"realname":"segment.NOTE_1","demangled":false,"offset":872,"size":32,"space":"segments"}
segment.PHDR={"realname":"segment.PHDR","demangled":false,"offset":64,"size":728,"space":"segments"}
segment.UNKNOWN={"realname":"segment.UNKNOWN","demangled":false,"offset":824,"size":48,"space":"segments"}
segment.ehdr={"realname":"segment.ehdr","demangled":false,"offset":0,"size":64,"space":"segments"}
str.res:__d={"realname":"str.res:__d","demangled":false,"offset":8196,"size":9,"space":"strings"}
sym._fini={"realname":"_fini","demangled":false,"offset":4524,"size":9,"space":"symbols"}
sym._init={"realname":"_init","demangled":false,"offset":4096,"size":23,"space":"symbols"}
sym._start={"realname":"_start","demangled":false,"offset":4176,"size":34,"space":"symbols"}
sym.imp.__cxa_finalize={"realname":"__cxa_finalize","demangled":false,"offset":4160,"size":6,"space":"imports"}
sym.imp.printf={"realname":"printf","demangled":false,"offset":4144,"size":6,"space":"imports"}
sym.leaffunc={"realname":"leaffunc","demangled":false,"offset":4405,"size":7,"space":"symbols"}
sym.main={"realname":"main","demangled":false,"offset":4469,"size":54,"space":"symbols"}
sym.varfunc={"realname":"varfunc","demangled":false,"offset":4412,"size":57,"space":"symbols"}
/core/flags/spaces
name=fs
spacestack=["*"]
/core/flags/spaces/spaces
classes=s
flirt=s
functions=s
imports=s
platform.ports=s
registers=s
registers.extended=s
registers.mmio=s
relocs=s
sections=s
segments=s
strings=s
symbols=s
/core/flags/tags
tag.alloc=malloc free$ calloc kalloc realloc
tag.dylib=dlopen dlsym dlclose mmap LoadLibrary GetProcAddress
tag.env=getenv putenv unsetenv setenv GetEnvironmentVariable SetEnvironmentVariable ExpandEnvironmentStrings
tag.fs=open$ close read$ write CloseHandle FindFirstFileW _wfopen _wstat ftruncate lseek _chsize GetFullPathName realpath RemoveDirectory DeleteFile CreateFile WriteFile UnmapViewOfFile CreateFileMapping MapViewOfFile readlink chmod fchmod chown stat fstat lstat fstatat lstat64 stat64 chflags fchflags lchflags
tag.network=socket connect bind$ listen accept sendto recvfrom gethostbyname htons ntohs
tag.process=getpid getppid kill exit abort assert gethostid sethostid sysctl
tag.stdout=^printf puts write
tag.string=strcat strcpy strncpy strlen strtok strstr strlcpy asprintf sprintf snprintf
tag.threads=pthread_create pthread_mutex_init pthread_cond_init CreateThread TerminateThread WaitForSingleObject GetCurrentThreadId
tag.time=settimeofday gettimeofday time adjtime ctime timed date$ sleep Sleep usleep clock_nanosleep localtime asctime difftime gmtime mktime timelocal timegm tzfile tzset
/core/flags/zones