int set_bp(libgdbr_t* g, uint64_t address, const char* conditions, enum Breakpoint type) { char tmp[255] = {}; int ret = 0; switch (type) { case BREAKPOINT: ret = snprintf (tmp, 255, "%s,%lx,1", CMD_BP, address); break; case HARDWARE_BREAKPOINT: ret = snprintf (tmp, 255, "%s,%lx,1", CMD_HBP, address); break; case WRITE_WATCHPOINT: break; case READ_WATCHPOINT: break; case ACCESS_WATCHPOINT: break; default: break; } if (ret < 0) return ret; ret = send_command (g, tmp); if (ret < 0) return ret; if (read_packet (g) > 0) { parse_packet (g, 0); return handle_setbp (g); } return 0; }
int gdbr_set_breakpoint(libgdbr_t* g, uint64_t address, char* conditions) { char tmp[255] = {}; int ret = snprintf (tmp, sizeof (tmp)-1, "%s,%llx,1", CMD_BP, address); if (ret < 0) return ret; send_command (g, tmp); if (read_packet (g) > 0) { parse_packet (g, 0); return handle_setbp (g); } return 0; }
int set_bp(libgdbr_t *g, ut64 address, const char *conditions, enum Breakpoint type, int sizebp) { char tmp[255] = {0}; int ret = -1; if (!g) { return -1; } switch (type) { case BREAKPOINT: ret = snprintf (tmp, sizeof (tmp) - 1, "%s,%"PFMT64x ",%d", CMD_BP, address, sizebp); break; case HARDWARE_BREAKPOINT: ret = snprintf (tmp, sizeof (tmp) - 1, "%s,%"PFMT64x ",%d", CMD_HBP, address, sizebp); break; case WRITE_WATCHPOINT: ret = snprintf (tmp, sizeof (tmp) - 1, "%s,%"PFMT64x ",%d", CMD_HWW, address, sizebp); break; case READ_WATCHPOINT: ret = snprintf (tmp, sizeof (tmp) - 1, "%s,%"PFMT64x ",%d", CMD_HWR, address, sizebp); break; case ACCESS_WATCHPOINT: ret = snprintf (tmp, sizeof (tmp) - 1, "%s,%"PFMT64x ",%d", CMD_HWA, address, sizebp); break; default: break; } if (ret < 0) { return ret; } g->stop_reason.is_valid = false; ret = send_msg (g, tmp); if (ret < 0) { return ret; } if (read_packet (g, false) >= 0) { return handle_setbp (g); } return 0; }