+2015-01-27 Doug Evans <dje@google.com>
+
+ * NEWS: Mention gdb.Objfile.username.
+ * python/py-objfile.c (objfpy_get_username): New function.
+ (objfile_getset): Add "username".
+
2015-01-24 Mark Wielaard <mjw@redhat.com>
* stack.c (return_command): Markup warning message with _.
*** Changes since GDB 7.9
+* Python Scripting
+
+ ** gdb.Objfile objects have a new attribute "username",
+ which is the name of the objfile as specified by the user,
+ without, for example, resolving symlinks.
+
* New options
* The command 'thread apply all' can now support new option '-ascending'
+2015-01-27 Doug Evans <dje@google.com>
+
+ * python.texi (Objfiles In Python): Document Objfile.username.
+
2015-01-27 Doug Evans <dje@google.com>
* python.texi (Objfiles In Python) <Objfile.filename>: Improve docs.
See the @code{gdb.Objfile.is_valid} method, described below.
@end defvar
+@defvar Objfile.username
+The file name of the objfile as specified by the user as a string.
+
+The value is @code{None} if the objfile is no longer valid.
+See the @code{gdb.Objfile.is_valid} method, described below.
+@end defvar
+
@defvar Objfile.owner
For separate debug info objfiles this is the corresponding @code{gdb.Objfile}
object that debug info is being provided for.
Py_RETURN_NONE;
}
+/* An Objfile method which returns the objfile's file name, as specified
+ by the user, or None. */
+
+static PyObject *
+objfpy_get_username (PyObject *self, void *closure)
+{
+ objfile_object *obj = (objfile_object *) self;
+
+ if (obj->objfile)
+ {
+ const char *username = obj->objfile->original_name;
+
+ return PyString_Decode (username, strlen (username),
+ host_charset (), NULL);
+ }
+
+ Py_RETURN_NONE;
+}
+
/* If SELF is a separate debug-info file, return the "backlink" field.
Otherwise return None. */
"The __dict__ for this objfile.", &objfile_object_type },
{ "filename", objfpy_get_filename, NULL,
"The objfile's filename, or None.", NULL },
+ { "username", objfpy_get_username, NULL,
+ "The name of the objfile as provided by the user, or None.", NULL },
{ "owner", objfpy_get_owner, NULL,
"The objfile owner of separate debug info objfiles, or None.",
NULL },
+2015-01-27 Doug Evans <dje@google.com>
+
+ * gdb.python/py-objfile.exp: Add tests for objfile.username.
+ Add test for objfile.filename, objfile.username after objfile
+ has been unloaded.
+
2015-01-26 Joel Brobecker <brobecker@adacore.com>
* gdb.python/py-lookup-type.exp (test_lookup_type): Change
gdb_test "python print (objfile.filename)" "${testfile}" \
"Get objfile file name"
+gdb_test "python print (objfile.username)" "${testfile}" \
+ "Get objfile user name"
+
gdb_test "python print (gdb.lookup_objfile (\"${testfile}\").filename)" \
"${testfile}"
gdb_test "python print (gdb.lookup_objfile (\"junk\"))" \
gdb_test "python print (objfile.random_attribute)" "42" \
"Verify set of random attribute in objfile"
+# Verify invalid objfile handling.
+
+if { [gdb_unload] < 0 } {
+ fail "unload all files"
+ return -1
+}
+
+gdb_test "python print objfile.filename" "None" \
+ "objfile.filename after objfile is unloaded"
+gdb_test "python print objfile.username" "None" \
+ "objfile.username after objfile is unloaded"
+
# Now build another copy of the testcase, this time without debug info.
if { [prepare_for_testing ${testfile}.exp ${testfile}2 ${srcfile} {nodebug ldflags=-Wl,--strip-debug}] } {
gdb_test "python print (sep_objfile.owner.filename)" "${testfile}2" \
"Test owner of separate debug file"
+gdb_test "python print (sep_objfile.owner.username)" "${testfile}2" \
+ "Test user-name of owner of separate debug file"
+
gdb_test "p main" "= {int \\(\\)} $hex <main>" \
"print main with debug info"