From: Gary Benson <gbenson@redhat.com>
To: gdb-patches@sourceware.org
Subject: [PATCH 2/2] Use exec_file_find to locate executable on attach (sometimes)
Date: Thu, 05 Mar 2015 11:37:00 -0000 [thread overview]
Message-ID: <1425555461-22093-3-git-send-email-gbenson@redhat.com> (raw)
In-Reply-To: <1425555461-22093-1-git-send-email-gbenson@redhat.com>
This commit updates attach_command_post_wait to use exec_file_find
to compute the full pathname of the main executable if the pathname
returned by target_pid_to_exec_file is absolute and if gdb_sysroot
is non-empty and not remote. The net effect of this is to prefix
the main executable's path with gdb_sysroot if gdb_sysroot is set;
this is useful for attaching to processes running in chroot jails
or containerized environments. This logic is skipped for remote
gdb_sysroots because the subsequent code does not support opening
the main executable remotely.
gdb/ChangeLog:
* infcmd.c (filenames.h): New include.
(remote.h): Likewise.
(solist.h): Likewise.
(attach_command_post_wait): Prefix absolute executable
paths with gdb_sysroot if set and not remote.
---
gdb/ChangeLog | 8 ++++++++
gdb/infcmd.c | 37 +++++++++++++++++++++++++++++--------
2 files changed, 37 insertions(+), 8 deletions(-)
diff --git a/gdb/infcmd.c b/gdb/infcmd.c
index 3737b8f..23c7a6c 100644
--- a/gdb/infcmd.c
+++ b/gdb/infcmd.c
@@ -54,6 +54,9 @@
#include "continuations.h"
#include "linespec.h"
#include "cli/cli-utils.h"
+#include "filenames.h"
+#include "remote.h"
+#include "solist.h"
/* Local functions: */
@@ -2493,16 +2496,34 @@ attach_command_post_wait (char *args, int from_tty, int async_exec)
exec_file = target_pid_to_exec_file (ptid_get_pid (inferior_ptid));
if (exec_file)
{
- /* It's possible we don't have a full path, but rather just a
- filename. Some targets, such as HP-UX, don't provide the
- full path, sigh.
+ /* If there is a gdb_sysroot and exec_file is absolute we
+ prepend gdb_sysroot to exec_file. This is currently
+ disabled for remote sysroot as the subsequent code cannot
+ yet cope with these. */
+ if (IS_ABSOLUTE_PATH (exec_file)
+ && gdb_sysroot != NULL && *gdb_sysroot != '\0'
+ && !remote_filename_p (gdb_sysroot))
+ {
+ int fd = -1;
+
+ full_exec_path = exec_file_find (exec_file, &fd);
+ if (fd >= 0)
+ close (fd);
+ }
- Attempt to qualify the filename against the source path.
- (If that fails, we'll just fall back on the original
- filename. Not much more we can do...) */
+ if (full_exec_path == NULL)
+ {
+ /* It's possible we don't have a full path, but rather
+ just a filename. Some targets, such as HP-UX, don't
+ provide the full path, sigh.
+
+ Attempt to qualify the filename against the source
+ path. (If that fails, we'll just fall back on the
+ original filename. Not much more we can do...) */
- if (!source_full_path_of (exec_file, &full_exec_path))
- full_exec_path = xstrdup (exec_file);
+ if (!source_full_path_of (exec_file, &full_exec_path))
+ full_exec_path = xstrdup (exec_file);
+ }
exec_file_attach (full_exec_path, from_tty);
symbol_file_add_main (full_exec_path, from_tty);
--
1.7.1
next prev parent reply other threads:[~2015-03-05 11:37 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-03-05 11:37 [PATCH 0/2] Use gdb_sysroot for main executable on attach Gary Benson
2015-03-05 11:37 ` Gary Benson [this message]
2015-03-05 11:37 ` [PATCH 1/2] Introduce new function exec_file_find Gary Benson
2015-03-05 12:49 ` [PATCH 0/2] Use gdb_sysroot for main executable on attach Mark Kettenis
2015-03-05 13:39 ` Gary Benson
2015-03-12 11:44 ` [PING][PATCH " Gary Benson
2015-03-18 15:22 ` [PATCH " Gary Benson
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1425555461-22093-3-git-send-email-gbenson@redhat.com \
--to=gbenson@redhat.com \
--cc=gdb-patches@sourceware.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox