From 145fdc6e9f092290bd97b5868a4a925fe51a919f Mon Sep 17 00:00:00 2001 From: Michael Snyder Date: Wed, 9 Jan 2002 02:21:25 +0000 Subject: [PATCH] 2002-01-08 Michael Snyder * linux-proc.c (child_pid_to_exec_file): Use readlink to get the real name of the executable, rather than the /proc name. --- gdb/ChangeLog | 5 +++++ gdb/linux-proc.c | 16 ++++++++++++---- 2 files changed, 17 insertions(+), 4 deletions(-) diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 49eac086f71..e06162246dc 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,8 @@ +2002-01-08 Michael Snyder + + * linux-proc.c (child_pid_to_exec_file): Use readlink to get the + real name of the executable, rather than the /proc name. + 2002-01-03 Michael Snyder Implement a "generate-core-file" command in gdb, save target state. diff --git a/gdb/linux-proc.c b/gdb/linux-proc.c index 4d48b8d16ea..3ccab9ced94 100644 --- a/gdb/linux-proc.c +++ b/gdb/linux-proc.c @@ -37,11 +37,19 @@ char * child_pid_to_exec_file (int pid) { - static char fname[MAXPATHLEN]; + char *name1, *name2; - sprintf (fname, "/proc/%d/exe", pid); - /* FIXME use readlink to get the real name. */ - return fname; + name1 = xmalloc (MAXPATHLEN); + name2 = xmalloc (MAXPATHLEN); + make_cleanup (xfree, name1); + make_cleanup (xfree, name2); + memset (name2, 0, MAXPATHLEN); + + sprintf (name1, "/proc/%d/exe", pid); + if (readlink (name1, name2, MAXPATHLEN) > 0) + return name2; + else + return name1; } /* Function: linux_find_memory_regions -- 2.30.2