diff options
author | Doug Evans <dje@google.com> | 2015-01-27 10:13:52 -0800 |
---|---|---|
committer | Doug Evans <dje@google.com> | 2015-01-27 10:13:52 -0800 |
commit | 3a8b707add581af37804947536025dd3e7fc1a33 (patch) | |
tree | 20c64055757dbd442dd4188b7d00d204fd719685 | |
parent | 1b5493961ab1f65a3336b2178ba3d035a130f9f6 (diff) | |
download | gdb-3a8b707add581af37804947536025dd3e7fc1a33.zip gdb-3a8b707add581af37804947536025dd3e7fc1a33.tar.gz gdb-3a8b707add581af37804947536025dd3e7fc1a33.tar.bz2 |
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.
-rw-r--r-- | gdb/ChangeLog | 6 | ||||
-rw-r--r-- | gdb/NEWS | 6 | ||||
-rw-r--r-- | gdb/doc/ChangeLog | 4 | ||||
-rw-r--r-- | gdb/doc/python.texi | 7 | ||||
-rw-r--r-- | gdb/python/py-objfile.c | 21 | ||||
-rw-r--r-- | gdb/testsuite/ChangeLog | 6 | ||||
-rw-r--r-- | gdb/testsuite/gdb.python/py-objfile.exp | 18 |
7 files changed, 68 insertions, 0 deletions
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 _. @@ -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" |