From: Gary Benson <gbenson@redhat.com>
To: gdb-patches@sourceware.org
Subject: [PATCH] Mark object files with "target:" filenames as OBJF_NONLOCAL_FILENAME
Date: Mon, 13 Apr 2015 19:07:00 -0000 [thread overview]
Message-ID: <1428952063-2121-1-git-send-email-gbenson@redhat.com> (raw)
Hi all,
This patch introduces a new objfile flag OBJF_NONLOCAL_FILENAME to
denote that objfile->original_name and objfile->obfd->filename are
filenames referring to files on filesystems other than GDB's local
filesystem. allocate_objfile is updated to force
OBJF_NONLOCAL_FILENAME if the specified name starts with "target:",
and to not attempt to expand the name using gdb_abspath if flags has
OBJF_NONLOCAL_FILENAME set. load_auto_scripts_for_objfile is updated
to not attempt loading of auto-load scripts for objfiles with
OBJF_NONLOCAL_FILENAME set in their flags.
A new flag was created rather than reusing OBJF_NOT_FILENAME because
setting that flag would stop Python's gdb.lookup_objfile from seeing
the file, and it's not clear that that's desirable.
Without this patch you *sometimes* get things like:
Reading symbols from /home/gary/target:/lib64/libreadline.so.6...
I haven't figured out why this doesn't always happen but it's plainly
wrong :)
Built and regtested on RHEL6.6 x86_64.
Ok to commit?
Cheers,
Gary
gdb/ChangeLog:
* objfiles.h (OBJF_NONLOCAL_FILENAME): New define.
* objfiles.c (allocate_objfile): Force OBJF_NONLOCAL_FILENAME
for BFDs with "target:" filenames. Do not attempt to expand
name if flags has OBJF_NONLOCAL_FILENAME set.
* auto-load.c (load_auto_scripts_for_objfile): Do not attempt
to auto-load scripts for OBJF_NONLOCAL_FILENAME objfiles.
---
gdb/ChangeLog | 9 +++++++++
gdb/auto-load.c | 7 +++++--
gdb/objfiles.c | 6 +++++-
gdb/objfiles.h | 5 +++++
4 files changed, 24 insertions(+), 3 deletions(-)
diff --git a/gdb/auto-load.c b/gdb/auto-load.c
index 778eeb6..6782f98 100644
--- a/gdb/auto-load.c
+++ b/gdb/auto-load.c
@@ -1195,8 +1195,11 @@ load_auto_scripts_for_objfile (struct objfile *objfile)
{
/* Return immediately if auto-loading has been globally disabled.
This is to handle sequencing of operations during gdb startup.
- Also return immediately if OBJFILE is not actually a file. */
- if (!global_auto_load || (objfile->flags & OBJF_NOT_FILENAME) != 0)
+ Also return immediately if OBJFILE is not a file on the local
+ filesystem. */
+ if (!global_auto_load
+ || (objfile->flags & (OBJF_NOT_FILENAME
+ | OBJF_NONLOCAL_FILENAME)) != 0)
return;
/* Load any extension language scripts for this objfile.
diff --git a/gdb/objfiles.c b/gdb/objfiles.c
index ff20bc8..c1ad815 100644
--- a/gdb/objfiles.c
+++ b/gdb/objfiles.c
@@ -295,13 +295,17 @@ allocate_objfile (bfd *abfd, const char *name, int flags)
objfile_alloc_data (objfile);
+ /* Target filenames are non-local. */
+ if (name != NULL && is_target_filename (name))
+ flags |= OBJF_NONLOCAL_FILENAME;
+
if (name == NULL)
{
gdb_assert (abfd == NULL);
gdb_assert ((flags & OBJF_NOT_FILENAME) != 0);
expanded_name = xstrdup ("<<anonymous objfile>>");
}
- else if ((flags & OBJF_NOT_FILENAME) != 0)
+ else if ((flags & (OBJF_NOT_FILENAME | OBJF_NONLOCAL_FILENAME)) != 0)
expanded_name = xstrdup (name);
else
expanded_name = gdb_abspath (name);
diff --git a/gdb/objfiles.h b/gdb/objfiles.h
index a0dc69b..fbc3277 100644
--- a/gdb/objfiles.h
+++ b/gdb/objfiles.h
@@ -459,6 +459,11 @@ struct objfile
#define OBJF_NOT_FILENAME (1 << 6)
+/* ORIGINAL_NAME and OBFD->FILENAME are filenames on non-local
+ filesystems and should be treated as opaque. */
+
+#define OBJF_NONLOCAL_FILENAME (1 << 7)
+
/* Declarations for functions defined in objfiles.c */
extern struct objfile *allocate_objfile (bfd *, const char *name, int);
--
1.7.1
next reply other threads:[~2015-04-13 19:07 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-04-13 19:07 Gary Benson [this message]
2015-04-13 23:27 ` Doug Evans
2015-04-14 11:41 ` Gary Benson
2015-04-14 16:52 ` Doug Evans
2015-04-14 21:30 ` Gary Benson
2015-04-15 8:03 ` [PATCH v2] Do not manipulate "target:" filenames as local paths Gary Benson
2015-04-23 21:22 ` [PING][PATCH " Gary Benson
2015-04-24 19:16 ` [PATCH " Doug Evans
2015-04-27 14:42 ` Gary Benson
2015-04-15 8:56 ` [PATCH] Mark object files with "target:" filenames as OBJF_NONLOCAL_FILENAME Pedro Alves
2015-04-15 12:09 ` 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=1428952063-2121-1-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