long l;
if (!current_thread)
- return;
+ return; /* Windows sometimes uses a non-existent thread id in its
+ events */
if (current_thread->reload_context)
{
child_fetch_inferior_registers (int r)
{
current_thread = thread_rec (PIDGET (inferior_ptid), TRUE);
+ /* Check if current_thread exists. Windows sometimes uses a non-existent
+ thread id in its events */
if (current_thread)
do_child_fetch_inferior_registers (r);
}
do_child_store_inferior_registers (int r)
{
if (!current_thread)
- /* nothing to do */;
+ /* Windows sometimes uses a non-existent thread id in its events */;
else if (r >= 0)
regcache_collect (r, ((char *) ¤t_thread->context) + mappings[r]);
else
child_store_inferior_registers (int r)
{
current_thread = thread_rec (PIDGET (inferior_ptid), TRUE);
+ /* Check if current_thread exists. Windows sometimes uses a non-existent
+ thread id in its events */
if (current_thread)
do_child_store_inferior_registers (r);
}
return res;
}
+/* Called in pathological case where Windows fails to send a
+ CREATE_PROCESS_DEBUG_EVENT after an attach. */
DWORD
-fake_create_process ()
+fake_create_process (void)
{
current_process_handle = OpenProcess (PROCESS_ALL_ACCESS, FALSE,
current_event.dwProcessId);
{
if (!saw_create && attach_flag)
{
+ /* Kludge around a Windows bug where first event is a create
+ thread event. Caused when attached process does not have
+ a main thread. */
retval = ourstatus->value.related_pid = fake_create_process ();
saw_create++;
}
ENV is the environment vector to pass. Errors reported with error(). */
static void
-child_create_inferior (char *exec_file, char *allargs, char **env)
+child_create_inferior (char *exec_file, char *allargs, char **env,
+ int from_tty)
{
char *winenv;
char *temp;
void
_initialize_core_win32 (void)
{
- add_core_fns (&win32_elf_core_fns);
+ deprecated_add_core_fns (&win32_elf_core_fns);
}
void