Introduce linux_proc_pid_to_exec_file
This commit introduces a new function linux_proc_pid_to_exec_file that shared Linux code can use to discover the filename of the executable that was run to create a process on the system. gdb/ChangeLog: * nat/linux-procfs.h (linux_proc_pid_to_exec_file): New declaration. * nat/linux-procfs.c (linux_proc_pid_to_exec_file): New function, factored out from... * linux-nat.c (linux_child_pid_to_exec_file): ...here.
This commit is contained in:
parent
a9a5a3d1d2
commit
e0d86d2cbd
@ -1,3 +1,11 @@
|
||||
2015-04-17 Gary Benson <gbenson@redhat.com>
|
||||
|
||||
* nat/linux-procfs.h (linux_proc_pid_to_exec_file):
|
||||
New declaration.
|
||||
* nat/linux-procfs.c (linux_proc_pid_to_exec_file):
|
||||
New function, factored out from...
|
||||
* linux-nat.c (linux_child_pid_to_exec_file): ...here.
|
||||
|
||||
2015-04-17 Gary Benson <gbenson@redhat.com>
|
||||
|
||||
* exec.c (solist.h): New include.
|
||||
|
@ -4106,15 +4106,7 @@ linux_nat_thread_name (struct target_ops *self, struct thread_info *thr)
|
||||
static char *
|
||||
linux_child_pid_to_exec_file (struct target_ops *self, int pid)
|
||||
{
|
||||
static char buf[PATH_MAX];
|
||||
char name[PATH_MAX];
|
||||
|
||||
xsnprintf (name, PATH_MAX, "/proc/%d/exe", pid);
|
||||
memset (buf, 0, PATH_MAX);
|
||||
if (readlink (name, buf, PATH_MAX - 1) <= 0)
|
||||
strcpy (buf, name);
|
||||
|
||||
return buf;
|
||||
return linux_proc_pid_to_exec_file (pid);
|
||||
}
|
||||
|
||||
/* Implement the to_xfer_partial interface for memory reads using the /proc
|
||||
|
@ -273,3 +273,22 @@ linux_proc_task_list_dir_exists (pid_t pid)
|
||||
xsnprintf (pathname, sizeof (pathname), "/proc/%ld/task", (long) pid);
|
||||
return (stat (pathname, &buf) == 0);
|
||||
}
|
||||
|
||||
/* See linux-procfs.h. */
|
||||
|
||||
char *
|
||||
linux_proc_pid_to_exec_file (int pid)
|
||||
{
|
||||
static char buf[PATH_MAX];
|
||||
char name[PATH_MAX];
|
||||
ssize_t len;
|
||||
|
||||
xsnprintf (name, PATH_MAX, "/proc/%d/exe", pid);
|
||||
len = readlink (name, buf, PATH_MAX - 1);
|
||||
if (len <= 0)
|
||||
strcpy (buf, name);
|
||||
else
|
||||
buf[len] = '\0';
|
||||
|
||||
return buf;
|
||||
}
|
||||
|
@ -73,4 +73,10 @@ extern void linux_proc_attach_tgid_threads (pid_t pid,
|
||||
/* Return true if the /proc/PID/task/ directory exists. */
|
||||
extern int linux_proc_task_list_dir_exists (pid_t pid);
|
||||
|
||||
/* Return the full absolute name of the executable file that was run
|
||||
to create the process PID. The returned value persists until this
|
||||
function is next called. */
|
||||
|
||||
extern char *linux_proc_pid_to_exec_file (int pid);
|
||||
|
||||
#endif /* COMMON_LINUX_PROCFS_H */
|
||||
|
Loading…
Reference in New Issue
Block a user