rizin/libr/debug/p/libgdbwrap/include/gdbwrapper.h

115 lines
3.5 KiB
C

#ifndef _INCLUDE_GDBWRAPPER_H_
#define _INCLUDE_GDBWRAPPER_H_
/* File to include to use the wrapper. */
#ifndef IRAPI
#define IRAPI
#endif
#include "r_types.h"
#if __UNIX__
#include <netinet/in.h>
#include <sys/socket.h>
#include <netdb.h>
#endif
#if __WINDOWS__
#include <windows.h>
#endif
#include <errno.h>
#include "libaspect.h"
#if __WINDOWS__
typedef unsigned char uint8_t;
#endif
typedef struct gdbwrap_gdbreg32
{
ureg32 eax;
ureg32 ecx;
ureg32 edx;
ureg32 ebx;
ureg32 esp;
ureg32 ebp;
ureg32 esi;
ureg32 edi;
ureg32 eip;
ureg32 eflags;
ureg32 cs;
ureg32 ss;
ureg32 ds;
ureg32 es;
ureg32 fs;
ureg32 gs;
} gdbwrap_gdbreg32;
typedef struct gdbwrap_t
{
char *packet;
int fd;
unsigned max_packet_size;
ut8 *regs;
unsigned num_registers;
unsigned reg_size;
Bool is_active;
Bool erroroccured;
Bool interrupted;
Bool pmode;
} gdbwrap_t;
typedef struct meminfo_t
{
char *type;
u_int start;
u_int length;
u_int blocksize;
} meminfo_t;
typedef struct gdbmemap_t
{
meminfo_t ram;
meminfo_t rom;
meminfo_t flash;
} gdbmemap_t;
typedef struct
{
gdbwrap_t *gdbwrapptr;
} gdbwrapworld_t;
IRAPI Bool gdbwrap_erroroccured(gdbwrap_t *desc);
IRAPI Bool gdbwrap_cmdnotsup(gdbwrap_t *desc);
IRAPI unsigned gdbwrap_atoh(const char * str, unsigned size);
IRAPI unsigned gdbwrap_lastsignal(gdbwrap_t *desc);
IRAPI Bool gdbwrap_is_active(gdbwrap_t *desc);
IRAPI gdbwrapworld_t gdbwrap_current_set(gdbwrap_t *world);
IRAPI gdbwrap_t *gdbwrap_current_get(void);
IRAPI gdbwrap_t *gdbwrap_init(int fd, ut32 num, ut32 size);
IRAPI void gdbwrap_close(gdbwrap_t *desc);
IRAPI void gdbwrap_hello(gdbwrap_t *desc);
IRAPI void gdbwrap_bye(gdbwrap_t *desc);
IRAPI void gdbwrap_reason_halted(gdbwrap_t *desc);
IRAPI char *gdbwrap_own_command(gdbwrap_t *desc, char *command);
IRAPI ut8 *gdbwrap_readgenreg(gdbwrap_t *desc);
IRAPI void gdbwrap_continue(gdbwrap_t *desc);
IRAPI void gdbwrap_setbp(gdbwrap_t *desc, la32 linaddr, void *datasaved);
IRAPI int gdbwrap_simplesetbp(gdbwrap_t *desc, la32 linaddr);
IRAPI void gdbwrap_delbp(gdbwrap_t *desc, la32 linaddr, void *datasaved);
IRAPI int gdbwrap_simpledelbp(gdbwrap_t *desc, la32 linaddr);
IRAPI char *gdbwrap_readmem(gdbwrap_t *desc, la32 linaddr, unsigned bytes);
IRAPI void gdbwrap_writemem(gdbwrap_t *desc, la32 linaddr, void *value, unsigned bytes);
IRAPI void gdbwrap_writereg(gdbwrap_t *desc, ureg32 regnum, la32 val);
IRAPI char *gdbwrap_shipallreg(gdbwrap_t *desc);
IRAPI void gdbwrap_ctrl_c(gdbwrap_t *desc);
IRAPI void gdbwrap_signal(gdbwrap_t *desc, int signal);
IRAPI void gdbwrap_stepi(gdbwrap_t *desc);
IRAPI char *gdbwrap_remotecmd(gdbwrap_t *desc, char *cmd);
IRAPI u_char gdbwrap_lasterror(gdbwrap_t *desc);
IRAPI gdbmemap_t gdbwrap_memorymap_get();
IRAPI ut64 gdbwrap_getreg(gdbwrap_t *desc, ut32 idx);
IRAPI void gdbwrap_getreg_buffer(gdbwrap_t *desc, unsigned char *buf, ut32 size);
IRAPI void gdbwrap_setreg(gdbwrap_t *desc, ut32 idx, ut64 value);
IRAPI void gdbwrap_setreg_buffer(gdbwrap_t *desc, const unsigned char *buf, ut32 size);
#endif