Lines Matching refs:gdbserver_state
59 GDBState gdbserver_state; variable
63 g_assert(!gdbserver_state.init); in gdb_init_gdbserver_state()
64 memset(&gdbserver_state, 0, sizeof(GDBState)); in gdb_init_gdbserver_state()
65 gdbserver_state.init = true; in gdb_init_gdbserver_state()
66 gdbserver_state.str_buf = g_string_new(NULL); in gdb_init_gdbserver_state()
67 gdbserver_state.mem_buf = g_byte_array_sized_new(MAX_PACKET_LENGTH); in gdb_init_gdbserver_state()
68 gdbserver_state.last_packet = g_byte_array_sized_new(MAX_PACKET_LENGTH + 4); in gdb_init_gdbserver_state()
75 gdbserver_state.supported_sstep_flags = accel_supported_gdbstub_sstep_flags(); in gdb_init_gdbserver_state()
76 gdbserver_state.sstep_flags = SSTEP_ENABLE | SSTEP_NOIRQ | SSTEP_NOTIMER; in gdb_init_gdbserver_state()
77 gdbserver_state.sstep_flags &= gdbserver_state.supported_sstep_flags; in gdb_init_gdbserver_state()
147 g_byte_array_set_size(gdbserver_state.last_packet, 0); in gdb_put_packet_binary()
148 g_byte_array_append(gdbserver_state.last_packet, in gdb_put_packet_binary()
150 g_byte_array_append(gdbserver_state.last_packet, in gdb_put_packet_binary()
159 g_byte_array_append(gdbserver_state.last_packet, footer, 3); in gdb_put_packet_binary()
161 gdb_put_buffer(gdbserver_state.last_packet->data, in gdb_put_packet_binary()
162 gdbserver_state.last_packet->len); in gdb_put_packet_binary()
181 gdb_put_packet(gdbserver_state.str_buf->str); in gdb_put_strbuf()
210 int index = gdbserver_state.process_num - 1; in gdb_get_cpu_pid()
211 return gdbserver_state.processes[index].pid; in gdb_get_cpu_pid()
223 return &gdbserver_state.processes[0]; in gdb_get_process()
226 for (i = 0; i < gdbserver_state.process_num; i++) { in gdb_get_process()
227 if (gdbserver_state.processes[i].pid == pid) { in gdb_get_process()
228 return &gdbserver_state.processes[i]; in gdb_get_process()
660 CPUState *cpu = gdbserver_state.c_cpu; in gdb_set_cpu_pc()
668 if (gdbserver_state.multiprocess) { in gdb_append_thread_id()
858 gdbserver_state.c_cpu = last_target; in gdb_handle_vcont()
861 gdbserver_state.signal = signal; in gdb_handle_vcont()
983 user_ctx = (void *)gdbserver_state.g_cpu; in process_string_cmd()
986 gdbserver_state.allow_stop_reply = cmd->allow_stop_reply; in process_string_cmd()
1000 g_string_set_size(gdbserver_state.str_buf, 0); in run_cmd_parser()
1001 g_byte_array_set_size(gdbserver_state.mem_buf, 0); in run_cmd_parser()
1015 if (gdbserver_state.multiprocess) { in handle_detach()
1034 if (pid == gdb_get_cpu_pid(gdbserver_state.c_cpu)) { in handle_detach()
1035 gdbserver_state.c_cpu = gdb_first_attached_cpu(); in handle_detach()
1038 if (pid == gdb_get_cpu_pid(gdbserver_state.g_cpu)) { in handle_detach()
1039 gdbserver_state.g_cpu = gdb_first_attached_cpu(); in handle_detach()
1042 if (!gdbserver_state.c_cpu) { in handle_detach()
1080 gdbserver_state.signal = 0; in handle_continue()
1096 gdbserver_state.signal = gdb_signal_to_target(signal); in handle_cont_with_sig()
1097 if (gdbserver_state.signal == -1) { in handle_cont_with_sig()
1098 gdbserver_state.signal = 0; in handle_cont_with_sig()
1142 gdbserver_state.c_cpu = cpu; in handle_set_thread()
1146 gdbserver_state.g_cpu = cpu; in handle_set_thread()
1164 res = gdb_breakpoint_insert(gdbserver_state.c_cpu, in handle_insert_bp()
1188 res = gdb_breakpoint_remove(gdbserver_state.c_cpu, in handle_remove_bp()
1224 gdb_hextomem(gdbserver_state.mem_buf, gdb_get_cmd_param(params, 1)->data, reg_size); in handle_set_reg()
1225 gdb_write_register(gdbserver_state.g_cpu, gdbserver_state.mem_buf->data, in handle_set_reg()
1239 reg_size = gdb_read_register(gdbserver_state.g_cpu, in handle_get_reg()
1240 gdbserver_state.mem_buf, in handle_get_reg()
1246 g_byte_array_set_size(gdbserver_state.mem_buf, reg_size); in handle_get_reg()
1249 gdb_memtohex(gdbserver_state.str_buf, in handle_get_reg()
1250 gdbserver_state.mem_buf->data, reg_size); in handle_get_reg()
1268 gdb_hextomem(gdbserver_state.mem_buf, gdb_get_cmd_param(params, 2)->data, in handle_write_mem()
1270 if (gdb_target_memory_rw_debug(gdbserver_state.g_cpu, in handle_write_mem()
1272 gdbserver_state.mem_buf->data, in handle_write_mem()
1273 gdbserver_state.mem_buf->len, true)) { in handle_write_mem()
1294 g_byte_array_set_size(gdbserver_state.mem_buf, in handle_read_mem()
1297 if (gdb_target_memory_rw_debug(gdbserver_state.g_cpu, in handle_read_mem()
1299 gdbserver_state.mem_buf->data, in handle_read_mem()
1300 gdbserver_state.mem_buf->len, false)) { in handle_read_mem()
1305 gdb_memtohex(gdbserver_state.str_buf, gdbserver_state.mem_buf->data, in handle_read_mem()
1306 gdbserver_state.mem_buf->len); in handle_read_mem()
1321 cpu_synchronize_state(gdbserver_state.g_cpu); in handle_write_all_regs()
1323 gdb_hextomem(gdbserver_state.mem_buf, gdb_get_cmd_param(params, 0)->data, len); in handle_write_all_regs()
1324 registers = gdbserver_state.mem_buf->data; in handle_write_all_regs()
1326 reg_id < gdbserver_state.g_cpu->gdb_num_g_regs && len > 0; in handle_write_all_regs()
1328 reg_size = gdb_write_register(gdbserver_state.g_cpu, registers, reg_id); in handle_write_all_regs()
1340 cpu_synchronize_state(gdbserver_state.g_cpu); in handle_read_all_regs()
1341 g_byte_array_set_size(gdbserver_state.mem_buf, 0); in handle_read_all_regs()
1343 for (reg_id = 0; reg_id < gdbserver_state.g_cpu->gdb_num_g_regs; reg_id++) { in handle_read_all_regs()
1344 len += gdb_read_register(gdbserver_state.g_cpu, in handle_read_all_regs()
1345 gdbserver_state.mem_buf, in handle_read_all_regs()
1347 g_assert(len == gdbserver_state.mem_buf->len); in handle_read_all_regs()
1350 gdb_memtohex(gdbserver_state.str_buf, gdbserver_state.mem_buf->data, len); in handle_read_all_regs()
1361 cpu_single_step(gdbserver_state.c_cpu, gdbserver_state.sstep_flags); in handle_step()
1419 g_string_assign(gdbserver_state.str_buf, "E22"); in handle_v_attach()
1435 gdbserver_state.g_cpu = cpu; in handle_v_attach()
1436 gdbserver_state.c_cpu = cpu; in handle_v_attach()
1438 if (gdbserver_state.allow_stop_reply) { in handle_v_attach()
1439 g_string_printf(gdbserver_state.str_buf, "T%02xthread:", GDB_SIGNAL_TRAP); in handle_v_attach()
1440 gdb_append_thread_id(cpu, gdbserver_state.str_buf); in handle_v_attach()
1441 g_string_append_c(gdbserver_state.str_buf, ';'); in handle_v_attach()
1442 gdbserver_state.allow_stop_reply = false; in handle_v_attach()
1530 g_string_printf(gdbserver_state.str_buf, "ENABLE=%x", SSTEP_ENABLE); in handle_query_qemu_sstepbits()
1532 if (gdbserver_state.supported_sstep_flags & SSTEP_NOIRQ) { in handle_query_qemu_sstepbits()
1533 g_string_append_printf(gdbserver_state.str_buf, ",NOIRQ=%x", in handle_query_qemu_sstepbits()
1537 if (gdbserver_state.supported_sstep_flags & SSTEP_NOTIMER) { in handle_query_qemu_sstepbits()
1538 g_string_append_printf(gdbserver_state.str_buf, ",NOTIMER=%x", in handle_query_qemu_sstepbits()
1555 if (new_sstep_flags & ~gdbserver_state.supported_sstep_flags) { in handle_set_qemu_sstep()
1560 gdbserver_state.sstep_flags = new_sstep_flags; in handle_set_qemu_sstep()
1566 g_string_printf(gdbserver_state.str_buf, "0x%x", in handle_query_qemu_sstep()
1567 gdbserver_state.sstep_flags); in handle_query_qemu_sstep()
1581 process = gdb_get_cpu_process(gdbserver_state.g_cpu); in handle_query_curr_tid()
1583 g_string_assign(gdbserver_state.str_buf, "QC"); in handle_query_curr_tid()
1584 gdb_append_thread_id(cpu, gdbserver_state.str_buf); in handle_query_curr_tid()
1590 if (!gdbserver_state.query_cpu) { in handle_query_threads()
1595 g_string_assign(gdbserver_state.str_buf, "m"); in handle_query_threads()
1596 gdb_append_thread_id(gdbserver_state.query_cpu, gdbserver_state.str_buf); in handle_query_threads()
1598 gdbserver_state.query_cpu = gdb_next_attached_cpu(gdbserver_state.query_cpu); in handle_query_threads()
1604 g_string_printf(gdbserver_state.str_buf, "name:qemu-%s;version:%s;", in handle_query_gdb_server_version()
1607 g_string_printf(gdbserver_state.str_buf, "name:qemu-system-%s;version:%s;", in handle_query_gdb_server_version()
1615 gdbserver_state.query_cpu = gdb_first_attached_cpu(); in handle_query_first_threads()
1638 if (gdbserver_state.multiprocess && (gdbserver_state.process_num > 1)) { in handle_query_thread_extra()
1651 gdb_memtohex(gdbserver_state.str_buf, (uint8_t *)rs->str, rs->len); in handle_query_thread_extra()
1674 g_string_printf(gdbserver_state.str_buf, "PacketSize=%x", MAX_PACKET_LENGTH); in handle_query_supported()
1676 g_string_append(gdbserver_state.str_buf, ";qXfer:features:read+"); in handle_query_supported()
1680 g_string_append(gdbserver_state.str_buf, in handle_query_supported()
1686 if (get_task_state(gdbserver_state.c_cpu)) { in handle_query_supported()
1687 g_string_append(gdbserver_state.str_buf, ";qXfer:auxv:read+"); in handle_query_supported()
1689 g_string_append(gdbserver_state.str_buf, ";QCatchSyscalls+"); in handle_query_supported()
1691 g_string_append(gdbserver_state.str_buf, ";qXfer:siginfo:read+"); in handle_query_supported()
1693 g_string_append(gdbserver_state.str_buf, ";qXfer:exec-file:read+"); in handle_query_supported()
1700 gdbserver_state.multiprocess = true; in handle_query_supported()
1707 g_string_append(gdbserver_state.str_buf, ";vContSupported+;multiprocess+"); in handle_query_supported()
1712 g_string_append(gdbserver_state.str_buf, extra_query_flags[i]); in handle_query_supported()
1731 process = gdb_get_cpu_process(gdbserver_state.g_cpu); in handle_query_xfer_features()
1732 if (!gdb_get_core_xml_file(gdbserver_state.g_cpu)) { in handle_query_xfer_features()
1757 g_string_assign(gdbserver_state.str_buf, "m"); in handle_query_xfer_features()
1758 gdb_memtox(gdbserver_state.str_buf, xml + addr, len); in handle_query_xfer_features()
1760 g_string_assign(gdbserver_state.str_buf, "l"); in handle_query_xfer_features()
1761 gdb_memtox(gdbserver_state.str_buf, xml + addr, total_len - addr); in handle_query_xfer_features()
1764 gdb_put_packet_binary(gdbserver_state.str_buf->str, in handle_query_xfer_features()
1765 gdbserver_state.str_buf->len, true); in handle_query_xfer_features()
1770 g_string_printf(gdbserver_state.str_buf, "sstepbits;sstep"); in handle_query_qemu_supported()
1772 g_string_append(gdbserver_state.str_buf, ";PhyMemMode"); in handle_query_qemu_supported()
2043 if (gdbserver_state.allow_stop_reply) { in handle_target_halt()
2044 g_string_printf(gdbserver_state.str_buf, "T%02xthread:", GDB_SIGNAL_TRAP); in handle_target_halt()
2045 gdb_append_thread_id(gdbserver_state.c_cpu, gdbserver_state.str_buf); in handle_target_halt()
2046 g_string_append_c(gdbserver_state.str_buf, ';'); in handle_target_halt()
2048 gdbserver_state.allow_stop_reply = false; in handle_target_halt()
2055 gdb_breakpoint_remove_all(gdbserver_state.c_cpu); in handle_target_halt()
2322 gdbserver_state.c_cpu = cpu; in gdb_set_stop_cpu()
2323 gdbserver_state.g_cpu = cpu; in gdb_set_stop_cpu()
2330 gdbserver_state.allow_stop_reply = false; in gdb_read_byte()
2332 if (gdbserver_state.last_packet->len) { in gdb_read_byte()
2337 gdb_put_buffer(gdbserver_state.last_packet->data, in gdb_read_byte()
2338 gdbserver_state.last_packet->len); in gdb_read_byte()
2346 g_byte_array_set_size(gdbserver_state.last_packet, 0); in gdb_read_byte()
2362 gdbserver_state.allow_stop_reply = true; in gdb_read_byte()
2368 switch(gdbserver_state.state) { in gdb_read_byte()
2372 gdbserver_state.line_buf_index = 0; in gdb_read_byte()
2373 gdbserver_state.line_sum = 0; in gdb_read_byte()
2374 gdbserver_state.state = RS_GETLINE; in gdb_read_byte()
2387 gdbserver_state.state = RS_GETLINE_ESC; in gdb_read_byte()
2388 gdbserver_state.line_sum += ch; in gdb_read_byte()
2391 gdbserver_state.state = RS_GETLINE_RLE; in gdb_read_byte()
2392 gdbserver_state.line_sum += ch; in gdb_read_byte()
2395 gdbserver_state.state = RS_CHKSUM1; in gdb_read_byte()
2396 } else if (gdbserver_state.line_buf_index >= sizeof(gdbserver_state.line_buf) - 1) { in gdb_read_byte()
2398 gdbserver_state.state = RS_IDLE; in gdb_read_byte()
2401 gdbserver_state.line_buf[gdbserver_state.line_buf_index++] = ch; in gdb_read_byte()
2402 gdbserver_state.line_sum += ch; in gdb_read_byte()
2408 gdbserver_state.state = RS_CHKSUM1; in gdb_read_byte()
2409 } else if (gdbserver_state.line_buf_index >= sizeof(gdbserver_state.line_buf) - 1) { in gdb_read_byte()
2412 gdbserver_state.state = RS_IDLE; in gdb_read_byte()
2415 gdbserver_state.line_buf[gdbserver_state.line_buf_index++] = ch ^ 0x20; in gdb_read_byte()
2416 gdbserver_state.line_sum += ch; in gdb_read_byte()
2417 gdbserver_state.state = RS_GETLINE; in gdb_read_byte()
2428 gdbserver_state.state = RS_GETLINE; in gdb_read_byte()
2432 … if (gdbserver_state.line_buf_index + repeat >= sizeof(gdbserver_state.line_buf) - 1) { in gdb_read_byte()
2435 gdbserver_state.state = RS_IDLE; in gdb_read_byte()
2436 } else if (gdbserver_state.line_buf_index < 1) { in gdb_read_byte()
2439 gdbserver_state.state = RS_GETLINE; in gdb_read_byte()
2442 memset(gdbserver_state.line_buf + gdbserver_state.line_buf_index, in gdb_read_byte()
2443 gdbserver_state.line_buf[gdbserver_state.line_buf_index - 1], repeat); in gdb_read_byte()
2444 gdbserver_state.line_buf_index += repeat; in gdb_read_byte()
2445 gdbserver_state.line_sum += ch; in gdb_read_byte()
2446 gdbserver_state.state = RS_GETLINE; in gdb_read_byte()
2454 gdbserver_state.state = RS_GETLINE; in gdb_read_byte()
2457 gdbserver_state.line_buf[gdbserver_state.line_buf_index] = '\0'; in gdb_read_byte()
2458 gdbserver_state.line_csum = fromhex(ch) << 4; in gdb_read_byte()
2459 gdbserver_state.state = RS_CHKSUM2; in gdb_read_byte()
2465 gdbserver_state.state = RS_GETLINE; in gdb_read_byte()
2468 gdbserver_state.line_csum |= fromhex(ch); in gdb_read_byte()
2470 if (gdbserver_state.line_csum != (gdbserver_state.line_sum & 0xff)) { in gdb_read_byte()
2471 … trace_gdbstub_err_checksum_incorrect(gdbserver_state.line_sum, gdbserver_state.line_csum); in gdb_read_byte()
2475 gdbserver_state.state = RS_IDLE; in gdb_read_byte()
2480 gdbserver_state.state = gdb_handle_packet(gdbserver_state.line_buf); in gdb_read_byte()
2500 assert(gdbserver_state.process_num == 0); in gdb_create_default_process()
2503 if (gdbserver_state.process_num) { in gdb_create_default_process()