Ejemplo n.º 1
0
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;
}
Ejemplo n.º 2
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;
}
Ejemplo n.º 3
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;
}