target: remove legacy target events
[fw/openocd] / src / server / gdb_server.c
index 238273bb0c9f09bb1bd922451a13ec9239c5095d..1c0ee08fd80dca34876041f83d7c501dece66449 100644 (file)
@@ -735,7 +735,6 @@ static int gdb_target_callback_event_handler(struct target *target,
                        target_call_event_callbacks(target, TARGET_EVENT_GDB_END);
                        break;
                case TARGET_EVENT_GDB_FLASH_ERASE_START:
-                       target_handle_event(target, TARGET_EVENT_OLD_gdb_program_config);
                        retval = jtag_execute_queue();
                        if (retval != ERROR_OK)
                                return retval;
@@ -1088,7 +1087,7 @@ static int gdb_get_register_packet(struct connection *connection,
 
        if (reg_list_size <= reg_num) {
                LOG_ERROR("gdb requested a non-existing register");
-               exit(-1);
+               return ERROR_SERVER_REMOTE_CLOSED;
        }
 
        if (!reg_list[reg_num]->valid)
@@ -1123,7 +1122,7 @@ static int gdb_set_register_packet(struct connection *connection,
        if (retval != ERROR_OK)
                return gdb_error(connection, retval);
 
-       if (reg_list_size < reg_num) {
+       if (reg_list_size <= reg_num) {
                LOG_ERROR("gdb requested a non-existing register");
                return ERROR_SERVER_REMOTE_CLOSED;
        }
@@ -1137,7 +1136,10 @@ static int gdb_set_register_packet(struct connection *connection,
        bin_buf = malloc(DIV_ROUND_UP(reg_list[reg_num]->size, 8));
        int chars = (DIV_ROUND_UP(reg_list[reg_num]->size, 8) * 2);
 
-       /* fix!!! add some sanity checks on packet size here */
+       if ((unsigned int)chars != strlen(separator + 1)) {
+               LOG_ERROR("gdb sent a packet with wrong register size");
+               return ERROR_SERVER_REMOTE_CLOSED;
+       }
 
        gdb_target_to_reg(target, separator + 1, chars, bin_buf);
 
@@ -1364,7 +1366,6 @@ static int gdb_step_continue_packet(struct connection *connection,
 
        if (packet[0] == 'c') {
                LOG_DEBUG("continue");
-               target_handle_event(target, TARGET_EVENT_OLD_pre_resume);
                retval = target_resume(target, current, address, 0, 0); /* resume at current
                                                                         *address, don't handle
                                                                         *breakpoints, not debugging