mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-10-19 05:42:42 +08:00
* win32-nat.c (child_pid_to_exec_file): New function.
(init_child_ops): Add child_pid_to_exec_file as to_pid_to_exec_file functionality.
This commit is contained in:
@ -1,3 +1,9 @@
|
|||||||
|
2004-06-29 Corinna Vinschen <vinschen@redhat.com>
|
||||||
|
|
||||||
|
* win32-nat.c (child_pid_to_exec_file): New function.
|
||||||
|
(init_child_ops): Add child_pid_to_exec_file as to_pid_to_exec_file
|
||||||
|
functionality.
|
||||||
|
|
||||||
2004-06-28 Andrew Cagney <cagney@gnu.org>
|
2004-06-28 Andrew Cagney <cagney@gnu.org>
|
||||||
|
|
||||||
* defs.h (xstrvprintf): Declare.
|
* defs.h (xstrvprintf): Declare.
|
||||||
|
@ -1656,6 +1656,36 @@ child_detach (char *args, int from_tty)
|
|||||||
unpush_target (&child_ops);
|
unpush_target (&child_ops);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
char *
|
||||||
|
child_pid_to_exec_file (int pid)
|
||||||
|
{
|
||||||
|
/* Try to find the process path using the Cygwin internal process list
|
||||||
|
pid isn't a valid pid, unfortunately. Use current_event.dwProcessId
|
||||||
|
instead. */
|
||||||
|
/* TODO: Also find native Windows processes using CW_GETPINFO_FULL. */
|
||||||
|
|
||||||
|
static char path[MAX_PATH + 1];
|
||||||
|
char *path_ptr = NULL;
|
||||||
|
int cpid;
|
||||||
|
struct external_pinfo *pinfo;
|
||||||
|
|
||||||
|
cygwin_internal (CW_LOCK_PINFO, 1000);
|
||||||
|
for (cpid = 0;
|
||||||
|
(pinfo = (struct external_pinfo *)
|
||||||
|
cygwin_internal (CW_GETPINFO, cpid | CW_NEXTPID));
|
||||||
|
cpid = pinfo->pid)
|
||||||
|
{
|
||||||
|
if (pinfo->dwProcessId == current_event.dwProcessId) /* Got it */
|
||||||
|
{
|
||||||
|
cygwin_conv_to_full_posix_path (pinfo->progname, path);
|
||||||
|
path_ptr = path;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
cygwin_internal (CW_UNLOCK_PINFO);
|
||||||
|
return path_ptr;
|
||||||
|
}
|
||||||
|
|
||||||
/* Print status information about what we're accessing. */
|
/* Print status information about what we're accessing. */
|
||||||
|
|
||||||
static void
|
static void
|
||||||
@ -2078,6 +2108,7 @@ init_child_ops (void)
|
|||||||
child_ops.to_has_registers = 1;
|
child_ops.to_has_registers = 1;
|
||||||
child_ops.to_has_execution = 1;
|
child_ops.to_has_execution = 1;
|
||||||
child_ops.to_magic = OPS_MAGIC;
|
child_ops.to_magic = OPS_MAGIC;
|
||||||
|
child_ops.to_pid_to_exec_file = child_pid_to_exec_file;
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
@ -1656,6 +1656,36 @@ child_detach (char *args, int from_tty)
|
|||||||
unpush_target (&child_ops);
|
unpush_target (&child_ops);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
char *
|
||||||
|
child_pid_to_exec_file (int pid)
|
||||||
|
{
|
||||||
|
/* Try to find the process path using the Cygwin internal process list
|
||||||
|
pid isn't a valid pid, unfortunately. Use current_event.dwProcessId
|
||||||
|
instead. */
|
||||||
|
/* TODO: Also find native Windows processes using CW_GETPINFO_FULL. */
|
||||||
|
|
||||||
|
static char path[MAX_PATH + 1];
|
||||||
|
char *path_ptr = NULL;
|
||||||
|
int cpid;
|
||||||
|
struct external_pinfo *pinfo;
|
||||||
|
|
||||||
|
cygwin_internal (CW_LOCK_PINFO, 1000);
|
||||||
|
for (cpid = 0;
|
||||||
|
(pinfo = (struct external_pinfo *)
|
||||||
|
cygwin_internal (CW_GETPINFO, cpid | CW_NEXTPID));
|
||||||
|
cpid = pinfo->pid)
|
||||||
|
{
|
||||||
|
if (pinfo->dwProcessId == current_event.dwProcessId) /* Got it */
|
||||||
|
{
|
||||||
|
cygwin_conv_to_full_posix_path (pinfo->progname, path);
|
||||||
|
path_ptr = path;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
cygwin_internal (CW_UNLOCK_PINFO);
|
||||||
|
return path_ptr;
|
||||||
|
}
|
||||||
|
|
||||||
/* Print status information about what we're accessing. */
|
/* Print status information about what we're accessing. */
|
||||||
|
|
||||||
static void
|
static void
|
||||||
@ -2078,6 +2108,7 @@ init_child_ops (void)
|
|||||||
child_ops.to_has_registers = 1;
|
child_ops.to_has_registers = 1;
|
||||||
child_ops.to_has_execution = 1;
|
child_ops.to_has_execution = 1;
|
||||||
child_ops.to_magic = OPS_MAGIC;
|
child_ops.to_magic = OPS_MAGIC;
|
||||||
|
child_ops.to_pid_to_exec_file = child_pid_to_exec_file;
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
Reference in New Issue
Block a user