This is the mail archive of the
gdb-patches@sourceware.org
mailing list for the GDB project.
Re: [PATCH 7/9] Update exec_file_attach to cope with "target:" filenames
- From: Gary Benson <gbenson at redhat dot com>
- To: Pedro Alves <palves at redhat dot com>
- Cc: gdb-patches at sourceware dot org
- Date: Wed, 1 Apr 2015 14:55:25 +0100
- Subject: Re: [PATCH 7/9] Update exec_file_attach to cope with "target:" filenames
- Authentication-results: sourceware.org; auth=none
- References: <1426870087-32654-1-git-send-email-gbenson at redhat dot com> <1426870087-32654-8-git-send-email-gbenson at redhat dot com> <551BE12D dot 1080300 at redhat dot com>
Pedro Alves wrote:
> On 03/20/2015 04:48 PM, Gary Benson wrote:
> > This commit adds support for filenames prefixed with "target:" to
> > exec_file_attach. This is required to correctly follow inferior
> > exec* calls when a gdb_sysroot prefixed with "target:" is set.
>
> Hmm, I don't see how. Isn't this only true when target_pid_to_exec_file
> prepends the sysroot, which it doesn't yet? I think this should move
> to that other series.
Search for gdb_sysroot in infrun.c.
> A couple bits could use more explanation (in commit log and/or
> comments):
>
> - Why is writing into executable files not supported with "target:" ?
> - The skipping of gdb_realpath_keepfile.
Are these two additions ok?
diff --git a/gdb/exec.c b/gdb/exec.c
index 6b6fc7d..ce61303 100644
--- a/gdb/exec.c
+++ b/gdb/exec.c
@@ -192,6 +192,7 @@ exec_file_attach (const char *filename, int from_tty)
if (load_via_target)
{
+ /* gdb_bfd_fopen does not support "target:" filenames. */
if (write_files)
warning (_("writing into executable files is "
"not supported for %s sysroots"),
@@ -247,8 +248,10 @@ exec_file_attach (const char *filename, int from_tty)
scratch_pathname, bfd_errmsg (bfd_get_error ()));
}
+ /* gdb_realpath_keepfile resolves symlinks on the local
+ filesystem and so cannot be used for "target:" files. */
gdb_assert (exec_filename == NULL);
if (load_via_target)
exec_filename = xstrdup (bfd_get_filename (exec_bfd));
else
exec_filename = gdb_realpath_keepfile (scratch_pathname);
Cheers,
Gary
--
http://gbenson.net/