+2015-01-13 Doug Evans <dje@google.com>
+
+ * objfiles.c (objfile_filename): New function.
+ * objfiles.h (objfile_filename): Declare it.
+ (objfile_name): Add function comment.
+ * python/py-objfile.c (objfpy_lookup_objfile_by_name): Try both the
+ bfd file name (which may be realpath'd), and the original name.
+
2015-01-13 Joel Brobecker <brobecker@adacore.com>
* NEWS: Create a new section for the next release branch.
}
}
-/* Return canonical name for OBJFILE. */
+/* See objfiles.h. */
const char *
objfile_name (const struct objfile *objfile)
/* See objfiles.h. */
+const char *
+objfile_filename (const struct objfile *objfile)
+{
+ if (objfile->obfd != NULL)
+ return bfd_get_filename (objfile->obfd);
+
+ return NULL;
+}
+
+/* See objfiles.h. */
+
const char *
objfile_debug_name (const struct objfile *objfile)
{
void set_objfile_per_bfd (struct objfile *obj);
+/* Return canonical name for OBJFILE.
+ This is the real file name if the file has been opened.
+ Otherwise it is the original name supplied by the user. */
+
const char *objfile_name (const struct objfile *objfile);
+/* Return the (real) file name of OBJFILE if the file has been opened,
+ otherwise return NULL. */
+
+const char *objfile_filename (const struct objfile *objfile);
+
/* Return the name to print for OBJFILE in debugging messages. */
extern const char *objfile_debug_name (const struct objfile *objfile);
ALL_OBJFILES (objfile)
{
+ const char *filename;
+
if ((objfile->flags & OBJF_NOT_FILENAME) != 0)
continue;
/* Don't return separate debug files. */
if (objfile->separate_debug_objfile_backlink != NULL)
continue;
- if (compare_filenames_for_search (objfile_name (objfile), name))
+
+ filename = objfile_filename (objfile);
+ if (filename != NULL && compare_filenames_for_search (filename, name))
+ return objfile;
+ if (compare_filenames_for_search (objfile->original_name, name))
return objfile;
}
+2015-01-13 Doug Evans <dje@google.com>
+
+ * gdb.python/py-objfile.exp: Test gdb.lookup_objfile on symlinked
+ binary.
+
2015-01-13 Joel Brobecker <brobecker@adacore.com>
* Makefile.in (clean mostlyclean): Do not delete *.py.
gdb_test "python print (gdb.lookup_objfile (sep_objfile.build_id, by_build_id=True))" \
"Objfile not found\\.\r\n${python_error_text}"
}
+
+# An objfile that was a symlink to a differently named file is still
+# findable with its original name.
+set symlink_binary [standard_output_file "symlink-binary"]
+remote_exec host "rm -f ${symlink_binary}"
+remote_exec host "ln -sf ${testfile} ${symlink_binary}"
+if [remote_file host exists "${symlink_binary}"] {
+ clean_restart "${symlink_binary}"
+ gdb_test "python print (gdb.lookup_objfile (\"${symlink_binary}\").filename)" \
+ "${testfile}" "gdb.lookup_objfile of symlinked binary"
+}