This is the mail archive of the gdb-cvs@sourceware.org mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[binutils-gdb] Add gdb.Objfile.username.


https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=3a8b707add581af37804947536025dd3e7fc1a33

commit 3a8b707add581af37804947536025dd3e7fc1a33
Author: Doug Evans <dje@google.com>
Date:   Tue Jan 27 10:13:52 2015 -0800

    Add gdb.Objfile.username.
    
    gdb/ChangeLog:
    
    	* NEWS: Mention gdb.Objfile.username.
    	* python/py-objfile.c (objfpy_get_username): New function.
    	(objfile_getset): Add "username".
    
    gdb/doc/ChangeLog:
    
    	* python.texi (Objfiles In Python): Document Objfile.username.
    
    gdb/testsuite/ChangeLog:
    
    	* gdb.python/py-objfile.exp: Add tests for objfile.username.
    	Add test for objfile.filename, objfile.username after objfile
    	has been unloaded.

Diff:
---
 gdb/ChangeLog                           |  6 ++++++
 gdb/NEWS                                |  6 ++++++
 gdb/doc/ChangeLog                       |  4 ++++
 gdb/doc/python.texi                     |  7 +++++++
 gdb/python/py-objfile.c                 | 21 +++++++++++++++++++++
 gdb/testsuite/ChangeLog                 |  6 ++++++
 gdb/testsuite/gdb.python/py-objfile.exp | 18 ++++++++++++++++++
 7 files changed, 68 insertions(+)

diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 19e231f..03b8712 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,9 @@
+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 _.
diff --git a/gdb/NEWS b/gdb/NEWS
index c0cf706..bd85967 100644
--- a/gdb/NEWS
+++ b/gdb/NEWS
@@ -3,6 +3,12 @@
 
 *** 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'
diff --git a/gdb/doc/ChangeLog b/gdb/doc/ChangeLog
index c5340a8..be563f5 100644
--- a/gdb/doc/ChangeLog
+++ b/gdb/doc/ChangeLog
@@ -1,5 +1,9 @@
 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.
 	* guile.texi (Objfiles In Guile) <objfile-filename>: Improve docs.
 
diff --git a/gdb/doc/python.texi b/gdb/doc/python.texi
index ba03841..7c04af7 100644
--- a/gdb/doc/python.texi
+++ b/gdb/doc/python.texi
@@ -3519,6 +3519,13 @@ 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.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.
diff --git a/gdb/python/py-objfile.c b/gdb/python/py-objfile.c
index 378db58..0aecaf6 100644
--- a/gdb/python/py-objfile.c
+++ b/gdb/python/py-objfile.c
@@ -81,6 +81,25 @@ objfpy_get_filename (PyObject *self, void *closure)
   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.  */
 
@@ -613,6 +632,8 @@ static PyGetSetDef objfile_getset[] =
     "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 },
diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog
index 1eb72db..e8c80da 100644
--- a/gdb/testsuite/ChangeLog
+++ b/gdb/testsuite/ChangeLog
@@ -1,3 +1,9 @@
+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
diff --git a/gdb/testsuite/gdb.python/py-objfile.exp b/gdb/testsuite/gdb.python/py-objfile.exp
index cddbd3d..b53f5e3 100644
--- a/gdb/testsuite/gdb.python/py-objfile.exp
+++ b/gdb/testsuite/gdb.python/py-objfile.exp
@@ -42,6 +42,9 @@ gdb_py_test_silent_cmd "python objfile = sym\[0\].symtab.objfile" \
 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\"))" \
@@ -78,6 +81,18 @@ gdb_py_test_silent_cmd "python objfile.random_attribute = 42" \
 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}] } {
@@ -107,6 +122,9 @@ gdb_py_test_silent_cmd "python sep_objfile = gdb.objfiles()\[0\]" \
 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"


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]