gdb_server: refuse gdb connection if target is not examined
If the target is not examined, many internal data required for the gdb connections are not ready nor allocated. This causes OpenOCD to hit a segmentation fault. After the execution of the gdb-attach event handler, check if target has been examined and eventually return error to refuse the gdb connection. Plus, since OpenOCD does not implements non-stop mode yet, gdb expects the target to be halted by the inferior when the connection is established. Print a warning to inform the user in case the target is not halted, but still accept the gdb connection to permit the non-intrusive memory inspection with gdb, as explained in http://openocd.org/doc/html/GDB-and-OpenOCD.html#gdbmeminspect Change-Id: If727d68f683c3a94e4826e8c62977de41274ceff Signed-off-by: Antonio Borneo <borneo.antonio@gmail.com> Reviewed-on: http://openocd.zylin.com/5201 Tested-by: jenkins
This commit is contained in:
parent
6d45e485f9
commit
2f92598f0d
|
@ -1018,6 +1018,17 @@ static int gdb_new_connection(struct connection *connection)
|
|||
target_name(target),
|
||||
target_state_name(target));
|
||||
|
||||
if (!target_was_examined(target)) {
|
||||
LOG_ERROR("Target %s not examined yet, refuse gdb connection %d!",
|
||||
target_name(target), gdb_actual_connections);
|
||||
gdb_actual_connections--;
|
||||
return ERROR_TARGET_NOT_EXAMINED;
|
||||
}
|
||||
|
||||
if (target->state == TARGET_HALTED)
|
||||
LOG_WARNING("GDB connection %d on target %s not halted",
|
||||
gdb_actual_connections, target_name(target));
|
||||
|
||||
/* DANGER! If we fail subsequently, we must remove this handler,
|
||||
* otherwise we occasionally see crashes as the timer can invoke the
|
||||
* callback fn.
|
||||
|
|
Loading…
Reference in New Issue