starts. */
UDISessionId udi_session_id = -1;
+static char *udi_config_id;
CPUOffset IMemStart = 0;
CPUSizeT IMemSize = 0;
if (udi_session_id < 0)
{
- printf_unfiltered("UDI connection not open yet.\n");
- return;
+ /* If the TIP is not open, open it. */
+ if (UDIConnect (udi_config_id, &udi_session_id))
+ error("UDIConnect() failed: %s\n", dfe_errmsg);
+ /* We will need to download the program. */
+ entry.Offset = 0;
}
inferior_pid = 40000;
/* XXX - need cleanups for udiconnect for various failures!!! */
-static char *udi_config_id;
static void
udi_open (name, from_tty)
char *name;
udi_config_id = strdup (strtok (name, " \t"));
if (UDIConnect (udi_config_id, &udi_session_id))
+ /* FIXME: Should set udi_session_id to -1 here. */
error("UDIConnect() failed: %s\n", dfe_errmsg);
push_target (&udi_ops);
return;
/* We should never get here if there isn't something valid in
- udi_session_id. */
+ udi_session_id. */
if (UDIDisconnect (udi_session_id, UDITerminateSession))
- error ("UDIDisconnect() failed in udi_close");
+ {
+ if (quitting)
+ warning ("UDIDisconnect() failed in udi_close");
+ else
+ error ("UDIDisconnect() failed in udi_close");
+ }
/* Do not try to close udi_session_id again, later in the program. */
udi_session_id = -1;
UDIBool HostEndian = 0;
UDIError err;
+ if (args == NULL)
+ error_no_arg ("program to attach");
+
if (udi_session_id < 0)
error ("UDI connection not opened yet, use the 'target udi' command.\n");
if (UDIDisconnect (udi_session_id, UDIContinueSession))
error ("UDIDisconnect() failed in udi_detach");
- /* calls udi_close to do the real work (which looks like it calls
- UDIDisconnect with UDITerminateSession, FIXME). */
+ /* Don't try to UDIDisconnect it again in udi_close, which is called from
+ pop_target. */
+ udi_session_id = -1;
+ inferior_pid = 0;
+
pop_target();
- /* FIXME, message too similar to what udi_close prints. */
if (from_tty)
- printf_unfiltered ("Ending remote debugging\n");
+ printf_unfiltered ("Detaching from TIP\n");
}
static void
udi_files_info ()
{
- printf_unfiltered ("\tAttached to UDI socket to %s and running program %s.\n",
- udi_config_id, prog_name);
+ printf_unfiltered ("\tAttached to UDI socket to %s", udi_config_id);
+ if (prog_name != NULL)
+ printf_unfiltered ("and running program %s", prog_name);
+ printf_unfiltered (".\n");
}
/**************************************************** UDI_INSERT_BREAKPOINT */
#endif /* 0 */
/* Keep the target around, e.g. so "run" can do the right thing when
- we are already debugging something. FIXME-maybe: should we kill the
- TIP with UDIDisconnect using UDITerminateSession, and then restart
- it on the next "run"? */
+ we are already debugging something. */
+ if (UDIDisconnect (udi_session_id, UDITerminateSession))
+ {
+ warning ("UDIDisconnect() failed");
+ }
+
+ /* Do not try to close udi_session_id again, later in the program. */
+ udi_session_id = -1;
inferior_pid = 0;
}