Rizin
unix-like reverse engineering framework and cli tools
rz_debug.h
Go to the documentation of this file.
1 #ifndef RZ_DEBUG_H
2 #define RZ_DEBUG_H
3 
4 #include <rz_types.h>
5 #include <rz_analysis.h>
6 #include <rz_cons.h>
7 #include <rz_util.h>
8 #include <rz_reg.h>
9 #include <rz_egg.h>
10 #include <rz_bp.h>
11 #include <rz_io.h>
12 #include <rz_hash.h>
13 #include <rz_syscall.h>
14 #include <rz_cmd.h>
15 
16 #include <rz_config.h>
17 #include "rz_bind.h"
18 #ifdef __cplusplus
19 extern "C" {
20 #endif
21 
23 
24 /* hack to fix compilation of debugger on BSD systems */
25 /* This needs some testing (netbsd, freebsd, openbsd, kfreebsd) */
26 #if __BSD__
27 #include <machine/reg.h>
28 
29 /* hakish hack to hack the openbsd/sparc64 hack */
30 #undef reg
31 #undef fpreg
32 #undef fpstate
33 #undef trapframe
34 #undef rwindow
35 
36 #ifdef PTRACE_SYSCALL
37 /* on freebsd does not have the same meaning */
38 #undef PTRACE_SYSCALL
39 #endif
40 
41 #define PTRACE_PEEKTEXT PT_READ_I
42 #define PTRACE_POKETEXT PT_WRITE_I
43 #define PTRACE_PEEKDATA PT_READ_D
44 #define PTRACE_POKEDATA PT_WRITE_D
45 #define PTRACE_ATTACH PT_ATTACH
46 #define PTRACE_DETACH PT_DETACH
47 #define PTRACE_SINGLESTEP PT_STEP
48 #define PTRACE_CONT PT_CONTINUE
49 #define PTRACE_GETREGS PT_GETREGS
50 #define PTRACE_SETREGS PT_SETREGS
51 #define PTRACE_SYSCALL PT_STEP
52 #endif
53 
54 #define SNAP_PAGE_SIZE 4096
55 #define CHECK_POINT_LIMIT 0x100000 // TODO: take the benchmark
56 /*
57  * states that a process can be in
58  */
59 typedef enum {
65  RZ_DBG_PROC_RAISED = 'R' // has produced a signal, breakpoint, etc..
67 
68 // signal handling must support application and debugger level options
69 typedef enum {
70  RZ_DBG_SIGNAL_IGNORE = 0, // ignore signal handler
71  RZ_DBG_SIGNAL_CONT = 1, // pass signal to chlidren and continue execution
73  //..
75 
76 /*
77  * when a user wants to resume from a breakpoint, we need to know how they want
78  * to proceed. these values indicate their intention.
79  */
80 typedef enum {
85 
86 /*
87  * List of reasons that an inferior might have stopped
88  */
89 typedef enum {
117 
118 /* TODO: move to rz_analysis */
119 typedef struct rz_debug_frame_t {
121  int size;
125 
126 typedef struct rz_debug_reason_t {
127  int /*RzDebugReasonType*/ type;
128  int tid;
129  int signum;
135 
136 typedef struct rz_debug_map_t {
137  char *name;
142  char *file;
143  int perm;
144  int user;
145  bool shared;
147 
148 typedef struct rz_debug_signal_t {
149  int type;
150  int num;
153 
154 typedef struct rz_debug_desc_t {
155  int fd;
156  char *path;
157  int perm;
158  int type;
161 
162 typedef struct rz_debug_snap_t {
163  char *name;
168  int perm;
169  int user;
170  bool shared;
172 
173 typedef struct {
174  int cnum;
177 
178 typedef struct {
179  int cnum;
182 
183 typedef struct rz_debug_checkpoint_t {
184  int cnum;
186  RzList *snaps; // <RzDebugSnap>
188 
189 typedef struct rz_debug_session_t {
193  RzVector *checkpoints; /* RzVector<RzDebugCheckpoint> */
194  HtUP *memory; /* RzVector<RzDebugChangeMem> */
195  HtUP *registers; /* RzVector<RzDebugChangeReg> */
196  int reasontype /*RzDebugReasonType*/;
199 
200 /* Session file format */
201 typedef struct rz_session_header {
206 
207 typedef struct rz_diff_entry {
211 
212 typedef struct rz_snap_entry {
216  int perm;
218 
219 typedef struct rz_debug_trace_t {
221  int count;
222  int enabled;
223  // int changed;
224  int tag;
225  int dup;
226  char *addresses;
227  // TODO: add range here
228  HtPP *ht;
230 
231 typedef struct rz_debug_tracepoint_t {
233  ut64 tags; // XXX
234  int tag; // XXX
235  int size;
236  int count;
237  int times;
240 
241 typedef struct rz_debug_t {
242  char *arch;
243  int bits;
244  int hitinfo;
245 
246  int main_pid;
247  int pid; /* selected process id */
248  int tid; /* selected thread id */
249  int forked_pid; /* last pid created by fork */
251  RzList *threads; /* NOTE: list contents are platform-specific */
252 
253  char *malloc; /*choose malloc parser: 0 = glibc, 1 = jemalloc*/
254 
255  /* dbg.* config options (see e?dbg)
256  * NOTE: some settings are checked inline instead of tracked here.
257  */
258  char *btalgo; /* select backtrace algorithm */
259  int btdepth; /* backtrace depth */
260  int regcols; /* display columns */
261  int swstep; /* steps with software traps */
262  int stop_all_threads; /* stop all threads at any stop */
263  int trace_forks; /* stop on new children */
264  int trace_execs; /* stop on new execs */
265  int trace_aftersyscall; /* stop after the syscall (before if disabled) */
266  int trace_clone; /* stop on new threads */
267  int follow_child; /* On fork, trace the child */
268  bool create_new_console; /* Create a new console window for the debugee on debug start */
269  char *glob_libs; /* stop on lib load */
270  char *glob_unlibs; /* stop on lib unload */
271  bool consbreak; /* SIGINT handle for attached processes */
273 
274  /* tracking debugger state */
275  int steps; /* counter of steps done */
276  RzDebugReason reason; /* stop reason */
277  RzDebugRecoilMode recoil_mode; /* what did the user want to do? */
278  ut64 stopaddr; /* stop address */
279 
280  /* tracing vars */
282  HtUP *tracenodes;
285 
289  char *snap_path;
290 
291  /* io */
294 
296  void *plugin_data;
298 
299  bool pc_at_bp; /* after a breakpoint, is the pc at the bp? */
300  bool pc_at_bp_set; /* is the pc_at_bp variable set already? */
301 
304 
306  RzList *maps; // <RzDebugMap>
307  RzList *maps_user; // <RzDebugMap>
308 
312 
315  // internal use only
316  int _mode;
319  bool verbose;
320  bool main_arena_resolved; /* is the main_arena resolved already? */
322 
325 
326 typedef struct rz_debug_desc_plugin_t {
327  int (*open)(const char *path);
328  int (*close)(int fd);
329  int (*read)(int fd, ut64 addr, int len);
330  int (*write)(int fd, ut64 addr, int len);
331  int (*seek)(int fd, ut64 addr);
332  int (*dup)(int fd, int newfd);
333  RzList *(*list)(int pid);
335 
336 typedef struct rz_debug_info_t {
337  int pid;
338  int tid;
339  int uid;
340  int gid;
341  char *usr;
342  char *exe;
343  char *cmdline;
344  char *libname;
345  char *cwd;
346  int status; // zombie, running, sleeping, ...
347  int signum;
348  void *lib;
349  void *thread;
351  // retrieve mem/fd/core limits?
352  // list of threads ? hasthreads? counter?
353  // environment?
354  // /proc/pid/syscall ???
356 
357 /* TODO: pass dbg and user data pointer everywhere */
358 typedef struct rz_debug_plugin_t {
359  const char *name;
360  const char *license;
361  const char *author;
362  const char *version;
364  const char *arch;
365  int canstep;
366  int keepio;
367  bool (*init)(RzDebug *dbg, void **user);
368  void (*fini)(RzDebug *debug, void *user);
369  /* life */
370  RzDebugInfo *(*info)(RzDebug *dbg, const char *arg);
371  int (*startv)(int argc, char **argv);
372  int (*attach)(RzDebug *dbg, int pid);
373  int (*detach)(RzDebug *dbg, int pid);
374  int (*select)(RzDebug *dbg, int pid, int tid);
375  RzList *(*threads)(RzDebug *dbg, int pid);
376  RzList *(*pids)(RzDebug *dbg, int pid);
377  RzList *(*tids)(RzDebug *dbg, int pid);
379  /* flow */
383  int (*cont)(RzDebug *dbg, int pid, int tid, int sig);
386  bool (*kill)(RzDebug *dbg, int pid, int tid, int sig);
387  RzList *(*kill_list)(RzDebug *dbg);
388  int (*contsc)(RzDebug *dbg, int pid, int sc);
389  RzList *(*frames)(RzDebug *dbg, ut64 at);
391  // XXX: specify, pid, tid, or RzDebug ?
392  int (*reg_read)(RzDebug *dbg, int type, ut8 *buf, int size);
393  int (*reg_write)(RzDebug *dbg, int type, const ut8 *buf, int size); // XXX struct rz_regset_t regs);
394  char *(*reg_profile)(RzDebug *dbg);
395  int (*set_reg_profile)(RzDebug *dbg, const char *str);
396  /* memory */
397  RzList *(*map_get)(RzDebug *dbg);
398  RzList *(*modules_get)(RzDebug *dbg);
399  RzDebugMap *(*map_alloc)(RzDebug *dbg, ut64 addr, int size, bool thp);
401  int (*map_protect)(RzDebug *dbg, ut64 addr, int size, int perms);
402  int (*drx)(RzDebug *dbg, int n, ut64 addr, int size, int rwx, int g, int api_type);
404  // TODO: use RzList here
406 
407 // TODO: rename to rz_debug_process_t ? maybe a thread too ?
408 typedef struct rz_debug_pid_t {
409  int pid;
410  int ppid;
411  char status; /* stopped, running, zombie, sleeping ,... */
412  int runnable; /* when using 'run', 'continue', .. this proc will be runnable */
413  bool signalled;
414  char *path;
415  int uid;
416  int gid;
419 
420 typedef struct rz_backtrace_t {
423  char *desc;
424  char *pcstr;
425  char *spstr;
426  char *flagdesc;
427  char *flagdesc2;
429 
430 #ifdef RZ_API
433 
436 RZ_API int rz_debug_startv(RzDebug *dbg, int argc, char **argv);
437 RZ_API int rz_debug_start(RzDebug *dbg, const char *cmd);
438 
439 /* reason we stopped */
441 RZ_API const char *rz_debug_reason_to_string(int type);
442 
443 /* wait for another event */
445 
446 /* continuations */
447 RZ_API int rz_debug_step(RzDebug *dbg, int steps);
448 RZ_API int rz_debug_step_over(RzDebug *dbg, int steps);
454 RZ_API int rz_debug_continue_syscalls(RzDebug *dbg, int *sc, int n_sc);
458 
459 /* process/thread handling */
460 RZ_API bool rz_debug_select(RzDebug *dbg, int pid, int tid);
461 // RZ_API int rz_debug_pid_add(RzDebug *dbg);
462 // RZ_API int rz_debug_pid_add_thread(RzDebug *dbg);
463 // RZ_API int rz_debug_pid_del(RzDebug *dbg);
464 // RZ_API int rz_debug_pid_del_thread(RzDebug *dbg);
465 RZ_API int rz_debug_pid_list(RzDebug *dbg, int pid, char fmt);
466 RZ_API RzDebugPid *rz_debug_pid_new(const char *path, int pid, int uid, char status, ut64 pc);
469 
470 RZ_API bool rz_debug_set_arch(RzDebug *dbg, const char *arch, int bits);
471 RZ_API bool rz_debug_use(RzDebug *dbg, const char *str);
472 
475 
477 
478 /* send signals */
482 RZ_API void rz_debug_signal_setup(RzDebug *dbg, int num, int opt);
486 RZ_API int rz_debug_kill(RzDebug *dbg, int pid, int tid, int sig);
488 // XXX: must be uint64 action
489 RZ_API int rz_debug_kill_setup(RzDebug *dbg, int sig, int action);
490 
491 /* handle.c */
495 
496 /* memory */
502 RZ_API RzDebugMap *rz_debug_map_new(char *name, ut64 addr, ut64 addr_end, int perm, int user);
504 RZ_API void rz_debug_map_list_visual(RzDebug *dbg, ut64 addr, const char *input, int colors);
506 
507 /* descriptors */
508 RZ_API RzDebugDesc *rz_debug_desc_new(int fd, char *path, int perm, int type, int off);
510 RZ_API int rz_debug_desc_open(RzDebug *dbg, const char *path);
512 RZ_API int rz_debug_desc_dup(RzDebug *dbg, int fd, int newfd);
514 RZ_API int rz_debug_desc_seek(RzDebug *dbg, int fd, ut64 addr); // TODO: whence?
516 RZ_API int rz_debug_desc_list(RzDebug *dbg, int rad);
517 
518 /* registers */
520 RZ_API int rz_debug_reg_sync(RzDebug *dbg, int type, int write);
521 RZ_API int rz_debug_reg_set(RzDebug *dbg, const char *name, ut64 num);
522 RZ_API ut64 rz_debug_reg_get(RzDebug *dbg, const char *name);
523 
524 RZ_API ut64 rz_debug_execute(RzDebug *dbg, const ut8 *buf, int len, int restore);
526 
528 
529 /* backtrace */
531 
533 RZ_API int rz_debug_map_protect(RzDebug *dbg, ut64 addr, int size, int perms);
534 
535 /* breakpoints (most in rz_bp, this calls those) */
536 RZ_API RZ_BORROW RzBreakpointItem *rz_debug_bp_add(RZ_NONNULL RzDebug *dbg, ut64 addr, int hw, bool watch, int rw, RZ_NULLABLE const char *module, st64 m_delta);
537 RZ_API void rz_debug_bp_rebase(RzDebug *dbg, ut64 old_base, ut64 new_base);
539 
540 /* pid */
541 RZ_API int rz_debug_thread_list(RzDebug *dbg, int pid, char fmt);
542 
544 
548 RZ_API void rz_debug_trace_at(RzDebug *dbg, const char *str);
559 
561 RZ_API int rz_debug_drx_set(RzDebug *dbg, int idx, ut64 addr, int len, int rwx, int g);
563 
564 /* esil */
565 RZ_API ut64 rz_debug_num_callback(RzNum *userptr, const char *str, int *ok);
569 RZ_API void rz_debug_esil_watch(RzDebug *dbg, int rwx, int dev, const char *expr);
574 
575 /* record & replay */
576 // RZ_API ut8 rz_debug_get_byte(RzDebug *dbg, ut32 cnum, ut64 addr);
578 RZ_API bool rz_debug_session_add_reg_change(RzDebugSession *session, int arena, ut64 offset, ut64 data);
584 RZ_API bool rz_debug_session_save(RzDebugSession *session, const char *file);
585 RZ_API bool rz_debug_session_load(RzDebug *dbg, const char *file);
588 
591 
597 
598 RZ_API int rz_debug_step_back(RzDebug *dbg, int steps);
600 RZ_API int rz_debug_step_cnum(RzDebug *dbg, int steps);
602 
603 /* serialize */
606 
607 /* ptrace */
608 #if HAVE_PTRACE
609 static inline long rz_debug_ptrace(RzDebug *dbg, rz_ptrace_request_t request, pid_t pid, void *addr, rz_ptrace_data_t data) {
610  return dbg->iob.ptrace(dbg->iob.io, request, pid, addr, data);
611 }
612 
613 static inline void *rz_debug_ptrace_func(RzDebug *dbg, void *(*func)(void *), void *user) {
614  return dbg->iob.ptrace_func(dbg->iob.io, func, user);
615 }
616 #endif
617 
618 /* plugin pointers */
631 #endif
632 
633 #ifdef __cplusplus
634 }
635 #endif
636 
637 #endif
638 
639 /* regset */
640 // RZ_API struct rz_regset_t* rz_regset_diff(struct rz_regset_t *a, struct rz_regset_t *b);
641 // RZ_API int rz_regset_set(struct rz_regset_t *r, int idx, const char *name, ut64 value);
642 // RZ_API struct rz_regset_t *rz_regset_new(int size);
643 // RZ_API void rz_regset_free(struct rz_regset_t *r);
644 
645 #if 0
646 Missing callbacks
647 =================
648  - alloc
649  - dealloc
650  - list maps (memory regions)
651  - change memory protections
652  - touchtrace
653  - filedescriptor set/get/mod..
654  - get/set signals
655  - get regs, set regs
656 
657 #endif
size_t len
Definition: 6502dis.c:15
static char * regs[]
Definition: analysis_sh.c:203
static const char * arg(RzAnalysis *a, csh *handle, cs_insn *insn, char *buf, int n)
Definition: arm_esil32.c:136
static RzList * maps(RzBinFile *bf)
Definition: bin_bf.c:116
int bits(struct state *s, int need)
Definition: blast.c:72
static RzNumCalcValue expr(RzNum *, RzNumCalc *, int)
Definition: calc.c:167
RZ_API void rz_debug_trace_print(RzDebug *dbg, RzCmdStateOutput *state, ut64 offset)
Definition: cdebug.c:658
RZ_API void rz_debug_map_list_visual(RzDebug *dbg, ut64 addr, const char *input, int colors)
Definition: cdebug.c:638
RZ_API void rz_debug_traces_ascii(RzDebug *dbg, ut64 offset)
Definition: cdebug.c:688
#define RZ_API
int mod(int a, int b)
Definition: crypto_rot.c:8
cs_arch arch
Definition: cstool.c:13
static static fork const void static count static fd const char const char static newpath const char static path const char path
Definition: sflib.h:35
static static fork write
Definition: sflib.h:33
static static sync static getppid static getegid const char static filename request
Definition: sflib.h:62
static static sync static getppid static getegid const char static filename char static len const char char static bufsiz static mask static vfork const void static prot static getpgrp const char static swapflags static arg static fd static protocol static who struct sockaddr static addrlen static backlog struct timeval struct timezone static tz const struct iovec static count static mode const void const struct sockaddr static tolen const char static pathname void count
Definition: sflib.h:98
static static sync static getppid static getegid const char static filename char static len const char char static bufsiz static mask static vfork const void static prot static getpgrp const char static swapflags cmd
Definition: sflib.h:79
RZ_API int rz_debug_desc_open(RzDebug *dbg, const char *path)
Definition: ddesc.c:29
RZ_API int rz_debug_desc_seek(RzDebug *dbg, int fd, ut64 addr)
Definition: ddesc.c:57
RZ_API int rz_debug_desc_list(RzDebug *dbg, int rad)
Definition: ddesc.c:71
RZ_API int rz_debug_desc_dup(RzDebug *dbg, int fd, int newfd)
Definition: ddesc.c:43
RZ_API int rz_debug_desc_write(RzDebug *dbg, int fd, ut64 addr, int len)
Definition: ddesc.c:64
RZ_API int rz_debug_desc_close(RzDebug *dbg, int fd)
Definition: ddesc.c:36
RZ_API RzDebugDesc * rz_debug_desc_new(int fd, char *path, int perm, int type, int off)
Definition: ddesc.c:8
RZ_API int rz_debug_desc_read(RzDebug *dbg, int fd, ut64 addr, int len)
Definition: ddesc.c:50
RZ_API void rz_debug_desc_free(RzDebugDesc *p)
Definition: ddesc.c:20
RzDebugPlugin rz_debug_plugin_bf
Definition: debug_bf.c:200
RzDebugPlugin rz_debug_plugin_bochs
Definition: debug_bochs.c:545
RzDebugPlugin rz_debug_plugin_dmp
Definition: debug_dmp.c:564
RzDebugPlugin rz_debug_plugin_esil
Definition: debug_esil.c:137
RzDebugPlugin rz_debug_plugin_gdb
Definition: debug_gdb.c:574
RzDebugPlugin rz_debug_plugin_io
Definition: debug_io.c:141
RzDebugPlugin rz_debug_plugin_native
RzDebugPlugin rz_debug_plugin_null
Definition: debug_null.c:7
RzDebugPlugin rz_debug_plugin_qnx
Definition: debug_qnx.c:344
RzDebugPlugin rz_debug_plugin_rap
Definition: debug_rap.c:68
RzDebugPlugin rz_debug_plugin_windbg
Definition: debug_windbg.c:619
RzDebugPlugin rz_debug_plugin_winkd
Definition: debug_winkd.c:433
uint32_t ut32
RZ_API ut64 rz_debug_esil_continue(RzDebug *dbg)
Definition: desil.c:304
RzDebug * dbg
Definition: desil.c:30
RZ_API ut64 rz_debug_esil_step(RzDebug *dbg, ut32 count)
Definition: desil.c:280
RZ_API int rz_debug_esil_stepi(RzDebug *d)
Definition: desil.c:218
RZ_API void rz_debug_esil_prestep(RzDebug *d, int p)
Definition: desil.c:214
RZ_API void rz_debug_esil_watch_list(RzDebug *dbg)
Definition: desil.c:341
RZ_API int rz_debug_esil_watch_empty(RzDebug *dbg)
Definition: desil.c:313
RZ_API void rz_debug_esil_watch_reset(RzDebug *dbg)
Definition: desil.c:336
RZ_API void rz_debug_esil_watch(RzDebug *dbg, int rwx, int dev, const char *expr)
Definition: desil.c:317
RZ_API RzList * rz_debug_map_list_new(void)
Definition: dmap.c:83
RZ_API RZ_BORROW RzList * rz_debug_map_list(RzDebug *dbg, bool user_map)
Get RzList* of memory maps for the process currently being debugged.
Definition: dmap.c:98
RZ_API RzDebugMap * rz_debug_map_get(RzDebug *dbg, ut64 addr)
Definition: dmap.c:65
RZ_API void rz_debug_map_free(RzDebugMap *map)
Definition: dmap.c:77
RZ_API int rz_debug_map_dealloc(RzDebug *dbg, RzDebugMap *map)
Definition: dmap.c:54
RZ_API bool rz_debug_map_sync(RzDebug *dbg)
Definition: dmap.c:33
RZ_API RzDebugMap * rz_debug_map_new(char *name, ut64 addr, ut64 addr_end, int perm, int user)
Definition: dmap.c:7
RZ_API RzDebugMap * rz_debug_map_alloc(RzDebug *dbg, ut64 addr, int size, bool thp)
Definition: dmap.c:46
RZ_API RzList * rz_debug_modules_list(RzDebug *dbg)
Definition: dmap.c:29
RZ_API ut64 rz_debug_num_callback(RzNum *userptr, const char *str, int *ok)
Definition: dreg.c:104
RZ_API ut64 rz_debug_reg_get(RzDebug *dbg, const char *name)
Definition: dreg.c:99
RZ_API int rz_debug_reg_sync(RzDebug *dbg, int type, int write)
Definition: dreg.c:9
RZ_API int rz_debug_reg_set(struct rz_debug_t *dbg, const char *name, ut64 num)
Definition: dreg.c:89
RZ_API bool rz_debug_reg_profile_sync(RzDebug *dbg)
Definition: dreg.c:116
RZ_API void rz_debug_session_free(RzDebugSession *session)
Definition: dsession.c:11
RZ_API bool rz_debug_add_checkpoint(RzDebug *dbg)
Definition: dsession.c:58
RZ_API RzDebugSession * rz_debug_session_new(void)
Definition: dsession.c:33
RZ_API void rz_debug_session_deserialize(RzDebugSession *session, Sdb *db)
Definition: dsession.c:707
RZ_API bool rz_debug_session_add_reg_change(RzDebugSession *session, int arena, ut64 offset, ut64 data)
Definition: dsession.c:218
RZ_API void rz_debug_session_restore_reg_mem(RzDebug *dbg, ut32 cnum)
Definition: dsession.c:173
RZ_API bool rz_debug_session_save(RzDebugSession *session, const char *path)
Definition: dsession.c:445
RZ_API void rz_debug_session_serialize(RzDebugSession *session, Sdb *db)
Definition: dsession.c:402
RZ_API void rz_debug_session_list_memory(RzDebug *dbg)
Definition: dsession.c:185
RZ_API bool rz_debug_session_add_mem_change(RzDebugSession *session, ut64 addr, ut8 data)
Definition: dsession.c:233
RZ_API bool rz_debug_session_load(RzDebug *dbg, const char *path)
Definition: dsession.c:727
RZ_API void rz_debug_signal_setup(RzDebug *dbg, int num, int opt)
Definition: dsignal.c:147
static struct @231 signals[]
RZ_API int rz_debug_signal_set(RzDebug *dbg, int num, ut64 addr)
Definition: dsignal.c:157
RZ_API RzList * rz_debug_kill_list(RzDebug *dbg)
Definition: dsignal.c:164
RZ_API void rz_debug_signal_init(RzDebug *dbg)
Definition: dsignal.c:54
RZ_API void rz_debug_signal_list(RzDebug *dbg, RzOutputMode mode)
Definition: dsignal.c:119
RZ_API int rz_debug_signal_send(RzDebug *dbg, int num)
Definition: dsignal.c:143
RZ_API int rz_debug_signal_what(RzDebug *dbg, int num)
Definition: dsignal.c:151
RZ_API int rz_debug_kill_setup(RzDebug *dbg, int sig, int action)
Definition: dsignal.c:171
static char sc[]
Definition: egg_cb.c:6
struct @667 g
size_t map(int syms, int left, int len)
Definition: enough.c:237
voidpf void uLong size
Definition: ioapi.h:138
voidpf uLong offset
Definition: ioapi.h:144
const char int mode
Definition: ioapi.h:137
voidpf void * buf
Definition: ioapi.h:138
uint8_t ut8
Definition: lh5801.h:11
void * p
Definition: libc.cpp:67
RZ_API bool rz_debug_can_kill(RzDebug *dbg)
check whether rz_debug_kill() will not definitely fail (for example because kill is unimplemented by ...
Definition: debug.c:1594
RZ_API int rz_debug_kill(RzDebug *dbg, int pid, int tid, int sig)
Definition: debug.c:1598
RZ_API bool rz_debug_goto_cnum(RzDebug *dbg, ut32 cnum)
Definition: debug.c:1110
RZ_API int rz_debug_drx_set(RzDebug *dbg, int idx, ut64 addr, int len, int rwx, int g)
Definition: debug.c:1668
RZ_API int rz_debug_start(RzDebug *dbg, const char *cmd)
Definition: debug.c:577
RZ_API int rz_debug_continue_syscall(RzDebug *dbg, int sc)
Definition: debug.c:1578
RZ_API RZ_OWN RzDebug * rz_debug_new(RZ_BORROW RZ_NONNULL RzBreakpointContext *bp_ctx)
Definition: debug.c:359
RZ_API void rz_debug_bp_rebase(RzDebug *dbg, ut64 old_base, ut64 new_base)
Definition: debug.c:1737
RZ_API int rz_debug_step_back(RzDebug *dbg, int steps)
Definition: debug.c:1121
RZ_API int rz_debug_step_over(RzDebug *dbg, int steps)
Definition: debug.c:1033
RZ_API int rz_debug_step(RzDebug *dbg, int steps)
Definition: debug.c:962
RZ_API int rz_debug_map_protect(RzDebug *dbg, ut64 addr, int size, int perms)
Definition: debug.c:1655
RZ_API RZ_BORROW RzBreakpointItem * rz_debug_bp_add(RZ_NONNULL RzDebug *dbg, ut64 addr, int hw, bool watch, int rw, RZ_NULLABLE const char *module, st64 m_delta)
Definition: debug.c:270
RZ_API int rz_debug_continue_until_optype(RzDebug *dbg, int type, int over)
Definition: debug.c:1345
RZ_API bool rz_debug_continue_back(RzDebug *dbg)
Definition: debug.c:1442
RZ_API int rz_debug_continue_until(RzDebug *dbg, ut64 addr)
Definition: debug.c:1434
RZ_API RzDebug * rz_debug_free(RzDebug *dbg)
Definition: debug.c:416
RZ_API int rz_debug_drx_unset(RzDebug *dbg, int idx)
Definition: debug.c:1675
RZ_API int rz_debug_continue_until_nonblock(RzDebug *dbg, ut64 addr)
Definition: debug.c:1438
RZ_API int rz_debug_detach(RzDebug *dbg, int pid)
Definition: debug.c:583
RZ_API const char * rz_debug_reason_to_string(int type)
Definition: debug.c:639
RZ_API void rz_debug_bp_update(RzDebug *dbg)
Definition: debug.c:39
RZ_API int rz_debug_continue(RzDebug *dbg)
Definition: debug.c:1332
RZ_API int rz_debug_stop(RzDebug *dbg)
Definition: debug.c:458
RZ_API RzDebugReasonType rz_debug_wait(RzDebug *dbg, RzBreakpointItem **bp)
Definition: debug.c:685
RZ_API int rz_debug_continue_syscalls(RzDebug *dbg, int *sc, int n_sc)
Definition: debug.c:1507
RZ_API int rz_debug_child_clone(RzDebug *dbg)
Definition: debug.c:1626
RZ_API int rz_debug_step_cnum(RzDebug *dbg, int steps)
Definition: debug.c:1131
RZ_API int rz_debug_child_fork(RzDebug *dbg)
Definition: debug.c:1620
RZ_API int rz_debug_attach(RzDebug *dbg, int pid)
Definition: debug.c:445
RZ_API RzDebugInfo * rz_debug_info(RzDebug *dbg, const char *arg)
Definition: debug.c:18
RZ_API void rz_debug_tracenodes_reset(RzDebug *dbg)
Definition: debug.c:411
RZ_API int rz_debug_continue_until_nontraced(RzDebug *dbg)
Definition: debug.c:1340
RZ_API void rz_debug_drx_list(RzDebug *dbg)
Definition: debug.c:1662
RZ_API int rz_debug_continue_pass_exception(RzDebug *dbg)
Definition: debug.c:1336
RZ_API ut64 rz_debug_get_baddr(RzDebug *dbg, const char *file)
Definition: debug.c:1682
RZ_API int rz_debug_startv(struct rz_debug_t *dbg, int argc, char **argv)
Definition: debug.c:572
RZ_API ut64 rz_debug_execute(RzDebug *dbg, const ut8 *buf, int len, int restore)
Definition: debug.c:510
RZ_API bool rz_debug_is_dead(RzDebug *dbg)
Definition: debug.c:1632
RZ_API int rz_debug_continue_kill(RzDebug *dbg, int sig)
Definition: debug.c:1141
RZ_API bool rz_debug_set_arch(RzDebug *dbg, const char *arch, int bits)
Definition: debug.c:465
RZ_API bool rz_debug_select(RzDebug *dbg, int pid, int tid)
Definition: debug.c:595
RZ_API RzList * rz_debug_frames(RzDebug *dbg, ut64 at)
Definition: debug.c:1612
RZ_API RzDebugReasonType rz_debug_stop_reason(RzDebug *dbg)
Definition: debug.c:670
RZ_API void rz_debug_info_free(RzDebugInfo *rdi)
Definition: debug.c:28
static RzMain foo[]
Definition: main.c:11
static void list(RzEgg *egg)
Definition: rz-gg.c:52
static static fork const void static count static fd const char const char static newpath char char char static envp time_t static t const char static mode static whence const char static dir time_t static t unsigned static seconds const char struct utimbuf static buf static inc static sig const char static mode static oldfd struct tms static buf static getgid static geteuid const char static filename static arg static mask struct ustat static ubuf static getppid static setsid static egid sigset_t static set struct timeval struct timezone static tz fd_set fd_set fd_set struct timeval static timeout const char char static bufsiz const char static swapflags void static offset const char static length static mode static who const char struct statfs static buf unsigned unsigned num
Definition: sflib.h:126
static static fork const void static count static fd const char const char static newpath char char char static envp time_t static t const char static mode static whence const char static dir time_t static t unsigned static seconds const char struct utimbuf static buf static inc pid
Definition: sflib.h:64
static static fork const void static count static fd const char const char static newpath char char char static envp time_t static t const char static mode static whence const char static dir time_t static t unsigned static seconds const char struct utimbuf static buf static inc static sig const char static mode static oldfd struct tms static buf static getgid static geteuid const char static filename static arg static mask dev
Definition: sflib.h:88
static static fork const void static count static fd const char const char static newpath char char argv
Definition: sflib.h:40
static static fork const void static count static fd const char static mode const char static pathname const char static path const char static dev const char static group static getpid static getuid void void static data static pause const char static mode static sync const char const char static newpath const char static pathname unsigned long static filedes void static end_data_segment signal
Definition: sflib.h:79
static const char struct stat static buf struct stat static buf static vhangup int status
Definition: sflib.h:145
@ ok
Definition: lz4.c:1706
char * dest
Definition: lz4.h:697
int n
Definition: mipsasm.c:19
int type
Definition: mipsasm.c:17
int idx
Definition: setup.py:197
int off
Definition: pal.c:13
struct @219 colors[]
RZ_API RzList * rz_debug_pids(RzDebug *dbg, int pid)
Definition: pid.c:26
RZ_API RzDebugPid * rz_debug_pid_free(RzDebugPid *pid)
Definition: pid.c:20
RZ_API RzDebugPid * rz_debug_pid_new(const char *path, int pid, int uid, char status, ut64 pc)
Definition: pid.c:6
RZ_API int rz_debug_pid_list(RzDebug *dbg, int pid, char fmt)
Definition: pid.c:34
RZ_API int rz_debug_thread_list(RzDebug *dbg, int pid, char fmt)
Definition: pid.c:74
RZ_API bool rz_debug_use(RzDebug *dbg, const char *str)
Definition: plugin.c:17
RZ_API void rz_debug_plugin_init(RzDebug *dbg)
Definition: plugin.c:9
RZ_API bool rz_debug_plugin_add(RzDebug *dbg, RzDebugPlugin *foo)
Definition: plugin.c:56
RZ_API bool rz_debug_plugin_set_reg_profile(RzDebug *dbg, const char *profile)
Definition: plugin.c:66
int(* RzBreakpointCallback)(struct rz_bp_t *bp, RzBreakpointItem *b, bool set)
Definition: rz_bp.h:65
struct rz_debug_t RzDebug
RzDebugReasonType
Definition: rz_debug.h:89
@ RZ_DEBUG_REASON_NEW_TID
Definition: rz_debug.h:106
@ RZ_DEBUG_REASON_DEAD
Definition: rz_debug.h:90
@ RZ_DEBUG_REASON_STEP
Definition: rz_debug.h:98
@ RZ_DEBUG_REASON_WRITERR
Definition: rz_debug.h:100
@ RZ_DEBUG_REASON_READERR
Definition: rz_debug.h:97
@ RZ_DEBUG_REASON_ILLEGAL
Definition: rz_debug.h:102
@ RZ_DEBUG_REASON_TRACEPOINT
Definition: rz_debug.h:95
@ RZ_DEBUG_REASON_UNKNOWN
Definition: rz_debug.h:103
@ RZ_DEBUG_REASON_BREAKPOINT
Definition: rz_debug.h:94
@ RZ_DEBUG_REASON_USERSUSP
Definition: rz_debug.h:115
@ RZ_DEBUG_REASON_TRAP
Definition: rz_debug.h:111
@ RZ_DEBUG_REASON_ABORT
Definition: rz_debug.h:99
@ RZ_DEBUG_REASON_ERROR
Definition: rz_debug.h:104
@ RZ_DEBUG_REASON_NEW_LIB
Definition: rz_debug.h:107
@ RZ_DEBUG_REASON_EXIT_LIB
Definition: rz_debug.h:110
@ RZ_DEBUG_REASON_FPU
Definition: rz_debug.h:114
@ RZ_DEBUG_REASON_SEGFAULT
Definition: rz_debug.h:93
@ RZ_DEBUG_REASON_NONE
Definition: rz_debug.h:91
@ RZ_DEBUG_REASON_NEW_PID
Definition: rz_debug.h:105
@ RZ_DEBUG_REASON_EXIT_PID
Definition: rz_debug.h:108
@ RZ_DEBUG_REASON_EXIT_TID
Definition: rz_debug.h:109
@ RZ_DEBUG_REASON_SWI
Definition: rz_debug.h:112
@ RZ_DEBUG_REASON_DIVBYZERO
Definition: rz_debug.h:101
@ RZ_DEBUG_REASON_INT
Definition: rz_debug.h:113
@ RZ_DEBUG_REASON_SIGNAL
Definition: rz_debug.h:92
@ RZ_DEBUG_REASON_COND
Definition: rz_debug.h:96
struct rz_debug_signal_t RzDebugSignal
RzDebugPidState
Definition: rz_debug.h:59
@ RZ_DBG_PROC_RUN
Definition: rz_debug.h:61
@ RZ_DBG_PROC_STOP
Definition: rz_debug.h:60
@ RZ_DBG_PROC_ZOMBIE
Definition: rz_debug.h:63
@ RZ_DBG_PROC_RAISED
Definition: rz_debug.h:65
@ RZ_DBG_PROC_DEAD
Definition: rz_debug.h:64
@ RZ_DBG_PROC_SLEEP
Definition: rz_debug.h:62
struct rz_debug_trace_t RzDebugTrace
RZ_LIB_VERSION_HEADER(rz_debug)
struct rz_session_header RSessionHeader
struct rz_debug_snap_t RzDebugSnap
struct rz_snap_entry RSnapEntry
struct rz_debug_desc_plugin_t RzDebugDescPlugin
struct rz_debug_tracepoint_t RzDebugTracepoint
struct rz_debug_info_t RzDebugInfo
RzDebugRecoilMode
Definition: rz_debug.h:80
@ RZ_DBG_RECOIL_STEP
Definition: rz_debug.h:82
@ RZ_DBG_RECOIL_CONTINUE
Definition: rz_debug.h:83
@ RZ_DBG_RECOIL_NONE
Definition: rz_debug.h:81
struct rz_diff_entry RzDiffEntry
struct rz_debug_pid_t RzDebugPid
struct rz_debug_reason_t RzDebugReason
struct rz_debug_session_t RzDebugSession
struct rz_debug_map_t RzDebugMap
struct rz_debug_plugin_t RzDebugPlugin
struct rz_debug_checkpoint_t RzDebugCheckpoint
struct rz_debug_frame_t RzDebugFrame
struct rz_backtrace_t RzBacktrace
struct rz_debug_desc_t RzDebugDesc
RzDebugSignalMode
Definition: rz_debug.h:69
@ RZ_DBG_SIGNAL_IGNORE
Definition: rz_debug.h:70
@ RZ_DBG_SIGNAL_CONT
Definition: rz_debug.h:71
@ RZ_DBG_SIGNAL_SKIP
Definition: rz_debug.h:72
ut32 RzHashSize
Definition: rz_hash.h:24
struct rz_list_t RzList
@ RZ_REG_TYPE_LAST
Definition: rz_reg.h:34
#define RZ_NULLABLE
Definition: rz_types.h:65
#define RZ_OWN
Definition: rz_types.h:62
#define RZ_NONNULL
Definition: rz_types.h:64
int(* PrintfCallback)(const char *str,...) RZ_PRINTF_CHECK(1
Definition: rz_types.h:233
RzOutputMode
Enum to describe the way data are printed.
Definition: rz_types.h:38
#define RZ_BORROW
Definition: rz_types.h:63
#define st64
Definition: rz_types_base.h:10
RZ_API void rz_serialize_debug_save(RZ_NONNULL Sdb *db, RZ_NONNULL RzDebug *dbg)
Serialize debug state (RzDebug) and save to a sdb.
RZ_API bool rz_serialize_debug_load(RZ_NONNULL Sdb *db, RZ_NONNULL RzDebug *dbg, RZ_NULLABLE RzSerializeResultInfo *res)
Load a serialized debug state to a RzDebug instance.
static int
Definition: sfsocketcall.h:114
int pid_t
Definition: sftypes.h:38
#define d(i)
Definition: sha256.c:44
#define b(i)
Definition: sha256.c:42
#define a(i)
Definition: sha256.c:41
RZ_API bool rz_debug_snap_is_equal(RzDebug *dbg, RzDebugSnap *a, RzDebugSnap *b)
Definition: snap.c:58
RZ_API bool rz_debug_snap_contains(RzDebugSnap *snap, ut64 addr)
Definition: snap.c:46
RZ_API RzDebugSnap * rz_debug_snap_map(RzDebug *dbg, RzDebugMap *map)
Definition: snap.c:15
RZ_API ut8 * rz_debug_snap_get_hash(RzDebug *dbg, RzDebugSnap *snap, RzHashSize *size)
Definition: snap.c:50
RZ_API void rz_debug_snap_free(RzDebugSnap *snap)
Definition: snap.c:7
Definition: gzappend.c:170
Definition: sftypes.h:77
Definition: z80asm.h:102
char * flagdesc2
Definition: rz_debug.h:427
char * pcstr
Definition: rz_debug.h:424
char * flagdesc
Definition: rz_debug.h:426
RzDebugFrame * frame
Definition: rz_debug.h:421
char * spstr
Definition: rz_debug.h:425
char * desc
Definition: rz_debug.h:423
RzAnalysisFunction * fcn
Definition: rz_debug.h:422
Outer context of mappings/etc. in which the RzBreakpoint instance will operate in....
Definition: rz_bp.h:71
Definition: rz_bp.h:78
Represent the output state of a command handler.
Definition: rz_cmd.h:91
RzRegArena * arena[RZ_REG_TYPE_LAST]
Definition: rz_debug.h:185
int(* write)(int fd, ut64 addr, int len)
Definition: rz_debug.h:330
int(* dup)(int fd, int newfd)
Definition: rz_debug.h:332
int(* close)(int fd)
Definition: rz_debug.h:328
int(* seek)(int fd, ut64 addr)
Definition: rz_debug.h:331
int(* open)(const char *path)
Definition: rz_debug.h:327
int(* read)(int fd, ut64 addr, int len)
Definition: rz_debug.h:329
char * kernel_stack
Definition: rz_debug.h:350
void * thread
Definition: rz_debug.h:349
char * cmdline
Definition: rz_debug.h:343
char * libname
Definition: rz_debug.h:344
char * name
Definition: rz_debug.h:137
char * file
Definition: rz_debug.h:142
char * path
Definition: rz_debug.h:414
bool signalled
Definition: rz_debug.h:413
bool(* gcore)(RzDebug *dbg, char *path, RzBuffer *dest)
Definition: rz_debug.h:385
const char * license
Definition: rz_debug.h:360
int(* map_dealloc)(RzDebug *dbg, ut64 addr, int size)
Definition: rz_debug.h:400
const char * author
Definition: rz_debug.h:361
int(* detach)(RzDebug *dbg, int pid)
Definition: rz_debug.h:373
bool(* kill)(RzDebug *dbg, int pid, int tid, int sig)
Definition: rz_debug.h:386
int(* attach)(RzDebug *dbg, int pid)
Definition: rz_debug.h:372
const char * version
Definition: rz_debug.h:362
int(* step_over)(RzDebug *dbg)
Definition: rz_debug.h:382
int(* reg_read)(RzDebug *dbg, int type, ut8 *buf, int size)
Callback to be used for RzBreakpoint. When called, RzBreakpoint.user points to the RzDebug.
Definition: rz_debug.h:392
int(* drx)(RzDebug *dbg, int n, ut64 addr, int size, int rwx, int g, int api_type)
Definition: rz_debug.h:402
RzDebugDescPlugin desc
Definition: rz_debug.h:403
int(* startv)(int argc, char **argv)
Definition: rz_debug.h:371
int(* reg_write)(RzDebug *dbg, int type, const ut8 *buf, int size)
Definition: rz_debug.h:393
const char * arch
Definition: rz_debug.h:364
int(* select)(RzDebug *dbg, int pid, int tid)
Definition: rz_debug.h:374
int(* contsc)(RzDebug *dbg, int pid, int sc)
Definition: rz_debug.h:388
RzDebugReasonType(* wait)(RzDebug *dbg, int pid)
Definition: rz_debug.h:384
RzList(* backtrace)(RzDebug *dbg, int count)
Definition: rz_debug.h:378
int(* map_protect)(RzDebug *dbg, ut64 addr, int size, int perms)
Definition: rz_debug.h:401
const char * name
Definition: rz_debug.h:359
void(* fini)(RzDebug *debug, void *user)
Definition: rz_debug.h:368
int(* cont)(RzDebug *dbg, int pid, int tid, int sig)
Definition: rz_debug.h:383
RzBreakpointCallback breakpoint
Definition: rz_debug.h:390
int(* step)(RzDebug *dbg)
Definition: rz_debug.h:381
int(* stop)(RzDebug *dbg)
Definition: rz_debug.h:380
int(* set_reg_profile)(RzDebug *dbg, const char *str)
Definition: rz_debug.h:395
bool(* init)(RzDebug *dbg, void **user)
Definition: rz_debug.h:367
RzDebugCheckpoint * cur_chkpt
Definition: rz_debug.h:192
RzBreakpointItem * bp
Definition: rz_debug.h:197
RzVector * checkpoints
Definition: rz_debug.h:193
RzCoreBind corebind
Definition: rz_debug.h:314
RzDebugRecoilMode recoil_mode
Definition: rz_debug.h:277
bool verbose
Definition: rz_debug.h:319
PrintfCallback cb_printf
Definition: rz_debug.h:292
int stop_all_threads
Definition: rz_debug.h:262
bool pc_at_bp_set
Definition: rz_debug.h:300
bool main_arena_resolved
Definition: rz_debug.h:320
RzList * maps_user
Definition: rz_debug.h:307
RzList * threads
Definition: rz_debug.h:251
int _mode
Definition: rz_debug.h:316
bool create_new_console
Definition: rz_debug.h:268
RzDebugSession * session
Definition: rz_debug.h:311
RzHash * hash
Definition: rz_debug.h:303
char * snap_path
Definition: rz_debug.h:289
int forked_pid
Definition: rz_debug.h:249
char * malloc
Definition: rz_debug.h:253
int trace_execs
Definition: rz_debug.h:264
bool consbreak
Definition: rz_debug.h:271
bool continue_all_threads
Definition: rz_debug.h:272
ut64 stopaddr
Definition: rz_debug.h:278
RzList * maps
Definition: rz_debug.h:306
RzEvent * ev
Definition: rz_debug.h:302
int regcols
Definition: rz_debug.h:260
int trace_clone
Definition: rz_debug.h:266
int follow_child
Definition: rz_debug.h:267
int swstep
Definition: rz_debug.h:261
RzDebugReason reason
Definition: rz_debug.h:276
char * glob_unlibs
Definition: rz_debug.h:270
bool pc_at_bp
Definition: rz_debug.h:299
struct rz_debug_plugin_t * cur
Definition: rz_debug.h:295
int btdepth
Definition: rz_debug.h:259
RzEgg * egg
Definition: rz_debug.h:318
RzDebugTrace * trace
Definition: rz_debug.h:281
int steps
Definition: rz_debug.h:275
RzAnalysis * analysis
Definition: rz_debug.h:305
RTree * tree
Definition: rz_debug.h:283
RzAnalysisOp * cur_op
Definition: rz_debug.h:310
RzList * q_regs
Definition: rz_debug.h:287
char * glob_libs
Definition: rz_debug.h:269
char * arch
Definition: rz_debug.h:242
int n_threads
Definition: rz_debug.h:250
Sdb * sgnls
Definition: rz_debug.h:313
HtUP * tracenodes
Definition: rz_debug.h:282
RzReg * reg
Definition: rz_debug.h:286
RzList * call_frames
Definition: rz_debug.h:284
RzList * plugins
Definition: rz_debug.h:297
char * btalgo
Definition: rz_debug.h:258
int bits
Definition: rz_debug.h:243
bool nt_x86_xstate_supported
Track whether X86_FEATURE_XSAVE feature is supported on current kernel.
Definition: rz_debug.h:323
int trace_aftersyscall
Definition: rz_debug.h:265
bool trace_continue
Definition: rz_debug.h:309
void * plugin_data
Definition: rz_debug.h:296
RzIOBind iob
Definition: rz_debug.h:293
int hitinfo
XXX: MUST SET ///.
Definition: rz_debug.h:244
int glibc_version
Definition: rz_debug.h:321
int trace_forks
Definition: rz_debug.h:263
int main_pid
Definition: rz_debug.h:246
RzNum * num
Definition: rz_debug.h:317
RzBreakpoint * bp
Definition: rz_debug.h:288
RzList * traces
Definition: rz_debug.h:220
char * addresses
Definition: rz_debug.h:226
Definition: rz_debug.h:207
ut32 pages_len
Definition: rz_debug.h:209
ut32 base_idx
Definition: rz_debug.h:208
RzIO * io
Definition: rz_io.h:232
Definition: rz_debug.h:212
ut32 size
Definition: rz_debug.h:214
ut64 timestamp
Definition: rz_debug.h:215
ut64 addr
Definition: rz_debug.h:213
int perm
Definition: rz_debug.h:216
Definition: sdb.h:63
Definition: dis.h:43
#define bool
Definition: sysdefs.h:146
RZ_API void rz_debug_trace_at(RzDebug *dbg, const char *str)
Definition: trace.c:194
RZ_API int rz_debug_trace_tag(RzDebug *dbg, int tag)
Definition: trace.c:41
RZ_API RZ_OWN RzList * rz_debug_traces_info(RzDebug *dbg, ut64 offset)
Definition: trace.c:218
RZ_API RzDebugTracepoint * rz_debug_trace_add(RzDebug *dbg, ut64 addr, int size)
Definition: trace.c:261
RZ_API RzDebugTracepoint * rz_debug_trace_get(RzDebug *dbg, ut64 addr)
Definition: trace.c:200
RZ_API void rz_debug_trace_free(RzDebugTrace *trace)
Definition: trace.c:29
RZ_API RzDebugTrace * rz_debug_trace_new(void)
Definition: trace.c:7
RZ_API void rz_debug_trace_op(RzDebug *dbg, RzAnalysisOp *op)
Definition: trace.c:177
RZ_API bool rz_debug_trace_ins_after(RzDebug *dbg)
Definition: trace.c:110
RZ_API int rz_debug_trace_pc(RzDebug *dbg, ut64 pc)
Definition: trace.c:160
RZ_API bool rz_debug_trace_ins_before(RzDebug *dbg)
Definition: trace.c:46
RZ_API void rz_debug_trace_reset(RzDebug *dbg)
Definition: trace.c:284
Definition: dis.c:32
static int debug
Definition: visual.c:21
ut64(WINAPI *w32_GetEnabledXStateFeatures)()
static const z80_opcode fd[]
Definition: z80_tab.h:997
static int addr
Definition: z80asm.c:58
static bool input(void *ud, zip_uint8_t *data, zip_uint64_t length)